IMDB có cung cấp API không? [đóng cửa]


644

Gần đây tôi đã tìm thấy một ứng dụng tổ chức phim lấy dữ liệu từ cơ sở dữ liệu IMDB .

Liệu IMDB cung cấp một API cho điều này, hoặc bất kỳ bên thứ ba API có sẵn?


10
Có API nào để đánh giá trên IMDB không?
metdos

1
Để chỉ liên kết IMDB sử dụng định dạng sau. <a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a> BTW: imdb_id follows this pattern: tt0000000
Igor Parra

1
tên của ứng dụng tổ chức phim này là gì? Tôi đang tìm kiếm một cái gì đó như thế
Airlike

@Airlike Có thể là Plex . Tôi biết chắc chắn rằng một người tổ chức phim và có thể lấy dữ liệu từ IMDB.
mason

Câu trả lời:


453

IMDb có API công khai, mặc dù không có giấy tờ, nhưng nhanh và đáng tin cậy (được sử dụng trên trang web chính thức thông qua AJAX).

API đề xuất tìm kiếm

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

tìm kiếm nâng cao


Coi chừng các API này không chính thức và có thể thay đổi bất cứ lúc nào!


Cập nhật (tháng 1 năm 2019): API nâng cao không còn tồn tại. Tin vui là, API đề xuất hiện hỗ trợ các tính năng "nâng cao" của tìm kiếm theo tên phim và tên diễn viên.


2
RE: API JSONP không quay trở lại một cách duyên dáng, (ít nhất) nó trả về mã lỗi HTTP, nhưng tôi đồng ý rằng thật buồn cười khi phần thân phản hồi là XML.
Omni5cience

9
Gần đây tôi nhận thấy rằng nó cũng bao gồm một thuộc tính 'i' cho hình ảnh. Các url được đề cập trong đó tuy nhiên là một hình ảnh rất lớn (có thể là bản gốc). Để có được hình thu nhỏ, IMDb sử dụng như sau : 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
có thể bạn không chỉ cần chỉ định jsonp with.Ajax nếu bạn nhận json với jquery và tôi nghĩ rằng getJSON đã bị phản đối ngay cả khi điều này được viết nó đã bị phản đối tôi tin rằng
Chris McGrath

2
@ChrisMcGrath: Tôi chưa nghĩ đến việc sử dụng jQuery.ajax jsonpCallback, tôi đã thêm nó vào câu trả lời, Cảm ơn! Đối với $ .getJSON: Không, điều đó chắc chắn không bị phản đối. Nó chỉ là một gói nhỏ xung quanh $ .ajax.
Timo Tijhof

2
Có ai biết làm thế nào để có được hình ảnh bao gồm trong tìm kiếm nâng cao? Có vẻ như họ chỉ đến với những lời đề nghị ...
Cyril Mestrom

217

api mới @ http://www.omdbapi.com

chỉnh sửa: do vấn đề pháp lý đã phải chuyển dịch vụ sang một tên miền mới :)


1
Điều đó thật tuyệt vời, không chắc đây thực sự là của bạn hay bạn chỉ tìm thấy nó nhưng rất thích nhìn thấy thứ gì đó xung quanh các chỉ số thời gian hoạt động để tôi có thể biết tôi có thể tin tưởng vào nó bao nhiêu: D
Andrew G. Johnson

16
Trong trường hợp bất cứ ai thắc mắc, đây không phải là API chính thức. Xem câu trả lời của Pekka hoặc Krinkle cho điều đó.
Jano

