web-dev-qa-db-ja.com

IMDBはAPIを提供しますか?

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

_ imdb _ はこのためのAPIを提供していますか、それともサードパーティのAPIが利用可能ですか?

603
tusay

IMDbには公開されているAPIがありますが、文書化されていませんが高速で信頼性があります(AJAXを通じて公式Webサイトで使用されています)。

検索候補API

  • https://sg.media-imdb.com/suggest/a/aa.json
  • https://v2.sg.media-imdb.com/suggest/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)
const resp = await fetch('/api/imdb/?q=foo');
const results = resp.json();

高度な検索


これらのAPIは非公式であり、いつでも変更される可能性があることに注意してください。


更新(2019年1月): Advanced APIはもう存在しません。幸い、Suggestions APIは現在、映画のタイトルと俳優の名前の両方をサポートしています。

417
Krinkle

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

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

201
bfritz

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

http://www.imdb.com/interfaces

あなたがグーグルすることができるこの周りのいくつかのAPIがあります。スクリーンスクレイピングは明示的に禁止されています。公式のAPIは開発中のようですが、もう何年も前からそうなっています。

85
Pekka 웃

映画の情報を入手するためのもう1つの法的な選択肢は Rotten-Tomatoes API (Fandangoによる)です。

46
Johann

TMDb APIはどうですか。

あなたはMovie.imdbLookupでimdb_idで検索することができます

XBMCメディアセンターはそれを使用しているようです

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

45
hdorio

はい、でも無料ではありません。

.....データの視聴者とどのデータがライセンスされているかによって、15,000ドルからそれ以上の年会費。

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

29
Byran

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

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

IMDbによって書面で許可されたクライアントによってのみ使用されます。
許可されていないクライアントの作成者およびユーザーは、彼らの行動に対する完全な法的開示/責任を受け入れます。

私はこれが彼らのAPIを通してデータにアクセスするためのライセンスの代金を払っているそれらの開発者のためであると思います。

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

明らかに、あなたは警告に注意を払うべきであり、そして本当に、もっと良いそしてもっとオープンなデータベースとして TheMovieDB のようなものを使うべきです。

それからあなたは(私が書いた)このJava APIラッパーを使うことができます: api-themoviedb

22
Omertron

https://deanclatworthy.com/tools.html はIMDB APIですが、悪用によりダウンしています。

9
Valentin Golev

これを見つけた

IMDbPYは、映画、人物、キャラクター、会社に関するIMDb映画データベースのデータを取得および管理するのに役立つPythonパッケージです。

http://imdbpy.sourceforge.net/ /

6
markiv

2016年8月現在、IMDBは直接APIを持っていないようですが、私は多くの人が上記のスクレーパーやものを書いているのを見ました。 ここ は、興行用話題APIを使用して映画データにアクセスするためのより標準的な方法です。無料プランでJSON形式のすべての回答と1日あたり5000クエリ

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

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

これはKrinkleからの問い合わせに基づいてショーを名前でフェッチする簡単な解決策です:

AJAXを使って直接取得しようとする代わりに、サーバーにURLを取得させることでsame-Originポリシーを回避することができます これを行うために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");
3
Brett Pennings

そのdeanclatworthyはまだ動作しているようであり、もう一つがあります: http://imdbapi.poromenos.org/ /

3
myincome

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

2
ThePCWizard

最近のSXSWi 2012では、彼らの "Mashery Lounge"に、 rovi から呼ばれるIMDBのようなAPIのブースがありました。それは無料のAPIではありませんが、私が話した販売員によると、彼らはあなたの予算に応じて回転シェアか使用料のための均一料金を提供します。まだ使っていませんが、かなりかっこいいです。

2
bpapa

映画の詳細を知りたい場合はapi

OMDB API これはOpen moviesデータベースです。IBDB評価、IMDB投票、およびRotten Tomato評価も含めることができます。

または他にも使えます

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

1
Akshay Khale

テレビの情報が必要な場合は TVmaze.com を試すことができます。

無料、高速、そして信頼性があります。これが開発者ページです。

http://api.tvmaze.com/ /

1
Saeed Masoumi

わかりました私はこの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; }
    }

}
1
fubo

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

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

0
vikas

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

0
Mike