Skip to main content

Python wrapper for the Jikan API

Project description

JikanPy

Travis (.com) Codecov pypi Version PyPi downloads Documentation Code style: black PRs Welcome

JikanPy is a Python wrapper for Jikan, providing bindings for all API functionality, and supports Python 3.6+. Because it is intended to be pretty much identical, please consult Jikan's documentation for thornier details on how it is meant to be used. Perhaps most importantly, JikanPy does not make any attempts to rate limit itself, so use it as responsibly as you would use the API primitively and remember that Jikan API has limitations, check out this section of documentation in order to see to what extent the API is limited or throttled.

You can use either Jikan or AioJikan depending on whether you want a synchronous wrapper class or an asynchronous wrapper class respectively. More usage examples are below.

In addition to the typical response from the Jikan API, each response contains two additional fields:

  • jikan_url: The URL that was requested; for example: https://api.jikan.moe/v4/anime/1.
  • headers: The response headers from Jikan, detailed here.

Installation

You can install the package from PyPI using pip:

$ pip install jikanpy-v4

If you have previously installed the old version of jikanpy, then make sure to uninstall the old version first:

$ pip uninstall jikanpy
$ pip install --no-cache-dir jikanpy-v4

You can also install this package directly from the source:

$ git clone https://github.com/abhinavk99/jikanpy.git 
$ cd jikanpy
$ python setup.py install

Note: This package is different from jikanpy on PyPI, which is the old Jikan v3 compatible version of jikanpy.

Usage Examples

Below are some basic examples of how to use Jikan and AioJikan. Please read the documentation below to see all the methods and more examples.

Usage Examples with Jikan

from jikanpy import Jikan
jikan = Jikan()

mushishi = jikan.anime(457)
mushishi_with_eps = jikan.anime(457, extension='episodes')

search_result = jikan.search('anime', 'Mushishi', page=2)

winter_2018_anime = jikan.seasons(year=2018, season='winter')

current_season = jikan.seasons(extension='now')

Async Usage Examples with AioJikan

import asyncio
from jikanpy import AioJikan

async def main():
    async with AioJikan() as aio_jikan:
        mushishi = await aio_jikan.anime(457)
        fma = await aio_jikan.manga(25)
        ginko = await aio_jikan.character(425)
        kana_hanazawa = await aio_jikan.person(185)
        naruto = await aio_jikan.search(search_type='anime', query='naruto')

    # You can also construct AioJikan like below, but make sure to close the object
    aio_jikan_2 = AioJikan()
    mushishi = await aio_jikan.anime(457)
    await aio_jikan_2.close()

asyncio.run(main())

Documentation

Check out the documentation here.

Overriding default settings in Jikan and AioJikan with constructor arguments

If you're running an instance of jikan-rest on your system, and want to use that instead of api.jikan.moe, you can pass that to Jikan:

from jikanpy import Jikan
jikan = Jikan(selected_base='http://localhost:8000/v4')

If you want to use your own Requests session, you can do that too.

import requests
from jikanpy import Jikan

session = requests.Session()
# Set custom persistent headers that will be used with all HTTP requests with your session
session.headers.update({'x-test': 'true'})

jikan = Jikan(session=session)

You can use any or all of these constructor arguments when creating an instance of Jikan.

AioJikan also has selected_base and session (although AioJikan uses AioHTTP session, not Requests).

import aiohttp
import asyncio

from jikanpy import AioJikan

async def main():
    # Construct AioJikan with own base URL and custom AioHTTP session with custom persistent headers
    session = aiohttp.ClientSession(headers={'x-test': 'true'})
    aio_jikan = AioJikan(selected_base='http://localhost:8000/v4', session=session)
    await session.close()

asyncio.run(main())

Testing

# In root of repository
$ pytest -m pytest tests/
# Optionally, you can run a single test:
$ pytest -m pytest tests/test_jikan.py::test_anime_episodes_success

Changelog for Jikanpy_v4

[1.0.0] - 2022-12-28

Added

  • Initial support for v4 of the Jikan API

Changed

  • Package name changed from jikanpy to jikanpy_v4

Removed

  • Removed suppport for Jikan API <= v3. See here for old package.

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

jikanpy_v4-1.0.2.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

jikanpy_v4-1.0.2-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file jikanpy_v4-1.0.2.tar.gz.

File metadata

  • Download URL: jikanpy_v4-1.0.2.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for jikanpy_v4-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f8b7c598773787a29c15a4330ef44f1d879950941425497b00b5e82fec9e4405
MD5 f38edabd495d1554e6225135289d4547
BLAKE2b-256 8d42ce99fd8bd23b58fef576e029b1127a2e12e502e19cd42ab7ce4fe6b5c20e

See more details on using hashes here.

File details

Details for the file jikanpy_v4-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: jikanpy_v4-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for jikanpy_v4-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7091f3f0cd3ee47c65e4635e726bff2c1283dfa64015b4e235d08197feb43e7b
MD5 6773aa6ca4c646b574da8d72fea19eec
BLAKE2b-256 b4c7f622ef87ed66392c2728ff2e8a0605d0adefddc0570d9430ed99f4a705bf

See more details on using hashes here.

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