Recientemente encontré una aplicación organizadora de películas que obtiene sus datos de la base de datos IMDB .
¿ IMDB proporciona una API para esto o alguna API de terceros disponible?
fuente
Recientemente encontré una aplicación organizadora de películas que obtiene sus datos de la base de datos IMDB .
¿ IMDB proporciona una API para esto o alguna API de terceros disponible?
IMDb tiene una API pública que, aunque no está documentada, es rápida y confiable (utilizada en el sitio web oficial a través de AJAX).
imdb${searchphrase}
formato). Alternativamente, uno podría quitar o reemplazar el relleno a través de 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();
¡Tenga en cuenta que estas API no son oficiales y pueden cambiar en cualquier momento!
Actualización (enero de 2019): la API avanzada ya no existe. La buena noticia es que la API de sugerencias ahora también admite las funciones "avanzadas" de búsqueda por títulos de películas y nombres de actores.
if (ua.i) { c.img = { src: ua.i[0].replace("._V1_.jpg", "._V1._SX40_CR0,0,40,54_.jpg"), width: 40, height: 54 } }
.
nueva api @ http://www.omdbapi.com
editar: debido a problemas legales tuvo que mover el servicio a un nuevo dominio :)
Los propios IMDB parecen distribuir datos, pero solo en archivos de texto:
http://www.imdb.com/interfaces
Hay varias API alrededor de esto que puedes buscar en Google. El raspado de pantalla está explícitamente prohibido. Una API oficial parece estar en proceso, pero lo ha sido durante años.
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.
eso no hace que estos términos sean exigibles automáticamente en todas las jurisdicciones, pero sí en muchos.
Otra alternativa legal para obtener información de la película es la API Rotten-Tomatoes (de Fandango).
¿Qué pasa con la API TMDb?
Puede buscar por imdb_id con GET /find/{external_id}
Sí, pero no gratis.
..... tarifas anuales que van desde $ 15,000 a más, dependiendo de la audiencia para los datos y qué datos se están licenciando.
Hay una API JSON para uso de aplicaciones móviles en http://app.imdb.com
Sin embargo, la advertencia es bastante severa:
Para uso exclusivo de clientes autorizados por escrito por IMDb.
Los autores y usuarios de clientes no autorizados aceptan plena exposición legal / responsabilidad por sus acciones.
Supongo que esto es para aquellos desarrolladores que pagan por la licencia para acceder a los datos a través de su API.
EDITAR : solo por diversión, escribí una biblioteca de cliente para intentar leer los datos de la API, puedes encontrarla aquí: api-imdb
Obviamente, debe prestar atención a la advertencia, y realmente, usar algo como TheMovieDB como una base de datos mejor y más abierta.
Entonces puede usar este contenedor de API de Java (que escribí): api-themoviedb
Encontré este
IMDbPY es un paquete de Python útil para recuperar y administrar los datos de la base de datos de películas de IMDb sobre películas, personas, personajes y compañías.
https://deanclatworthy.com/tools.html es una API de IMDB pero ha caído debido a abuso.
IMDB todavía no parece tener una API directa a partir de agosto de 2016, pero vi a muchas personas escribiendo scrapers y cosas por encima. Aquí hay una forma más estándar de acceder a los datos de películas utilizando la API de buzz de taquilla. Todas las respuestas en formato JSON y 5000 consultas por día en un plan gratuito
Lista de cosas proporcionadas por la API
que deanclatworthy todavía parece funcionar y hay otro: http://imdbapi.poromenos.org/
Aquí hay una solución simple que obtiene programas por nombre basados en la consulta de Krinkle:
Puede evitar la política del mismo origen haciendo que su servidor busque la URL en lugar de intentar buscarla directamente con AJAX y no tiene que usar JSONP para hacerlo.
Javascript (jQuery):
function getShowOptionsFromName (name) {
$.ajax({
url: "ajax.php",
method: "GET",
data: {q: name},
dataType: "json"
}).done(function(data){
console.log(data);
});
}
PHP (en el archivo ajax.php):
$q = urlencode($_GET["q"]);
echo file_get_contents("http://www.imdb.com/xml/find?json=1&nr=1&tt=on&q=$q");
Recientemente en SXSWi 2012, en su "Mashery Lounge", había un stand para una API similar a IMDB llamada desde rovi . No es una API gratuita, pero de acuerdo con el vendedor con el que hablé, ofrecen una cuota de participación o una tarifa plana por el uso, dependiendo de su presupuesto. Todavía no lo he usado, pero parece genial.
NetFilx es más un servicio de medios personalizado, pero puede usarlo para información pública sobre películas. Es compatible con Javascript y OData.
También mire JMDb : la información es básicamente la misma que puede obtener al usar el sitio web de IMDb.
ok encontré este raspador IMDB
para C #: http://web3o.blogspot.de/2010/11/aspnetc-imdb-scraping-api.html
PHP aquí: http://web3o.blogspot.de/2010/10/php-imdb-scraper-for-new-imdb-template.html
alternativamente, una implementación de imdbapi.org para 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; }
}
}
Si quieres detalles de la película api puedes considerar
API OMDB que es la base de datos de películas abiertas, devuelve la calificación IBDB, los votos IMDB y también puede incluir la calificación Rotten Tomato.
O de lo contrario puedes usar
My Api Films que le permite buscar con IMDB ID y devuelve información detallada pero tiene límites de solicitud.
Si necesita información de TV, puede probar TVmaze.com .
Es gratis, rápido y confiable. Aquí está la página del desarrollador:
Aquí hay un módulo de Python que proporciona API para obtener datos del sitio web de IMDB
Estoy bastante seguro de que la aplicación que encontraste en realidad obtiene su información de la API de Themoviedb.org (obtienen la mayoría de las cosas de IMDB). Tienen una API abierta y gratuita que se usa en muchas aplicaciones de organizador de películas / XMBC.
<a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a>
BTW: imdb_id follows this pattern: tt0000000