Обирайте за формою ваших викликів

Обирайте OMDb, коли вам потрібен один невеликий запис на тайтл і його безкоштовний ключ покриває ваш обсяг. Обирайте amodb, коли ви переростаєте його або коли хочете такий самий стиль запитів OMDb поруч з акторським складом, зображеннями й перекладами на одному ключі. OMDb повертає JSON або XML, використовує параметр apikey і пропонує безкоштовний ключ із добовим лімітом запитів 1,000 (перевірте їхній сайт) та платний рівень для підтримувачів. amodb лише платний і відповідає на основні параметри OMDb, а також на TMDB v3.

Що лишається незмінним

Ендпоінт OMDb розташований за адресою https://api.amodb.dev/omdb/, кінцевий слеш необов'язковий. Ваш наявний код розбору не потребує змін для цих елементів.

Елемент OMDbВ amodb
apikeyТой самий параметр, заповнений вашим ключем amodb
i і tПошук за id IMDb або за назвою
s і pageПошук із 10 результатами на сторінці та лічильником totalResults, page до 100
type і yФільтр за movie або series і за роком
plotshort або full
rПриймається лише json
Поля тілаНазвані як в OMDb, від Title до Response
RatingsМасив пар Source і Value для Internet Movie Database, Rotten Tomatoes і Metacritic, коли вони є
Помилки{"Response":"False","Error":"..."} з формулюваннями OMDb, у відповіді HTTP 200

Що не переноситься

  • XML. Запит з r=xml повертає 400 з {"Response":"False","Error":"Only r=json is supported."}.
  • Сезони й серії. Season і Episode ігноруються, а type=episode нічого не знаходить. Запит з i=tt0903747&Season=1 повертає запис серіалу, а не сезону. Для серій використовуйте /3/tv/{id}/season/{n}.
  • Інші параметри. callback ігнорується.
  • Поля без даних. DVD, Production і Website завжди дорівнюють "N/A". Записи серіалів мають totalSeasons і не містять DVD, BoxOffice, Production та Website.
  • Постери. Поле Poster вказує на https://img.amodb.dev/t/p/w300/... замість іншого хоста. Замініть w300 на w780, щоб отримати більше зображення з того самого шляху, а ключ для зображень не потрібен.

Повний список параметрів і помилок на сторінці ендпоінт OMDb.

Приклад відповіді

Запит з t=Fight Club повертає плоский об'єкт. Відповідь нижче справжня, скорочено лише текст Plot.

JSON
{
  "Title": "Fight Club",
  "Year": "1999",
  "Rated": "R",
  "Released": "15 Oct 1999",
  "Runtime": "139 min",
  "Genre": "Crime, Drama, Thriller",
  "Director": "David Fincher",
  "Writer": "Chuck Palahniuk, Jim Uhls",
  "Actors": "Brad Pitt, Edward Norton, Meat Loaf",
  "Plot": "A nameless first-person narrator attends support groups in an attempt to subdue his emotional state an...",
  "Language": "English",
  "Country": "United States, Germany",
  "Awards": "Nominated for 1 Oscar. 12 wins & 38 nominations total",
  "Poster": "https://img.amodb.dev/t/p/w300/qkrH7rjYKU4KOwwIl6wF6H3ISvm.jpg",
  "Ratings": [
    {
      "Source": "Internet Movie Database",
      "Value": "8.8/10"
    },
    {
      "Source": "Rotten Tomatoes",
      "Value": "81%"
    },
    {
      "Source": "Metacritic",
      "Value": "67/100"
    }
  ],
  "Metascore": "67",
  "imdbRating": "8.8",
  "imdbVotes": "2,669,989",
  "imdbID": "tt0137523",
  "Type": "movie",
  "DVD": "N/A",
  "BoxOffice": "$38,003,039",
  "Production": "N/A",
  "Website": "N/A",
  "Response": "True"
}

Значення це рядки, як в OMDb, тож imdbRating, imdbVotes і Runtime розбирайте самостійно. Кожен виклик рахується як один запит у вашому ліміті на хвилину, скільки б полів ви не читали.

Порівняння можливостей

