Aiontai package

aiontai.api module

Low level API.

exception aiontai.api.DoujinDoesNotExistError

Bases: aiontai.api.NHentaiError

Doujin does noe exist.

exception aiontai.api.EmptyAPIResultError

Bases: aiontai.api.NHentaiError

API result is empty.

exception aiontai.api.HTTPError(response: aiohttp.client_reqrep.ClientResponse, message: Optional[str] = None)

Bases: aiontai.api.NHentaiError

Error from responce.

responce

Responce object.

message

Message about error.

class aiontai.api.NHentaiAPI(client_session: aiohttp.client.ClientSession)

Bases: object

NHentai low level API.

NHentaiAPIType

alias of TypeVar(‘NHentaiAPIType’, bound=NHentaiAPI)

async __aenter__() aiontai.api.NHentaiAPIType

Open async context manager.

Returns

Class object.

async __aexit__(_exception_type: Type[BaseException], _exception: BaseException, _traceback: types.TracebackType) None

Close object from async context manager.

async close() None

Close object.

async get_doujin(doujin_id: int) Dict[str, Any]

Get doujin raw data by ID.

Parameters

doujin_id – ID of doujin.

Returns

Doujin raw data from responce.

Raises
async get_homepage_doujins(page: int = 1) Dict[str, Any]

Get doujins raw data from homepage.

Parameters

page – Number of page from which we return results. Defaults to 1.

Returns

Doujins raw data result from responce.

Raises
async get_random_doujin() Dict[str, Any]

Get random doujin raw data.

Returns

Doujin raw data from responce.

Raises

HTTPError – Error from response.

async is_exist(doujin_id: int) bool

Check if doujin exists.

Parameters

doujin_id – ID of doujin.

Returns

Doujin is exists.

Raises

HTTPError – Error from response.

async search(query: str, page: int = 1, sort_by: aiontai.api.SortOptions = SortOptions.DATE) Dict[str, Any]

Search doujins raw data result.

Parameters
  • query – Query for search doujins.

  • page – Number of page from which we return results. Defaults to 1.

  • sort_by – Sort options for search. Defaults to SortOptions.DATE.

Returns

Doujins raw data result from responce.

Raises
async search_by_tag(tag_id: int, page: int = 1, sort_by: aiontai.api.SortOptions = SortOptions.DATE) Dict[str, Any]

Search doujins raw data result by tag.

Parameters
  • tag_id – Tag ID for search.

  • page – Number of page from which we return results. Defaults to 1.

  • sort_by – Sort options for search. Defaults to SortOptions.DATE.

Returns

Doujins raw data result from responce.

Raises
  • ValueError – If number of page is invalid or tag ID is invalid.

  • EmptyAPIResultError – If api result is empty.

  • HTTPError – Error from response.

exception aiontai.api.NHentaiError

Bases: Exception

Base NHentai api error.

class aiontai.api.SortOptions(value)

Bases: enum.Enum

Enumeration for sort options.

DATE = 'date'
POPULARITY = 'popular'

aiontai.client module

Client (High level API).

class aiontai.client.NHentaiClient(api: aiontai.api.NHentaiAPI, conventer: aiontai.converter.Conventer)

Bases: object

NHentai client (high level API).

NHentaiClientType

alias of TypeVar(‘NHentaiClientType’, bound=NHentaiClient)

async __aenter__() aiontai.client.NHentaiClientType

Open async context manager.

Returns

Class object.

async __aexit__(_exception_type: Type[BaseException], _exception: BaseException, _traceback: types.TracebackType) None

Close object from async context manager.

async close() None

Close object.

async get_doujin(doujin_id: int) aiontai.models.Doujin

Get doujin model by ID.

Parameters

doujin_id – ID of doujin.

Returns

Doujin model.

Raises
async get_homepage_doujins(*, page: int = 1) aiontai.models.DoujinsResult

Get doujins result model from homepage.

Parameters

page – Number of page from which we return results. Defaults to 1.

Returns

Doujins result model.

Raises
async get_random_doujin() aiontai.models.Doujin

Get random doujin model.

Returns

Doujin model.

Raises

HTTPError – Error from response.

async is_exist(doujin_id: int) bool

Check if doujin exists.

Parameters

doujin_id – ID of doujin.

Returns

Doujin is exists.

Raises

HTTPError – Error from response.

async search(query: str, *, page: int = 1, sort_by: aiontai.api.SortOptions = SortOptions.DATE) aiontai.models.DoujinsResult

Search doujins result model.

Parameters
  • query – Query for search doujins.

  • page – Number of page from which we return results. Defaults to 1.

  • sort_by – Sort options for search. Defaults to api.SortOptions.DATE.

Returns

Doujins result model.

Raises
async search_by_tag(tag_id: int, *, page: int = 1, sort_by: aiontai.api.SortOptions = SortOptions.DATE) aiontai.models.DoujinsResult

