Предоставляет ли IMDB API?
Недавно я нашел приложение для организации фильмов, которое извлекает данные из базы данных IMDB.
Предоставляет ли IMDB API для этого или какие-либо сторонние API доступны?
19 ответов
В настоящее время IMDb имеет два общедоступных API-интерфейса, которые, хотя и не документированы, очень быстрые и надежные (используются на их собственном сайте через AJAX).
Статически кэшированный API поисковых предложений:
- http://sg.media-imdb.com/suggests/a/aa.json
- http://sg.media-imdb.com/suggests/h/hello.json
- Формат: JSONP
Даунсайд:
Он в формате JSONP, однако параметр обратного вызова не может быть установлен путем передачи параметра обратного вызова. Чтобы использовать его в кросс-доменном режиме, вам нужно использовать имя функции, которое они выбирают (в формате "imdb${searchphrase}", см. Пример ниже). Или используйте локальный прокси (например, небольшой php-файл), который загружает (и кэширует!) Его из IMDb и удаляет обратный вызов JSON-P, или заменяет его пользовательским обратным вызовом.
Если нет никаких результатов, это не изящно отступает, но вместо этого показывает ошибку XML
// Basic
window.imdb$foo = function (list) {
/* ... */
};
jQuery.getScript('http://sg.media-imdb.com/suggests/f/foo.json');
// Using jQuery.ajax (let jQuery handle the callback)
jQuery.ajax({
url: 'http://sg.media-imdb.com/suggests/f/foo.json',
dataType: 'jsonp',
cache: true,
jsonp: false,
jsonpCallback: 'imdb$foo'
}).done(function (result) {
/* ... */
});
// With local proxy to a PHP script replacing imdb$foo with a sanitized
// version of $_GET['callback'] (https://stackru.com/a/8811412/319266)
jQuery.getJSON('./imdb.php?q=foo&callback=?', function (list) {
/* ... */
});
Расширенный поиск
- Поиск по имени (json): http://www.imdb.com/xml/find?json=1&nr=1&nm=on&q=jeniffer+garner
- Поиск по названию (xml): http://www.imdb.com/xml/find?xml=1&nr=1&tt=on&q=lost
- Формат: JSON, XML и многое другое
- Даунсайд:
- Нет JSONP. Для использования кросс-домена JavaScript требуется локальный прокси.
- Нет документации, больше форматов могут быть доступны
- Перевернутый
- Живой поиск!
- Назовите поддержку и для актеров!
- Правильный откат к пустому объекту
Как уже говорилось, оба этих API недокументированы. Они могут измениться в любое время.
См. Также /questions/42174126/nuzhno-li-dezinfitsirovat-parametr-obratnogo-vyizova-iz-vyizova-jsonp/42174134#42174134, для примера JSON API в PHP.
Новый API @ http://www.omdbapi.com/
редактировать: из-за юридических вопросов пришлось перенести сервис на новый домен:)
Сами IMDB, похоже, распространяют данные, но только в текстовых файлах:
http://www.imdb.com/interfaces
Есть несколько API вокруг этого, что вы можете Google. Соскоб экрана явно запрещен. Официальный API, кажется, находится в разработке, но так было уже много лет.
Другая легальная альтернатива для получения информации о фильме - это Rotten-Tomatoes API (от Fandango).
А как насчет TMDb API?
Вы можете искать по imdb_id с Movie.imdbLookup
XBMC Media Center, кажется, использует его
Да, но не бесплатно.
..... ежегодные сборы от 15 000 долл. США и выше в зависимости от аудитории за данные и лицензируемых данных.
Существует API-интерфейс JSON для использования мобильными приложениями по адресу http://app.imdb.com/
Тем не менее, предупреждение является довольно серьезным:
Для использования только клиентами, авторизованными в письменном виде IMDb.
Авторы и пользователи неавторизованных клиентов принимают на себя полную юридическую ответственность за свои действия.
Я предполагаю, что это для тех разработчиков, которые платят за лицензию на доступ к данным через их API.
РЕДАКТИРОВАТЬ: Просто для удовольствия, я написал клиентскую библиотеку, чтобы попытаться прочитать данные из API, вы можете найти здесь: api-imdb
Очевидно, вы должны обратить внимание на предупреждение и действительно использовать что-то вроде TheMovieDB в качестве лучшей и более открытой базы данных.
Затем вы можете использовать эту оболочку Java API (которую я написал): api-themoviedb
Нашел этот
IMDbPY - это пакет Python, полезный для извлечения и управления данными из базы данных фильмов IMDb о фильмах, людях, персонажах и компаниях.
https://deanclatworthy.com/tools.html является API-интерфейсом IMDB, но не работает из-за злоупотреблений.
У IMDB, похоже, еще нет прямого API на август 2016 года, но я видел много людей, пишущих скребки и прочее. Вот более стандартный способ доступа к данным фильма, используя кассовый интерфейс Buzz API. Все ответы в формате JSON и 5000 запросов в день по бесплатному плану.
Список вещей, предоставляемых API
- Фильм кредиты
- Идентификатор фильма
- Кино изображения
- Получить фильм по идентификатору IMDB
- Получить список последних фильмов
- Получить новые выпуски
- Получить даты выхода фильма
- Получить список переводов, доступных для конкретного фильма
- Получить видео, трейлеры и тизеры для фильма
- Поиск фильма по названию
- Также поддерживает телешоу, игры и видео
Если вы хотите фильм подробности API, вы можете рассмотреть
OMDB API, который является базой данных открытых фильмов, возвращает рейтинг IBDB, голоса IMDB, и вы также можете включить рейтинг Rotten Tomato.
Или вы можете использовать
Мои Api Films, которые позволяют выполнять поиск по идентификатору IMDB и возвращают подробную информацию, но имеют ограничения по запросу.
Этот deanclatworthy, кажется, все еще работает, и есть еще один: http://imdbapi.poromenos.org/
Вот простое решение, которое выбирает шоу по имени на основе запроса от Krinkle:
Вы можете обойти политику одного и того же происхождения, если ваш сервер извлекает URL-адрес, вместо того чтобы пытаться получить его напрямую с помощью AJAX, и вам не нужно использовать JSONP для этого.
Javascript (jQuery):
function getShowOptionsFromName (name) {
$.ajax({
url: "ajax.php",
method: "GET",
data: {q: name},
dataType: "json"
}).done(function(data){
console.log(data);
});
}
PHP (в файле ajax.php):
$q = urlencode($_GET["q"]);
echo file_get_contents("http://www.imdb.com/xml/find?json=1&nr=1&tt=on&q=$q");
Недавно на SXSWi 2012, в их "Mashery Lounge", был стенд для IMDB-подобного API, вызванного из rovi. Это не бесплатный API, но, по словам продавца, с которым я разговаривал, они предлагают либо долю в обороте, либо фиксированную плату за использование, в зависимости от вашего бюджета. Я еще не использовал это, но это кажется довольно крутым.
Если вам нужна телевизионная информация, вы можете попробовать TVmaze.com.
Это бесплатно, быстро и надежно. Вот страница разработчика:
Хорошо, я нашел этот скребок IMDB
для C#: http://web3o.blogspot.de/2010/11/aspnetc-imdb-scraping-api.html
PHP здесь: http://web3o.blogspot.de/2010/10/php-imdb-scraper-for-new-imdb-template.html
альтернативно реализация imdbapi.org для C#:
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Xml.Linq;
using HtmlAgilityPack; // http://htmlagilitypack.codeplex.com/
public class IMDBHelper
{
public static imdbitem GetInfoByTitle(string Title)
{
string url = "http://imdbapi.org/?type=xml&limit=1&title=" + Title;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "GET";
req.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))";
string source;
using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
{
source = reader.ReadToEnd();
}
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(source);
XDocument xdoc = XDocument.Parse(doc.DocumentNode.InnerHtml, LoadOptions.None);
imdbitem i = new imdbitem();
i.rating = xdoc.Descendants("rating").Select(x => x.Value).FirstOrDefault();
i.rating_count = xdoc.Descendants("rating_count").Select(x => x.Value).FirstOrDefault();
i.year = xdoc.Descendants("year").Select(x => x.Value).FirstOrDefault();
i.rated = xdoc.Descendants("rated").Select(x => x.Value).FirstOrDefault();
i.title = xdoc.Descendants("title").Select(x => x.Value).FirstOrDefault();
i.imdb_url = xdoc.Descendants("imdb_url").Select(x => x.Value).FirstOrDefault();
i.plot_simple = xdoc.Descendants("plot_simple").Select(x => x.Value).FirstOrDefault();
i.type = xdoc.Descendants("type").Select(x => x.Value).FirstOrDefault();
i.poster = xdoc.Descendants("poster").Select(x => x.Value).FirstOrDefault();
i.imdb_id = xdoc.Descendants("imdb_id").Select(x => x.Value).FirstOrDefault();
i.also_known_as = xdoc.Descendants("also_known_as").Select(x => x.Value).FirstOrDefault();
i.language = xdoc.Descendants("language").Select(x => x.Value).FirstOrDefault();
i.country = xdoc.Descendants("country").Select(x => x.Value).FirstOrDefault();
i.release_date = xdoc.Descendants("release_date").Select(x => x.Value).FirstOrDefault();
i.filming_locations = xdoc.Descendants("filming_locations").Select(x => x.Value).FirstOrDefault();
i.runtime = xdoc.Descendants("runtime").Select(x => x.Value).FirstOrDefault();
i.directors = xdoc.Descendants("directors").Descendants("item").Select(x => x.Value).ToList();
i.writers = xdoc.Descendants("writers").Descendants("item").Select(x => x.Value).ToList();
i.actors = xdoc.Descendants("actors").Descendants("item").Select(x => x.Value).ToList();
i.genres = xdoc.Descendants("genres").Descendants("item").Select(x => x.Value).ToList();
return i;
}
public class imdbitem
{
public string rating { get; set; }
public string rating_count { get; set; }
public string year { get; set; }
public string rated { get; set; }
public string title { get; set; }
public string imdb_url { get; set; }
public string plot_simple { get; set; }
public string type { get; set; }
public string poster { get; set; }
public string imdb_id { get; set; }
public string also_known_as { get; set; }
public string language { get; set; }
public string country { get; set; }
public string release_date { get; set; }
public string filming_locations { get; set; }
public string runtime { get; set; }
public List<string> directors { get; set; }
public List<string> writers { get; set; }
public List<string> actors { get; set; }
public List<string> genres { get; set; }
}
}
Я уверен, что приложение, которое вы нашли, на самом деле получает информацию из API Themoviedb.org (большую часть этого материала они получают из IMDB). У них есть бесплатный открытый API, который используется во многих приложениях организатора фильмов /XMBC.
Вот модуль Python, предоставляющий API для получения данных с сайта IMDB