IMDBはAPIを提供していますか?[閉まっている]


644

私は最近、IMDBデータベースからデータを取得する映画オーガナイザーアプリケーションを見つけました。

DOES IMDBは、このためのAPIを提供し、または第三者が利用可能なAPI?


10
IMDBのレビュー用のAPIはありますか?
メトス

1
IMDBをリンクするには、次の形式を使用します。<a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a> BTW: imdb_id follows this pattern: tt0000000
Igor Parra 14年

1
この映画の主催者アプリケーションの名前は何ですか?私はそのようなものを探しています
Airlike '08 / 07/18

@Airlikeたぶんプレックス。私は確かに映画を整理し、IMDBからデータを取得できることを知っています。
メイソン

回答:


453

IMDbには、ドキュメント化されていませんが、高速で信頼性の高いパブリックAPIがあります(AJAXを通じて公式Webサイトで使用されます)。

検索候補API

  • https://sg.media-imdb.com/suggests/a/aa.json
  • https://v2.sg.media-imdb.com/suggests/h/hello.json(代替)
  • 形式:JSON-P
  • 警告:これはJSON-P形式であり、コールバックパラメータはカスタマイズできません。クロスドメインを使用するには、ユーザーが選択した関数名を使用する必要があります(これはimdb${searchphrase}形式です)。あるいは、ローカルプロキシを介してパディングを削除または置き換えることもできます。
// 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();

高度な検索

  • 名前検索(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月): Advanced APIは存在しません。良いニュースは、Suggestions APIが映画のタイトルと俳優名による検索の「高度な」機能もサポートするようになったことです。


2
RE:JSONP APIは正常にフォールバックしません(少なくとも)HTTPエラーコードを返しますが、応答本文がXMLであることはおかしいことに同意します。
Omni5cience 2011

9
最近、画像の「i」プロパティも含まれていることに気付きました。ただし、そこに記載されているURLは非常に大きな画像です(オリジナルのようです)。サムネイルを取得するために、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
jsonp with.Ajaxを指定することはできませんか?jqueryでjsonを取得していて、getjsonが非推奨になっていると思われる場合、これが作成されても非推奨でした
Chris McGrath

2
@ChrisMcGrath:私はjQuery.ajax jsonpCallbackの使用については考えていませんでした。回答に追加しました。ありがとう!$ .getJSONに関しては、いいえ、それはおそらく非推奨ではありません。これは、$。ajaxの小さなラッパーにすぎません。
Timo Tijhof

2
高度な検索に含まれる画像を取得する方法を知っている人はいますか?彼らは提案だけが付属しているようです...
Cyril Mestrom

217

新しいapi @ http://www.omdbapi.com

編集:法的な問題により、サービスを新しいドメインに移動する必要がありました:)


1
これは素晴らしいです。これが実際にあなたのものであるか、それともそれを見つけただけであるかはわかりませんが、稼働時間統計の周りに何かを見たいので、どれだけそれを当てにできるかを知ることができます:D
Andrew

16
誰かが不思議に思っている場合、これは公式のAPIではありません。ペッカまたはクリンクルの回答を参照してください。
Jano、2011