Search doujins result model by tag.

Parameters
  • tag_id – Tag ID for search.

  • page – Number of page from which we return results. Defaults to 1.

  • sort_by – Sort options for search. Defaults to api.SortOptions.DATE.

Returns

Doujins result model.

Raises
  • ValueError – If number of page is invalid or tag ID is invalid.

  • EmptyAPIResultError – If api result is empty.

  • HTTPError – Error from response.

aiontai.converter module

Conventer module.

class aiontai.converter.Conventer

Bases: object

Conventer for convert raw data to models.

convert_doujin(raw_data: Dict[str, Any]) aiontai.models.Doujin

Convert raw data to doujin model.

Parameters

raw_data – Model raw data.

Returns

Doujin model.

convert_doujins_result(raw_data: Dict[str, Any]) aiontai.models.DoujinsResult

Convert raw data to doujins result model.

Parameters

raw_data – Model raw data.

Returns

Doujins result model.

convert_image(raw_data: Dict[str, Any], name: str, media_id: int) aiontai.models.Image

Convert raw data to image model.

Parameters
  • raw_data – Model raw data.

  • name – Name of image.

  • media_id – Image media id.

Returns

Image model.

convert_tag(raw_data: Dict[str, Any]) aiontai.models.Tag

Convert raw data to tag model.

Parameters

raw_data – Model raw data.

Returns

Tag model.

convert_title(raw_data: Dict[str, Any]) aiontai.models.Title

Convert raw data to title model.

Parameters

raw_data – Model raw data.

Returns

Title model.

aiontai.models module

API Models.

class aiontai.models.Doujin(id: int, media_id: int, title: aiontai.models.Title, cover: aiontai.models.Image, thumbnail: aiontai.models.Image, images: List[aiontai.models.Image], tags: List[aiontai.models.Tag], pages_count: int, favorites_count: int, scanlator: str, upload_date: datetime.datetime)

Bases: dataclasses_json.api.DataClassJsonMixin

Doujin model.

__getitem__(index: int) aiontai.models.Image

Get page by key.

Parameters

index – List index.

Returns

Image model.

Raises

IndexError – If page index out of range.

__iter__() Iterator[aiontai.models.Image]

Pages iterator.

Returns

Images iterator.

__len__() int

Pages len.

Returns

Len of images.

cover: aiontai.models.Image
favorites_count: int
id: int
images: List[aiontai.models.Image]
media_id: int
pages_count: int
scanlator: str
tags: List[aiontai.models.Tag]
thumbnail: aiontai.models.Image
title: aiontai.models.Title
upload_date: datetime.datetime
class aiontai.models.DoujinsResult(doujins: List[aiontai.models.Doujin], pages_count: int, doujins_per_page: int)

Bases: dataclasses_json.api.DataClassJsonMixin

DoujinsResult model.

doujins: List[aiontai.models.Doujin]
doujins_per_page: int
pages_count: int
class aiontai.models.Image(name: str, url: str, media_id: int, width: int, height: int, extension: aiontai.models.ImageExtension)

Bases: dataclasses_json.api.DataClassJsonMixin

Image model.

extension: aiontai.models.ImageExtension
height: int
media_id: int
name: str
url: str
width: int
class aiontai.models.ImageExtension(value)

Bases: str, enum.Enum

Enum for image extension.

GIF = 'g'
JPG = 'j'
PNG = 'p'
class aiontai.models.Tag(id: int, count: int, name: str, type: aiontai.models.TagType, url: str)

Bases: dataclasses_json.api.DataClassJsonMixin

Tag model.

count: int
id: int
name: str
type: aiontai.models.TagType
url: str
class aiontai.models.TagType(value)

Bases: str, enum.Enum

Enum for tag type.

ARTIST = 'artist'
CATEGORY = 'category'
CHARACTER = 'character'
GROUP = 'group'
LANGUAGE = 'language'
PARODY = 'parody'
TAG = 'tag'
class aiontai.models.Title(english: Optional[str], japanese: Optional[str], pretty: Optional[str])

Bases: dataclasses_json.api.DataClassJsonMixin

Title model.

english: Optional[str]
japanese: Optional[str]
pretty: Optional[str]

aiontai.modules module

Modules for automatic dependencies.

class aiontai.modules.ClientModule

Bases: injector.Module

Module for automatic dependencies.

provide_api(client_session: aiohttp.client.ClientSession) aiontai.api.NHentaiAPI

Provide NHentaiAPI.

Parameters

client_session – Object required for dependence.

Returns

Provided object for injector.

provide_client(api: aiontai.api.NHentaiAPI) aiontai.client.NHentaiClient

Provide NHentaiClient.

Parameters

api – Object required for dependence.

Returns

Provided object for injector.

provide_client_session() aiohttp.client.ClientSession

Provide ClientSession.

Returns

Provided object for injector.