IMDB fornisce un'API? [chiuso]


644

Recentemente ho trovato un'applicazione per l'organizzazione di filmati che recupera i suoi dati dal database IMDB .

Fa IMDB fornire un'API per questo, o di terze parti API disponibili?


10
Esistono API per recensioni su IMDB?
metdos,

1
Per collegare solo IMDB utilizzare il seguente formato. <a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a> BTW: imdb_id follows this pattern: tt0000000
Igor Parra,

1
qual è il nome di questa applicazione di organizzazione film? Sto cercando qualcosa del genere
Airlike

@Airlike Possibilmente Plex . So per certo che si organizzano film e si possono recuperare dati da IMDB.
muratore

Risposte:


453

Il IMDb ha un'API pubblica che, sebbene non documentata, è veloce e affidabile (utilizzata sul sito ufficiale attraverso AJAX).

API Suggerimenti di ricerca

// 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();

Ricerca Avanzata


Attenzione che queste API non sono ufficiali e potrebbero cambiare in qualsiasi momento!


Aggiornamento (gennaio 2019): l'API avanzata non esiste più. La buona notizia è che l'API dei suggerimenti ora supporta le funzionalità "avanzate" della ricerca per titoli di film e nomi di attori.


2
RE: L'API JSONP non si ripete con grazia, (almeno) restituisce un codice di errore HTTP, ma sono d'accordo che è divertente che il corpo della risposta sia XML.
Omni5cience,

9
Di recente ho notato che include anche una proprietà 'i' per le immagini. L'URL qui menzionato è comunque un'immagine molto grande (probabilmente l'originale). Per ottenere una miniatura, IMDb utilizza il seguente: 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
potresti non solo specificare jsonp con.Ajax se ottieni json con jquery e penso che getjson sia stato deprecato anche quando questo è stato scritto era deprecato credo
Chris McGrath l'

2
@ChrisMcGrath: non avevo pensato di usare jQuery.ajax jsonpCallback, l'ho aggiunto alla risposta, grazie! Per quanto riguarda $ .getJSON: No, sicuramente non è stato deprecato. È solo un piccolo involucro attorno a $ .ajax.
Timo Tijhof,

2
Qualcuno sa come ottenere immagini incluse nella ricerca avanzata? Sembra che vengano solo con i suggerimenti ...
Cyril Mestrom,

217

nuovo api @ http://www.omdbapi.com

modifica: a causa di problemi legali ha dovuto spostare il servizio in un nuovo dominio :)


1
È fantastico, non sono sicuro che questo sia effettivamente tuo o lo hai appena trovato, ma mi piacerebbe vedere qualcosa in merito alle statistiche sui tempi di attività in modo da poter sapere quanto posso contare su di esso: D
Andrew G. Johnson,

16
Nel caso qualcuno si stia chiedendo, questa non è l'API ufficiale. Vedi le risposte Pekka o Krinkle per questo.
Jano,

