IMDB bir API sağlıyor mu? [kapalı]


644

Kısa süre önce verilerini IMDB veritabanından alan bir film düzenleyici uygulaması buldum .

Mu IMDB bunun için bir API sağlamak veya herhangi bir üçüncü taraf mevcut API'lardan?


10
IMDB'deki incelemeler için herhangi bir API var mı?
metdos

1
IMDB'yi bağlamak için aşağıdaki biçimi kullanın. <a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a> BTW: imdb_id follows this pattern: tt0000000
Igor Parra

1
Bu film organizatörü uygulamasının adı nedir? Böyle bir şey arıyorum
Airlike

Muhtemelen @Airlike Plex . Birinin filmleri organize ettiğinden ve IMDB'den veri alabileceğinden eminim.
mason

Yanıtlar:


453

IMDb, belgelenmemesine rağmen hızlı ve güvenilir olan (resmi web sitesinde AJAX aracılığıyla kullanılan) herkese açık bir API'ya sahiptir.

Arama Önerileri API'sı

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

gelişmiş Arama


Bu API'lerin gayri resmi olduğunu ve herhangi bir zamanda değişebileceğini unutmayın!


Güncelleme (Ocak 2019): Gelişmiş API artık mevcut değil. İyi haber şu ki, Öneriler API'sı artık film başlıklarına ve oyuncu adlarına göre aramanın "gelişmiş" özelliklerini de destekliyor.


2
RE: JSONP API incelikle geri düşmüyor, (en azından) bir HTTP hata kodu döndürüyor, ancak yanıt gövdesinin XML olması komik olduğunu kabul ediyorum.
Omni5cience

9
Geçenlerde de görüntüler için bir 'i' özelliği içerdiğini fark ettim. Bununla birlikte, burada bahsedilen url çok büyük bir görüntüdür (muhtemelen orijinal). Bir küçük resmi almak için, IMDb aşağıdakileri kullanır: 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
Eğer jquery ile json alıyorsanız ve ben bu yazıldığında bile getjson kullanımdan kaldırıldığını düşünüyorum inanıyorum
Chris McGrath

2
@ChrisMcGrath: jQuery.ajax jsonpCallback kullanmayı düşünmemiştim, cevaba ekledim, teşekkürler! $ .GetJSON'a gelince: Hayır, kesinlikle reddedilmiyor. Sadece $ .ajax civarında küçük bir sarıcı.
Timo Tijhof

2
Gelişmiş aramaya dahil edilen resimlerin nasıl alınacağını bilen var mı? Görünüşe göre sadece önerilerle geliyorlar ...
Cyril Mestrom

217

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

düzenleme: yasal sorunlar nedeniyle hizmeti yeni bir etki alanına taşımak zorunda kaldı :)


1
Bu harika, bunun sizin olup olmadığından emin değil misiniz ya da sadece buldunuz, ancak çalışma süresi istatistikleri etrafında bir şey görmek isterdim, bu yüzden ona ne kadar güvenebileceğimi bilebilirdim: D
Andrew G. Johnson

16
Herkesin merak etmesi durumunda, bu resmi API değildir. Bunun için Pekka veya Krinkle cevaplarına bakınız.
Jano

