Пошук аніме па жанры 16 і арыгінальнай мове ja

У amodb няма асобнага эндпоінта аніме. Аніме гэта фільтр на GET /3/discover/tv і GET /3/discover/movie: with_genres=16 (Animation) плюс with_original_language=ja. Дадайце id ключавога слова anime, які вы знаходзіце праз GET /3/search/keyword, каб пакінуць толькі назвы з пазнакай аніме.

Адно сумленнае абмежаванне: японская не ўваходзіць у 14 моў інтэрфейсу, якія падтрымлівае amodb. Назвы і апісанні вяртаюцца на мове, якую вы запытваеце, або па-англійску. Японская назва застаецца ў original_name для серыялаў і original_title для фільмаў.

Што вы атрымліваеце:

  • Серыялы аніме і поўнаметражныя аніме з тых жа фільтраў discover.
  • Арыгінальныя японскія назвы побач з лакалізаванымі.
  • Спісы сезонаў і эпізодаў для кожнага абранага серыяла.
  • Постэры і фонавыя выявы з https://img.amodb.dev/t/p/{size}/{file}.

Якія даныя вы атрымліваеце

Што вам трэбаВыклік або полеЗаўвагі
Серыялы анімеGET /3/discover/tv з with_genres=16 і with_original_language=jaresults нясуць name, original_name, first_air_date, genre_ids
Поўнаметражныя анімеGET /3/discover/movie з тымі ж двума фільтраміtitle, original_title, release_date
Id ключавога слова animeGET /3/search/keyword?query=animeМасіў results з id і name
Спіс эпізодаўGET /3/tv/{series_id}/season/{season_number}Адзін выклік на сезон
Японская назваoriginal_name або original_titleАрыгінальнае пісьмо, як захавана
Постэрposter_pathДадаецца да хоста выяў, ключ не патрэбны

Пачніце за 3 крокі

  1. Абярыце план на старонцы цэны. Усе даныя ёсць у кожным плане, адрозніваецца толькі частата: 20, 40 або 120 запытаў у хвіліну.
  2. Стварыце ключ у асабістым кабінеце.
  3. Адзін раз знайдзіце id ключавога слова, потым выклічце discover з ім і двума фільтрамі.

Прыклад запыту

Скрыпт на Python знаходзіць id ключавога слова anime, а потым пералічвае самыя папулярныя японскія анімацыйныя серыялы з гэтай пазнакай. Выклік curl пад ім пропускае ключавое слова і пералічвае адзін сезон эфіру па вокне дат.

bashpy
curl -s "https://api.amodb.dev/3/discover/tv?with_genres=16&with_original_language=ja&first_air_date.gte=2026-10-01&first_air_date.lte=2026-12-31&sort_by=popularity.desc" \
  -H "Authorization: Bearer $AMODB_KEY"
import os
import requests

BASE = "https://api.amodb.dev/3"
session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['AMODB_KEY']}"


def get(path, **params):
    r = session.get(BASE + path, params=params, timeout=10)
    r.raise_for_status()
    return r.json()


keywords = get("/search/keyword", query="anime")["results"]
anime_id = next((k["id"] for k in keywords if k["name"].lower() == "anime"), None)
if anime_id is None:
    raise SystemExit("anime keyword not found")

page = get(
    "/discover/tv",
    with_genres=16,
    with_original_language="ja",
    with_keywords=anime_id,
    sort_by="popularity.desc",
    language="en-US",
    page=1,
)
for show in page["results"]:
    print(show.get("first_air_date"), show["name"], "/", show["original_name"])

Скарочаны адказ для выкліку на Python вышэй: 2 з 19 вынікаў на старонцы 1, масівы скарочаны да 2 элементаў.

JSON
{
  "page": 1,
  "results": [
    {
      "adult": false,
      "backdrop_path": "/dmptwhmqxcMrCKgyvBlTt18PgDu.jpg",
      "first_air_date": "2005-04-22",
      "genre_ids": [
        10759,
        16
      ],
      "id": 65733,
      "name": "Doraemon",
      "origin_country": [
        "JP"
      ],
      "original_language": "ja",
      "original_name": "ドラえもん",
      "overview": "Robotic cat Doraemon is sent back in time from the 22nd century to protect 10-year-old...",
      "popularity": 301.2214,
      "poster_path": "/9ZN1P32SHviL3SV51qLivxycvcx.jpg",
      "vote_average": 8.089,
      "vote_count": 252
    },
    {
      "adult": false,
      "backdrop_path": "/mFKys64gbDQrFqwUheGwXQwo2JK.jpg",
      "first_air_date": "2004-10-05",
      "genre_ids": [
        10759,
        16
      ],
      "id": 30984,
      "name": "Bleach",
      "origin_country": [
        "JP"
      ],
      "original_language": "ja",
      "original_name": "BLEACH",
      "overview": "For as long as he can remember, Ichigo Kurosaki has been able to see ghosts. But when h...",
      "popularity": 190.3257,
      "poster_path": "/2EewmxXe72ogD0EaWM8gqa0ccIw.jpg",
      "vote_average": 8.4,
      "vote_count": 2295
    }
  ],
  "total_pages": 216,
  "total_results": 4302
}