7
それは本当に遅い..;(
ダニエル・マグナソン

14
@IanDavis、私は現在、APIのための新しい高速/大規模な専用サーバーの取得に取り組んでいますが、安価ではありません!これから数日以内にこれを獲得するのに十分な寄付がほぼあります。APIは1日に200万を超えるリクエストを受け取っています。
bfritz

4
@OptimusCrime先日、85.XXX.XXX.XXXの範囲のIPに問題があり、制御できるようになるまで一時的にすべてIPをブロックする必要がありました。悲しいことに、これはAPIキーを必要としないことで対処しなければならないトレードオフの1つであり、人々は地獄を悪用する傾向があります。
bfritz

93

IMDB自体はデータを配布しているようですが、テキストファイルのみです。

http://www.imdb.com/interfaces

これを取り巻くいくつかのAPIがあります。画面のスクレイピングは明示的に禁止されています。公式の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
はい。ただし、このダイアログは「ロボット」を対象としています。どうやら私のロボットは英語をあまり理解していません。
ゾンビ2013年

2
2017年12月の時点で、これらのファイルはIMDbによって更新されていません。新しい形式でデータを提供する新しいAPIがあります。解析は簡単ですが、この新しい形式は以前の形式の非常に小さなサブセットです。
David Chappelle

1
これは非常に古い質問と回答だと思います。ただし、EULAに署名しなかった場合、一般にアクセス可能なデータのデータマイニングは法的に強制できません。あなたがそうしたとしても、情報が他の手段を通じて公的にアクセス可能である場合、EULAは依然として法的拘束力を持ちません。最近、LinkedInに対する非常に大きな影響について大きな決定がなされました。参照: eff.org/deeplinks/2019/09/…IANAL ですが、EFFはそうです。それは非常に賢明な判決です。あなたがインターネットに情報を載せるなら、人々はそれを使って何かをすることを期待するべきです。
CubicleSoft

48

映画情報を取得するためのもう1つの法的な代替手段は、Rotten-Tomatoes API(Fandangoによる)です。


腐ったトマトAPIは商用アプリケーションで無料で使用できますか?たとえば、ユーザーに映画のタイトルから映画の詳細を取得させるにはどうすればよいでしょうか。
KerrM

1
商用アプリと非商用アプリを区別しているようには見えません。いつでもここでTOSを確認できます:developer.rottentomatoes.com/apps/tos 1日あたり10,000コール、1秒あたり10コールに制限されます
Johann

1
非営利のプログラムを提供していて、1日あたり10,000件を超える通話が必要な場合は、ライセンスについて彼らと話すことができます。評価のためにロゴや特定の言い回しを表示する必要があるという点で、これらの用語はかなりシンプルで簡単に準拠できます。
Omertron 2012

6
WTF?「このAPIは米国での使用のみを目的としています。この地域外へのコンテンツのデプロイは、ロットントマトチームの承認が必要です。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 2011

tmdb apiは、dvdの一意のIDを使用して、imdb_idを検索できます(役立つ場合)。もちろん、それらがリストされていると仮定します。dvdid.infoも役立つかもしれません。
rogerdpack

7
vrinek-間違っています。APIキーがすぐに送られてきました。
oriharel

1
このためのAPIキーを取得しても問題ありません。何年も使用しており、そのAPIは適切に設計されています。
john16384

30

はい、ただし無料ではありません。

.....データのオーディエンスとライセンスされているデータに応じて、15,000ドルからそれ以上の範囲の年会費。

URL:-http: //www.imdb.com/licensing/


1
「個人的な」使用は無料であるように見えます。それ以外の場合は、連絡する必要があります...すごい、imdbのオープンな同等物が本当に必要ですが、tmdbは近いと思います...
rogerdpack

こんにちは、これは実際には質問に対する答えではなく、上のコメントです。
Ian Vaughan

6
@IanVaughan、私の答えはこの質問に直接対処していると思います:Q:「IMDBはこのためのAPIを提供していますか?」A:「はい... [データライセンス情報へのリンク]」それは私のせいではありません。IMDBはAPIリファレンスを公に文書化していません。
Byran Zaugg 2013

8
すみません、正しいと思います。修正しました。謝罪。
Ian Vaughan

22

http://app.imdb.comには、モバイルアプリケーションで使用するJSON APIがあります。

ただし、警告はかなり深刻です。

IMDbによって書面で承認されたクライアントのみが使用できます。
無許可のクライアントの作成者とユーザーは、彼らの行為に対する完全な法的暴露/責任を受け入れます。

これは、API経由でデータにアクセスするためのライセンスを支払う開発者向けだと思います。

編集:キックのために、私はAPIからデータを読み取ろうとするクライアントライブラリを書きました、あなたはそれをここで見つけることができます:api-imdb

明らかに、警告に注意を払い、TheMovieDBのようなものをより優れたオープンなデータベースとして使用する必要があります。

次に、このJava APIラッパー(私が書いたもの)を使用できます:api-themoviedb


1
NodeJSのライブラリを作成します。共有してくれてありがとう!
arm.localhost 2014

誰かがそれを使用するためのAPIキーを取得するにはどうすればよいですか?
0xMH 2017

このAPIを使用するPythonライブラリ:pypi.org/project/imdbpie code.richard.do/richardARPANET/imdb-pie @Mohammed imdb.com/licensingを
Gfy


9

https://deanclatworthy.com/tools.htmlはIMDB APIですが、不正使用のために停止されています。


1
残念ながら、間もなく閉鎖されます。それがどのように機能するか知っていますか?
PA。

1
映画のタイトルのみによる非常に限定的な検索も提供しています
justinhj

チェックアウトmalhar2010.blogspot.com/2011/02/... IMDBのAPIを使用します。

12
このAPIの作成者として、私は上記のコメントが閉じられていないので冗長になり、IMDB IDで検索できるようになったことを指摘しておきます。
Dean

無料のimdb APIについては、99webtools.com / get
Sunny

6

IMDBは2016年8月の時点で直接APIをまだ備えていないようですが、多くの人々が上記のスクレイパーやその他のものを書いているのを見ました。以下は、興行収入バズAPIを使用して映画データにアクセスするためのより標準的な方法です。JSON形式のすべての応答と無料プランで1日あたり5000クエリ

APIが提供するもののリスト

  1. 映画のクレジット
  2. 映画ID
  3. 映画の画像
  4. IMDB IDで映画を取得
  5. 最新の映画リストを取得
  6. 新しいリリースを入手する
  7. 映画のリリース日を取得する
  8. 特定の映画で利用可能な翻訳のリストを取得する
  9. 映画の動画、予告編、ティーザーを入手する
  10. タイトルで映画を検索
  11. テレビ番組、ゲーム、ビデオにも対応


3

以下は、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");

2

最近SXSWi 2012の「Mashery Lounge」に、roviから呼び出されるIMDBのようなAPIのブースがありました。これは無料のAPIではありませんが、私が話した営業担当者によると、予算に応じて、収益分配または定額使用料を提供しています。まだ使っていませんが、なかなかいい感じです。


もう生きていません。
BishopZ

2

NetFilxはよりパーソナライズされたメディアサービスですが、映画に関する公開情報に使用できます。JavascriptとODataをサポートしています。JMDb
も見てください。情報は、IMDb Webサイトを使用したときに取得できる情報と基本的に同じです。


1
Netflixは、ほぼ1年前にパブリックAPIをシャットダウンしました。彼らは、彼らはそれをシャットダウンしたと言ってポストを含む現像剤全体のサブドメインを、降ろしたので、ここではその上にニュースの作品へのリンクです:gigaom.com/2014/11/14/...
ジェームズSkemp

1

わかりました、この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投票を返し、腐ったトマトのレーティングも含めることができます。

または他にあなたは使うことができます

IMDB IDで検索して詳細情報を返すMy Api Filmsですが、リクエスト制限があります。



0

これは、IMDB Webサイトからデータを取得するためのAPIを提供するPythonモジュールです

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


そのモジュールはTOSに反する画面スクレイピングを使用しています
Farinha

6
IMDBを使用して、すべてのアプリでは、彼らのTOS、明らかに...反対である
rogerdpack

ええ、あなたは彼らに連絡し、あなたの商用アプリケーションでそれらのコンテンツを使用することを要求する必要があります。彼らのTOSではIMDBからの書面による同意が必要であると述べています。
マイク

0

あなたが見つけたアプリケーションが実際にThemoviedb.orgのAPIからそれらの情報を取得することにかなり自信があります(IMDBからほとんどのものが取得されます)。彼らは多くの映画主催者/ XMBCアプリケーションで使用される無料のオープンAPIを持っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.