IMDB fournit-il une API? [fermé]

644

J'ai récemment trouvé une application d'organisateur de films qui récupère ses données dans la base de données IMDB .

Est -ce IMDB fournir une API pour cela, ou les API tiers disponibles?

tusay
la source
10
Existe-t-il une API pour les avis sur IMDB?
metdos
1
Pour simplement lier IMDB, utilisez le format suivant. <a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a> BTW: imdb_id follows this pattern: tt0000000
Igor Parra
1
quel est le nom de cette application d'organisateur de films? Je cherche quelque chose comme ça
Airlike
@Airlike Possible Plex . Je sais pour sûr que l'on organise des films et peut récupérer des données à partir d'IMDB.
maçon

Réponses:

453

L'IMDb possède une API publique qui, bien que non documentée, est rapide et fiable (utilisée sur le site officiel via AJAX).

API de suggestions de recherche

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

Recherche Avancée


Attention, ces API ne sont pas officielles et pourraient changer à tout moment!


Mise à jour (janvier 2019): l'API avancée n'existe plus. La bonne nouvelle est que l'API Suggestions prend désormais en charge les fonctionnalités "avancées" de la recherche par titre de film et par nom d'acteur.

Timo Tijhof
la source
2
RE: L'API JSONP ne retombe pas gracieusement, (au moins) elle retourne un code d'erreur HTTP, mais je conviens que c'est drôle que le corps de la réponse soit XML.
Omni5cience
9
J'ai récemment remarqué qu'il inclut également une propriété «i» pour les images. L'URL qui y est mentionnée est cependant une très grande image (probablement l'original). Pour obtenir une vignette, IMDb utilise ce qui suit: 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
pourriez-vous non seulement spécifier jsonp avec. Ajax si vous obtenez json avec jquery et je pense que getjson a été déprécié même quand cela a été écrit, il a été déprécié, je crois
Chris McGrath
2
@ChrisMcGrath: Je n'avais pas pensé à utiliser jQuery.ajax jsonpCallback, je l'ai ajouté à la réponse, merci! Quant à $ .getJSON: Non, cela n'a certainement pas été déprécié. C'est juste un petit wrapper autour de $ .ajax.
Timo Tijhof
2
Quelqu'un sait-il comment obtenir des images incluses dans la recherche avancée? On dirait qu'ils ne viennent qu'avec les suggestions ...
Cyril Mestrom
217

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

edit: en raison de problèmes juridiques, j'ai dû déplacer le service vers un nouveau domaine :)

bfritz
la source
1
C'est génial, je ne sais pas si c'est vraiment le vôtre ou vous l'avez trouvé, mais j'aimerais voir quelque chose autour des statistiques de disponibilité afin que je puisse savoir combien je peux compter dessus: D
Andrew G. Johnson
16
Au cas où quelqu'un se demanderait, ce n'est pas l'API officielle. Voir les réponses Pekka ou Krinkle pour cela.
Jano
7
c'est vraiment lent ..; (
Daniel Magnusson
14
@IanDavis, je travaille actuellement sur l'obtention d'un nouveau serveur dédié plus rapide / plus grand pour l'API, ce qui n'est pas bon marché! J'ai presque assez de dons pour l'acquérir dans les prochains jours. L'API reçoit plus de 2 millions de demandes par jour!
bfritz
4
@OptimusCrime J'ai eu un problème l'autre jour avec des IP de la gamme 85.XXX.XXX.XXX et j'ai dû les bloquer temporairement jusqu'à ce que je puisse contrôler les choses. Malheureusement, c'est l'un des compromis que je dois faire en n'exigeant pas de clés API, les gens ont tendance à en abuser.
bfritz
93

IMDB semble distribuer des données, mais uniquement dans des fichiers texte:

http://www.imdb.com/interfaces

il existe plusieurs API autour de cela que vous pouvez Google. Le grattage d'écran est explicitement interdit. Une API officielle semble être en préparation, mais cela fait déjà des années.

Pekka
la source
7
Comment est-il possible d'interdire le grattage d'écran?
11
@omouse D'après les termes : 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.cela ne rend pas ces termes automatiquement applicables dans toutes les juridictions, mais ils sont nombreux.
Pekka
6
Oui mais cette boîte de dialogue était destinée aux "Robots". Apparemment, mon robot ne comprend pas si bien l'anglais.
Zombies
2
Depuis décembre 2017, ces fichiers ne sont plus mis à jour par IMDb. Il existe une nouvelle API qui fournit des données dans un nouveau format. Bien qu'il soit plus facile à analyser, ce nouveau format est un très petit sous-ensemble du format précédent.
David Chappelle
1
Je me rends compte que c'est une question et une réponse extrêmement anciennes. Cependant, l'exploration de données accessibles au public n'est pas juridiquement exécutoire si vous n'avez pas signé de CLUF. Même si vous l'avez fait, si les informations sont accessibles au public par d'autres moyens, le CLUF n'est toujours pas juridiquement contraignant. Une décision importante a récemment été prise à cet effet contre LinkedIn. Voir: eff.org/deeplinks/2019/09/… IANAL mais les EFF le sont. C'est une décision très sensée. Si vous mettez des informations sur Internet, vous devez vous attendre à ce que les gens en fassent des choses.
CubicleSoft
48

