您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds some links to IMDb details page
当前为
// ==UserScript== // @name IMDb details page links // @namespace IMDb.com // @description Adds some links to IMDb details page // @include *imdb.com/title/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/jqModal/1.3.0/jqModal.min.js // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // @grant GM_addStyle // @version 2.0 // ==/UserScript== // CHANGELOG // 2.0 - Make links modifiable // 1.1 - Update URLs // https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/Trim if(!String.prototype.trim) { String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g,''); }; } function defaultSites() { return [{title:"Google", url:"http://www.google.com/search?q={title} {year}"}, {title:"Subtitles", url:"http://www.google.com/search?q={title} {year} subtitles"}, {title:"YouTube", url:"http://www.youtube.com/results?search_query={title} {year}"}, {title:"iCheckMovies", url:"http://www.icheckmovies.com/search/movies/?query={imdbid}"}, {title:"RottenTomatoes", url:"http://www.rottentomatoes.com/search/?search={title}"}, {title:"HDBits", url:"http://hdbits.org/browse2.php#film/dir=null&searchtype=film&actorfilm=film&search={imdbid}"}, {title:"AsianDVDClub", url:"http://asiandvdclub.org/browse.php?search={imdbid}&descr=1"}, {title:"PassThePopCorn", url:"http://passthepopcorn.me/torrents.php?searchstr={imdbid}"}, {title:"KaraGarga", url:"http://karagarga.in/browse.php?incldead=&d=&sort=&search={imdbidn}&search_type=imdb"}, {title:"Cinemageddon", url:"http://cinemageddon.net/browse.php?search={imdbid}&proj=0"}, {title:"AsiaTorrents", url:"https://avistaz.to/torrents?in=1&search={title}&tags=&type=0&language=0&subtitle=0&discount=0&rip_type=0&video_quality=0&tv_type=0&uploader="}, {title:"TehConnection", url:"http://tehconnection.eu/torrents.php?searchstr={title}"}, {title:"WhatTheMovie", url:"http://whatthemovie.com/search?t=movie&q={imdbid}"}, {title:"Mubi", url:"http://www.google.com/search?q=site:mubi.com {title} {year}"}, {title:"ListAL", url:"http://www.google.com/search?q=site:listal.com {title} {year}"}, {title:"HanCinema", url:"http://www.hancinema.net/googlesearch.php?cx=partner-pub-1612871806153672%3A2t41l1-gajp&cof=FORID%3A10&ie=ISO-8859-1&hl=en&q={title}"}, {title:"Criticker", url:"http://www.criticker.com/?st=movies&h={imdbid}&g=Go"}, {title:"iCM Highest Rated",url:"http://themagician.host56.com/highestrated/search/#search={imdbid}"}]; } /** * @brief Find header element * @return Header element or null if not found */ function findHeader() { $header = null; if(location.href.indexOf("reference") === -1 && location.href.indexOf("combined") === -1) { $overview = $("#overview-top"); if($overview !== null) { $header = $overview.find(".header:first"); } } else { $header = $("#tn15title"); } return $header; } function parseConstants() { $header = findHeader(); if($header.length === 0) { return null; } var matches = $header.text().replace(/(\r\n|\n|\r)/gm,"").match(/(.*)(?:[\s]+)(?:.*)\(.*([0-9]{4})/); var imdb_id = window.location.href.match(/(tt[0-9]+)/)[0]; return {title: matches[1].trim(), year: matches[2].trim(), imdbid: imdb_id, imdbid_n: imdb_id.replace("tt", "")}; } var App = { links: [], init: function() { App.buildLinks(); // Add modal GM_addStyle('.jqmWindow {display: none; position: absolute; font-family: verdana, arial, sans-serif; ' + 'background-color:#fff; color:#000; padding: 12px 30px; overflow-y: scroll; font-size: 14px} .jqmOverlay { background-color:#000 }'); var cfgMainHtml = '<div id="dialog" class="jqmWindow"></div>'; $(cfgMainHtml).css({ top: '17%', left: '50%', marginLeft: '-400px', width: '800px', height: '450px' }).appendTo('body'); $('#dialog').jqm(); }, buildLinks: function() { var sites = GM_getValue("sites"); if(sites !== null) { sites = eval(sites); } else { GM_setValue("sites", uneval(defaultSites())); sites = defaultSites(); } $root = $("#pagecontent"); $root.css("position", "relative"); $("#linkbar").remove(); $c = $('<div></div>'); $c.attr("id", "linkbar"); $c.css({width: "150px", padding: "15px", textAlign: "right", position: "absolute", top: "8px", left: "-170px", backgroundColor: "#fff"}); $root.append($c); // Render sites for(var i = 0; i < sites.length; ++i) { App.addSite(sites[i]); } }, addSite: function(site) { var c = parseConstants(); if(c === null) { return; } var url = site.url.replace("{title}", c.title) .replace("{year}", c.year) .replace("{imdbid}", c.imdbid) .replace("{imdbidn}", c.imdbid_n); $root = $("#linkbar"); $link = $("<a></a>"); $link.attr("href", url); $link.text(site.title); $link.css({display: "block", marginBottom: "2px"}); $root.append($link); }, displayEditor: function() { var sites = GM_getValue("sites"); if(sites !== null) { sites = eval(sites); } var c = parseConstants(); var out = '<div><p>{title} = ' + c.title + '</p>' + '<p>{year} = ' + c.year + ' {imdbid} = ' + c.imdbid + ' {imdbidn} = ' + c.imdbid_n + '</p><table>'; for(var i = 0; i < sites.length; ++i) { out += '<tr class="site-' + i + '"><td><a href="#" class="delete">Delete</a></td><td><input type="text" size="30" value="' + sites[i].title + '"></td><td><input type="text" size="80" value="' + sites[i].url + '"></td></tr>'; } out += '</table><p><button id="add">Add new</button> <button id="restore">Restore defaults</button></p>'; $("#dialog").html(out); $("#dialog").jqmShow(); $("#dialog").on("change input paste", "tr[class^=site] input", App.saveEditor); $("#dialog").on("click", "a.delete", function(e){ e.preventDefault(); var response = window.confirm("Delete?"); if(!response) { return; } $(this).parent().parent().remove(); App.saveEditor(); }); $("#add", "#dialog").on("click", function() { var $table = $("table", "#dialog"); $table.append('<tr class="site-' + $table.find("tr").length + '"><td><a href="#" class="delete">Delete</a></td>' + '<td><input type="text" size="30" value=""></td>' + '<td><input type="text" size="80" value=""></td></tr>'); }); $("#restore", "#dialog").on("click", function() { var response = window.confirm("Restore defaults? (This will remove all links!)"); if(!response) { return; } GM_setValue("sites", uneval(defaultSites())); App.buildLinks(); $("#dialog").jqmHide(); }); }, saveEditor: function() { // Save result var $rows = $("tr", "#dialog"); var mapped = $rows.map(function(index, elem){ var $fields = $(elem).find("input"); return {title: $fields.eq(0).val(), url: $fields.eq(1).val()}; }); GM_setValue("sites", uneval(mapped.get())); App.buildLinks(); } }; $(window).ready(App.init); GM_registerMenuCommand("Edit sites", App.displayEditor);