Skip to content

Derfirm/pornhub-api

Repository files navigation

Unofficial api for pornhub.com

https://travis-ci.org/derfirm/pornhub-api.svg?branch=master https://api.codacy.com/project/badge/Grade/72b5baaa2a7d438cbe725924954a62b2

Key Features

  • response are fully-annotated with pydantic
  • rest without parsing

Installing

$ pip install pornhub-api

or with aiohttp support

$ pip install pornhub-api[aiohttp-backend]

or with httpx support

$ pip install pornhub-api[httpx-backend]

Supported versions

  • Python 3.7+

Getting started

Initiate Api client

from pornhub_api import PornhubApi

api = PornhubApi()

Initiate with AioHttp backend

import asyncio
from pornhub_api.backends.aiohttp import AioHttpBackend


async def execute():
    async with AioHttpBackend() as backend:
        api = PornhubApi(backend=backend)
        video = await api.video.get_by_id("ph560b93077ddae")
        print(video.title)

asyncio.run(execute())

Search Videos

videos = api.search_videos.search_videos(
    "chechick",
    ordering="mostviewed",
    period="weekly",
    tags=["black"],
)
for vid in videos:
    print(vid.title, vid.video_id)

Get Stars

api.stars.all()
or
api.stats.all_detailed()

Get single Video details

video = api.video.get_by_id("ph560b93077ddae")
print(video.title)

Get all videos tags or categories

categories = api.video.categories()
tags = api.video.tags("a")

Check Video availability

response = api.video.is_active("ph560b93077ddae")
print(response.is_active)

Search video by random tag and category

import random
api = PornhubApi()

tags = random.sample(api.video.tags("f").tags, 5)
category = random.choice(api.video.categories().categories)
result = api.search.search_videos(ordering="mostviewed", tags=tags, category=category)

print(result.size())
for vid in result:
    print(vid.title, vid.url)