您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Makes creating IMDb lists more efficient and convenient
当前为
- // ==UserScript==
- // @name IMDb List Helper
- // @namespace imdb
- // @description Makes creating IMDb lists more efficient and convenient
- // @version 1.6.1.2
- // @include http://*imdb.com/list/edit*
- // ==/UserScript==
- //
- // CHANGELOG
- //
- // 1.6.1.2
- // added: input text suggestion as a placeholder
- //
- // 1.6.1.1
- // fixed: some entries are skipped when adding imdb ids/urls
- //
- //
- // milliseconds between each request
- //
- var REQUEST_DELAY = 1000;
- //
- // do not modify anything below this line !!
- //
- var jQuery = unsafeWindow.jQuery;
- var $ = jQuery;
- var textEdit = '<div id="imdbListTextEdit" style="'
- + 'padding: 10px; border: 1px solid #e8e8e8">'
- + '<textarea id="filmList" rows="7" cols="60" placeholder="Input titles, IMDb URLs, and IDs here and click Start"></textarea><br />'
- + '<input type="button" id="doList" value="Start" /> '
- + '<input type="button" id="skipFilm" value="Skip" /> '
- + '<input type="button" id="retryPost" value="Retry" /> '
- + '<span style="font-weight: bold">Remaining: <span id="filmsRemaining">0</span></span><br /><br />'
- + '<span style="font-weight: bold;">Current: <input type="text" id="filmCurrent" size="65" style="font-family: monospace" /></span><br />'
- + '<span style="font-weight: bold;">Regexp: <input type="text" value="^(.*)$" id="filmRegexp" size="65" style="font-family: monospace; margin-top: 4px; margin-left: 1px" /></span><br />'
- + '</div>';
- $("div#main > div.list_edit > div.add").after(textEdit);
- // globals
- var films = [];
- var regexObj = null;
- function resetState()
- {
- films = [];
- regexObj = null;
- $("#filmList").removeAttr("disabled");
- $("#filmRegexp").removeAttr("disabled"); // leave regex
- $("#doList").removeAttr("disabled");
- $("#filmCurrent").val("");
- $("input[name=add]", "div.add").val("");
- $("div.results", "div.add").html("");
- }
- function searchFilm(filmTitle)
- {
- // remove unnecessary whitespace
- filmTitle = $.trim(filmTitle);
- // set current text to what we're searching
- $("#filmCurrent", "#imdbListTextEdit").val(filmTitle);
- // remove the first title from the text box and set the remaining number
- $filmList = $("#filmList", "#imdbListTextEdit");
- var newList = $filmList.val().split("\n");
- $("#filmsRemaining", "#imdbListTextEdit").text(newList.length-1);
- $filmList.val( newList.slice(1).join("\n") );
- // run regex
- if( regexObj != null )
- {
- filmTitle = regexObj.exec(filmTitle)[1];
- }
- // set imdb search input field to film title
- $("input[name=add]", "div.add").val(filmTitle);
- // trigger search button click
- $("button.search").triggerHandler("click");
- }
- // when start button is clicked
- $("#imdbListTextEdit").delegate("#doList", "click", function(e)
- {
- $filmList = $("#filmList", "#imdbListTextEdit");
- // regex
- $regexBox = $("#filmRegexp", "#imdbListTextEdit");
- if( $regexBox.val() )
- {
- regexObj = RegExp( $regexBox.val() );
- }
- // disable the text area and the button and the regexp box
- $filmList.attr("disabled", "disabled");
- $regexBox.attr("disabled", "disabled");
- $("#doList").attr("disabled", "disabled");
- films = $filmList.val().split("\n");
- // search first item
- searchFilm(films.shift());
- });
- // when skip button is clicked
- $("#imdbListTextEdit").delegate("#skipFilm", "click", function(e)
- {
- // skip to next film
- if(films.length > 0)
- {
- searchFilm(films.shift());
- }
- else if(films.length == 0) // if no more films...
- {
- resetState();
- }
- });
- // Sometimes the request fails forcing the user to skip an entry to continue
- jQuery("#imdbListTextEdit").delegate("#retryPost", "click", function(e)
- {
- $("button.search").triggerHandler("click");
- });
- // when a search result item is clicked
- $("div.results", "div.add").delegate("li", "click", function(e)
- {
- // if there's more items, search next...
- if(films.length > 0)
- {
- searchFilm(films.shift());
- }
- else
- {
- // if last film, reset stuff
- resetState();
- }
- });
- // monitors for changes to the search result box
- // if it recognizes an imdb url/id, it's clicked automatically
- // since there's only one result
- $("div.results").bind("DOMNodeInserted", function(e)
- {
- if($("#filmCurrent").val().match(/(tt[0-9]{7})/)[1] && $("div.results").find("li").length)
- {
- setTimeout(function()
- {
- $("li", "div.results").trigger("click");
- }, REQUEST_DELAY);
- }
- });