Ik heb onlangs een applicatie voor het organiseren van films gevonden die de gegevens ophaalt uit de IMDB-database.
Biedt IMDBhiervoor een API of zijn er API’s van derden beschikbaar?
Antwoord 1, autoriteit 100%
De IMDb heeft een openbare API die, hoewel niet gedocumenteerd, snel en betrouwbaar is (gebruikt op de officiële website via AJAX).
API voor zoeksuggesties
- https://sg.media-imdb.com/suggests/a/ aa.json
- https://v2.sg.media-imdb.com/ suggereert/h/hello.json(alternatief)
- Formaat: JSON-P
- Voorbehoud: het is in JSON-P-indeling en de callback-parameter kan niet worden aangepast. Om het domeinoverschrijdend te gebruiken, moet je de functienaam gebruiken die ze kiezen (in de indeling
imdb${searchphrase}
). Als alternatief kan men de opvulling verwijderen of vervangen via een lokale proxy.
// 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();
Geavanceerd zoeken
Naam zoeken (JSON): http://www.imdb.com/xml/find?json=1&rnrnr=1&NM=ON& ;Q=Jeniffer+garner s>- Titel Zoeken (XML): http://www.imdb.com/xml/find?xml=1&rnr=1&iXTTT=ON& ;Q=LOST
- Formaat: XML
upside: ondersteunt zowel filmtitels als acteurnamen (in tegenstelling tot suggesties API). s>
s>
Pas op dat deze API’s niet officieel zijn en op elk moment kunnen veranderen!
update (januari 2019): De geavanceerde API bestaat niet meer. Het goede nieuws is dat de suggesties API nu de “geavanceerde” functies van het zoeken door filmtitels en actornamen ondersteunt.
Antwoord 2, Autoriteit 47%
Nieuwe API @ http://www.omdbapi.com
EDIT: vanwege juridische kwesties moest de service verplaatsen naar een nieuw domein 🙂
Antwoord 3, Autoriteit 21%
IMDB zelf lijken gegevens te distribueren, maar alleen in tekstbestanden:
http://www.imdb.com/interfaces
Er zijn hierover verschillende API’s die u kunt Google. Schermschrapend is expliciet verboden.
Een officiële API lijkt in de werken te zijn, maar is al jaren al al jaren.
Antwoord 4, Autoriteit 11%
Een ander legaal alternatief voor het verkrijgen van filminformatie is de Rotten-Tomatoes API(door Fandango).
Antwoord 5, autoriteit 10%
Hoe zit het met de TMDb API?
Je kunt zoeken op imdb_id met GET /find/{external_id}
https://developers.themoviedb.org/3/find/find -by-id
Antwoord 6, autoriteit 6%
Ja, maar niet gratis.
…..jaarlijkse vergoedingen variërend van $ 15.000 tot hoger, afhankelijk van het publiek voor de gegevens en voor welke gegevens een licentie wordt verleend.
URL:-
http://www.imdb.com/licensing/
Antwoord 7, autoriteit 5%
Er is een JSON API voor gebruik door mobiele applicaties op http://app.imdb.com
De waarschuwing is echter vrij ernstig:
Alleen voor gebruik door klanten die schriftelijk zijn geautoriseerd door IMDb.
Auteurs en gebruikers van niet-geautoriseerde klanten accepteren volledige juridische blootstelling/aansprakelijkheid voor hun acties.
Ik neem aan dat dit voor die ontwikkelaars is die betalen voor de licentie om toegang te krijgen tot de gegevens via hun API.
EDIT: voor de kick heb ik een clientbibliotheek geschreven om te proberen de gegevens van de API te lezen, je kunt deze hier vinden: api-imdb
Natuurlijk moet je op de waarschuwing letten en echt iets als TheMovieDBgebruiken als een betere en meer open database.
Dan kun je deze Java API-wrapper gebruiken (die ik heb geschreven): api-themoviedb
Antwoord 8, autoriteit 2%
Deze gevonden
IMDBPY is een python-pakket nuttig om de gegevens van te halen en te beheren
De IMDB-filmdatabase over films, mensen, personages en
bedrijven.
http://imdbpy.sourceforge.net/
Antwoord 9, Autoriteit 2%
https://dealclatworthy.com/tools.html is een IMDB API, maar is gedaald vanwege misbruik.
Antwoord 10, Autoriteit 2%
IMDB lijkt nog geen directe API vanaf augustus 2016 te hebben, maar ik zag veel mensen scrapers en spullen boven schrijven. hier is een meer standaard manier om toegang te krijgen tot filmgegevens met behulp van Box Office buzz api. Alle antwoorden in JSON-formaat en 5000 query’s per dag op een gratis plan
lijst met dingen die door de API
- Filmcredits
- Film-ID
- filmbeelden
- Krijg film door IMDB ID
- Krijg de nieuwste filmslijst
- Krijg nieuwe releases
- Krijg filmrassende datums
- Verkrijg de lijst met vertalingen beschikbaar voor een specifieke film
- haal video’s, trailers en teasers voor een film
- Zoek naar een film op titel
- ondersteunt ook tv-programma’s, games en video’s
Antwoord 11
Die DeanClatworthy lijkt nog steeds te werken
En er is nog een andere: http://imdbapi.poromenos.org/
Antwoord 12
Hier is een eenvoudige oplossing die wordt opgehaald op naam op basis van de query van Krinkle:
U kunt het beleid van dezelfde herkomst krijgen door uw server de URL op te halen in plaats van te proberen het rechtstreeks met Ajax en u niet te halen, hoeft JSSP niet te gebruiken.
Javascript (jQuery):
function getShowOptionsFromName (name) {
$.ajax({
url: "ajax.php",
method: "GET",
data: {q: name},
dataType: "json"
}).done(function(data){
console.log(data);
});
}
PHP (in bestand ajax.php):
$q = urlencode($_GET["q"]);
echo file_get_contents("http://www.imdb.com/xml/find?json=1&nr=1&tt=on&q=$q");
Antwoord 13
Onlangs op SXSWi 2012, in hun “Mashery Lounge”, was er een stand voor een IMDB-achtige API genaamd rovi. Het is geen gratis API, maar volgens de verkoper met wie ik sprak, bieden ze ofwel een rev-share of een vast bedrag voor gebruik, afhankelijk van je budget. Ik heb het nog niet gebruikt, maar het lijkt me best cool.
Antwoord 14
NetFilxis meer een gepersonaliseerde mediaservice, maar je kunt het gebruiken voor openbare informatie over films. Het ondersteunt Javascript en OData.
Kijk ook eens op JMDb: de informatie is in principe hetzelfde als bij het gebruik van de IMDb-website.
Antwoord 15
Als u een API met filmdetails wilt, kunt u overwegen
OMDB APIwat Open Movies Database is
Retourneert IBDB-beoordeling, IMDB-stemmen en u kunt ook Rotten Tomato-beoordeling opnemen.
Of anders kunt u
. gebruiken
Mijn Api Filmswaarmee u kunt zoeken met IMDB-ID en gedetailleerde informatie retourneert, maar het heeft verzoeklimieten.
Antwoord 16
ok, ik heb deze IMDB-schraper gevonden
voor C#:
http://web3o.blogspot.de/2010/11/aspnetc -imdb-scraping-api.html
PHP hier:
http://web3o.blogspot.de /2010/10/php-imdb-scraper-for-new-imdb-template.html
of een imdbapi.org implementatie voor 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; }
}
}
Antwoord 17
Als je tv-informatie nodig hebt, kun je TVmaze.comproberen.
Het is gratis, snel en betrouwbaar. Hier is de ontwikkelaarspagina:
Antwoord 18
Hier is een Python-module die API’s biedt om gegevens van de IMDB-website te krijgen
http://techdiary-viki.blogspot.com/2011/ 03/imdb-api.html
Antwoord 19
Ik ben er vrij zeker van dat de applicatie die je hebt gevonden hun informatie daadwerkelijk krijgt van de API van Themoviedb.org (ze halen de meeste dingen van IMDB). Ze hebben een gratis open API die veel van de filmorganisator / XMBC-applicaties wordt gebruikt.