Skip to main content

NHentai Python API made using webscraping.

Project description

CodeFactor PyPI download month codecov Python 3.7+ PyPI license

NHentai API

A NHentai API made using python webscrapping.
For update notes follow me on Twitter or join on NHentai-API discord server

Installation

pip install --upgrade NHentai-API

or

pip3 install --upgrade NHentai-API

Library Features

  • Home page pagination,
  • Doujin information,
  • Random doujin,
  • Search by id and tag,
  • Character List
  • Popular List

Home

from NHentai import NHentai

nhentai = NHentai()
random_doujin: HomePage = nhentai.get_pages(page=1)

The expected output is a HomePage instance:

Page(
    doujins: List[
        DoujinThumbnail(
           id: str,
           title: str,
           lang: str,
           cover: str,
           url: str,
           tags: List[str]
        )
    ],

    total_pages: int,
    total_results: int,
    per_page: int)

Random

from NHentai import NHentai

nhentai = NHentai()
random_doujin: Doujin = nhentai.get_random()

The expected output is a Doujin instance:

Doujin(
    id: int,
    media_id: str,
    upload_at: datetime,
    title: List[Title],
    tags: List[Tag],
    artists: List[Tag],
    languages: List[Tag],
    categories: List[Tag],
    characters: List[Tag],
    parodies: List[Tag],
    groups: List[Tag],
    cover: str,
    images: List[DoujinPage],
    total_pages: int
)

Note: Not all doujins have certain properties like tags, artists, etc. They could be an empty list or a NoneType value.

Search

from NHentai import NHentai

nhentai = NHentai()
search_obj: SearchPage = nhentai.search(query='naruto', sort=Sort.TODAY, page=1)
search_obj: SearchPage = nhentai.search(query='30955', page=1)

The expected output is a SearchPage instance:

SearchPage(
    query: str
    sort: str
    total_results: int
    total_pages: int
    doujins: List[
        DoujinThumbnail(
            id: str,
            title: str,
            lang: str,
            cover: str,
            url: str,
            tags: List[str]
        )
    ]
)

Doujin

from NHentai import NHentai

nhentai = NHentai()
doujin: Doujin = nhentai.get_doujin(id='287167')

The expected output is a Doujin instance:

Doujin(
    id: int,
    media_id: str,
    upload_at: datetime,
    title: List[Title],
    tags: List[Tag],
    artists: List[Tag],
    languages: List[Tag],
    categories: List[Tag],
    characters: List[Tag],
    parodies: List[Tag],
    groups: List[Tag],
    cover: str,
    images: List[DoujinPage],
    total_pages: int
)

Characters

from NHentai import NHentai

nhentai = NHentai()
doujin: CharacterListPage = nhentai.get_characters(page=1)

The expected output is a CharacterListPage instance:

CharacterListPage(
    page=int,
    total_pages=int,
    characters: List[
        CharacterLink(
            section: str,
            title: str,
            url: str,
            total_entries: int
        )
    ]
)

Most Popular

from NHentai import NHentai

nhentai = NHentai()
doujins: PopularPage = nhentai.get_popular_now()

The expected output is a PopularPage instance:

PopularPage(
    total_doujins: int
    doujins: List[
        DoujinThumbnail(
            id: str,
            title: str,
            lang: str,
            cover: str,
            url: str,
            tags: List[str]
        )
    ],
)

NHentai API Async

This is the first version of the asynchronous nhentai scrapper. The methods work in the very same way as the base nhentai scrapper, but to make it work you'll have to work with asyncio module using an event loop that you can import from it or get from NHentaiAsync class property: event_loop.

Since we're working with async functions, you can only call the NHentaiAsync methods from inside an async funcion or context. If you are already working in an async event loop, such as a python Discord API like discord.py, you can simply await calls that you would otherwise have to call run_until_complete on top of.

Async example 1:

from NHentai import NHentaiAsync

nhentai_async = NHentaiAsync()
event_loop = nhentai_async.event_loop
popular = event_loop.run_until_complete(nhentai_async.get_popular_now())
print(popular)

Async example 2:

from NHentai import NHentaiAsync

nhentai_async = NHentaiAsync()

async def get_popular():
    popular = await nhentai_async.get_popular_now()
    print(popular)

event_loop = nhentai_async.event_loop
event_loop.run_until_complete(get_popular())

Await example:

from NHentai import NHentaiAsync
nhentai_async = NHentaiAsync()

# Run in an async function or you will get an error: `'await' outside async function`.
popular = await nhentai_async.get_popular_now()
print(popular)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dev-nhentai-build-0.0.4.tar.gz (11.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page