AnimeAPI Python Wrapper
=======================
animeapi-python is a Python wrapper for the
`AnimeAPI <https://animeapi.my.id>`__ made by
`nattadasu <https://github.com/nattadasu>`__.
The wrapper is released with type hints and async support in mind for
ease of use and is compatible with Python 3.6 or higher.
Installation
------------
.. code:: sh
pip install animeapi-py
Depending on your system, you may need to use ``pip3`` instead of
``pip``, or ``sudo pip`` instead of ``pip``.
Requirements
~~~~~~~~~~~~
- Python 3.7 or higher
- `aiohttp <https://pypi.org/project/aiohttp/>`__ (for async support)
- `dacite <https://pypi.org/project/dacite/>`__
- `requests <https://pypi.org/project/requests/>`__
- `typing_extensions <https://pypi.org/project/typing-extensions/>`__ (for Python <= 3.8)
Usage
-----
.. code:: py
import animeapi
with animeapi.AnimeAPI() as api:
# Get anime relation data for the anime with ID 1 on MyAnimeList
mal = api.get_anime_relations(1, animeapi.Platform.MYANIMELIST)
print(mal)
# Get list of anime available on AniList
anilist = api.get_list_anime_relations(animeapi.Platform.ANILIST)
print(anilist[:2]) # Print first two results
# Get dictionary of anime available on Kitsu
kitsu = api.get_dict_anime_relations(animeapi.Platform.KITSU)
print(kitsu['1']) # Print data for Cowboy Bebop
We recommend using the ``with`` statement to create an instance of
``AnimeAPI`` as we designed the wrapper to be easy to switch between
sync and async, although you can also use ``AnimeAPI`` directly on
``sync`` methods only.
Asyncronous Usage
~~~~~~~~~~~~~~~~~
Similarly, for async, you just need to replace ``AnimeAPI`` with
``AsyncAnimeAPI`` and use ``await`` on the methods.
You must use the wrapper in ``with`` statement, or you will receive
``RuntimeError`` exception.
.. code:: py
import animeapi
async with animeapi.AsyncAnimeAPI() as api:
# Get anime relation data for the anime with ID 1 on MyAnimeList
mal = await api.get_anime_relations(1, animeapi.Platform.MYANIMELIST)
print(mal)
# Get list of anime available on AniList
anilist = await api.get_list_anime_relations(animeapi.Platform.ANILIST)
print(anilist[:2]) # Print first two results
# Get dictionary of anime available on Kitsu
kitsu = await api.get_dict_anime_relations(animeapi.Platform.KITSU)
print(kitsu['1']) # Print data for Cowboy Bebop
Documentation
-------------
You can find the documentation for the wrapper `here <https://animeapi-py.readthedocs.io/en/latest/>`__
Available Methods
~~~~~~~~~~~~~~~~~
``get_anime_relations(title_id: str | int, platform: str | Platform, media_type: str | TraktMediaType | TmdbMediaType | None = None, title_season: int | None) -> AnimeRelation``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This method equals to the ``/:platform/:title_id`` endpoint on the API.
.. code:: py
# Get anime relation data for the anime with ID 1 on MyAnimeList
mal = api.get_anime_relations(1, animeapi.Platform.MYANIMELIST)
print(mal)
``get_dict_anime_relations(platform: str | Platform) -> dict[str, AnimeRelation]``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This method equals to the ``/:platform`` endpoint on the API. Use this
method if you want to get complete data for all anime available on a
platform and wanted to be able to access the data by the anime ID
faster.
.. code:: py
# Get dictionary of anime available on Kitsu
kitsu = api.get_dict_anime_relations(animeapi.Platform.KITSU)
print(kitsu['1']) # Print data for Cowboy Bebop
``get_list_anime_relations(platform: str | Platform) -> list[AnimeRelation]``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This method equals to the ``/:platform()`` endpoint on the API.
.. code:: py
# Get list of anime available on AniList
anilist = api.get_list_anime_relations(animeapi.Platform.ANILIST)
print(anilist[:2]) # Print first two results
``get_list_index() -> list[AnimeRelation]``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This method equals to the ``/animeapi`` endpoint on the API.
.. code:: py
# Get list of anime available on AnimeAPI
animeapi = api.get_list_index()
print(animeapi[:2]) # Print first two results
``get_status() -> ApiStatus``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This method equals to the ``/status`` endpoint on the API.
.. code:: py
# Get status of AnimeAPI
status = api.get_status()
print(status)
``get_heartbeat() -> Heartbeat``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This method equals to the ``/heartbeat`` endpoint on the API.
.. code:: py
# Get heartbeat of AnimeAPI
heartbeat = api.get_heartbeat()
print(heartbeat)
``get_updated_time() -> Updated``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This method equals to the ``/updated`` endpoint on the API.
.. code:: py
# Get last updated time of AnimeAPI
updated = api.get_updated_time(True)
print(updated)
print(updated.datetime()) # Convert to datetime class
License
-------
``animeapi-py`` is licensed under the `GNU Affero General Public License
v3.0 <LICENSE>`__.
Raw data
{
"_id": null,
"home_page": "",
"name": "animeapi-py",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "anime,api,wrapper,async,python,animeapi,nattadasu,relations,mappings,type hints,type annotations",
"author": "",
"author_email": "nattadasu <hello@nattadasu.my.id>",
"download_url": "https://files.pythonhosted.org/packages/d9/0f/805ff0d666cd2f65128ab4f4f3a54f5a77af96942bda2bb225c5458715d1/animeapi-py-3.4.0.tar.gz",
"platform": null,
"description": "AnimeAPI Python Wrapper\n=======================\n\nanimeapi-python is a Python wrapper for the\n`AnimeAPI <https://animeapi.my.id>`__ made by\n`nattadasu <https://github.com/nattadasu>`__.\n\nThe wrapper is released with type hints and async support in mind for\nease of use and is compatible with Python 3.6 or higher.\n\nInstallation\n------------\n\n.. code:: sh\n\n pip install animeapi-py\n\nDepending on your system, you may need to use ``pip3`` instead of\n``pip``, or ``sudo pip`` instead of ``pip``.\n\nRequirements\n~~~~~~~~~~~~\n\n- Python 3.7 or higher\n- `aiohttp <https://pypi.org/project/aiohttp/>`__ (for async support)\n- `dacite <https://pypi.org/project/dacite/>`__\n- `requests <https://pypi.org/project/requests/>`__\n- `typing_extensions <https://pypi.org/project/typing-extensions/>`__ (for Python <= 3.8)\n\nUsage\n-----\n\n.. code:: py\n\n import animeapi\n\n with animeapi.AnimeAPI() as api:\n # Get anime relation data for the anime with ID 1 on MyAnimeList\n mal = api.get_anime_relations(1, animeapi.Platform.MYANIMELIST)\n print(mal)\n\n # Get list of anime available on AniList\n anilist = api.get_list_anime_relations(animeapi.Platform.ANILIST)\n print(anilist[:2]) # Print first two results\n\n # Get dictionary of anime available on Kitsu\n kitsu = api.get_dict_anime_relations(animeapi.Platform.KITSU)\n print(kitsu['1']) # Print data for Cowboy Bebop\n\nWe recommend using the ``with`` statement to create an instance of\n``AnimeAPI`` as we designed the wrapper to be easy to switch between\nsync and async, although you can also use ``AnimeAPI`` directly on\n``sync`` methods only.\n\nAsyncronous Usage\n~~~~~~~~~~~~~~~~~\n\nSimilarly, for async, you just need to replace ``AnimeAPI`` with\n``AsyncAnimeAPI`` and use ``await`` on the methods.\n\nYou must use the wrapper in ``with`` statement, or you will receive\n``RuntimeError`` exception.\n\n.. code:: py\n\n import animeapi\n\n async with animeapi.AsyncAnimeAPI() as api:\n # Get anime relation data for the anime with ID 1 on MyAnimeList\n mal = await api.get_anime_relations(1, animeapi.Platform.MYANIMELIST)\n print(mal)\n\n # Get list of anime available on AniList\n anilist = await api.get_list_anime_relations(animeapi.Platform.ANILIST)\n print(anilist[:2]) # Print first two results\n\n # Get dictionary of anime available on Kitsu\n kitsu = await api.get_dict_anime_relations(animeapi.Platform.KITSU)\n print(kitsu['1']) # Print data for Cowboy Bebop\n\nDocumentation\n-------------\n\nYou can find the documentation for the wrapper `here <https://animeapi-py.readthedocs.io/en/latest/>`__\n\nAvailable Methods\n~~~~~~~~~~~~~~~~~\n\n``get_anime_relations(title_id: str | int, platform: str | Platform, media_type: str | TraktMediaType | TmdbMediaType | None = None, title_season: int | None) -> AnimeRelation``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method equals to the ``/:platform/:title_id`` endpoint on the API.\n\n.. code:: py\n\n # Get anime relation data for the anime with ID 1 on MyAnimeList\n mal = api.get_anime_relations(1, animeapi.Platform.MYANIMELIST)\n print(mal)\n\n``get_dict_anime_relations(platform: str | Platform) -> dict[str, AnimeRelation]``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method equals to the ``/:platform`` endpoint on the API. Use this\nmethod if you want to get complete data for all anime available on a\nplatform and wanted to be able to access the data by the anime ID\nfaster.\n\n.. code:: py\n\n # Get dictionary of anime available on Kitsu\n kitsu = api.get_dict_anime_relations(animeapi.Platform.KITSU)\n print(kitsu['1']) # Print data for Cowboy Bebop\n\n``get_list_anime_relations(platform: str | Platform) -> list[AnimeRelation]``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method equals to the ``/:platform()`` endpoint on the API.\n\n.. code:: py\n\n # Get list of anime available on AniList\n anilist = api.get_list_anime_relations(animeapi.Platform.ANILIST)\n print(anilist[:2]) # Print first two results\n\n``get_list_index() -> list[AnimeRelation]``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method equals to the ``/animeapi`` endpoint on the API.\n\n.. code:: py\n\n # Get list of anime available on AnimeAPI\n animeapi = api.get_list_index()\n print(animeapi[:2]) # Print first two results\n\n``get_status() -> ApiStatus``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method equals to the ``/status`` endpoint on the API.\n\n.. code:: py\n\n # Get status of AnimeAPI\n status = api.get_status()\n print(status)\n\n``get_heartbeat() -> Heartbeat``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method equals to the ``/heartbeat`` endpoint on the API.\n\n.. code:: py\n\n # Get heartbeat of AnimeAPI\n heartbeat = api.get_heartbeat()\n print(heartbeat)\n\n``get_updated_time() -> Updated``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis method equals to the ``/updated`` endpoint on the API.\n\n.. code:: py\n\n # Get last updated time of AnimeAPI\n updated = api.get_updated_time(True)\n print(updated)\n print(updated.datetime()) # Convert to datetime class\n\nLicense\n-------\n\n``animeapi-py`` is licensed under the `GNU Affero General Public License\nv3.0 <LICENSE>`__.\n",
"bugtrack_url": null,
"license": "AGPL-3.0-or-later",
"summary": "A Python wrapper for the AnimeAPI by nattadasu with type hints and additional async support.",
"version": "3.4.0",
"project_urls": {
"Bug Tracker": "https://github.com/nattadasu/animeapi-py/issues",
"Homepage": "https://animeapi.my.id",
"Source": "https://github.com/nattadasu/animeapi-py"
},
"split_keywords": [
"anime",
"api",
"wrapper",
"async",
"python",
"animeapi",
"nattadasu",
"relations",
"mappings",
"type hints",
"type annotations"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "411a8fc5f6620d1875155422ca0a4c8baa5e24411aee4a15f750911f2bcc3c58",
"md5": "40ea5b17571550fb7065157e22c35c1c",
"sha256": "06288fb8e18550b150acb3ad74e1c6d8f0cff40e070c05b69a59e3c4e25e1104"
},
"downloads": -1,
"filename": "animeapi_py-3.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "40ea5b17571550fb7065157e22c35c1c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 23710,
"upload_time": "2023-08-21T09:41:14",
"upload_time_iso_8601": "2023-08-21T09:41:14.232512Z",
"url": "https://files.pythonhosted.org/packages/41/1a/8fc5f6620d1875155422ca0a4c8baa5e24411aee4a15f750911f2bcc3c58/animeapi_py-3.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d90f805ff0d666cd2f65128ab4f4f3a54f5a77af96942bda2bb225c5458715d1",
"md5": "d8e5d2965ec5f4ddec724e830e7b1f2a",
"sha256": "fc1fdb9eca987d94787592f8a53bcdacd9e11716c0647179a1a3b660d450d490"
},
"downloads": -1,
"filename": "animeapi-py-3.4.0.tar.gz",
"has_sig": false,
"md5_digest": "d8e5d2965ec5f4ddec724e830e7b1f2a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 22450,
"upload_time": "2023-08-21T09:41:15",
"upload_time_iso_8601": "2023-08-21T09:41:15.773875Z",
"url": "https://files.pythonhosted.org/packages/d9/0f/805ff0d666cd2f65128ab4f4f3a54f5a77af96942bda2bb225c5458715d1/animeapi-py-3.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-21 09:41:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nattadasu",
"github_project": "animeapi-py",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "animeapi-py"
}