Предоставляет ли IMDB API?

Недавно я нашел приложение для организации фильмов, которое извлекает данные из базы данных IMDB.

Предоставляет ли IMDB API для этого или какие-либо сторонние API доступны?

19 ответов

В настоящее время IMDb имеет два общедоступных API-интерфейса, которые, хотя и не документированы, очень быстрые и надежные (используются на их собственном сайте через AJAX).

  1. Статически кэшированный 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) {
    /* ... */
});
  1. Расширенный поиск

    • Поиск по имени (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, кажется, использует его

https://www.themoviedb.org/documentation/api

Да, но не бесплатно.

..... ежегодные сборы от 15 000 долл. США и выше в зависимости от аудитории за данные и лицензируемых данных.

URL: - http://www.imdb.com/licensing/

Существует API-интерфейс JSON для использования мобильными приложениями по адресу http://app.imdb.com/

Тем не менее, предупреждение является довольно серьезным:

Для использования только клиентами, авторизованными в письменном виде IMDb.
Авторы и пользователи неавторизованных клиентов принимают на себя полную юридическую ответственность за свои действия.

Я предполагаю, что это для тех разработчиков, которые платят за лицензию на доступ к данным через их API.

РЕДАКТИРОВАТЬ: Просто для удовольствия, я написал клиентскую библиотеку, чтобы попытаться прочитать данные из API, вы можете найти здесь: api-imdb

Очевидно, вы должны обратить внимание на предупреждение и действительно использовать что-то вроде TheMovieDB в качестве лучшей и более открытой базы данных.

Затем вы можете использовать эту оболочку Java API (которую я написал): api-themoviedb

Нашел этот

IMDbPY - это пакет Python, полезный для извлечения и управления данными из базы данных фильмов IMDb о фильмах, людях, персонажах и компаниях.

http://imdbpy.sourceforge.net/

https://deanclatworthy.com/tools.html является API-интерфейсом IMDB, но не работает из-за злоупотреблений.

У IMDB, похоже, еще нет прямого API на август 2016 года, но я видел много людей, пишущих скребки и прочее. Вот более стандартный способ доступа к данным фильма, используя кассовый интерфейс Buzz API. Все ответы в формате JSON и 5000 запросов в день по бесплатному плану.

Список вещей, предоставляемых API

  1. Фильм кредиты
  2. Идентификатор фильма
  3. Кино изображения
  4. Получить фильм по идентификатору IMDB
  5. Получить список последних фильмов
  6. Получить новые выпуски
  7. Получить даты выхода фильма
  8. Получить список переводов, доступных для конкретного фильма
  9. Получить видео, трейлеры и тизеры для фильма
  10. Поиск фильма по названию
  11. Также поддерживает телешоу, игры и видео

Если вы хотите фильм подробности 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, но, по словам продавца, с которым я разговаривал, они предлагают либо долю в обороте, либо фиксированную плату за использование, в зависимости от вашего бюджета. Я еще не использовал это, но это кажется довольно крутым.

NetFilx - это скорее персонализированный медиа сервис, но вы можете использовать его для публичной информации о фильмах. Он поддерживает Javascript и OData.
Также посмотрите JMDb: информация в основном та же, что вы можете получить при использовании веб-сайта IMDb.

Если вам нужна телевизионная информация, вы можете попробовать TVmaze.com.

Это бесплатно, быстро и надежно. Вот страница разработчика:

http://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

http://techdiary-viki.blogspot.com/2011/03/imdb-api.html

Другие вопросы по тегам