7
è davvero lento ..; (
Daniel Magnusson,

14
@IanDavis, attualmente sto lavorando per ottenere un nuovo server dedicato più veloce / più grande per l'API, che non è economico! Ho quasi abbastanza donazioni per acquisirlo entro i prossimi giorni. L'API riceve oltre 2 milioni di richieste al giorno!
bfritz,

4
@OptimusCrime L'altro giorno ho avuto un problema con gli IP della gamma 85.XXX.XXX.XXX e ho dovuto bloccare temporaneamente TUTTI fino a quando non avrei potuto controllare tutto. Purtroppo questo è uno dei compromessi che devo affrontare non richiedendo le chiavi API, le persone tendono ad abusarne al diavolo.
bfritz,

93

Lo stesso IMDB sembra distribuire dati, ma solo in file di testo:

http://www.imdb.com/interfaces

ci sono diverse API intorno a questo che puoi Google. La raschiatura dello schermo è esplicitamente vietata. Un'API ufficiale sembra essere in lavorazione, ma lo è già da anni.


7
Come è possibile vietare la raschiatura dello schermo?

11
@omouse Dai termini : 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.ciò non rende automaticamente applicabili questi termini in ogni giurisdizione, ma sono in molti.
Pekka,

6
Sì, ma questa finestra di dialogo era diretta a "Robot". Apparentemente il mio robot non capisce l'inglese, quindi vabbè.
Zombi,

2
A partire da dicembre 2017, questi file non vengono più aggiornati da IMDb. Esiste una nuova API che fornisce dati in un nuovo formato. Sebbene sia più facile da analizzare, questo nuovo formato è un sottoinsieme molto piccolo del formato precedente.
David Chappelle il

1
Mi rendo conto che questa è una domanda e una risposta estremamente vecchie. Tuttavia, il data mining accessibile pubblicamente non è legalmente applicabile se non hai firmato un contratto di licenza con l'utente finale. Anche se lo hai fatto, se le informazioni sono accessibili al pubblico con altri mezzi, l'EULA non è ancora legalmente vincolante. Recentemente è stata presa una decisione importante in tal senso contro LinkedIn. Vedi: eff.org/deeplinks/2019/09/… IANAL ma i FEP lo sono. È una sentenza molto sensata. Se metti informazioni su Internet, dovresti aspettarti che le persone facciano cose con esso.
CubicleSoft,

48

Un'altra alternativa legale per ottenere informazioni sul film è l' API Rotten-Tomatoes (di Fandango).


L'API sui pomodori marci è libera di essere utilizzata in un'applicazione commerciale? Ad esempio, dire agli utenti di ottenere i dettagli di un film dal titolo?
KerrM,

1
Non sembra che stiano facendo alcuna distinzione tra app commerciali o non commerciali. Puoi sempre dare un'occhiata ai loro TOS qui: developer.rottentomatoes.com/apps/tos Anche se sarai limitato a 10.000 chiamate al giorno e 10 al secondo
Johann

1
Se stai fornendo un programma non commerciale e hai bisogno di più di 10.000 chiamate al giorno, puoi parlare con loro delle licenze. I termini sono abbastanza semplici e facili da rispettare, in quanto è necessario visualizzare il loro logo e / o una particolare frase di formulazione per la valutazione.
Omertron,

6
WTF? "L'API è destinata esclusivamente agli Stati Uniti. La distribuzione di contenuti al di fuori di questo territorio deve essere approvata dal team di Rotten Tomatoes. L'API NON può essere condivisa con terze parti."
Dan Dascalescu,

1
@DanDascalescu Che peccato. Lo avrei usato fuori dagli Stati Uniti
nicolascolman il

48

Che dire dell'API TMDb?

Puoi cercare per imdb_id con GET /find/{external_id}

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


8
Richiede tuttavia una registrazione e un processo di approvazione di 3 giorni lavorativi
Kostas,

tmdb api può usare l'ID univoco del dvd per cercare imdb_id, se questo aiuta. Supponendo che lo abbiano elencato, ovviamente. Anche dvdid.info potrebbe aiutare.
rogerdpack,

7
vrinek - sbagliato, mi ha inviato immediatamente la chiave API.
oriharel

1
Non è un problema ottenere una chiave API per questo. Ne uso uno da anni e la sua API è ben progettata.
john16384

30

Sì, ma non gratuitamente.

..... le tasse annuali vanno da $ 15.000 in su a seconda del pubblico per i dati e quali dati vengono concessi in licenza.

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


1
sembra che sia gratuito solo per uso "personale", altrimenti è necessario contattarli ... wow, abbiamo davvero bisogno di un equivalente aperto di imdb, anche se suppongo che tmdb sia vicino ...
rogerdpack,

ciao, questa non è davvero una risposta alla domanda, più un commento sopra.
Ian Vaughan,

6
@IanVaughan, credo che la mia risposta affronti direttamente questa domanda: D: "IMDB fornisce un'API per questo ...?". A: "Sì ... [link alle informazioni sulla licenza dei dati]." Non è colpa mia, IMDB non documenta pubblicamente un riferimento API.
Byran Zaugg,

8
Scusa, penso che tu abbia ragione, sono corretto. Scuse.
Ian Vaughan,

22

Esiste un'API JSON per l'utilizzo da parte delle applicazioni mobili su http://app.imdb.com

Tuttavia, l'avviso è piuttosto grave:

Per l'uso solo da parte dei clienti autorizzati per iscritto da IMDb.
Gli autori e gli utenti di clienti non autorizzati accettano la piena esposizione legale / responsabilità per le loro azioni.

Presumo che questo sia per quegli sviluppatori che pagano la licenza per accedere ai dati tramite la loro API.

EDIT : Solo per i calci, ho scritto una libreria client per tentare di leggere i dati dall'API, puoi trovarli qui: api-imdb

Ovviamente, dovresti prestare attenzione all'avvertimento e in realtà usare qualcosa come TheMovieDB come database migliore e più aperto.

Quindi è possibile utilizzare questo wrapper API Java (che ho scritto): api-themoviedb


1
Scriverò la tua biblioteca per NodeJS. Grazie per aver condiviso!
arm.localhost il

Come si può ottenere la chiave API per usarla?
0xMH,

Una libreria Python che utilizza questa API: pypi.org/project/imdbpie code.richard.do/richardARPANET/imdb-pie @Mohammed Vedi imdb.com/licensing
Gfy,


9

https://deanclatworthy.com/tools.html è un'API IMDB ma è stata disattivata a causa di abusi.


1
sfortunatamente, verrà presto chiuso. Sai come funziona?
PA.

1
Offre solo una ricerca molto limitata, solo per titolo del film
justinhj

Acquista malhar2010.blogspot.com/2011/02/... per l'utilizzo di IMDb api.

12
Come autore di questa API, dovrei sottolineare che i commenti di cui sopra sono ora ridondanti in quanto non vengono chiusi e che ora è possibile cercare tramite ID IMDB.
Decano del

per l'API imdb gratuita vedere questo 99webtools.com/get-movie-info-imdb.php
Sunny

6

IMDB non sembra avere ancora un'API diretta ad agosto 2016, ma ho visto molte persone scrivere raschietti e cose sopra. Ecco un modo più standard per accedere ai dati del film utilizzando l'API di buzz al botteghino. Tutte le risposte in formato JSON e 5000 query al giorno su un piano gratuito

Elenco delle cose fornite dall'API

  1. Crediti film
  2. ID film
  3. Immagini di film
  4. Ottieni film per ID IMDB
  5. Ottieni l'elenco dei film più recenti
  6. Ottieni nuove versioni
  7. Ottieni le date di uscita del film
  8. Ottieni l'elenco delle traduzioni disponibili per un film specifico
  9. Ottieni video, trailer e teaser per un film
  10. Cerca un film per titolo
  11. Supporta anche programmi TV, giochi e video


3

Ecco una semplice soluzione che recupera gli spettacoli per nome in base alla query di Krinkle:

Puoi aggirare la stessa politica di origine facendo in modo che il tuo server recuperi l'URL invece di provare a recuperarlo direttamente con AJAX e non devi usare JSONP per farlo.

Javascript (jQuery):

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

PHP (nel file 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

Di recente a SXSWi 2012, nella loro "Mashery Lounge", c'era uno stand per un'API simile a IMDB chiamata da rovi . Non è un'API gratuita, ma secondo l'addetto alle vendite con cui ho parlato, offrono una quota di compravendita o una tariffa fissa per l'utilizzo, a seconda del budget. Non l'ho ancora usato, ma sembra piuttosto bello.


non più vivo.
BishopZ,

2

NetFilx è più un servizio multimediale personalizzato ma è possibile utilizzarlo per informazioni pubbliche sui film. Supporta Javascript e OData.
Guarda anche JMDb : le informazioni sono sostanzialmente le stesse che puoi ottenere usando il sito web di IMDb.


1
Netflix ha chiuso l'API pubblica quasi un anno fa. Da quando hanno rimosso l'intero sottodominio degli sviluppatori, incluso il post che diceva che lo stavano chiudendo, ecco un link a un articolo su di esso: gigaom.com/2014/11/14/…
James Skemp

1

ok ho trovato questo raschietto IMDB

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

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

in alternativa un'implementazione imdbapi.org per 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; }
    }

}

