您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays small actor images on each movie page on filmtipset.se
当前为
// ==UserScript== // @name Filmtipset Cast Images // @namespace https://github.com/Row/filmtipset-userscripts // @description Displays small actor images on each movie page on filmtipset.se // @version 0.2 // @include http://www.filmtipset.se/film/* // @include http://nyheter24.se/filmtipset/film/* // ==/UserScript== (function( document ) { "use strict"; var persons; function get(url, cb) { GM_xmlhttpRequest({ method: "GET", headers: { "Referer": "" }, url: url, onload: function(xhr) { cb( xhr.responseText); }, overrideMimeType: 'text/plain; charset=x-user-defined' }); } function fetchImageData(el, imdbObj) { get(imdbObj.img, function(bin) { var base64img = base64Encode(bin); setCastStyle(el, 'data:image/jpeg;base64,' + base64img); }); } function setCastStyle(el, img) { el.style.display = 'block'; el.style.padding = '14px 5px 14px 50px'; el.style.margin = '2px 0'; el.style.float = 'left'; el.style.width = '120px'; el.style.background = '#F3F4E7 url("' + img + '") no-repeat 10px 50%'; } function drawCastBox() { var xpath = '//h2[contains(.,"despelare")]/../../td[2]/span/a'; persons = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); if(!persons.snapshotLength) return false; var castBox = persons.snapshotItem(0).parentNode.parentNode; castBox.innerHTML = ''; for(var i = 0; i < persons.snapshotLength; i++) { var el = persons.snapshotItem(i); setCastStyle(el,'http://i.media-imdb.com/images/SF984f0c61cc142e750d1af8e5fb4fc0c7/nopicture/small/name.png'); castBox.appendChild(el); } return true; } function drawImages(text) { var imdbActors = []; text.replace(/title="(.*?)".*?loadlate="(.*?)"/gm, function(m, n, o) {imdbActors.push({img: o, name: n});} ); for(var i = 0; i < persons.snapshotLength; i++) { for(var j = 0; j < imdbActors.length; j++) { var ftActor = persons.snapshotItem(i).text.replace(/ \(.+\)/,'').toLowerCase(); var imdbActor = imdbActors[j].name.toLowerCase().replace(/\./gm,''); if(imdbActor == ftActor) { fetchImageData(persons.snapshotItem(i), imdbActors[j]); } } } } function callImdb() { var xpath = '//a[contains(@href, "http://www.imdb.com/title/")]'; var imdbUrl = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0); if(!imdbUrl || !drawCastBox()) return false; get(imdbUrl.toString(), drawImages); } // http://stackoverflow.com/a/7372816/4189664 function base64Encode(str) { var CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", out = "", i = 0, len = str.length, c1, c2, c3; while (i < len) { c1 = str.charCodeAt(i++) & 0xff; if (i == len) { out += CHARS.charAt(c1 >> 2); out += CHARS.charAt((c1 & 0x3) << 4); out += "=="; break; } c2 = str.charCodeAt(i++); if (i == len) { out += CHARS.charAt(c1 >> 2); out += CHARS.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); out += CHARS.charAt((c2 & 0xF) << 2); out += "="; break; } c3 = str.charCodeAt(i++); out += CHARS.charAt(c1 >> 2); out += CHARS.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); out += CHARS.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)); out += CHARS.charAt(c3 & 0x3F); } return out; } // Init callImdb(); })(document);