Skip to main content

A featureful Python library covers most popular doujin API

Project description

janda

A featureful Python library covers most popular doujin API

Built on minimalist dependencies to resolves and interacts with ease. It takes a much more dictionaries rather than just raw data, and hope will be extendable. Janda has plenty api support apart from nhentai.

ContributingDocumentationReport Issues


Janda vs. the Competition

Built on minimalist dependencies, yet it covers most of the popular doujinboards.
Every single site has different dictionaries returns, keep in mind on this

Site 🔍 Status Process Response time Data returns Randomizer
nhentai status officialapi ~0.749225 sec ~127.266 KB Yes
pururin status proxified ~2.032029 sec ~2.412 KB Triage
hentaifox status proxified ~1.330169 sec ~2.122 KB Triage
hentai2read status officialapi ~1.319396 sec ~3.715 KB Yes
simply-hentai status proxified ~1.993175 sec ~1.529 KB Yes
qhentai status proxified ~2.492498 sec ~3.721 KB Yes
asmhentai status proxified ~4.473287 sec ~2.619 KB Yes

This benchmark search 25 (or defaults) latest doujin on each sites.
Speed or perfomace may not accurate because internet connection or server response

Stable: works well | Triage: has some issues | Partial: limited endpoints | 🔍: search method

Features

  • Easy to use: check your intelisense
  • Neat: object taken is re-processed to make it actionable
  • Documented: fully documented and tested
  • All-in-one: plenty of site support

Prerequisites

  • Python 3.7 or above
  • Can parse JSON
NOTE: Please always use the latest version of the module.
Since this library covers a lot of sites, hence there is always a staged changes

Installation

pip install janda / pipenv install janda

  • or fork this repo

To use specific API, you could use from janda import Nhentai

Quick example

Some methods require additional parameters, check your intelisense.

get

(method) get: (book: int, safe: bool | None = None) -> Coroutine

import asyncio
from janda import Nhentai

async def book():
    nh = Nhentai()
    data = await nh.get(274003)
    print(data)

async def main():
    await asyncio.gather(book())

asyncio.run(main())

search

(tags: str, page: int = 1, popular: str = 'today') -> Coroutine

await nh.search("jeanne alter", 1, "all")

Documentation

The documentation can be found https://sinkaroid.github.io/janda

Nhentai

Pururin

Hentai2read

Simplyhentai

Hentaifox

Qhentai

Asmhentai

Returns example

get method will represent as Book Object and packed with actionable image urls