МожливістьOMDbamodb
Модель оплатиБезкоштовний ключ плюс платний рівень для підтримувачів, дивіться їхній сайтПередплачувані періоди, від 1 до 24 місяців
Безкоштовний тарифБезкоштовний ключ із добовим лімітом 1,000, дивіться їхній сайтНемає, пробного періоду теж
АвтентифікаціяПараметр apikeyapikey на /omdb/, api_key або Bearer на /3
Формат відповідіJSON або XMLJSON
МовиДивіться їхню документацію14 мов інтерфейсу на шляхах /3
ФільмиТакТак
СеріалиСеріали та серії, поля дивіться в їхній документаціїЗаписи серіалів на /omdb/, сезони й серії на шляхах /3
ПерсониІмена як текст у кожному записіПрофілі, фільмографія й зображення на шляхах /3
ЗображенняПосилання на постер у кожному записіПосилання на постер плюс списки зображень, img.amodb.dev
РейтингиПоля Ratings, Metascore і imdbRatingТі самі поля плюс об'єкт ratings на шляхах /3
Ліміт запитівДобовий ліміт на безкоштовному ключі, дивіться їхній сайт20, 40 або 120 на хвилину на ключ
Комерційне використанняДивіться їхній сайтПродається як платний API, дивіться ціни
СумісністьВизначає протокол OMDbПараметри OMDb вище та читання TMDB v3

Чим відрізняється amodb

  • Ліміти за хвилину. Тарифи дозволяють 20, 40 або 120 запитів на хвилину в ковзному вікні 60 секунд. Кожна відповідь із ключем має X-RateLimit-Remaining, тож пакетне завдання може сповільнитися саме, ще до того як побачить 429.
  • Шлях угору від окремих записів. Запис OMDb містить акторський склад як текст. Шляхами /3 ви можете запросити той самий тайтл з акторським складом, відео й перекладами одним викликом, а imdbID знаходить запис через /3/find.
  • Більші зображення. Записи у стилі OMDb дають одне посилання на постер. Хост зображень віддає десять розмірів, від w92 до original.
  • Більше джерел рейтингів. Розширення /3/movie/{id}/ratings додає значення Kinopoisk, Metacritic, Rotten Tomatoes і TMDB, де вони відомі.

Де OMDb підходить краще

  • Невеликі або безкоштовні проєкти. Безкоштовного ключа з добовим лімітом 1,000 досить для прототипу чи хобі-сайту, а в amodb безкоштовного тарифу немає.
  • Споживачі XML. Якщо застаріла система розбирає XML, OMDb його пропонує, а amodb ні.
  • Пошук сезонів і серій. Маршрут /omdb/ в amodb не має режиму сезону чи серії, тож клієнту, побудованому на ньому, потрібні шляхи /3.
  • Простота. Один ендпоінт і жменя параметрів легко вивчити. Якщо вам потрібно лише це, перехід дасть мало.

Міграція на amodb

Змінюються лише базовий URL і ключ. Решту запиту залиште як є, після того як пошукаєте в коді r=xml, Season, Episode і type=episode.

JavaScript
const OMDB_BASE = process.env.OMDB_BASE_URL; // before: your current OMDb base URL
const AMODB_BASE = 'https://api.amodb.dev/omdb/'; // after

async function lookup(title) {
  const url = new URL(AMODB_BASE);
  url.searchParams.set('apikey', process.env.AMODB_KEY);
  url.searchParams.set('t', title);
  url.searchParams.set('plot', 'short');
  const res = await fetch(url);
  const data = await res.json();
  if (data.Response === 'False') throw new Error(data.Error);
  return data;
}

const movie = await lookup('Fight Club');
console.log(movie.Title, movie.Year, movie.imdbRating, movie.Poster);

Далі перевіряйте поле Response, як ви робили з OMDb. Коли значення це рядок "False", поле Error містить повідомлення. Для серій зіставте imdbID один раз через /3/find і читайте сезони з боку /3:

curl
curl -s "https://api.amodb.dev/3/find/tt0903747?external_source=imdb_id&api_key=$AMODB_KEY"
curl -s "https://api.amodb.dev/3/tv/1396/season/1?api_key=$AMODB_KEY"

Для боку у стилі TMDB дивіться автентифікація і швидкий старт.

Ціни

amodb платний і поновлюється лише тоді, коли ви купуєте ще один період. Три тарифи відрізняються лише частотою запитів, 20, 40 або 120 на хвилину, і кожен повертає всі дані. Періоди тривають 1, 3, 6, 12 або 24 місяці, а довші дають знижку від 10 до 40 відсотків. Актуальні суми дивіться на сторінці ціни.