Bietet IMDB eine API? [geschlossen]


643

Ich habe kürzlich eine Movie Organizer-Anwendung gefunden, die ihre Daten aus der IMDB-Datenbank abruft .

Stellt IMDB eine API dafür bereit oder sind APIs von Drittanbietern verfügbar?


10
Gibt es eine API für Bewertungen in der IMDB?
Metdos

1
Um nur IMDB zu verknüpfen, verwenden Sie das folgende Format. <a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a> BTW: imdb_id follows this pattern: tt0000000
Igor Parra

1
Wie heißt diese Filmorganisator-Anwendung? Ich suche so etwas
Airlike

@Airlike Möglicherweise Plex . Ich weiß mit Sicherheit, dass man Filme organisiert und Daten aus der IMDB abrufen kann.
Maurer

Antworten:


452

Die IMDb verfügt über eine öffentliche API, die zwar nicht dokumentiert, aber schnell und zuverlässig ist (auf der offiziellen Website über AJAX verwendet).

API für Suchvorschläge

// 1) Vanilla JavaScript (JSON-P)
function addScript(src) { var s = document.createElement('script'); s.src = src; document.head.appendChild(s); }
window.imdb$foo = function (results) {
  /* ... */
};
addScript('https://sg.media-imdb.com/suggests/f/foo.json');

// 2) Using jQuery (JSON-P)
jQuery.ajax({
    url: 'https://sg.media-imdb.com/suggests/f/foo.json',
    dataType: 'jsonp',
    cache: true,
    jsonp: false,
    jsonpCallback: 'imdb$foo'
}).then(function (results) {
    /* ... */
});

// 3) Pure JSON (with jQuery)
// Use a local proxy that strips the "padding" of JSON-P,
// e.g. "imdb$foo(" and ")", leaving pure JSON only.
jQuery.getJSON('/api/imdb/?q=foo', function (results) {
    /* ... */
});

// 4) Pure JSON (ES2017 and Fetch API)
// Using a custom proxy at "/api" that strips the JSON-P padding.
const resp = await fetch('/api/imdb/?q=foo');
const results = await resp.json();

Erweiterte Suche


Beachten Sie, dass diese APIs inoffiziell sind und sich jederzeit ändern können!


Update (Januar 2019): Die erweiterte API ist nicht mehr vorhanden. Die gute Nachricht ist, dass die Suggestions-API jetzt auch die "erweiterten" Funktionen der Suche nach Filmtiteln und Schauspielernamen unterstützt.


2
RE: Die JSONP-API greift (zumindest) nicht ordnungsgemäß zurück, sondern gibt einen HTTP-Fehlercode zurück, aber ich stimme zu, dass es lustig ist, dass der Antworttext XML ist.
Omni5cience

9
Ich habe kürzlich festgestellt, dass es auch eine 'i'-Eigenschaft für Bilder enthält. Die darin erwähnte URL ist jedoch ein sehr großes Bild (wahrscheinlich das Original). Um eine Miniaturansicht zu erhalten, verwendet IMDb Folgendes : if (ua.i) { c.img = { src: ua.i[0].replace("._V1_.jpg", "._V1._SX40_CR0,0,40,54_.jpg"), width: 40, height: 54 } }.
Timo Tijhof

2
Könnten Sie nicht einfach jsonp with.Ajax angeben, wenn Sie json mit jquery bekommen und ich denke, getjson wurde veraltet, selbst als dies geschrieben wurde, war es veraltet, glaube ich
Chris McGrath

2
@ChrisMcGrath: Ich hatte nicht darüber nachgedacht, jQuery.ajax jsonpCallback zu verwenden. Ich habe es der Antwort hinzugefügt: Danke! Was $ .getJSON betrifft: Nein, das ist mit Sicherheit nicht veraltet. Es ist nur eine kleine Hülle um $ .ajax.
Timo Tijhof

2
Weiß jemand, wie man Bilder in die erweiterte Suche einbezieht? Scheint, sie kommen nur mit den Vorschlägen ...
Cyril Mestrom

217

neue API @ http://www.omdbapi.com

bearbeiten: aus rechtlichen Gründen musste der Dienst auf eine neue Domain verschoben werden :)


1
Das ist großartig, ich bin mir nicht sicher, ob dies tatsächlich deins ist oder ob Sie es gerade gefunden haben, würde aber gerne etwas über die Verfügbarkeitsstatistiken sehen, damit ich wissen kann, wie viel ich darauf zählen kann: D
Andrew G. Johnson