{
    "details": {
        "id": 274003,
        "link": "https://nhentai.net/g/274003",
        "title": {
            "english": "(COMIC1☆15) [Koniro Kajitsu (Konka)] Setsudo no Nai Onee-chan de Gomen ne | Onee-chan is sorry she has no restraint (Fate/Grand Order) [English]",
            "japanese": "(COMIC1☆15) [紺色果実 (紺菓)] 節度のないお姉ちゃんでごめんね♡ (Fate/Grand Order) [英訳]",
            "pretty": "Setsudo no Nai Oneechan is sorry she has no restraint"
        },
        "upload_date": "2019-06-01 02:09:13"
    },
    "image_urls": [
        "https://i.nhentai.net/galleries/1423853/1.png",
        "https://i.nhentai.net/galleries/1423853/2.png",
        "https://i.nhentai.net/galleries/1423853/3.png",
        "https://i.nhentai.net/galleries/1423853/4.png",
        "https://i.nhentai.net/galleries/1423853/5.png",
        "https://i.nhentai.net/galleries/1423853/6.png",
        "https://i.nhentai.net/galleries/1423853/7.png",
        "https://i.nhentai.net/galleries/1423853/8.png",
        "https://i.nhentai.net/galleries/1423853/9.png",
        "https://i.nhentai.net/galleries/1423853/10.png",
        "https://i.nhentai.net/galleries/1423853/11.png",
        "https://i.nhentai.net/galleries/1423853/12.png",
        "https://i.nhentai.net/galleries/1423853/13.png",
        "https://i.nhentai.net/galleries/1423853/14.png",
        "https://i.nhentai.net/galleries/1423853/15.png",
        "https://i.nhentai.net/galleries/1423853/16.png",
        "https://i.nhentai.net/galleries/1423853/17.png",
        "https://i.nhentai.net/galleries/1423853/18.png",
        "https://i.nhentai.net/galleries/1423853/19.png",
        "https://i.nhentai.net/galleries/1423853/20.png",
        "https://i.nhentai.net/galleries/1423853/21.png",
        "https://i.nhentai.net/galleries/1423853/22.png",
        "https://i.nhentai.net/galleries/1423853/23.png",
        "https://i.nhentai.net/galleries/1423853/24.png",
        "https://i.nhentai.net/galleries/1423853/25.png",
        "https://i.nhentai.net/galleries/1423853/26.png"
    ],
    "language": "english",
    "num_favorites": 6164,
    "num_pages": 26,
    "scanlator": "",
    "tags": [
        "english",
        "translated",
        "fate grand order",
        "tomoe gozen",
        "koniro kajitsu",
        "konka",
        "shotacon",
        "sole male",
        "big breasts",
        "footjob",
        "horns",
        "lactation",
        "lingerie",
        "oni",
        "sole female",
        "stockings",
        "doujinshi",
        "gudao",
        "schoolgirl uniform",
        "kissing",
        "leg lock",
        "breast feeding",
        "x-ray",
        "unusual pupils"
    ],
    "thumbnail_urls": [
        "https://t.nhentai.net/galleries/1423853/1t.png",
        "https://t.nhentai.net/galleries/1423853/2t.png",
        "https://t.nhentai.net/galleries/1423853/3t.png",
        "https://t.nhentai.net/galleries/1423853/4t.png",
        "https://t.nhentai.net/galleries/1423853/5t.png",
        "https://t.nhentai.net/galleries/1423853/6t.png",
        "https://t.nhentai.net/galleries/1423853/7t.png",
        "https://t.nhentai.net/galleries/1423853/8t.png",
        "https://t.nhentai.net/galleries/1423853/9t.png",
        "https://t.nhentai.net/galleries/1423853/10t.png",
        "https://t.nhentai.net/galleries/1423853/11t.png",
        "https://t.nhentai.net/galleries/1423853/12t.png",
        "https://t.nhentai.net/galleries/1423853/13t.png",
        "https://t.nhentai.net/galleries/1423853/14t.png",
        "https://t.nhentai.net/galleries/1423853/15t.png",
        "https://t.nhentai.net/galleries/1423853/16t.png",
        "https://t.nhentai.net/galleries/1423853/17t.png",
        "https://t.nhentai.net/galleries/1423853/18t.png",
        "https://t.nhentai.net/galleries/1423853/19t.png",
        "https://t.nhentai.net/galleries/1423853/20t.png",
        "https://t.nhentai.net/galleries/1423853/21t.png",
        "https://t.nhentai.net/galleries/1423853/22t.png",
        "https://t.nhentai.net/galleries/1423853/23t.png",
        "https://t.nhentai.net/galleries/1423853/24t.png",
        "https://t.nhentai.net/galleries/1423853/25t.png",
        "https://t.nhentai.net/galleries/1423853/26t.png"
    ]
}

Otherwise search will return 25 List Object of search results.

[
    {
        "id": 394795,
        "language": "speechless",
        "link": "https://nhentai.net/g/394795",
        "num_favorites": 962,
        "num_pages": 5,
        "tags": [
            "big breasts",
            "swimsuit",
            "mmf threesome",
            "group",
            "uncensored",
            "nakadashi",
            "dark skin",
            "bikini",
            "x-ray",
            "double penetration",
            "blowjob",
            "muscle",
            "collar",
            "body writing",
            "doujinshi",
            "speechless",
            "text cleaned",
            "fate grand order",
            "sole female",
            "jeanne alter",
            "yanje"
        ],
        "title": {
            "english": "[Yanje] Jeanne d'Arc Alter (FGO) [Textless]",
            "japanese": "",
            "pretty": "Jeanne d'Arc Alter"
        },
        "upload_date": "2022-03-08 01:00:47"
    },
    {
        "id": "394794",
        "language": "japanese",
        "link": "https://nhentai.net/g/394794",
        "num_favorites": 1103,
        "num_pages": 5,
        "tags": [
            "big breasts",
            "swimsuit",
            "japanese",
            "mmf threesome",
            "group",
            "uncensored",
            "nakadashi",
            "dark skin",
            "bikini",
            "x-ray",
            "double penetration",
            "blowjob",
            "muscle",
            "collar",
            "body writing",
            "doujinshi",
            "fate grand order",
            "sole female",
            "jeanne alter",
            "yanje"
        ],
        "title": {
            "english": "[Yanje] Jeanne d'Arc Alter (FGO) [Japanese]",
            "japanese": "",
            "pretty": "Jeanne d'Arc Alter"
        },
        "upload_date": "2022-03-07 23:32:20"
    }
]

Known Issues

UnicodeEncodeError: 'charmap' codec can't encode characters

  • It's raised when the title contains non-ascii characters, then your console can't parse them, use real console don't Git-bash.

Legal

This tool can be freely copied, modified, altered, distributed without any attribution whatsoever. However, if you feel like this tool deserves an attribution, mention it. It won't hurt anybody

Pronunciation

id_ID/jan·da/ — wanita yang menjanda karena ditinggal suaminya; (?) the mascot is tomoe gozen FGO

EoF

All books from those doujinboards are definitely ilegal from original authors.

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

janda-3.0.11.tar.gz (17.3 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