您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Utility library for the Internet Movie Database. Provides an API for grabbing info from IMDb.com
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/390115/733074/IMDb%20Utility%20Library%20%28API%29.js
// ==UserScript== // @name IMDb Utility Library (API) // @namespace driver8.net // @version 0.1.1 // @description Utility library for the Internet Movie Database. Provides an API for grabbing info from IMDb.com // @author driver8 // @match *://*.imdb.com/* // @grant GM_xmlhttpRequest // @connect imdb.com // ==/UserScript== function getImdbIdFromTitle(title, year) { return new Promise(function(resolve, reject) { GM_xmlhttpRequest({ method: 'GET', responseType: 'document', synchronous: false, url: 'https://www.imdb.com/find?s=tt&q=' + title, onload: (resp) => { const doc = document.implementation.createHTMLDocument().documentElement; doc.innerHTML = resp.responseText; let links = Array.from(doc.querySelectorAll('.result_text > a')); // Filter out TV episodes, shorts, and video games links = links.filter((el) => !el.parentNode.textContent.trim().match(/\((?:TV Episode|Short|Video Game|Video)\)/)); let a = links[0]; if (year) { console.log('year', year); let sorted = links.map((el) => { let m = el.parentNode.textContent.match(/\((\d{4})\)/); let year = new Date().getFullYear(); if (m) { year = parseInt(m[1]); } return { el: el, year: year }; }); sorted = sorted.sort((a, b) => Math.abs(year - a.year) - Math.abs(year - b.year)); a = sorted[0].el; } let id = a && a.href.match(/title\/(tt\d+)/)[1]; if (id) { resolve(id); } else { reject(`Error getting IMDb id for ${title} ${year}`); } } }); }); } function getImdbInfoFromId(id) { return new Promise(function(resolve, reject) { GM_xmlhttpRequest({ method: 'GET', responseType: 'document', synchronous: false, url: `https://www.imdb.com/title/${id}/`, onload: (resp) => { const doc = document.implementation.createHTMLDocument().documentElement; doc.innerHTML = resp.responseText; const parse = function(query, regex) { try { let el = doc.querySelector(query); let text = (el.textContent || el.content).trim(); if (regex) { text = text.match(regex)[1]; } return text.trim(); } catch (e) { //console.log('error', e); return ''; } }; let data = { id: id, title: parse('head meta[property="og:title"], .title_wrapper > h1', /([^()]+)/), year: parse('head meta[property="og:title"], .title_wrapper > h1', /\((?:TV\s+(?:Series|Mini-Series|Episode|Movie)\s*)?(\d{4})/), description: parse('.plot_summary > .summary_text').replace(/\s+See full summary\s*»/, ''), rating: parse('.ratingValue > strong > span'), votes: parse('.imdbRating > a > span'), metascore: parse('.metacriticScore > span'), popularity: parse('.titleReviewBarItem:last-of-type > .titleReviewBarSubItem > div > span', /^([0-9,]+)/), dateFetched: new Date() }; if (data && data.id && data.title) { resolve(data); } else { reject('Error getting IMDb data for id ' + id); } } }); }); } function getImdbInfoFromTitle(title, year) { return getImdbIdFromTitle(title, year).then((id) => { return getImdbInfoFromId(id); }); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址