Une autre alternative légale pour obtenir des informations sur le film est l' API Rotten-Tomatoes (par Fandango).

Johann
la source
L'API tomates pourries est-elle gratuite à utiliser dans une application commerciale? Disons, par exemple, que les utilisateurs obtiennent les détails d'un film à partir de son titre?
KerrM
1
Il ne semble pas qu'ils fassent de distinction entre une application commerciale ou non commerciale. Vous pouvez toujours consulter leurs TOS ici: developer.rottentomatoes.com/apps/tos Bien que vous serez limité à 10 000 appels par jour et 10 par seconde
Johann
1
Si vous proposez un programme non commercial et avez besoin de plus de 10 000 appels par jour, vous pouvez leur parler de licences. Les termes sont assez simples et faciles à respecter, dans la mesure où vous devez afficher leur logo et / ou une phrase particulière pour la notation.
Omertron
6
WTF? "L'API est destinée à être utilisée aux États-Unis uniquement. Le déploiement de contenu en dehors de ce territoire doit être approuvé par l'équipe Rotten Tomatoes. L'API ne peut PAS être partagée avec des tiers."
Dan Dascalescu
1
@DanDascalescu Quel dommage. J'allais l'utiliser en dehors des États
nicolascolman
48

Qu'en est-il de l'API TMDb?

Vous pouvez rechercher par imdb_id avec GET /find/{external_id}

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

hdorio
la source
8
Nécessite une inscription et un processus d' approbation de 3 jours ouvrables
Kostas
L'API tmdb peut utiliser l'identifiant unique du DVD pour rechercher l'imdb_id, si cela vous aide. En supposant qu'ils l'ont inscrit, bien sûr. dvdid.info pourrait également vous aider.
rogerdpack
7
vrinek - faux, il m'a envoyé la clé API immédiatement.
oriharel
1
Ce n'est pas un problème pour obtenir une clé API pour cela. J'en utilise un depuis des années et son API est bien conçue.
john16384
30

Oui, mais pas gratuitement.

..... des frais annuels variant de 15 000 $ à plus selon le public des données et les données sous licence.

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

Byran Zaugg
la source
1
semble que c'est gratuit pour un usage "personnel" seulement sinon vous devez les contacter ... wow nous avons vraiment besoin d'un équivalent ouvert d'imdb, bien que je suppose que tmdb soit proche ...
rogerdpack
salut, ce n'est pas vraiment une réponse à la question, plus un commentaire ci-dessus.
Ian Vaughan
6
@IanVaughan, je crois que ma réponse répond directement à cette question: Q: "IMDB fournit-il une API pour cela ...?". R: "Oui ... [lien vers les informations de licence de données]." Ce n'est pas de ma faute, IMDB ne documente pas publiquement une référence API.
Byran Zaugg du
8
Désolé, je pense que vous avez raison, je me corrige. Mes excuses.
Ian Vaughan
22

Il existe une API JSON à utiliser par les applications mobiles sur http://app.imdb.com

Cependant, l'avertissement est assez sévère:

À l'usage exclusif des clients autorisés par écrit par IMDb.
Les auteurs et utilisateurs de clients non autorisés acceptent l'entière responsabilité / responsabilité légale de leurs actions.

Je suppose que c'est pour les développeurs qui paient la licence pour accéder aux données via leur API.

EDIT : Juste pour les coups de pied, j'ai écrit une bibliothèque cliente pour tenter de lire les données de l'API, vous pouvez les trouver ici: api-imdb

Évidemment, vous devez faire attention à l'avertissement et vraiment utiliser quelque chose comme TheMovieDB comme une base de données meilleure et plus ouverte.

