Обирайте за формою ваших викликів
Обирайте OMDb, коли вам потрібен один невеликий запис на тайтл і його безкоштовний ключ покриває ваш обсяг. Обирайте amodb, коли ви переростаєте його або коли хочете такий самий стиль запитів OMDb поруч з акторським складом, зображеннями й перекладами на одному ключі. OMDb повертає JSON або XML, використовує параметр apikey і пропонує безкоштовний ключ із добовим лімітом запитів 1,000 (перевірте їхній сайт) та платний рівень для підтримувачів. amodb лише платний і відповідає на основні параметри OMDb, а також на TMDB v3.
Що лишається незмінним
Ендпоінт OMDb розташований за адресою https:/, кінцевий слеш необов'язковий. Ваш наявний код розбору не потребує змін для цих елементів.
| Елемент OMDb | В amodb |
|---|---|
apikey | Той самий параметр, заповнений вашим ключем amodb |
i і t | Пошук за id IMDb або за назвою |
s і page | Пошук із 10 результатами на сторінці та лічильником totalResults, page до 100 |
type і y | Фільтр за movie або series і за роком |
plot | short або full |
r | Приймається лише json |
| Поля тіла | Названі як в OMDb, від Title до Response |
Ratings | Масив пар Source і Value для Internet Movie Database, Rotten Tomatoes і Metacritic, коли вони є |
| Помилки | {"Response":"False", з формулюваннями 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.
{
"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 розбирайте самостійно. Кожен виклик рахується як один запит у вашому ліміті на хвилину, скільки б полів ви не читали.
Порівняння можливостей
| Можливість | OMDb | amodb |
|---|---|---|
| Модель оплати | Безкоштовний ключ плюс платний рівень для підтримувачів, дивіться їхній сайт | Передплачувані періоди, від 1 до 24 місяців |
| Безкоштовний тариф | Безкоштовний ключ із добовим лімітом 1,000, дивіться їхній сайт | Немає, пробного періоду теж |
| Автентифікація | Параметр apikey | apikey на /omdb/, api_key або Bearer на /3 |
| Формат відповіді | JSON або XML | JSON |
| Мови | Дивіться їхню документацію | 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.
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 -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 відсотків. Актуальні суми дивіться на сторінці ціни.