IMDB是否提供API?[关闭]


644

最近,我找到了一个电影管理器应用程序,该应用程序可以从IMDB数据库中获取其数据。

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


10
IMDB上是否有用于审核的API?
metdos 2011年

1
要仅链接IMDB,请使用以下格式。<a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a> BTW: imdb_id follows this pattern: tt0000000
伊戈尔·帕拉

1
电影组织者应用程序的名称是什么?我正在寻找类似的东西
Airlike

@Airlike可能是Plex。我肯定知道可以组织电影并且可以从IMDB检索数据。
梅森2014年

Answers:


453

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

高级搜索


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


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


2
RE:JSONP API不会优雅地回退,(至少)它确实返回HTTP错误代码,但是我同意响应主体是XML真是有趣。
Omni5cience

9
最近,我注意到它还包含用于图像的'i'属性。但是,其中提到的网址是非常大的图片(可能是原始图片)。要获取缩略图,IMDb使用以下内容: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 2012年

2
你能不能只用.Ajax指定jsonp吗?如果你用jquery来获取json,并且我认为getjson已被弃用,即使编写了它,我也认为它已弃用了
克里斯·

2
@ChrisMcGrath:我没有考虑过使用jQuery.ajax jsonpCallback,我已经将它添加到了答案中,谢谢!至于$ .getJSON:不,那肯定没有被弃用。它只是$ .ajax周围的一个小包装。
Timo Tijhof 2012年

2
有谁知道如何在高级搜索中获取包含的图像?似乎他们只提出建议...
西里尔·梅斯特伦

217

新API @ http://www.omdbapi.com

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


1
太棒了,不知道这是否是您真正的,还是您只是找到了它,但不希望看到正常运行时间统计信息,以便让我知道自己有多少希望:D
Andrew G. Johnson

16
如果有人想知道,这不是官方的API。看到Pekka或Krinkle的答案。
Jano