7
gerçekten yavaş ..; (
Daniel Magnusson

14
@IanDavis, şu anda API için yeni bir daha hızlı / daha büyük özel sunucu almak için çalışıyorum, Bu ucuz değil! Önümüzdeki birkaç gün içinde bunu elde etmek için neredeyse yeterli bağışım var. API günde 2 milyondan fazla istek alıyor!
bfritz

4
@OptimusCrime Geçen gün 85.XXX.XXX.XXX aralığındaki IP'lerle ilgili bir sorun yaşadım ve işleri kontrol altına alabilene kadar TÜMÜNÜ geçici olarak engellemek zorunda kaldım. Ne yazık ki bu, API anahtarları gerektirmeden uğraşmak zorunda olduğum değiş tokuşlardan biri, insanlar sadece cehennemi kötüye kullanma eğilimindedir.
bfritz

93

IMDB'nin kendileri yalnızca metin dosyalarında veri dağıtıyor gibi görünüyor:

http://www.imdb.com/interfaces

Google'da yapabileceğiniz birkaç API vardır. Ekran kazıma açıkça yasaktır. Resmi bir API çalışmalarda gibi görünüyor, ancak yıllardır zaten öyle.


7
Ekran kazıma işleminin yasaklanması nasıl mümkün olabilir?

11
@omouse Terimlerden : 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.bu, bu terimleri her yargı alanında otomatik olarak uygulanabilir kılmaz, ancak birçoğunda bulunur.
Pekka

6
Evet ama bu diyalog "Robotlar" a yönelikti. Görünüşe göre robotum İngilizceyi çok iyi anlamıyor.
Zombiler

2
Aralık 2017 itibarıyla, bu dosyalar artık IMDb tarafından güncellenmemektedir. Verileri yeni bir biçimde sağlayan yeni bir API var. Ayrıştırması daha kolay olsa da, bu yeni biçim önceki biçimin çok küçük bir alt kümesidir.
David Chappelle

1
Bunun çok eski bir soru ve cevap olduğunu anlıyorum. Ancak, EULA'yı imzalamadıysanız, herkesin erişebileceği veriler madenciliği yasal olarak uygulanamaz. Yapmış olsanız bile, bilgilere başka yollarla erişilebiliyorsa, EULA hala yasal olarak bağlayıcı değildir. Son zamanlarda LinkedIn'e karşı bu etki için önemli bir karar verildi. Bakınız: eff.org/deeplinks/2019/09/… IANAL ama EFF. Çok mantıklı bir karar. İnternete bilgi koyarsanız, insanların bununla bir şeyler yapmasını beklemelisiniz.
CubicleSoft

48

Film bilgisi almanın bir başka yasal alternatifi Rotten-Tomatoes API'sidir (Fandango tarafından).


Çürük domates API'sinin ticari bir uygulamada kullanımı ücretsiz mi? Örneğin, kullanıcıların bir filmin ayrıntılarını başlığından almasını isteyin mi?
KerrM

1
Ticari veya ticari olmayan uygulama arasında herhangi bir ayrım yapıyor gibi görünmüyor. Buradaki TOS'larına her zaman bir göz atabilirsiniz: developer.rottentomatoes.com/apps/tos Günde 10.000 çağrı ve saniyede 10 ile sınırlı olacak olsanız da
Johann

1
Ticari olmayan bir program sağlıyorsanız ve günde 10.000'den fazla çağrıya ihtiyacınız varsa, onlarla lisanslama hakkında konuşabilirsiniz. Logolarını ve / veya derecelendirme için belirli bir ifade ifadesini görüntülemeniz gerektiğinden, terimlere oldukça basit ve uyulması kolaydır.
Omertron

6
O NE LAN? "API yalnızca ABD'de kullanılmak üzere tasarlanmıştır. Bu bölgenin dışında içerik dağıtımı, Rotten Tomatoes ekibi tarafından onaylanmalıdır. API, herhangi bir üçüncü tarafla paylaşılamayabilir."
Dan Dascalescu

1
@DanDascalescu Ne yazık. Ben de ABD dışında kullanacaktım
nicolascolman

48

TMDb API'sı ne olacak?

İmdb_id ile arama yapabilirsiniz GET /find/{external_id}

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


8
Yine de bir kayıt ve 3 iş günü onay süreci gerektirir
Kostas

tmdb api, imdb_id öğesini aramak için dvd'nin benzersiz kimliğini kullanabilir. Elbette listelediklerini varsayarsak. dvdid.info da yardımcı olabilir.
rogerdpack

7
vrinek - yanlış, hemen bana API anahtarı gönderdi.
oriharel

1
Bunun için bir API anahtarı almak sorun değil. Yıllardır bir tane kullanıyoruz ve API'sı iyi tasarlanmış.
john16384

30

Evet, ama ücretsiz değil.

..... Verilerin dinleyicilerine ve hangi verilerin lisanslandığına bağlı olarak yıllık ücretler 15.000 $ 'dan daha yüksek.

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


1
"kişisel" kullanım için ücretsiz görünüyor sadece aksi takdirde onlarla temasa ... vay gerçekten tmdb yakın olduğunu varsayalım, imdb açık bir eşdeğer gerekir ...
rogerdpack

merhaba, bu gerçekten soruya bir cevap değil, daha fazla bir yorum.
Ian Vaughan

6
@IanVaughan, cevabımın doğrudan bu soruya cevap verdiğine inanıyorum: S: "IMDB bunun için bir API sağlıyor mu ...?". C: "Evet ... [veri lisanslama bilgilerine bağlantı]." Bu benim hatam değil, IMDB herkese açık bir API referansı belgelemiyor.
Byran Zaugg

8
Üzgünüm, haklı olduğunu düşünüyorum, düzeltilmiş duruyorum. Özür.
Ian Vaughan

22

Http://app.imdb.com adresinde mobil uygulamalar tarafından kullanılmak üzere bir JSON API'sı vardır.

Ancak, uyarı oldukça şiddetlidir:

Yalnızca IMDb tarafından yazılı olarak yetkilendirilmiş müşteriler tarafından kullanım içindir.
Yetkisiz müşterilerin yazarları ve kullanıcıları, eylemleri için tam yasal maruziyeti / yükümlülüğü kabul ederler.

Bunun, lisansın API üzerinden verilere erişmesi için ödeme yapan geliştiriciler için olduğunu düşünüyorum.

EDIT : Sadece tekmeler için, ben API gelen verileri okumak için bir istemci kitaplığı yazdım, burada bulabilirsiniz: api-imdb

Açıkçası, uyarıya dikkat etmeli ve gerçekten, TheMovieDB gibi bir şey kullanmalısınız gibi bir daha iyi ve daha açık bir veritabanı olarak kullanmalısınız.

Sonra bu Java API sarmalayıcısını (yazdığım) kullanabilirsiniz: api-themoviedb


1
NodeJS için kütüphanenizi yazacağım. Paylaşım için teşekkürler!
arm.localhost

Birisi onu kullanmak için API anahtarını nasıl alabilir?
0xMH

Bu API'yı kullanan bir Python kütüphanesi: pypi.org/project/imdbpie code.richard.do/richardARPANET/imdb-pie @Mohammed See imdb.com/licensing
Gfy


9

https://deanclatworthy.com/tools.html bir IMDB API'sıdır, ancak kötüye kullanım nedeniyle devre dışı bırakılmıştır.


1
maalesef yakında kapatılacak. Nasıl çalıştığını biliyor musunuz?
PA.

1
Sadece film adına göre çok sınırlı bir arama sunuyor
justinhj

Ödeme malhar2010.blogspot.com/2011/02/... IMDb api kullanmak için.

12
Bu API'nın yazarı olarak, yukarıdaki yorumların kapatılmadığı için artık gereksiz olduğunu ve şimdi IMDB Kimliği ile arama yapabileceğinizi belirtmeliyim.
Dean

ücretsiz imdb API için bkz. 99webtools.com/get-movie-info-imdb.php
Güneşli

6

IMDB'nin Ağustos 2016 itibariyle henüz doğrudan bir API'sı yok gibi görünüyor, ancak birçok kişinin yukarıda kazıyıcı ve malzeme yazdığını gördüm. İşte gişe vızıltı API kullanarak film verilerine erişmek için daha standart bir yol. JSON biçimindeki tüm yanıtlar ve ücretsiz bir plan üzerinde günde 5000 sorgu

API tarafından sağlanan şeylerin listesi

  1. Film Kredileri
  2. Film Kimliği
  3. Film Görüntüleri
  4. IMDB kimliğine göre film alın
  5. En son film listesini alın
  6. Yeni sürümler edinin
  7. Filmin çıkış tarihlerini öğrenin
  8. Belirli bir film için kullanılabilir çevirilerin listesini alın
  9. Bir film için videolar, fragmanlar ve fragmanlar alın
  10. Bir filmi başlığa göre arayın
  11. TV şovlarını, oyunları ve videoları da destekler


3

Krinkle sorgusuna dayalı olarak gösterileri ada göre getiren basit bir çözüm:

Sunucunuzun URL'yi doğrudan AJAX ile almaya çalışmak yerine URL'yi getirmesini sağlayarak aynı köken politikasını kullanabilirsiniz ve bunu yapmak için JSONP kullanmanız gerekmez.

Javascript (jQuery):

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

PHP (ajax.php dosyasında):

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

2

Son zamanlarda SXSWi 2012'de, "Mashery Lounge" da, rovi denilen IMDB benzeri bir API için bir stand vardı . Ücretsiz bir API değil, ancak konuştuğum satış elemanına göre bütçenize bağlı olarak bir rev payı veya kullanım için sabit bir ücret sunuyorlar. Henüz kullanmadım ama oldukça havalı görünüyor.


artık yaşamıyor.
BishopZ

2

NetFilx daha çok kişiselleştirilmiş medya hizmetidir ancak filmlerle ilgili genel bilgiler için kullanabilirsiniz. Javascript ve OData'yı destekler.
Ayrıca JMDb'ye bakın : Bilgiler temel olarak IMDb web sitesini kullanırken alabileceğiniz bilgilerle aynıdır.


1
Netflix neredeyse bir yıl önce herkese açık API'larını kapattı. Kapattıklarını
James Skemp

1

tamam bu bir IMDB kazıyıcı buldum

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

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

alternatif olarak c # için bir imdbapi.org uygulaması:

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

}

İyi görünüyor ama IMDB'ye göre, bu tür araçları kullanmak yasaktır. Daha fazla bilgi help.imdb.com/article/imdb/general-information/…
nicolascolman

1

Film ayrıntıları api istiyorsanız düşünebilirsiniz

Açık filmler Veritabanı olan OMDB API IBDB Derecelendirmesi, IMDB Oyları döndürür ve Çürük Domates derecelendirmesini de ekleyebilirsiniz.

Yoksa kullanabilirsiniz

IMDB Kimliği ile arama yapmanıza ve ayrıntılı bilgi döndürmenize izin veren ancak istek sınırlamaları olan Api Filmlerim .




0

Bulduğunuz uygulama aslında onların bilgi formu Themoviedb.org API (onlar IMDB çoğu şey olsun) alır eminim. Onlar film organizatörü / XMBC uygulamaları bir sürü kullanılan ücretsiz bir açık API var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.