Apakah IMDB menyediakan API? [Tutup]

644

Baru-baru ini saya menemukan aplikasi organizer film yang mengambil datanya dari basis data IMDB .

Apakah IMDB menyediakan API untuk ini, atau API pihak ketiga apa pun tersedia?

hari ini
sumber
10
Apakah ada API untuk ulasan di IMDB?
metdos
1
Untuk hanya menautkan IMDB gunakan format berikut. <a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a> BTW: imdb_id follows this pattern: tt0000000
Igor Parra
1
apa nama aplikasi pengelola film ini? Saya mencari sesuatu seperti itu
Airlike
@Airlike Kemungkinan Plex . Saya tahu pasti bahwa seseorang mengatur film dan dapat mengambil data dari IMDB.
tukang batu

Jawaban:

453

IMDb memiliki API publik yang, meskipun tidak berdokumen, cepat dan dapat diandalkan (digunakan di situs web resmi melalui AJAX).

API Saran Pencarian

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

Pencarian Lanjutan


Waspadalah bahwa API ini tidak resmi dan dapat berubah kapan saja!


Pembaruan (Januari 2019): API Tingkat Lanjut tidak ada lagi. Berita baiknya adalah, bahwa API Saran sekarang mendukung fitur "lanjutan" pencarian berdasarkan judul film dan nama aktor juga.

Timo Tijhof
sumber
2
RE: API JSONP tidak mundur dengan anggun, (setidaknya) ia mengembalikan kode kesalahan HTTP, tapi saya setuju bahwa lucu bahwa badan responsnya adalah XML.
Omni5cience
9
Baru-baru ini saya memperhatikan bahwa itu juga termasuk properti 'i' untuk gambar. Namun url yang disebutkan di sini adalah gambar yang sangat besar (kemungkinan aslinya). Untuk mendapatkan thumbnail, IMDb menggunakan berikut: 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
Anda tidak bisa hanya menentukan jsonp dengan.Ajax jika Anda mendapatkan json dengan jquery dan saya pikir getjson telah ditinggalkan bahkan ketika ini ditulis sudah ditinggalkan saya percaya
Chris McGrath
2
@ChrisMcGrath: Saya belum memikirkan tentang menggunakan jQuery.ajax jsonpCallback, saya telah menambahkannya ke jawabannya, Terima kasih! Adapun $ .getJSON: Tidak, itu sudah pasti tidak ditinggalkan. Itu hanya pembungkus kecil di sekitar $ .ajax.
Timo Tijhof
2
Adakah yang tahu bagaimana cara menyertakan gambar dalam pencarian lanjutan? Sepertinya mereka hanya datang dengan saran ...
Cyril Mestrom
217

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

sunting: karena masalah hukum harus memindahkan layanan ke domain baru :)