Фільтры, што фарміруюць спіс аніме

ФільтрЗначэннеЭфект
with_genres16Animation. Коска азначае І, таму 16,35 гэта анімацыя і камедыя.
without_genresid жанруВыдаляе назвы з гэтым жанрам.
with_original_languagejaТолькі японскія арыгіналы.
with_keywordsid ключавога словаТолькі назвы з гэтым ключавым словам. Назвы без пазнакі прапускаюцца.
first_air_date.gte, first_air_date.lteYYYY-MM-DDАкно эфіру для серыялаў. Фільмы выкарыстоўваюць primary_release_date.gte і .lte.
sort_bypopularity.desc, vote_average.desc, first_air_date.descПарадак. Спалучайце vote_average.desc з vote_count.gte, каб малыя выбаркі не траплялі на першае месца.
pageад 1 да 500Да 20 вынікаў на старонку.

Пазнакі ключавых слоў выстаўлены часткова. Калі спіс выглядае кароткім, прыбярыце with_keywords і пакіньце фільтры жанру і мовы для шырэйшага ахопу. Поўны спіс фільтраў ёсць на старонцы пошук па фільтрах, а id ключавых слоў апісаны на старонцы ключавыя словы.

Поўнаметражныя аніме і доўгія серыялы

Фільмы выкарыстоўваюць тыя ж два фільтры на эндпоінце фільмаў. Гэты выклік пералічвае японскія анімацыйныя фільмы з добрым рэйтынгам, а vote_count.gte адсякае назвы з некалькімі галасамі.

curl
curl -s "https://api.amodb.dev/3/discover/movie?with_genres=16&with_original_language=ja&sort_by=vote_average.desc&vote_count.gte=200" \
  -H "Authorization: Bearer $AMODB_KEY"

Кожны вынік мае title, original_title, release_date і poster_path. Доўгія серыялы ў каталогу часта падзелены на некалькі сезонаў. GET /3/tv/{series_id}/episode_groups пералічвае іншыя парадкі з іх назвамі і колькасцю эпізодаў, дзе яны вядомыя, але саміх груп amodb не аддае, а number_of_episodes у серыяла дае агульную колькасць. Выклікі сезонаў апісаны на старонцы API серыялаў.

Назвы і мовы

Аніме гэта выпадак, калі арыгінальная назва важыць больш за ўсё, таму захоўвайце абодва палі.

ПолеШто змяшчаеПрызначэнне
nameНазва на мове, якую вы запыталіАсноўны подпіс у вашым інтэрфейсе
original_nameНазва на арыгінальнай мове, японскае пісьмо для японскіх арыгіналаўДругасны подпіс, карысны для заўзятараў, што ведаюць японскую назву
original_languagejaФільтруйце на сваім баку, калі змешваеце крыніцы
overviewЛакалізаваны тэкст, пусты, калі перакладу нямаПаўторыце запыт з language=en-US, калі пусты

GET /3/tv/{series_id}/alternative_titles пералічвае іншыя назвы па краінах, дзе яны вядомыя. 14 падтрымліваных моў пералічаны на старонцы мовы.

Параўнанне

МагчымасцьСкрэйпінг фанацкіх сайтаўAPI базы даных толькі пра анімеamodb
АхопТое, што ахоплівае сайтТолькі аніме, пра глыбіню глядзіце дакументацыюФільмы і серыялы ў адным каталогу, аніме выбіраецца фільтрамі
Выбар анімеКатэгорыі сайтаГлядзіце дакументацыюЖанр 16, with_original_language=ja, ключавое слова anime
Назва на арыгінальнай мовеПа-рознамуГлядзіце дакументацыюoriginal_name і original_title
Спісы эпізодаўРазбор са старонакГлядзіце дакументацыюВыклік сезона з масівам episodes
Японская мова інтэрфейсуЗалежыць ад сайтаГлядзіце дакументацыюНе падтрымліваецца, толькі арыгінальныя назвы
Умовы доступуУмовы кожнага сайтаБясплатныя і платныя тарыфы розныяПлатна, наперад, без бясплатнага тарыфа

Цэны

Спіс аніме гэта некалькі выклікаў discover, а вынікі discover застаюцца ў edge-кэшы 30 хвілін, таму 20 запытаў у хвіліну хопіць многім праграмам. Планы бываюць на 20, 40 або 120 запытаў у хвіліну з аднолькавымі данымі. Плаціце за 1, 3, 6, 12 або 24 месяцы са зніжкай 0, 10, 20, 30 і 40 працэнтаў і без аўтапрадаўжэння. Бясплатнага тарыфа няма. Абярыце план на старонцы цэны.