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

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


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


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

http://www.imdb.com/interfaces

有一些相关的api你可以。屏幕抓取是明确禁止的。 官方API似乎正在筹备中,但这已经是几年前的事了。


是的,但不是免费的。

…年费从15,000美元到更高,这取决于数据的受众以及正在获得许可的数据。

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


这种清洁似乎仍然有效 还有一个:http://imdbapi.poromenos.org/


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

编辑:由于法律问题不得不将服务转移到一个新的域名:)


那么TMDb API呢?

您可以使用GET /find/{external_id}通过imdb_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://sg.media-imdb.com/suggests/h/hello.json https://v2.sg.media-imdb.com/suggests/h/hello.json (as of 2019) Format: JSON-P Caveat: It's in JSON-P format, and the callback parameter can not customised. To use it cross-domain you'll have to use their function name for the callback (which is in the imdb${searchphrase} format). Alternatively, one could strip or replace the padding via a local proxy. https://v2.sg.media-imdb.com/suggestion/h/hello.json (as of 2020) Format: JSON Caveat: It's not CORS-enabled. This is fine for use in apps and server-side scripts. For use in a web app, you'll need to route it through a simple proxy (and consider enabling caching, too!)

// 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现在支持“高级”功能,即通过电影名称和演员名称进行搜索。


最近在SXSWi 2012上,在他们的“Mashery Lounge”中,有一个来自rovi的类似imdb的API的展位。这不是一个免费的API,但据我采访的销售人员说,他们根据你的预算提供收益分成或固定费用。我还没用过,不过看起来挺酷的。


我很有信心,你发现的应用程序实际上从Themoviedb.org的API得到他们的信息(他们从IMDB得到大部分的东西)。它们有一个免费的开放API,许多电影管理器/XMBC应用程序都使用这个API。


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

然而,警告是相当严重的:

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

我认为这是为那些通过API访问数据而付费的开发者准备的。

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

显然,您应该注意这个警告,并使用像TheMovieDB这样的数据库作为更好、更开放的数据库。

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


NetFilx更多的是个性化的媒体服务,但你也可以用它来提供有关电影的公共信息。它支持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获取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");

找到了这个

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

http://imdbpy.sourceforge.net/


如果你想要电影细节API,那么你可以考虑

OMDB API是开放电影数据库。它 返回IMDB评分,IMDB投票,它也有烂番茄评级。

或者你可以用

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


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

API提供的列表

电影代表作 电影标识符 电影图片 通过IMDB id获取电影 获取最新电影列表 获得新版本 了解电影上映日期 获取特定电影的可用翻译列表 获取电影的视频、预告片和预告片 按标题搜索电影 也支持电视节目,游戏和视频