16
Falls sich jemand wundert, ist dies nicht die offizielle API. Siehe Pekka oder Krinkle Antworten dafür.
Jano

7
es ist wirklich langsam ..; (
Daniel Magnusson

14
@ IanDavis, ich arbeite derzeit daran, einen neuen schnelleren / größeren dedizierten Server für die API zu bekommen, was nicht billig ist! Ich habe fast genug Spenden, um diese in den nächsten Tagen zu erwerben. Die API erhält täglich über 2 Millionen Anfragen!
Bfritz

4
@OptimusCrime Ich hatte neulich ein Problem mit IPs aus dem Bereich 85.XXX.XXX.XXX und musste ALLE vorübergehend blockieren, bis ich die Dinge unter Kontrolle hatte. Leider ist dies einer der Kompromisse, mit denen ich umgehen muss, wenn ich keine API-Schlüssel benötige. Die Leute neigen dazu, einfach nur die Hölle daraus zu machen.
Bfritz

93

IMDB selbst scheint Daten zu verteilen, aber nur in Textdateien:

http://www.imdb.com/interfaces

Es gibt mehrere APIs, die Sie googeln können. Screen Scraping ist ausdrücklich verboten. Eine offizielle API scheint in Arbeit zu sein, aber das ist schon seit Jahren so.


7
Wie ist es möglich, dass Screen Scraping verboten wird?

11
@omouse Aus den Bedingungen : Robots and Screen Scraping: You may not use data mining, robots, screen scraping, or similar data gathering and extraction tools on this site, except with our express written consent as noted below.Das macht diese Bedingungen nicht automatisch in jeder Gerichtsbarkeit durchsetzbar, aber sie sind in vielen.
Pekka

6
Ja, aber dieser Dialog war an "Roboter" gerichtet. Anscheinend versteht mein Roboter kein Englisch, also na ja.
Zombies

2
Ab Dezember 2017 werden diese Dateien nicht mehr von IMDb aktualisiert. Es gibt eine neue API, die Daten in einem neuen Format bereitstellt. Dieses neue Format ist zwar einfacher zu analysieren, aber eine sehr kleine Teilmenge des vorherigen Formats.
David Chappelle

1
Mir ist klar, dass dies eine extrem alte Frage und Antwort ist. Öffentlich zugängliche Data Mining-Daten sind jedoch nicht rechtlich durchsetzbar, wenn Sie keine EULA unterzeichnet haben. Selbst wenn Sie dies getan haben und die Informationen auf andere Weise öffentlich zugänglich sind, ist die EULA immer noch nicht rechtsverbindlich. Vor kurzem wurde eine wichtige Entscheidung in diesem Sinne gegen LinkedIn getroffen. Siehe: eff.org/deeplinks/2019/09/… IANAL, aber die EFF sind. Es ist eine sehr vernünftige Entscheidung. Wenn Sie Informationen ins Internet stellen, sollten Sie erwarten, dass die Leute damit etwas anfangen.
CubicleSoft

48

Eine weitere legale Alternative, um Filminformationen zu erhalten, ist die Rotten-Tomatoes-API (von Fandango).


Ist die API für faule Tomaten in einer kommerziellen Anwendung kostenlos? Nehmen wir zum Beispiel an, Benutzer sollen die Details eines Films aus dem Titel abrufen?
KerrM

1
Es sieht nicht so aus, als würden sie zwischen kommerziellen und nichtkommerziellen Apps unterscheiden. Sie können ihre Nutzungsbedingungen jederzeit hier einsehen: developer.rottentomatoes.com/apps/tos Obwohl Sie auf 10.000 Anrufe pro Tag und 10 pro Sekunde beschränkt sind
Johann

1
Wenn Sie ein nichtkommerzielles Programm anbieten und mehr als 10.000 Anrufe pro Tag benötigen, können Sie mit ihnen über die Lizenzierung sprechen. Die Begriffe sind ziemlich einfach und leicht zu befolgen, da Sie ihr Logo und / oder einen bestimmten Wortlaut für die Bewertung anzeigen müssen.
Omertron

6
WTF? "Die API ist nur für die Verwendung in den USA vorgesehen. Die Bereitstellung von Inhalten außerhalb dieses Gebiets muss vom Rotten Tomatoes-Team genehmigt werden. Die API darf NICHT an Dritte weitergegeben werden."
Dan Dascalescu

1
@ DanDascalescu Wie schade. Ich wollte es außerhalb der USA
benutzen

48

Was ist mit der TMDb-API?

Sie können nach imdb_id mit suchen GET /find/{external_id}

https://developers.themoviedb.org/3/find/find-by-id


8
Erfordert eine Registrierung und ein 3 Arbeitstag Genehmigung Prozess obwohl
Kostas

tmdb api kann die eindeutige ID der DVD verwenden, um die imdb_id nachzuschlagen, wenn dies hilft. Vorausgesetzt natürlich, sie haben es aufgelistet. dvdid.info könnte auch helfen.
Rogerdpack

7
vrinek - falsch, es hat mir sofort den API-Schlüssel geschickt.
Oriharel

1
Es ist kein Problem, dafür einen API-Schlüssel zu erhalten. Ich benutze seit Jahren eine und die API ist gut gestaltet.
John 16384

30

Ja, aber nicht kostenlos.

..... jährliche Gebühren zwischen 15.000 USD und höher, abhängig von der Zielgruppe für die Daten und den Daten, die lizenziert werden.

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


1
Es scheint nur für den "persönlichen" Gebrauch kostenlos zu sein, sonst müssen Sie sie kontaktieren ... wow, wir brauchen wirklich ein offenes Äquivalent von imdb, obwohl ich nehme an, dass tmdb in der Nähe ist ...
Rogerdpack

Hallo, dies ist nicht wirklich eine Antwort auf die Frage, eher ein Kommentar zu oben.
Ian Vaughan

6
@IanVaughan, ich glaube, meine Antwort geht direkt auf diese Frage ein: F: "Bietet IMDB eine API dafür ...?". A: "Ja ... [Link zu Datenlizenzinformationen]." Es ist nicht meine Schuld, IMDB dokumentiert keine API-Referenz öffentlich.
Byran Zaugg

8
Entschuldigung, ich denke du hast recht, ich stehe korrigiert da. Entschuldigung.
Ian Vaughan

22

Unter http://app.imdb.com gibt es eine JSON-API zur Verwendung durch mobile Anwendungen

Die Warnung ist jedoch ziemlich streng:

Nur zur Verwendung durch von IMDb schriftlich autorisierte Kunden.
Autoren und Benutzer nicht autorisierter Kunden übernehmen die volle rechtliche Haftung für ihre Handlungen.

Ich gehe davon aus, dass dies für diejenigen Entwickler gilt, die für die Lizenz bezahlen, um über ihre API auf die Daten zuzugreifen.

EDIT : Nur zum Spaß habe ich eine Client-Bibliothek geschrieben, um zu versuchen, die Daten von der API zu lesen. Sie finden sie hier: api-imdb

Natürlich sollten Sie auf die Warnung achten und wirklich etwas wie TheMovieDB als bessere und offenere Datenbank verwenden.

Dann können Sie diesen Java-API-Wrapper (den ich geschrieben habe) verwenden: api-themoviedb


1
Ich werde Ihre Bibliothek für NodeJS schreiben. Ich danke Ihnen für das Teilen!
arm.localhost

Wie könnte jemand einen API-Schlüssel für die Verwendung erhalten?
0xMH

Eine Python-Bibliothek, die diese API verwendet: pypi.org/project/imdbpie code.richard.do/richardARPANET/imdb-pie @Mohammed Siehe imdb.com/licensing
Gfy


9

https://deanclatworthy.com/tools.html ist eine IMDB-API, die jedoch aufgrund von Missbrauch ausgefallen ist.


1
Leider wird es bald geschlossen. Weißt du wie es funktioniert?
PA.

1
Es bietet auch nur eine sehr begrenzte Suche, nur nach Filmtitel
justinhj

Kasse malhar2010.blogspot.com/2011/02/… für die Verwendung der IMDb-API.

12
Als Autor dieser API sollte ich darauf hinweisen, dass die obigen Kommentare jetzt überflüssig sind, da sie nicht geschlossen werden, und dass Sie jetzt nach IMDB-ID suchen können.
Dean

für kostenlose imdb API siehe diese 99webtools.com/get-movie-info-imdb.php
Sunny

6

IMDB scheint seit August 2016 noch keine direkte API zu haben, aber ich habe viele Leute gesehen, die oben Schaber und ähnliches geschrieben haben. Hier finden Sie eine Standardmethode für den Zugriff auf Filmdaten mithilfe der Kassen-Buzz-API. Alle Antworten im JSON-Format und 5000 Anfragen pro Tag in einem kostenlosen Plan

Liste der von der API bereitgestellten Dinge

  1. Film Credits
  2. Film ID
  3. Filmbilder
  4. Film per IMDB-ID abrufen
  5. Holen Sie sich die Liste der neuesten Filme
  6. Holen Sie sich neue Releases
  7. Holen Sie sich die Veröffentlichungsdaten des Films
  8. Holen Sie sich die Liste der für einen bestimmten Film verfügbaren Übersetzungen
  9. Holen Sie sich Videos, Trailer und Teaser für einen Film
  10. Suchen Sie nach einem Film nach Titel
  11. Unterstützt auch TV-Shows, Spiele und Videos


3

Hier ist eine einfache Lösung, die basierend auf der Abfrage von Krinkle Anzeigen nach Namen abruft:

Sie können die Richtlinie mit demselben Ursprung umgehen, indem Ihr Server die URL abruft, anstatt zu versuchen, sie direkt mit AJAX abzurufen, und Sie müssen dafür nicht JSONP verwenden.

Javascript (jQuery):

function getShowOptionsFromName (name) {
    $.ajax({
        url: "ajax.php",
        method: "GET",
        data: {q: name},
        dataType: "json"
    }).done(function(data){
        console.log(data);
    });
}

PHP (in der Datei ajax.php):

$q = urlencode($_GET["q"]);
echo file_get_contents("http://www.imdb.com/xml/find?json=1&nr=1&tt=on&q=$q");

2

Kürzlich gab es auf der SXSWi 2012 in ihrer "Mashery Lounge" einen Stand für eine IMDB-ähnliche API, die von rovi aufgerufen wurde . Es ist keine kostenlose API, aber laut dem Verkäufer, mit dem ich gesprochen habe, bieten sie je nach Budget entweder eine Rev-Aktie oder eine Pauschalgebühr für die Nutzung an. Ich habe es noch nicht benutzt, aber es scheint ziemlich cool zu sein.


nicht mehr am Leben.
BishopZ

2

NetFilx ist eher ein personalisierter Mediendienst, aber Sie können ihn für öffentliche Informationen zu Filmen verwenden. Es unterstützt Javascript und OData.
Schauen Sie auch JMDb : Die Informationen sind im Grunde die gleichen, die Sie erhalten können, wenn Sie die IMDb-Website verwenden.


1
Netflix hat seine öffentliche API vor fast einem Jahr heruntergefahren. Da sie die gesamte Entwickler-Subdomain entfernt haben, einschließlich des Beitrags, der besagt, dass sie sie herunterfahren, ist hier ein Link zu einer Nachricht: gigaom.com/2014/11/14/…
James Skemp

1

Ok, ich habe diesen einen IMDB-Schaber gefunden

für C #: http://web3o.blogspot.de/2010/11/aspnetc-imdb-scraping-api.html

PHP hier: http://web3o.blogspot.de/2010/10/php-imdb-scraper-for-new-imdb-template.html

alternativ eine imdbapi.org-Implementierung für 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; }
    }

}