bfritz
sumber
1
Itu luar biasa, tidak yakin apakah ini benar-benar milik Anda atau Anda baru saja menemukannya tetapi akan senang melihat sesuatu di sekitar statistik uptime sehingga saya bisa tahu seberapa banyak saya dapat mengandalkannya: D
Andrew G. Johnson
16
Jika ada yang bertanya-tanya, ini bukan API resmi. Lihat jawaban Pekka atau Krinkle untuk itu.
Jano
7
ini sangat lambat ..; (
Daniel Magnusson
14
@IanDavis, saya saat ini sedang berupaya untuk mendapatkan server khusus yang lebih cepat / lebih besar untuk API, Yang tidak murah! Saya hampir mendapat sumbangan yang cukup untuk memperoleh ini dalam beberapa hari ke depan. API mendapatkan lebih dari 2 juta permintaan sehari!
bfritz
4
@OptimusCrime Saya punya masalah beberapa hari yang lalu dengan IP dari kisaran 85.XXX.XXX.XXX dan harus memblokir sementara SEMUA dari mereka sampai saya bisa mengendalikan semuanya. Sayangnya ini adalah salah satu pertukaran yang harus saya tangani dengan tidak memerlukan kunci API, orang-orang cenderung hanya menyalahgunakannya.
bfritz
93

IMDB sendiri sepertinya mendistribusikan data, tetapi hanya dalam file teks:

http://www.imdb.com/interfaces

ada beberapa API di sekitar ini yang Anda dapat Google. Pengikisan layar dilarang secara eksplisit. API resmi tampaknya sedang dalam pengerjaan, tapi sudah bertahun-tahun.

Pekka
sumber
7
Bagaimana mungkin memo layar dilarang?
11
@omouse Dari ketentuan : 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.itu tidak membuat ketentuan ini dapat diberlakukan secara otomatis di setiap yurisdiksi, tetapi ada banyak.
Pekka
6
Ya tapi dialog ini diarahkan pada "Robot". Rupanya robot saya tidak mengerti bahasa Inggris jadi oh well.
Zombies
2
Pada Desember 2017, file-file ini tidak lagi diperbarui oleh IMDb. Ada API baru yang memasok data dalam format baru. Meskipun lebih mudah diurai, format baru ini adalah subset yang sangat kecil dari format sebelumnya.
David Chappelle
1
Saya menyadari ini adalah pertanyaan dan jawaban yang sangat lama. Namun, data mining data yang dapat diakses publik tidak dapat ditegakkan secara hukum jika Anda tidak menandatangani EULA. Bahkan jika Anda melakukannya, jika informasi tersebut dapat diakses publik melalui cara lain, EULA masih tidak mengikat secara hukum. Keputusan besar baru-baru ini dibuat untuk efek ini terhadap LinkedIn. Lihat: eff.org/deeplinks/2019/09/... IANAL tetapi EFF-nya. Ini keputusan yang sangat masuk akal. Jika Anda menaruh informasi di Internet, Anda harus mengharapkan orang untuk melakukan sesuatu dengannya.
CubicleSoft
48

Alternatif hukum lain untuk mendapatkan info film adalah Rotten-Tomatoes API (oleh Fandango).

Johann
sumber
Apakah API tomat busuk bebas untuk digunakan dalam aplikasi komersial? Katakanlah, misalnya, untuk meminta pengguna memperoleh detail film dari judulnya?
KerrM
1
Sepertinya mereka tidak membuat perbedaan antara aplikasi komersial atau non-komersial. Anda selalu dapat melihat TOS mereka di sini: developer.rottentomatoes.com/apps/tos Meskipun Anda akan dibatasi hingga 10.000 panggilan per hari dan 10 per detik
Johann
1
Jika Anda menyediakan program non-komersial dan membutuhkan lebih dari 10.000 panggilan per hari, Anda dapat berbicara dengan mereka tentang perizinan. Persyaratannya cukup sederhana dan mudah dipatuhi, karena Anda harus menampilkan logo mereka dan / atau frase kata-kata tertentu untuk peringkat.
Omertron
6
WTF? "API hanya dimaksudkan untuk digunakan di AS. Menyebarkan konten di luar wilayah ini harus disetujui oleh tim Rotten Tomatoes. API TIDAK boleh dibagi dengan pihak ketiga."
Dan Dascalescu
1
@DanDascalescu Sayang sekali. Saya akan menggunakannya di luar AS
nicolascolman
48

Bagaimana dengan TMDb API?

Anda dapat mencari berdasarkan imdb_id dengan GET /find/{external_id}

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

hdorio
sumber
8
Membutuhkan pendaftaran dan proses persetujuan 3 hari kerja
Kostas
tmdb api dapat menggunakan id unik dvd untuk mencari imdb_id, jika itu membantu. Dengan asumsi mereka sudah terdaftar, tentu saja. dvdid.info mungkin membantu juga.
rogerdpack
7
vrinek - salah, itu mengirim saya kunci API segera.
oriharel
1
Tidak ada masalah untuk mendapatkan kunci API untuk ini. Telah menggunakan satu selama bertahun-tahun, dan API-nya dirancang dengan baik.
john16384
30

Ya, tetapi tidak gratis.

..... biaya tahunan mulai dari $ 15.000 hingga lebih tinggi tergantung pada audiens untuk data dan data mana yang dilisensikan.

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

Byran Zaugg
sumber
1
Tampaknya gratis untuk penggunaan "pribadi" saja jika tidak, Anda harus menghubungi mereka ... wow, kami benar-benar memerlukan setara dengan imdb, meskipun saya kira tmdb sudah dekat ...
rogerdpack
hai, ini bukan jawaban untuk pertanyaan, lebih ke komentar di atas.
Ian Vaughan
6
@IanVaughan, saya yakin jawaban saya langsung menjawab pertanyaan ini: T: "Apakah IMDB menyediakan API untuk ini ...?". A: "Ya ... [tautan ke info lisensi data]." Itu bukan salah saya, IMDB tidak secara publik mendokumentasikan referensi API.
Byran Zaugg
8
Maaf, saya pikir Anda benar, saya berdiri dikoreksi. Permintaan maaf.
Ian Vaughan
22

Ada JSON API untuk digunakan oleh aplikasi seluler di http://app.imdb.com

Namun, peringatannya cukup parah:

Untuk digunakan hanya oleh klien yang diotorisasi secara tertulis oleh IMDb.
Penulis dan pengguna klien yang tidak sah menerima paparan / tanggung jawab hukum penuh atas tindakan mereka.

Saya kira ini untuk para pengembang yang membayar lisensi untuk mengakses data melalui API mereka.

EDIT : Hanya untuk iseng, saya menulis perpustakaan klien untuk mencoba membaca data dari API, Anda dapat menemukannya di sini: api-imdb

Jelas, Anda harus memperhatikan peringatan itu, dan sungguh, gunakan sesuatu seperti TheMovieDB sebagai database yang lebih baik dan lebih terbuka.

Kemudian Anda dapat menggunakan pembungkus Java API ini (yang saya tulis): api-themoviedb

Omertron
sumber
1
Saya akan menulis perpustakaan Anda untuk NodeJS. Terima kasih sudah berbagi!
arm.localhost
Bagaimana seseorang bisa mendapatkan kunci API untuk menggunakannya?
0xMH
Pustaka Python menggunakan API ini: pypi.org/project/imdbpie code.richard.do/richardARPANET/imdb-pie @Mohammed See imdb.com/licensing
Gfy
9

Menemukan yang ini

IMDbPY adalah paket Python yang berguna untuk mengambil dan mengelola data basis data film IMDb tentang film, orang, karakter, dan perusahaan.

http://imdbpy.sourceforge.net/

markiv
sumber
Ini juga tersedia dari PyPi: pypi.org/project/IMDbPY
Gino Mempin
9

https://deanclatworthy.com/tools.html adalah IMDB API tetapi telah turun karena penyalahgunaan.

Valentin Golev
sumber
1
Sayangnya, itu akan segera ditutup. Apakah Anda tahu cara kerjanya?
PA.
1
Ini hanya menawarkan pencarian yang sangat terbatas juga, hanya dengan judul film
justinhj
Periksa malhar2010.blogspot.com/2011/02/... untuk menggunakan api IMDb.
12
Sebagai penulis API ini, saya harus menunjukkan bahwa komentar di atas sekarang berlebihan karena tidak ditutup, dan sekarang Anda dapat mencari berdasarkan ID IMDB.
Dean
untuk API imdb gratis, lihat ini 99webtools.com/get-movie-info-imdb.php
Sunny
6

IMDB tampaknya belum memiliki API langsung pada Agustus 2016, tetapi saya melihat banyak orang menulis pencakar dan barang-barang di atas. Sini ini cara yang lebih standar untuk mengakses data film menggunakan API buzz box office. Semua respons dalam format JSON dan 5000 kueri per hari dengan paket gratis

Daftar hal-hal yang disediakan oleh API

  1. Kredit Film
  2. ID Film
  3. Gambar Film
  4. Dapatkan film dengan id IMDB
  5. Dapatkan daftar film terbaru
  6. Dapatkan rilis baru
  7. Dapatkan tanggal rilis film
  8. Dapatkan daftar terjemahan untuk film tertentu
  9. Dapatkan video, trailer, dan penggoda untuk film
  10. Cari film berdasarkan judul
  11. Juga mendukung acara TV, game, dan video
PirateApp
sumber
3

Berikut adalah solusi sederhana yang mengambil acara berdasarkan nama berdasarkan permintaan dari Krinkle:

Anda dapat menyiasati kebijakan asal yang sama dengan meminta server Anda mengambil URL alih-alih mencoba mengambilnya langsung dengan AJAX dan Anda tidak harus menggunakan JSONP untuk melakukannya.

Javascript (jQuery):

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

PHP (dalam file ajax.php):

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

Baru-baru ini di SXSWi 2012, di "Mashery Lounge" mereka, ada booth untuk API mirip IMDB yang dipanggil dari rovi . Ini bukan API gratis, tetapi menurut pramuniaga yang saya ajak bicara, mereka menawarkan salah satu bagian rev atau biaya tetap untuk penggunaan, tergantung pada anggaran Anda. Saya belum menggunakannya tetapi sepertinya cukup keren.

bapa
sumber
tidak lagi hidup.
BishopZ
2

NetFilx lebih merupakan layanan media yang dipersonalisasi tetapi Anda dapat menggunakannya untuk informasi publik mengenai film. Ini mendukung Javascript dan OData.
Lihat juga JMDb : Informasi ini pada dasarnya sama dengan yang Anda dapatkan saat menggunakan situs web IMDb.

Panduan PCWizard
sumber
1
Netflix menutup API publik mereka hampir setahun yang lalu. Karena mereka menghapus seluruh sub-domain pengembang, termasuk posting yang mengatakan mereka mematikannya, inilah tautan ke artikel di atasnya: gigaom.com/2014/11/14/…
James Skemp
1

ok saya menemukan scraper IMDB yang satu ini

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

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

sebagai alternatif implementasi imdbapi.org untuk 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; }
    }

}
fubo
sumber
Kelihatannya bagus tetapi menurut IMDB, dilarang menggunakan alat semacam ini. Informasi lebih lanjut help.imdb.com/article/imdb/general-information/…
nicolascolman
1

