提问人:tusay 提问时间:12/28/2009 最后编辑:user5822117tusay 更新时间:12/28/2021 访问量:522373
IMDB是否提供API?[关闭]
Does IMDB provide an API? [closed]
问:
我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便用事实和引文来回答。
6年前关闭。
我最近发现了一个电影管理器应用程序,它从IMDB数据库中获取数据。
IMDB是否为此提供了API,或者任何可用的第三方API?
答:
https://deanclatworthy.com/tools.html 是一个 IMDB API,但由于滥用而关闭。
评论
IMDB本身似乎分发数据,但仅限于文本文件:
http://www.imdb.com/interfaces
你可以用谷歌搜索几个 API。屏幕抓取是明确禁止的。 官方 API 似乎正在开发中,但已经存在多年了。
评论
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.
是的,但不是免费的。
.....年费从 15,000 美元到更高不等,具体取决于数据的受众以及获得许可的数据。
URL :- http://www.imdb.com/licensing/
评论
Deanclatworthy似乎仍然有效 还有另一个:http://imdbapi.poromenos.org/
评论
新 API @ http://www.omdbapi.com
编辑:由于法律问题,不得不将服务转移到新的域:)
评论
TMDb API呢?
您可以按imdb_id搜索GET /find/{external_id}
https://developers.themoviedb.org/3/find/find-by-id
评论
这是一个 Python 模块,提供 API 从 IMDB 网站获取数据
http://techdiary-viki.blogspot.com/2011/03/imdb-api.html
评论
获取电影信息的另一个合法替代方案是烂番茄 API(由 Fandango 提供)。
评论
IMDb 有一个公共 API,虽然没有记录,但快速可靠(通过 AJAX 在官方网站上使用)。
搜索建议 API
https://v2.sg.media-imdb.com/suggests/h/hello.json(截至2019年)
- 格式:JSON-P
- 注意:它是 JSON-P 格式,并且无法自定义回调参数。要跨域使用它,您必须使用其函数名称进行回调(格式为)。或者,可以通过本地代理剥离或替换填充。
imdb${searchphrase}
https://v2.sg.media-imdb.com/suggestion/h/hello.json(截至2020年)
- 格式:JSON
- 注意:它不支持 CORS。这适用于应用程序和服务器端脚本。若要在 Web 应用中使用,需要通过简单的代理对其进行路由(并考虑启用缓存!
// 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();
高级搜索
名称搜索 (json):http://www.imdb.com/xml/find?json=1&nr=1&nm=on&q=jeniffer+garner- 标题搜索 (xml):http://www.imdb.com/xml/find?xml=1&nr=1&tt=on&q=lost
- 格式:XML
优点:支持电影标题和演员姓名(与建议 API 不同)。
请注意,这些 API 是非官方的,可能随时更改!
更新(2019 年 1 月):高级 API 不再存在。好消息是,建议 API 现在也支持按电影名称和演员姓名搜索的“高级”功能。
评论
if (ua.i) { c.img = { src: ua.i[0].replace("._V1_.jpg", "._V1._SX40_CR0,0,40,54_.jpg"), width: 40, height: 54 } }
最近在SXSWi 2012上,在他们的“Mashery Lounge”中,有一个展台,展示了一个由rovi调用的类似IMDB的API。它不是一个免费的 API,但根据我与之交谈过的销售人员的说法,他们根据您的预算提供转速分成或固定的使用费。我还没有用过它,但它看起来很酷。
评论
我非常有信心您找到的应用程序实际上从 Themoviedb.org 的 API 获取信息(他们从 IMDB 获取大部分内容)。他们有一个免费的开放 API,该 API 被许多电影组织者/XMBC 应用程序使用。
有一个 JSON API 供移动应用程序使用,网址为 http://app.imdb.com
但是,警告相当严重:
仅供 IMDb 书面授权的客户使用。
未经授权的客户的作者和用户对其行为接受全部法律风险/责任。
我认为这是为那些通过他们的 API 访问数据的许可证付费的开发人员准备的。
编辑:只是为了踢球,我写了一个客户端库来尝试从 API 读取数据,你可以在这里找到它:api-imdb
显然,你应该注意这个警告,实际上,使用像TheMovieDB这样的东西作为一个更好、更开放的数据库。
然后你可以使用这个 Java API 包装器(我写的):api-themoviedb
评论
NetFixx更像是个性化的媒体服务,但您可以将其用于有关电影的公共信息。它支持 Javascript 和 OData。
另请看JMDb:该信息与您使用IMDb网站时获得的信息基本相同。
评论
好的,我找到了这个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; }
}
}
评论
这是一个简单的解决方案,它根据 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");
找到这个
IMDbPY 是一个 Python 包,可用于检索和管理 关于电影、人物、角色和 公司。
http://imdbpy.sourceforge.net/
评论
如果你想要电影细节 API,那么你可以考虑
OMDB API,即开放电影数据库。它 返回IMDB评分,IMDB评分,并且还具有烂番茄评分。
否则你可以使用
My Api Films 允许您使用 IMDB ID 进行搜索,它会返回详细信息,但它有请求限制。
截至 2016 年 8 月,IMDB 似乎还没有直接的 API,但我看到很多人在上面写了抓取工具和东西。这是使用票房嗡嗡声 API 访问电影数据的更标准方法。所有 JSON 格式的回复和每天 5000 次查询的免费计划
API 提供的内容列表
- 电影学分
- 电影 ID
- 电影图像
- 通过IMDB ID获取电影
- 获取最新电影列表
- 获取新版本
- 获取电影上映日期
- 获取特定电影的可用翻译列表
- 获取电影的视频、预告片和预告片
- 按标题搜索电影
- 还支持电视节目、游戏和视频
评论
<a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a>
BTW: imdb_id follows this pattern: tt0000000