7
nó rất chậm ..; (
Daniel Magnusson

14
@IanDavis, tôi hiện đang làm việc để có một máy chủ chuyên dụng mới nhanh hơn / lớn hơn cho API, không hề rẻ! Tôi gần như đã có đủ đóng góp để có được điều này trong vài ngày tới. API đang nhận được hơn 2 triệu yêu cầu mỗi ngày!
bfritz

4
@OptimusCrime Tôi đã gặp sự cố vào một ngày khác với IP từ phạm vi 85.XXX.XXX.XXX và phải tạm thời chặn TẤT CẢ chúng cho đến khi tôi có thể kiểm soát mọi thứ. Đáng buồn thay, đây là một trong những sự đánh đổi mà tôi phải đối phó bằng cách không yêu cầu các khóa API, mọi người có xu hướng chỉ lạm dụng nó.
bfritz

93

Bản thân IMDB dường như phân phối dữ liệu, nhưng chỉ trong các tệp văn bản:

http://www.imdb.com/interfaces

Có một số API xung quanh điều này mà bạn có thể Google. Nạo màn hình bị cấm rõ ràng. Một API chính thức dường như đang hoạt động, nhưng đã được nhiều năm rồi.


7
Làm thế nào có thể bị cấm màn hình bị cấm?

11
@omouse Từ các điều khoản : 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.điều đó không làm cho các điều khoản này tự động được thi hành trong mọi khu vực tài phán, nhưng chúng có rất nhiều.
Pekka

6
Có nhưng hộp thoại này được hướng vào "Rô bốt". Rõ ràng robot của tôi không hiểu tiếng Anh nên rất tốt.
Zombie

2
Kể từ tháng 12 năm 2017, các tệp này không còn được IMDb cập nhật nữa. Có một API mới cung cấp dữ liệu theo định dạng mới. Mặc dù dễ phân tích hơn, định dạng mới này là một tập hợp con rất nhỏ của định dạng trước.
David Chappelle

1
Tôi nhận ra đây là một câu hỏi và câu trả lời cực kỳ cũ. Tuy nhiên, việc khai thác dữ liệu dữ liệu có thể truy cập công khai không thể thực thi được nếu bạn không ký EULA. Ngay cả khi bạn đã làm, nếu thông tin có thể truy cập công khai thông qua các phương tiện khác, EULA vẫn không ràng buộc về mặt pháp lý. Một quyết định quan trọng gần đây đã được đưa ra cho chính hiệu ứng này đối với LinkedIn. Xem: eff.org/deeplinks/2019/09/ IANAL nhưng EFF là. Đó là một phán quyết rất hợp lý. Nếu bạn đưa thông tin lên Internet, bạn nên mong mọi người làm mọi thứ với nó.
CubicleSoft

48

Một lựa chọn hợp pháp khác để có được thông tin về phim là API Rotten-Tomatoes (của Fandango).


API cà chua thối có được sử dụng miễn phí trong ứng dụng thương mại không? Nói, ví dụ, để người dùng có được các chi tiết của một bộ phim từ tiêu đề của nó?
KerrM

1
Có vẻ như họ không phân biệt giữa ứng dụng thương mại hay phi thương mại. Bạn luôn có thể xem qua ĐKDV của họ tại đây: developer.rottentomatoes.com/apps/tos Mặc dù bạn sẽ bị giới hạn ở 10.000 cuộc gọi mỗi ngày và 10 mỗi giây
Johann

1
Nếu bạn đang cung cấp một chương trình phi thương mại và cần hơn 10.000 cuộc gọi mỗi ngày, bạn có thể nói chuyện với họ về việc cấp phép. Các điều khoản khá đơn giản và dễ tuân thủ, trong đó bạn phải hiển thị logo của họ và / hoặc một cụm từ đặc biệt để đánh giá.
Omertron

6
WTF? "API chỉ dành cho sử dụng ở Hoa Kỳ. Việc triển khai nội dung bên ngoài lãnh thổ này phải được nhóm Rotten Tomatoes chấp thuận. API có thể KHÔNG được chia sẻ với bất kỳ bên thứ ba nào."
Dan Dascalescu

1
@DanDascalescu Thật đáng tiếc. Tôi sẽ sử dụng nó bên ngoài de US
nicolascolman

48

API TMDb thì sao?

Bạn có thể tìm kiếm theo imdb_id với GET /find/{external_id}

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


8
Yêu cầu đăng ký và quy trình phê duyệt 3 ngày làm việc
Kostas

tmdb api có thể sử dụng id duy nhất của dvd để tra cứu imdb_id, nếu điều đó có ích. Tất nhiên, giả sử họ có nó được liệt kê. dvdid.info cũng có thể giúp đỡ.
rogerdpack

7
vrinek - sai, nó đã gửi cho tôi khóa API ngay lập tức.
oriharel

1
Không có vấn đề gì để lấy khóa API cho việc này. Đã sử dụng một trong nhiều năm và API của nó được thiết kế tốt.
john16384

30

Có, nhưng không miễn phí.

..... phí hàng năm từ $ 15.000 đến cao hơn tùy thuộc vào đối tượng cho dữ liệu và dữ liệu nào đang được cấp phép.

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


1
có vẻ như nó chỉ miễn phí cho việc sử dụng "cá nhân" nếu không bạn phải liên hệ với họ ... wow chúng tôi thực sự cần một tương đương mở của imdb, mặc dù tôi cho rằng tmdb đã đóng ...
rogerdpack

xin chào, đây không thực sự là một câu trả lời cho câu hỏi, thêm một bình luận ở trên.
Ian Vaughan

6
@IanVaughan, tôi tin rằng câu trả lời của tôi trực tiếp giải quyết câu hỏi này: Q: "IMDB có cung cấp API cho việc này không ...?". A: "Có ... [liên kết đến thông tin cấp phép dữ liệu]." Đó không phải là lỗi của tôi, IMDB không công khai tài liệu tham khảo API.
Byran Zaugg

8
Xin lỗi, tôi nghĩ bạn đúng, tôi đứng ra sửa. Lời xin lỗi.
Ian Vaughan

22

Có một API JSON để sử dụng bởi các ứng dụng di động tại http://app.imdb.com

Tuy nhiên, cảnh báo khá nghiêm trọng:

Chỉ được sử dụng bởi khách hàng được ủy quyền bằng văn bản của IMDb.
Tác giả và người dùng của khách hàng trái phép chấp nhận tiếp xúc / trách nhiệm pháp lý đầy đủ cho hành động của họ.

Tôi cho rằng điều này là dành cho những nhà phát triển trả tiền cho giấy phép truy cập dữ liệu thông qua API của họ.

EDIT : Chỉ vì những cú đá, tôi đã viết một thư viện máy khách để cố đọc dữ liệu từ API, bạn có thể tìm thấy nó ở đây: api-imdb

Rõ ràng, bạn nên chú ý đến cảnh báo và thực sự, sử dụng một cái gì đó như TheMovieDB như một cơ sở dữ liệu tốt hơn và mở hơn.

Sau đó, bạn có thể sử dụng trình bao bọc API Java này (mà tôi đã viết): api-themoviedb


1
Tôi sẽ viết thư viện của bạn cho NodeJS. Cảm ơn bạn đã chia sẻ!
arm.localhost

Làm thế nào một người nào đó có thể lấy khóa API để sử dụng nó?
0xMH

Thư viện Python sử dụng API này: pypi.org/project/imdbpie code.richard.do/richardNAMEANET/imdb-pie @Mohammed Xem imdb.com/licensing
Gfy


9

https://deanclatworthy.com/tools.html là API IMDB nhưng đã bị ngừng hoạt động do lạm dụng.


1
Thật không may, nó sẽ bị đóng cửa sớm. Bạn có biết làm thế nào nó hoạt động?
PA.

1
Nó chỉ cung cấp một tìm kiếm rất hạn chế, chỉ theo tiêu đề phim
justinhj

Thanh toán malhar2010.blogspot.com/2011/02/ Khăn để sử dụng api IMDb.

12
Là tác giả của API này, tôi nên chỉ ra rằng các nhận xét trên hiện đang dư thừa vì nó không bị đóng và bây giờ bạn có thể tìm kiếm bằng ID IMDB.
Trưởng khoa

để biết API imdb miễn phí, hãy xem 99webtools.com/get-movie-info-imdb.php
Nắng

6

IMDB dường như chưa có API trực tiếp vào tháng 8 năm 2016 nhưng tôi đã thấy nhiều người viết các mẩu tin lưu niệm và nội dung bên trên. Đây là một cách chuẩn hơn để truy cập dữ liệu phim bằng API buzz phòng vé. Tất cả các phản hồi ở định dạng JSON và 5000 truy vấn mỗi ngày trên gói miễn phí

Danh sách những thứ được cung cấp bởi API

  1. Tín dụng phim
  2. ID phim
  3. Hình ảnh phim
  4. Nhận phim bằng id IMDB
  5. Nhận danh sách phim mới nhất
  6. Nhận bản phát hành mới
  7. Nhận ngày phát hành phim
  8. Lấy danh sách các bản dịch có sẵn cho một bộ phim cụ thể
  9. Nhận video, trailer và trêu ghẹo cho một bộ phim
  10. Tìm kiếm một bộ phim theo tiêu đề
  11. Cũng hỗ trợ chương trình truyền hình, trò chơi và video


3

Đây là một giải pháp đơn giản mà tìm nạp hiển thị theo tên dựa trên truy vấn từ Krinkle:

Bạn có thể khắc phục chính sách cùng nguồn gốc bằng cách yêu cầu máy chủ của bạn tìm nạp URL thay vì cố gắng tìm nạp trực tiếp bằng AJAX và bạn không phải sử dụng JSONP để thực hiện.

Javascript (jQuery):

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

PHP (trong tệp ajax.php):

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

2

Gần đây tại SXSWi 2012, trong "Mashery Lounge" của họ, có một gian hàng cho một API giống như IMDB được gọi từ rovi . Đó không phải là API miễn phí, nhưng theo nhân viên bán hàng mà tôi đã nói chuyện với họ, họ cung cấp một phần chia sẻ hoặc một khoản phí cố định cho việc sử dụng, tùy thuộc vào ngân sách của bạn. Tôi chưa sử dụng nó nhưng nó có vẻ khá tuyệt.


Không còn sống nữa.
Giám mục

2

NetFilx là dịch vụ truyền thông được cá nhân hóa nhiều hơn nhưng bạn có thể sử dụng nó cho thông tin công khai liên quan đến phim ảnh. Nó hỗ trợ Javascript và OData.
Đồng thời xem JMDb : Thông tin về cơ bản giống như bạn có thể nhận được khi sử dụng trang web IMDb.


1
Netflix đã đóng API công khai của họ gần một năm trước. Vì họ đã gỡ bỏ toàn bộ tên miền của nhà phát triển, bao gồm cả bài đăng nói rằng họ đã tắt nó, đây là một liên kết đến một mẩu tin trên đó: gigaom.com/2014/11/14/iêu
James Skemp

1

ok tôi tìm thấy cái này

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

PHP tại đây: http://web3o.blogspot.de/2010/10/php-imdb-scraper-for-new-imdb-template.html

cách khác là triển khai imdbapi.org cho 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; }
    }

}

