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?
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).
imdb${searchphrase}
). Alternativement, on pourrait supprimer ou remplacer le remplissage via un proxy local.// 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();
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.
nouvelle api @ http://www.omdbapi.com
edit: en raison de problèmes juridiques, nous avons dû déplacer le service vers un nouveau domaine :)
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.
Une autre alternative légale pour obtenir des informations sur le film est le API Rotten-Tomatoes (par Fandango).
Qu'en est-il de l'API TMDb?
Vous pouvez rechercher par imdb_id avec Movie.imdbLookup
XBMC Media Center semble l'utiliser
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.
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
https://deanclatworthy.com/tools.html est une API IMDB, mais a été arrêtée pour cause d'abus.
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.
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
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");
ce deanclatworthy semble toujours fonctionner et il y en a un autre: http://imdbapi.poromenos.org/
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.
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.
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é.
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:
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; }
}
}
Voici un module Python fournissant des API pour obtenir des données du site Web IMDB.
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.