ฉันเพิ่งพบจัดโปรแกรมภาพยนตร์ซึ่งจะดึงข้อมูลจากฐานข้อมูลของไอเอ็ม
ไม่IMDBให้ API สำหรับการนี้หรือบุคคลที่สามใด ๆ APIs ใช้ได้?
<a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a>
BTW: imdb_id follows this pattern: tt0000000
ฉันเพิ่งพบจัดโปรแกรมภาพยนตร์ซึ่งจะดึงข้อมูลจากฐานข้อมูลของไอเอ็ม
ไม่IMDBให้ API สำหรับการนี้หรือบุคคลที่สามใด ๆ APIs ใช้ได้?
<a href="http://www.imdb.com/title/{{{ $imdb_id }}}">{{{ $imdb_id }}}</a>
BTW: imdb_id follows this pattern: tt0000000
คำตอบ:
IMDb มี API สาธารณะที่แม้ว่าจะไม่มีเอกสาร แต่ก็รวดเร็วและเชื่อถือได้ (ใช้บนเว็บไซต์อย่างเป็นทางการผ่าน AJAX)
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();
ระวังว่า API เหล่านี้ไม่เป็นทางการและสามารถเปลี่ยนแปลงได้ตลอดเวลา!
อัปเดต (มกราคม 2019): API ขั้นสูงไม่มีอยู่อีกต่อไป ข่าวดีก็คือตอนนี้ API ข้อเสนอแนะรองรับคุณสมบัติ "ขั้นสูง" ของการค้นหาตามชื่อภาพยนตร์และชื่อนักแสดงเช่นกัน
if (ua.i) { c.img = { src: ua.i[0].replace("._V1_.jpg", "._V1._SX40_CR0,0,40,54_.jpg"), width: 40, height: 54 } }
เพื่อให้ได้ภาพขนาดย่อไอเอ็มใช้ต่อไปนี้:
ใหม่ api @ http://www.omdbapi.com
แก้ไข: เนื่องจากปัญหาทางกฎหมายต้องย้ายบริการไปยังโดเมนใหม่ :)
IMDB ตัวเองดูเหมือนจะกระจายข้อมูล แต่เฉพาะในไฟล์ข้อความ:
http://www.imdb.com/interfaces
มี API หลายอย่างที่คุณสามารถใช้กับ Google ได้ ห้ามคัดลอกหน้าจออย่างชัดเจน API อย่างเป็นทางการดูเหมือนว่าจะอยู่ในผลงาน แต่เป็นเช่นนั้นมานานหลายปีแล้ว
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.
นั่นไม่ได้ทำให้ข้อกำหนดเหล่านี้บังคับใช้โดยอัตโนมัติในทุกเขตอำนาจศาล แต่มีหลายข้อ
อีกทางเลือกทางกฎหมายในการรับข้อมูลภาพยนตร์คือRotten-Tomatoes API (โดย Fandango)
TMDb API เกี่ยวกับอะไร?
คุณสามารถค้นหาโดย imdb_id ด้วย GET /find/{external_id}
ใช่ แต่ไม่ใช่ฟรี
..... ค่าธรรมเนียมรายปีตั้งแต่ $ 15,000 ถึงสูงกว่าขึ้นอยู่กับผู้ชมสำหรับข้อมูลและข้อมูลที่ได้รับอนุญาต
มี JSON API สำหรับใช้งานโดยแอปพลิเคชันมือถือที่http://app.imdb.com
อย่างไรก็ตามคำเตือนนั้นค่อนข้างรุนแรง:
สำหรับใช้โดยลูกค้าที่ได้รับอนุญาตเป็นลายลักษณ์อักษรโดย IMDb
ผู้เขียนและผู้ใช้ของลูกค้าที่ไม่ได้รับอนุญาตยอมรับการเปิดเผย / รับผิดทางกฎหมายอย่างเต็มที่สำหรับการกระทำของพวกเขา
ฉันเข้าใจว่านี่คือสำหรับนักพัฒนาที่จ่ายค่าลิขสิทธิ์ในการเข้าถึงข้อมูลผ่าน API ของพวกเขา
แก้ไข : สำหรับเตะฉันเขียนห้องสมุดลูกค้าเพื่อพยายามอ่านข้อมูลจาก API คุณสามารถค้นหาได้ที่นี่: api-imdb
เห็นได้ชัดว่าคุณควรให้ความสนใจกับคำเตือนและใช้สิ่งที่ต้องการเช่นTheMovieDBเป็นฐานข้อมูลที่เปิดกว้างและดีขึ้น
จากนั้นคุณสามารถใช้ Java API wrapper (ที่ฉันเขียน): api-themoviedb
พบสิ่งนี้
IMDbPY เป็นแพ็คเกจ Python ที่มีประโยชน์ในการดึงและจัดการข้อมูลของฐานข้อมูลภาพยนตร์ IMDb เกี่ยวกับภาพยนตร์ผู้คนตัวละครและ บริษัท ต่างๆ
https://deanclatworthy.com/tools.htmlเป็น IMDB API แต่หยุดทำงานเนื่องจากการละเมิด
IMDB ยังไม่มี API โดยตรง ณ เดือนสิงหาคม 2559 แต่ฉันเห็นคนจำนวนมากเขียนแครปเปอร์และสิ่งต่าง ๆ ข้างต้น นี่คือวิธีมาตรฐานในการเข้าถึงข้อมูลภาพยนตร์โดยใช้ box office buzz API การตอบสนองทั้งหมดในรูปแบบ JSON และการค้นหา 5,000 ครั้งต่อวันบนแผนบริการฟรี
รายการสิ่งต่าง ๆ ที่มีให้โดย API
deanclatworthy นั้นยังคงทำงานได้และมีอีกอันหนึ่ง: http://imdbapi.poromenos.org/
นี่เป็นวิธีแก้ปัญหาง่ายๆที่ดึงข้อมูลการแสดงตามชื่อจากการสืบค้นของ 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");
เมื่อเร็ว ๆ นี้ที่ SXSWi ปี 2012 ใน "Mashery เลาจน์" มีบูธสำหรับไอเอ็มเหมือน API เรียกจากRovi ไม่ใช่ API ฟรี แต่ตามพนักงานขายฉันได้พูดคุยกับพวกเขาว่ามีส่วนแบ่งการตลาดหรือค่าธรรมเนียมคงที่สำหรับการใช้งานทั้งนี้ขึ้นอยู่กับงบประมาณของคุณ ฉันยังไม่ได้ใช้ แต่มันก็เจ๋งดี
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
อีกวิธีหนึ่งคือการใช้งาน imdbapi.org สำหรับ c #:
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; }
}
}
หากคุณต้องการรายละเอียดภาพยนตร์ API คุณสามารถพิจารณา
OMDB APIซึ่งเป็นภาพยนตร์เปิดฐานข้อมูลคืนค่าคะแนน IBDB, IMDB โหวตและคุณสามารถรวมเรตของมะเขือเทศเน่าได้ด้วย
หรืออื่น ๆ คุณสามารถใช้
My Api Filmsที่ให้คุณค้นหาด้วย IMDB ID และส่งคืนข้อมูลโดยละเอียด แต่มีการ จำกัด การร้องขอ
นี่คือโมดูล Python ที่ให้ API เพื่อรับข้อมูลจากเว็บไซต์ IMDB
ฉันค่อนข้างมั่นใจว่าแอปพลิเคชันที่คุณพบจะได้รับข้อมูลจาก API ของ Themoviedb.org (พวกเขาได้รับส่วนใหญ่จาก IMDB) พวกเขามี API แบบเปิดฟรีที่ใช้มากในแอปพลิเคชั่นผู้จัดทำภาพยนตร์ / XMBC