繁体   English   中英

IMDB 是否提供 API? [关闭]

[英]Does IMDB provide an API? [closed]

我最近发现了一个电影组织者应用程序,它从IMDB 数据库中获取数据。

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

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 不再存在。 好消息是,Suggestions API 现在还支持通过电影片名和演员姓名进行搜索的“高级”功能。

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

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

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

http://www.imdb.com/interfaces

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

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

TMDb API 怎么样?

您可以使用GET /find/{external_id}通过 imdb_id 进行搜索

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

是的,但不是免费的。

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

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

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

但是,警告相当严重:

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

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

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

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

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

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

找到了这个

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

http://imdbpy.sourceforge.net/

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

API 提供的事物列表

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

这是一个简单的解决方案,它根据来自 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");

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

NetFilx更像是个性化媒体服务,但您可以将其用于有关电影的公共信息。 它支持 Javascript 和 OData。
也看看JMDb : 信息和你在IMDb网站上得到的信息基本一样。

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

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

否则你可以使用

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

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

好的,我找到了这个 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; }
    }

}

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

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

http://api.tvmaze.com/

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM