674

我最近发现了一个从IMDB 数据库中获取数据的电影管理器应用程序。

IMDB是否为此提供 API,或任何可用的第三方 API?

4

19 回答 19

471

IMDb 有一个公共 API,虽然没有记录,但快速且可靠(通过 AJAX 在官方网站上使用)。

搜索建议 API

// 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 to the clean `/suggestion` API.
jQuery.getJSON('/api/imdb/?q=foo', function (results) {
    /* ... */
});

// 4) Pure JSON (plain JavaScript; Modern ES6, ES2017, and Fetch API)
// Serve a "/api" route in your app, that proxies (and caches!)
// to v2.sg.media-imdb.com/suggestion/h/hello.json
const resp = await fetch('/api/imdb/?q=foo');
const results = await resp.json();

高级搜索


请注意,这些 API 是非官方的,可能随时更改!


更新(2019 年 1 月):高级 API 不再存在。好消息是,Suggestions API 现在还支持按电影标题和演员姓名搜索的“高级”功能。

于 2011-10-12T17:56:48.687 回答
222

新的 api@ http: //www.omdbapi.com

编辑:由于法律问题,不得不将服务移至新域:)

于 2010-11-24T17:18:55.827 回答
99

IMDB 本身似乎分发数据,但仅限于文本文件:

http://www.imdb.com/interfaces

有几个 API 可以通过 Google 搜索。屏幕抓取是明确禁止的。官方 API 似乎正在开发中,但多年来一直如此。

于 2009-12-27T17:47:16.013 回答
51

获取电影信息的另一个合法替代方法是Rotten-Tomatoes API(由 Fandango 提供)。

于 2011-07-26T11:47:00.350 回答
49

What about TMDb API ?

You can search by imdb_id with GET /find/{external_id}

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

于 2011-01-05T13:36:05.723 回答
31

是的,但不是免费的。

.....年费从 15,000 美元到更高不等,具体取决于数据的受众和正在许可的数据。

网址:- http://www.imdb.com/licensing/

于 2010-02-05T04:07:47.593 回答
22

http://app.imdb.com上有一个供移动应用程序使用的 JSON API

但是,警告相当严重:

仅供 IMDb 书面授权的客户使用。
未经授权的客户的作者和用户对其行为承担全部法律风险/责任。

我认为这适用于那些支付许可以通过其 API 访问数据的开发人员。

编辑:只是为了好玩,我写了一个客户端库来尝试从 API 读取数据,你可以在这里找到它:api-imdb

显然,您应该注意警告,实际上,使用TheMovieDB 之类的东西作为更好、更开放的数据库。

然后你可以使用这个 Java API 包装器(我写的):api-themoviedb

于 2012-05-09T09:15:48.123 回答
9

找到了这个

IMDbPY 是一个 Python 包,可用于检索和管理 IMDb 电影数据库中有关电影、人物、角色和公司的数据。

http://imdbpy.sourceforge.net/

于 2013-12-30T21:52:05.300 回答
8

https://deanclatworthy.com/tools.html是一个 IMDB API,但由于滥用而被关闭。

于 2009-12-27T17:42:25.617 回答
7

截至 2016 年 8 月,IMDB 似乎还没有直接的 API,但我看到很多人在上面写爬虫和东西。是使用票房嗡嗡声 API 访问电影数据的更标准方法。所有 JSON 格式的响应和每天 5000 个免费计划的查询

API提供的东西列表

  1. 电影学分
  2. 电影编号
  3. 电影图像
  4. 通过 IMDB id 获取电影
  5. 获取最新电影列表
  6. 获取新版本
  7. 获取电影上映日期
  8. 获取特定电影的可用翻译列表
  9. 获取电影的视频、预告片和预告片
  10. 按标题搜索电影
  11. 还支持电视节目、游戏和视频
于 2016-08-18T03:45:27.667 回答
3

那 deanclatworthy 似乎仍然有效,还有另一个:http: //imdbapi.poromenos.org/

于 2010-07-23T20:32:37.783 回答
3

这是一个简单的解决方案,它根据来自 Krinkle 的查询按名称获取节目:

您可以通过让您的服务器获取 URL 而不是尝试使用 AJAX 直接获取它来绕过同源策略,并且您不必使用 JSONP 来执行此操作。

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 中):

$q = urlencode($_GET["q"]);
echo file_get_contents("http://www.imdb.com/xml/find?json=1&nr=1&tt=on&q=$q");
于 2013-11-16T21:00:48.730 回答
3

如果您想要电影详细信息 API,那么您可以考虑

OMDB API,即开放电影数据库。它返回 IMDB Ratings、IMDB Votes,并且还具有 Rotten Tomato 评级。

否则你可以使用

My Api Films允许您使用 IMDB ID 进行搜索,它返回详细信息,但有请求限制。

于 2016-03-25T13:16:06.560 回答
2

NetFilx更多的是个性化媒体服务,但您可以将其用于有关电影的公共信息。它支持 Javascript 和 OData。
另请查看JMDb:这些信息与您在使用 IMDb 网站时可以获得的信息基本相同。

于 2012-09-10T14:32:08.993 回答
2

最近在 2012 年 SXSWi 上,在他们的“Mashery Lounge”中,有一个展位用于展示来自rovi的类似 IMDB 的 API 。它不是免费的 API,但根据我与之交谈的销售人员的说法,他们根据您的预算提供 rev share 或固定使用费。我还没有使用它,但它看起来很酷。

于 2012-03-15T23:01:53.097 回答
1

好的,我找到了这个 IMDB 刮刀

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

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

或者 c# 的 imdbapi.org 实现:

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

}
于 2013-05-28T18:12:06.773 回答
1

如果您需要电视信息,您可以尝试TVmaze.com

它是免费、快速和可靠的。这是开发者页面:

http://api.tvmaze.com/

于 2016-05-17T17:22:49.773 回答
0

这是一个 Python 模块,提供从 IMDB 网站获取数据的 API

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

于 2011-03-10T15:12:21.240 回答
0

我非常有信心,您找到的应用程序实际上是从 Themoviedb.org 的 API 中获取信息的(他们从 IMDB 获取大部分内容)。他们有一个免费的开放 API,用于很多电影管理器/XMBC 应用程序。

于 2012-05-04T04:22:39.000 回答