Jika Anda ingin detail film api, Anda dapat mempertimbangkan

API OMDB yang merupakan film Terbuka Basis Data Pengembalian Peringkat IBDB, Voting IMDB dan Anda juga dapat menyertakan peringkat Rotten Tomato.

Atau yang bisa Anda gunakan

Film Api Saya yang memungkinkan Anda untuk mencari dengan ID IMDB dan mengembalikan informasi terperinci tetapi memiliki batas permintaan.

Akshay Khale
sumber
0

Berikut ini adalah modul Python yang menyediakan API untuk mendapatkan data dari situs web IMDB

http://techdiary-viki.blogspot.com/2011/03/imdb-api.html

vikas
sumber
Modul itu menggunakan screen-scraping, yang bertentangan dengan TOS
Farinha
6
Menggunakan IMDB sama sekali dalam aplikasi bertentangan dengan TOS mereka, tampaknya ...
rogerdpack
ya, Anda harus menghubungi mereka dan meminta untuk menggunakan konten mereka dalam aplikasi komersial Anda. Dikatakan dalam TOS mereka, Anda harus memiliki persetujuan tertulis dari IMDB.
Mike
0

Saya cukup yakin bahwa aplikasi yang Anda temukan benar-benar mendapatkan informasinya dari API Themoviedb.org (mereka mendapatkan sebagian besar barang dari IMDB). Mereka memiliki API terbuka gratis yang digunakan banyak aplikasi organizer film / XMBC.

Mike
sumber