Es sieht gut aus, aber laut IMDB ist es verboten, diese Art von Tools zu verwenden. Weitere Informationen help.imdb.com/article/imdb/general-information/…
nicolascolman

1

Wenn Sie Filmdetails API möchten, können Sie berücksichtigen

Die OMDB-API (Open Movies Database) gibt die IBDB-Bewertung, die IMDB-Stimmen und die Rotten Tomato-Bewertung zurück.

Oder Sie können verwenden

My Api Films , mit dem Sie mit der IMDB-ID suchen können und detaillierte Informationen zurückgeben, für die jedoch Anforderungsbeschränkungen gelten.



0

Hier ist ein Python-Modul, das APIs zum Abrufen von Daten von der IMDB-Website bereitstellt

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


Dieses Modul verwendet Screen-Scraping, was gegen die AGB
Farinha

6
IMDB Mit überhaupt in einer App ist gegen ihren TOS, offenbar ...
rogerdpack

ya, Sie müssen sie kontaktieren und anfordern, ihren Inhalt in Ihrer kommerziellen Anwendung zu verwenden. In den Nutzungsbedingungen heißt es, dass Sie die schriftliche Zustimmung der IMDB benötigen.
Mike

0

Ich bin ziemlich sicher, dass die Anwendung, die Sie gefunden haben, tatsächlich ihre Informationen aus der API von Themoviedb.org erhält (sie erhalten die meisten Inhalte von IMDB). Sie haben eine kostenlose offene API, die von vielen Movie Organizer / XMBC-Anwendungen verwendet wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.