web-dev-qa-db-fra.com

IMDB fournit-il une API?

J'ai récemment trouvé une application organisateur de film qui extrait ses données de la base de données base de données IMDB .

IMDB fournit-il une API pour cette API ou toute autre API tierce disponible?

621
tusay

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

API de recherche suggérée

// 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 peuvent 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 titres de films et les noms d'acteurs.

433
Timo Tijhof

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

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

208
bfritz

IMDB eux-mêmes semblent 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 utiliser Google. Le grattage d'écran est explicitement interdit. Une API officielle semble être en préparation, mais cela fait déjà des années.

88
Pekka 웃

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

49
Johann

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

Vous pouvez rechercher par imdb_id avec Movie.imdbLookup

XBMC Media Center semble l'utiliser

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

47
hdorio

Oui, mais pas gratuitement.

..... des frais annuels allant de 15 000 $ à plus, en fonction du public cible des données et des données sous licence.

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

29
Byran Zaugg

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

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

À utiliser uniquement par les clients autorisés par écrit par IMDb.
Les auteurs et les utilisateurs de clients non autorisés acceptent la responsabilité/la responsabilité juridiques de leurs actes.

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

EDIT: Juste pour le plaisir, 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 devriez faire attention à l'avertissement et utiliser vraiment quelque chose comme: TheMovieDB comme base de données meilleure et plus ouverte.

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

22
Omertron

https://deanclatworthy.com/tools.html est une API IMDB, mais a été arrêtée pour cause d'abus.

9
Valentin Golev

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 sociétés.

http://imdbpy.sourceforge.net/

6
markiv

IMDB ne semble pas encore avoir d’API directe au mois d’août 2016, mais j’ai vu beaucoup de gens écrire des grattoirs et autres choses dessus. Ici est un moyen plus standard d'accéder aux données d'un film à l'aide de l'API Buzz Box Office. Toutes les réponses au format JSON et 5000 requêtes par jour sur un forfait gratuit

Liste des choses fournies par l'API

  1. Crédits du film
  2. ID de film
  3. Images du film
  4. Obtenir le film par identifiant IMDB
  5. Obtenir la liste des derniers films
  6. Obtenir de nouvelles versions
  7. Obtenir les dates de sortie du film
  8. Obtenir 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
6
PirateApp

Voici une solution simple qui va chercher spectacles par nom en fonction de la requête de Krinkle:

Vous pouvez contourner la règle de même origine en demandant à votre serveur d'extraire l'URL au lieu d'essayer de l'extraire directement avec AJAX et vous inutile 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");
3
Brett Pennings

ce deanclatworthy semble toujours fonctionner et il y en a un autre: http://imdbapi.poromenos.org/

3
myincome

NetFilx est plus un service multimédia personnalisé, mais vous pouvez l’utiliser pour des informations publiques concernant les films. Il supporte Javascript et OData.
Regardez aussi JMDb : Les informations sont fondamentalement les mêmes que celles que vous pouvez obtenir lorsque vous utilisez le site Web IMDb.

2
ThePCWizard

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

2
bpapa

Si vous voulez des détails de film api vous pouvez envisager

OMDB API qui correspond à Open movies Database Renvoie la classification IBDB, les votes IMDB et vous pouvez également inclure la classification de Tomates pourries.

Ou bien vous pouvez utiliser

My Api Films qui vous permet de rechercher avec un identifiant IMDB et renvoie des informations détaillées, mais le nombre de requêtes est limité.

1
Akshay Khale

Si vous avez besoin d’informations sur la télévision, essayez TVmaze.com .

C'est gratuit, rapide et fiable. Voici la page développeur:

http://api.tvmaze.com/

1
Saeed Masoumi

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

sinon, 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; }
    }

}
1
fubo

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

0
vikas

Je suis assez confiant que l'application que vous avez trouvée reçoit réellement leurs informations de l'API de Themoviedb.org (ils obtiennent la plupart de leurs contenus sur IMDB). Ils ont une API ouverte gratuite qui est utilisée par beaucoup d’organisateurs de films/applications XMBC.

0
Mike