Ensuite, vous pouvez utiliser ce wrapper API Java (que j'ai écrit): api-themoviedb

Omertron
la source
1
J'écrirai votre bibliothèque pour NodeJS. Merci pour le partage!
arm.localhost
Comment quelqu'un pourrait-il obtenir une clé API pour l'utiliser?
0xMH
Une bibliothèque Python utilisant cette API: pypi.org/project/imdbpie code.richard.do/richardARPANET/imdb-pie @Mohammed Voir imdb.com/licensing
Gfy
9

Trouvé celui-ci

IMDbPY est un package Python utile pour récupérer et gérer les données de la base de données de films IMDb sur les films, les personnes, les personnages et les entreprises.

http://imdbpy.sourceforge.net/

markiv
la source
Il est également disponible sur PyPi: pypi.org/project/IMDbPY
Gino Mempin
9

https://deanclatworthy.com/tools.html est une API IMDB mais a été interrompue en raison d'abus.

Valentin Golev
la source
1
malheureusement, il sera bientôt fermé. Savez-vous comment ça marche?
PA.
1
Il ne propose également qu'une recherche très limitée, par titre de film uniquement
justinhj
Commander malhar2010.blogspot.com/2011/02/... pour l' utilisation IMDb api.
12
En tant qu'auteur de cette API, je dois souligner que les commentaires ci-dessus sont désormais redondants car ils ne sont pas fermés et que vous pouvez désormais effectuer une recherche par ID IMDB.
Dean
pour l'API imdb gratuite, consultez ce 99webtools.com/get-movie-info-imdb.php
Sunny
6

IMDB ne semble pas avoir encore d'API directe en août 2016, mais j'ai vu beaucoup de gens écrire des grattoirs et des trucs ci-dessus. Voici un moyen plus standard d'accéder aux données de film en utilisant l'API buzz du box-office. Toutes les réponses au format JSON et 5000 requêtes par jour sur un plan gratuit

Liste des choses fournies par l'API

  1. Crédits de film
  2. ID du film
  3. Images vidéo
  4. Obtenir un film par ID IMDB
  5. Obtenir la dernière liste de films
  6. Obtenez de nouvelles versions
  7. Obtenir les dates de sortie du film
  8. Obtenez la liste des traductions disponibles pour un film spécifique
  9. Obtenez des vidéos, des bandes-annonces et des teasers pour un film
  10. Rechercher un film par titre
  11. Prend également en charge les émissions de télévision, les jeux et les vidéos
PirateApp
la source
3

Voici une solution simple qui récupère les émissions par nom basé sur la requête de Krinkle:

Vous pouvez contourner la politique de même origine en demandant à votre serveur de récupérer l'URL au lieu d'essayer de la récupérer directement avec AJAX et vous n'avez pas besoin d'utiliser JSONP pour le faire.

Javascript (jQuery):

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

PHP (dans le fichier ajax.php):

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

Récemment au SXSWi 2012, dans leur "Mashery Lounge", il y avait un stand pour une API de type IMDB appelée de rovi . Ce n'est pas une API gratuite, mais selon le vendeur à qui j'ai parlé, ils proposent soit une part de rev, soit des frais fixes d'utilisation, en fonction de votre budget. Je ne l'ai pas encore utilisé mais ça a l'air plutôt cool.

bpapa
la source
plus vivant.
BishopZ
2

NetFilx est davantage un service multimédia personnalisé, mais vous pouvez l'utiliser pour des informations publiques concernant les films. Il prend en charge Javascript et OData.
Regardez également JMDb : Les informations sont essentiellement les mêmes que celles que vous pouvez obtenir lorsque vous utilisez le site Web IMDb.

ThePCWizard
la source
1
Netflix a fermé son API publique il y a presque un an. Depuis qu'ils ont supprimé l'intégralité du sous-domaine développeur, y compris la publication disant qu'ils l'étaient, voici un lien vers un article à ce sujet: gigaom.com/2014/11/14/…
James Skemp
1

ok j'ai trouvé celui-ci grattoir IMDB

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

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

ou une implémentation imdbapi.org pour 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; }
    }

}
fubo
la source
Cela a l'air bien mais selon IMDB, il est interdit d'utiliser ce genre d'outils. Plus d'informations help.imdb.com/article/imdb/general-information/…
nicolascolman
1

Si vous voulez l'API des détails du film, vous pouvez envisager

L'API OMDB qui est la base de données Open Movies renvoie la note IBDB, les votes IMDB et vous pouvez également inclure la note Rotten Tomato.

Ou bien vous pouvez utiliser

My Api Films qui vous permet de rechercher avec l'ID IMDB et renvoie des informations détaillées mais il a des limites de demande.

Akshay Khale
la source
0

Voici un module Python fournissant des API pour obtenir des données du site Web IMDB

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

vikas
la source
Ce module utilise le grattage d'écran, ce qui est contraire aux TOS
Farinha
6
Utiliser IMDB du tout dans une application est contraire à leurs TOS, apparemment ...
rogerdpack
vous devez les contacter et demander à utiliser leur contenu dans votre application commerciale. Il est dit dans leur TOS que vous devez avoir le consentement écrit de l'IMDB.
Mike
0

Je suis assez confiant que l'application que vous avez trouvée obtient réellement son formulaire d'API Themoviedb.org (ils obtiennent la plupart de ces informations d'IMDB). Ils ont une API ouverte gratuite qui est utilisée par de nombreuses applications d'organisateur de films / XMBC.

Mike
la source