Sembra buono ma secondo IMDB, è vietato usare questo tipo di strumenti. Maggiori informazioni help.imdb.com/article/imdb/general-information/…
nicolascolman

1

Se vuoi i dettagli del film api, puoi prendere in considerazione

L'API OMDB che è Database Open Movies restituisce la valutazione IBDB, i voti IMDB e puoi includere anche la valutazione Rotten Tomato.

Oppure puoi usare

My Api Films che ti permette di cercare con ID IMDB e restituisce informazioni dettagliate ma ha limiti di richiesta.



0

Ecco un modulo Python che fornisce API per ottenere dati dal sito web IMDB

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


Quel modulo utilizza lo screen-scraping, che è contro il TOS
Farinha il

6
Utilizzando IMDB affatto in un app è contro la loro TOS, a quanto pare ...
rogerdpack

Sì, devi contattarli e richiedere di utilizzare il loro contenuto nella tua applicazione commerciale. Dice che nel loro TOS devi avere il consenso scritto di IMDB.
Mike,

0

Sono abbastanza fiducioso che l'applicazione che hai trovato in realtà ottenga le loro informazioni dall'API di Themoviedb.org (ottengono la maggior parte delle cose da IMDB). Hanno un'API aperta gratuita che viene utilizzata molto dall'organizzatore di film / dalle applicazioni XMBC.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.