Nó có vẻ tốt nhưng theo IMDB, không được phép sử dụng loại công cụ này. Thêm thông tin trợ giúp.imdb.com / article / imdb / generic
nicolascolman

1

Nếu bạn muốn chi tiết phim api, bạn có thể xem xét

API OMDB là phim mở Cơ sở dữ liệu Trả về xếp hạng IBDB, phiếu bầu IMDB và bạn cũng có thể bao gồm xếp hạng Rotten Tomato.

Hoặc nếu không bạn có thể sử dụng

Phim Api của tôi cho phép bạn tìm kiếm bằng ID IMDB và trả về thông tin chi tiết nhưng nó có giới hạn yêu cầu.



0

Đây là mô-đun Python cung cấp API để lấy dữ liệu từ trang web IMDB

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


Mô-đun đó sử dụng tính năng quét màn hình, chống lại ĐKDV
Farinha

6
Sử dụng IMDB hoàn toàn trong một ứng dụng chống lại ĐKDV của họ, rõ ràng ...
rogerdpack

ya, bạn phải liên hệ với họ và yêu cầu sử dụng nội dung của họ trong ứng dụng thương mại của bạn. Nó nói trong ĐKDV của họ, bạn phải có sự đồng ý bằng văn bản từ IMDB.
Mike

0

Tôi khá tự tin rằng ứng dụng bạn tìm thấy thực sự có API thông tin của họ Themoviedb.org (họ nhận được hầu hết nội dung từ IMDB). Họ có API mở miễn phí được sử dụng rất nhiều cho các ứng dụng XMBC / trình tổ chức phim.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.