7
它真的很慢..;(
丹尼尔·马格努森

14
@IanDavis,我目前正在为API购买新的更快/更大的专用服务器,这并不便宜!我几乎有足够的捐款可以在接下来的几天内获得此捐款。该API每天收到超过200万个请求!
bfritz

4
@OptimusCrime前几天,我遇到了IP地址为85.XXX.XXX.XXX的问题,不得不暂时阻止所有IP,直到我可以控制一切为止。遗憾的是,这是我必须解决的权衡问题之一,因为不需要API密钥,人们往往会滥用它。
bfritz 2014年

93

IMDB本身似乎在分发数据,但仅在文本文件中:

http://www.imdb.com/interfaces

您可以通过多种API来使用Google。明确禁止刮屏。官方的API似乎正在开发中,但是已经有很多年了。


7
如何禁止屏幕刮擦?

11
@omouse从这些术语来看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.并不能使这些术语在每个司法管辖区都能自动执行,但是在许多司法管辖区中都可以执行。
Pekka

6
是的,但是此对话框是针对“机器人”的。显然我的机器人不懂英语,所以很好。
僵尸

2
自2017年12月起,IMDb将不再更新这些文件。有一个新的API以新格式提供数据。尽管更易于解析,但这种新格式只是以前格式的很小一部分。
David Chappelle

1
我意识到这是一个非常古老的问答。但是,如果您未签署EULA,则数据挖掘可公开访问的数据在法律上是不可强制执行的。即使您这样做,即使可以通过其他方式公开访问该信息,EULA仍然没有法律约束力。最近做出了一个重大决定,对LinkedIn产生了这种影响。参见: eff.org/deeplinks/2019/09/…IANAL 但EFF是。这是一个非常明智的裁决。如果您将信息放在Internet上,则应该期望人们会做一些事情。
CubicleSoft

48

获取电影信息的另一种合法选择是Rotten-Tomatoes API(由Fandango提供)。


烂番茄API是否可以在商业应用中免费使用?举例来说,是说让用户从电影的标题中获得电影的详细信息?
KerrM

1
看起来他们没有在商业应用程序或非商业应用程序之间做出任何区分。您随时可以在这里查看他们的服务条款:developer.rottentomatoes.com/apps/tos尽管您每天的通话次数限制为10,000次,每秒只能通话10次
Johann 2012年

1
如果您提供的是非商业程序,每天需要拨打超过10,000个电话,则可以与他们讨论许可问题。这些术语非常简单且易于遵守,因为您必须显示其徽标和/或该评级的特定措辞。
Omertron

6
WTF?“该API仅在美国使用。在此区域之外部署内容必须得到Rotten Tomatoes团队的批准。该API不得与任何第三方共享。”
Dan Dascalescu 2015年

1
@DanDascalescu太可惜了。我打算在美国境外使用它
nicolascolman

48

TMDb API呢?

您可以使用imdb_id搜索 GET /find/{external_id}

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


8
但是需要注册和3个工作日的批准程序
Kostas,

如果有帮助,tmdb api可以使用dvd的唯一ID查找imdb_id。当然,假设它们已列出。dvdid.info可能也有帮助。
rogerdpack 2011年

7
vrinek-错误,它立即向我发送了API密钥。
oriharel 2014年

1
为此,获取API密钥没有问题。已经使用了一年,它的API精心设计。
john16384 '19

30

是的,但不是免费的。

.....年费从15,000美元到更高不等,这取决于数据的听众和被许可的数据。

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


1
看来它只对“个人”使用免费,否则您必须与他们联系...哇,我们真的需要开放式的imdb,尽管我想tmdb已经关闭...
rogerdpack 2011年

嗨,这并不是对问题的真正回答,更多的是对上面的评论。
伊恩·沃恩

6
@IanVaughan,我相信我的回答直接解决了这个问题:问:“ IMDB是否为此提供API ...?”。答:“是... [链接到数据许可信息]。” 这不是我的错,IMDB没有公开记录API参考。
Byran Zaugg 2013年

8
抱歉,我认为您是对的,我已纠正。道歉。
伊恩·沃恩

22

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

但是,警告相当严重:

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

我想这是为那些需要付费才能通过其API访问数据的开发人员准备的。

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

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

然后,您可以使用此Java API包装器(由我编写):api-themoviedb


1
我将为NodeJS编写您的库。感谢你的分享!
arm.localhost 2014年

有人如何获得使用它的API密钥?
0xMH



9

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


1
不幸的是,它将很快关闭。你知道它是如何工作的吗?
PA。

1
它也只提供非常有限的搜索,仅按电影名称进行搜索
justinhj 2011年

检出malhar2010.blogspot.com/2011/02/…以使用IMDb api。

12
作为该API的作者,我应该指出,由于尚未关闭上面的注释,因此现在可以按IMDB ID进行搜索。
院长


6

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

API提供的内容清单

  1. 电影学分
  2. 电影ID
  3. 电影影像
  4. 通过IMDB ID获取电影
  5. 获取最新电影列表
  6. 获取新版本
  7. 获取电影上映日期
  8. 获取特定电影的翻译列表
  9. 获取电影的视频,预告片和预告片
  10. 按标题搜索电影
  11. 还支持电视节目,游戏和视频

3

那值得一提的danclatworthy似乎仍然有效,还有另外一个:http://imdbapi.poromenos.org/


1
和(我几乎写过,“甚至更好!”,developer-caveman-instinct很强;-)后者的来源位于github.com/skorokithakis/imdbapi
Morten Bergfall

3

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

您可以通过让服务器获取URL而不是尝试直接使用AJAX直接获取URL来解决同源策略,而不必使用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");

2

最近在SXSWi 2012的“ Mashery Lounge”中,有一个叫rovi的类似于IMDB的API的摊位。它不是免费的API,但据我与之交谈的销售人员称,根据您的预算,他们提供了转股份额或固定使用费。我还没有用过,但是看起来很酷。


不再活着。
BishopZ

2

NetFilx更是一种个性化媒体服务,但是您可以将其用于电影的公共信息。它支持Javascript和OData。
还要看一下JMDb:信息与使用IMDb网站时获得的信息基本相同。


1
Netflix大约在一年前关闭了其公共API。由于他们记下了整个开发子域名,包括后说,他们将其关闭,这里有一个新闻片的链接就可以了:gigaom.com/2014/11/14/...
詹姆斯Skemp

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

}

看起来不错,但据IMDB称,禁止使用这种工具。更多信息help.imdb.com/article/imdb/general-information/...
nicolascolman

1

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

OMDB API是开放电影数据库,它返回IBDB评分,IMDB投票,您也可以包括烂番茄评分。

否则你可以使用

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




0

我非常有信心,您找到的应用程序实际上是从Themoviedb.org的API获取信息的(他们从IMDB中获得了大部分东西)。他们有一个免费的开放API,供电影组织者/ XMBC应用程序使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.