Skip to main content

A peaceful and fully typed MyAnimeList/Jikan API wrapper with caching and proper rate limiting.

Project description

Anmoku 安黙

A peaceful and fully typed MyAnimeList / Jikan Python API wrapper with caching and proper rate limiting.


[!NOTE]

Anmoku is currently a work in progress so the features below may not be complete yet or experimental.

Features ✨

  • Rate limiting 🎀 (with actual waiting).
  • Supports caching. ⚡
  • Fully type hinted. 🌌 yes you heard me correctly

Examples ⚗️

Anmoku is probably the simplest Jikan API wrapper you'll ever use. All you need is the client and the resource. 🌊

from anmoku import Anmoku, AnimeCharacters

client = Anmoku(debug = True)

anime_characters = client.get(AnimeCharacters, id = 28851) # ID for the anime film "A Silent Voice".

for character in anime_characters:
    print(f"{character.name} ({character.url})")

client.close()

We also have an async client:

import asyncio
from anmoku import AsyncAnmoku, AnimeCharacters

async def main():

    client = AsyncAnmoku(debug = True)

    anime_characters = await client.get(AnimeCharacters, id = 28851) # ID for the anime film "A Silent Voice".

    for character in anime_characters:
        print(f"{character.name} ({character.url})")

    await client.close()

asyncio.run(main())

Output:

[DEBUG] (anmoku) - [AsyncAnmoku] GET --> https://api.jikan.moe/v4/anime/28851/characters
Ishida, Shouya (https://myanimelist.net/character/80491/Shouya_Ishida)
Nishimiya, Shouko (https://myanimelist.net/character/80243/Shouko_Nishimiya)
Headteacher (https://myanimelist.net/character/214351/Headteacher)
Hirose, Keisuke (https://myanimelist.net/character/97569/Keisuke_Hirose)
Ishida, Maria (https://myanimelist.net/character/97943/Maria_Ishida)
Ishida, Sister (https://myanimelist.net/character/118723/Sister_Ishida)
# ... more characters below but I cut them off for the convenience of this readme

Searching! 🤩

Here are some searching examples you can try:

from anmoku import Anmoku, Character

client = Anmoku(debug = True)

characters = client.search(Character, "anya forger")

for character in characters:
    print(f"{character.name} ({character.image.url})")

client.close()

Merge that with gradio and you have a GUI. https://github.com/THEGOLDENPRO/anmoku/blob/099f6596b685daa65259319d6730bef674ced38a/examples/gradio_anime_search.py#L1-L23

[Gradio Video]

Type hinting support! 🌌

API responses in our library are strongly typed.

On top of that, we even provide class interfaces if you wish for stability and ease of use.


Python's future Jikan API wrapper.

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

anmoku-1.0.0a1.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anmoku-1.0.0a1-py3-none-any.whl (52.5 kB view details)

Uploaded Python 3

File details

Details for the file anmoku-1.0.0a1.tar.gz.

File metadata

  • Download URL: anmoku-1.0.0a1.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.19

File hashes

Hashes for anmoku-1.0.0a1.tar.gz
Algorithm Hash digest
SHA256 2ad18edaf824e411d527703bc823e28b2012d43c653d736c6fcee8d3ddc47a4a
MD5 db36de470cabe137970256bfddd33ba2
BLAKE2b-256 bfc52d13c390cc56737875e7efafab0dcbbf631603c1a46c85e4e0bb57c4193f

See more details on using hashes here.

File details

Details for the file anmoku-1.0.0a1-py3-none-any.whl.

File metadata

  • Download URL: anmoku-1.0.0a1-py3-none-any.whl
  • Upload date:
  • Size: 52.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.19

File hashes

Hashes for anmoku-1.0.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 67a242530fca27bed4368f581591d4a30a471d6782f9c05ccb5375c5dda3906c
MD5 94ddfb240c5ee5ae970180bc30db0507
BLAKE2b-256 8358f637e5b4102d422159e734d9b085984fc5030b4de81507b7b1eacc1498bd

See more details on using hashes here.

Supported by

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