IMDB是否提供API?

时间:2009-12-27 17:40:33

标签: asp.net-web-api imdb

我最近找到了一个电影管理器应用程序,它从IMDB database获取数据。

IMDB是否为此提供了API,或者是否提供了任何第三方API?

19 个答案:

答案 0 :(得分:419)

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)
const resp = await fetch('/api/imdb/?q=foo');
const results = resp.json();

高级搜索


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


更新(2019年1月):高级API不再存在。好消息是,Suggestions API现在支持电影标题和演员名称。

答案 1 :(得分:202)

new api @ http://www.omdbapi.com

编辑:由于法律问题必须将服务移至新域名:)

答案 2 :(得分:85)

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

http://www.imdb.com/interfaces

围绕此有几个API,你可以谷歌。屏幕抓取是明确禁止的。 官方API似乎正在开发中,但已经存在多年了。

答案 3 :(得分:46)

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

答案 4 :(得分:45)

TMDb API怎么样?

您可以使用Movie.imdbLookup

搜索imdb_id

XBMC Media Center似乎使用它

https://www.themoviedb.org/documentation/api

答案 5 :(得分:29)

是的,但不是免费的。

  

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

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

答案 6 :(得分:22)

http://app.imdb.com

有一个供移动应用程序使用的JSON API

然而,警告相当严重:

  

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

我认为这是为那些支付许可证的开发人员通过他们的API访问数据。

编辑:为了解决问题,我编写了一个客户端库来尝试从API中读取数据,您可以在此处找到它:api-imdb

显然,您应该注意警告,并且确实使用类似TheMovieDB的内容作为更好,更开放的数据库。

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

答案 7 :(得分:9)

https://deanclatworthy.com/tools.html是一个IMDB API,但由于滥用而停止运行。

答案 8 :(得分:6)

截至2016年8月,IMDB似乎没有直接的API,但我看到很多人在上面写了刮刀和东西。 Here是使用票房buzz API访问电影数据的更标准方式。所有JSON格式的回复和每日5000次查询的免费计划

API提供的事项列表

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

答案 9 :(得分:6)

找到这个

  

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

http://imdbpy.sourceforge.net/

答案 10 :(得分: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");

答案 11 :(得分:3)

答案 12 :(得分:2)

最近在SXSWi 2012上,在他们的“Mashery Lounge”中,有一个类似IMDB的API展位,来自rovi。这不是一个免费的API,但根据我跟他谈过的销售人员,他们根据您的预算提供转速份额或固定费用。我还没用过,但看起来很酷。

答案 13 :(得分:2)

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

答案 14 :(得分: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; }
    }

}

答案 15 :(得分:1)

如果你想要电影细节api,你可以考虑

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

否则你可以使用

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

答案 16 :(得分:1)

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

它自由,快速和可靠。这是开发者页面:

http://api.tvmaze.com/

答案 17 :(得分:0)

我非常有信心你发现的应用程序实际上从Themoviedb.org的API中获取了他们的信息(他们从IMDB获得大部分内容)。他们有一个免费的开放API,用于很多电影组织者/ XMBC应用程序。

答案 18 :(得分:0)

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

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