您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
inline editing of list items
// ==UserScript== // @name RYM: Quick Edit List // @version 0.2 // @description inline editing of list items // @match https://rateyourmusic.com/lists/edit* // @copyright 2014+, thought_house // @namespace https://greasyfork.org/users/2653 // ==/UserScript== var $ = unsafeWindow.jQuery; $('#list_content .picturebutton').after('<br /><a class="smallbutton quick_edit" href="#">quick edit</a>'); $('.quick_edit').on('click', function(event) { event.preventDefault(); if (!$(this).data('editing')) { $(this).data('editing', true); var $td = $(this).closest('tr').children('td:last'); var html = $td.html().replace(/.*?<br><br>/, ''); var title = $td.html().match(/.*?<br><br>/, '')[0]; var item_type = ''; var assoc_id = 0; var item_name = ''; if (title.match(/class="album"/)) { item_type = 'l'; } else if (title.match(/class="artist"/)) { item_type = 'a'; } else if (title.match(/class="label"/)) { item_type = 'b'; } else if (title.match(/class="film"/)) { item_type = 'F'; } else if (title.match(/class="user."/)) { $(this).remove(); return; } else { item_type = 'g'; item_name = $td.find('b:first').text(); } if (item_type == 'l') { assoc_id = parseInt($td.find('a.album:first').attr('title').match(/\d*]/)[0]); } else if (item_type == 'g') { assoc_id = 0; } else { assoc_id = parseInt($td.find('a:eq(0)').attr('title').match(/\d*]/)[0]); } $td.data('html', html); var text = html.replace(/<br>/g, "\n"); text = text.replace(/<a class="normal_link".*?rel="nofollow".*?href="(.*?)" target="_blank">(.*?)<\/a>/g, '[$1,$2]'); text = text.replace(/<strong class="rymfmt">/g, '[b]').replace(/<\/strong>/g, '[/b]'); text = text.replace(/<em class="rymfmt">/g, '[i]').replace(/<\/em>/g, '[/i]'); text = text.replace(/<s>/g, '[s]').replace(/<\/s>/g, '[/s]'); text = text.replace(/<span style="color:(.*?);">(.*?)<\/span>/g, '[color $1]$2[/color]'); text = text.replace(/<blockquote class="rymfmt">/g, '[blockquote]').replace(/<\/blockquote>/g, '[/blockquote]'); text = text.replace(/<a href="\/wiki_deprecated\/.*?">(.*?)<\/a>/g, '[wp:$1]'); text = text.replace(/<a class="wiki_link" href="\/wiki\/(.*?)">.*?<\/a>/g, '[wiki:$1]'); text = text.replace(/<ul class="rymfmt">/g, '[ul]').replace(/<\/ul>/g, '[/ul]'); text = text.replace(/<ol class="rymfmt">/g, '[ol]').replace(/<\/ol>/g, '[/ol]'); text = text.replace(/<li class="rymfmt">/g, '[li]').replace(/<\/li>/g, '[/li]'); text = text.replace(/<tt class="rymfmt">/g, '[tt]').replace(/<\/tt>/g, '[/tt]'); text = text.replace(/<a title="\[(.*?)\]" href=".*?" class="(artist|album|label)"(?:(?!<\/a>).)+\[.*?<\/a>/g, '[$1]'); text = text.replace(/<a title="\[(.*?)\]" .*?class="(artist|album|label)">(.*?)<\/a>/g, '[$1,$3]'); text = text.replace(/<a title="\[(.*?)\]" .*?>.*?<\/a>/g, '[$1]'); text = text.replace(/<span title="\[(.*?)\]">\.\.\.<\/span>/g, '[$1]'); text = text.replace(/<a class="user.?" href="\/~.*?">(.*?)<\/a>/g, '[~$1]'); text = text.replace(/<span class="userd">(.*?)<\/span>/g, '[~$1]'); text = text.replace(/<div class="rsummaryframe" .*?<a href="\/collection\/.*?\/rating(\d*?)">[\s\S]*?<div class="clear"> <\/div>/g, '[Rating$1]'); text = text.replace(/<a class="list" href="(.*?)">(.*?)<\/a>/g, '[http://rateyourmusic.com$1,$2]'); text = text.replace(/<div class="youtube_container" id="youtube_container_.*?" data-youtube-id="(.*?)">[\s\S]*?<\/a>\s*?<\/div>/g, '[YouTube $1]'); text = text.replace(/<a href="\/rymzilla\/view\?id=(\d*?)" style=".*?" class="bug_a">.*?<\/a>/g, '[Bug$1]'); text = text.replace(/<span id="spoiler\d*?">[\s\S]*?<span id="spoilerinner\d*?" style="display:none;">([\s\S]*?)<\/span>/g, '[spoiler]$1[/spoiler]'); text = text.replace(/<a href="\/board_message\?message_id=\d*&find=(\d*)&x=m#msg\d*">(.*?)<\/a>/g, '[Post$1,$2]'); var lines = text.match(/\n/g); var height = Math.max(8, lines ? lines.length + 1 : 8); var $form = $('<form method="POST" action="/lists/new_item_2"></form>'); $form.append('<textarea rows="' + height + '" style="width:100%" name="item_description">' + text + '</textarea><br>'); var $save = $('<input type="submit" class="picturebutton quick_save" value="Save">'); var $cancel = $('<a href="#" class="smallbutton quick_cancel">Cancel</a>'); $form.append($save); $form.append($cancel); $form.append('<input type="hidden" name="item_name" value="' + item_name + '">'); $form.append('<input type="hidden" name="page" value="' + unsafeWindow.currentPage + '">'); $form.append('<input type="hidden" name="list_id" value="' + location.search.match(/list_id=\d*/)[0].replace('list_id=', '') + '">'); $form.append('<input type="hidden" name="item_type" value="' + item_type + '">'); $form.append('<input type="hidden" name="item_assoc_id" value="' + assoc_id + '">'); $form.append('<input type="hidden" name="insert_before" value="-50">'); $form.append('<input type="hidden" name="item_id" value="' + $(this).closest('tr').find('td:first').text() + '">'); $td.html($td.html().replace(html, '')); $td.append($form); var $button = $(this); $cancel.on('click', function(event) { event.preventDefault(); $form.replaceWith(html); $button.data('editing', false); }); } }); GM_addStyle(".quick_save { \ background-color: #d8d8ff; \ padding: 5px; \ margin: 3px; \ font-family: Verdana,Arial,sans-serif; \ font-size: x-small; \ font-weight: 700; \ border-top: 0px; \ border-left: 0px; \ border-right: 1px solid #999; \ border-bottom: 1px solid #555; \ cursor: pointer; \ } \ "); GM_addStyle(".quick_save:hover { \ background-color: #ccf; \ padding: 5px; \ margin: 3px; \ font-family: Verdana,Arial,sans-serif; \ font-size: x-small; \ font-weight: 700; \ border-top: 0px; \ border-left: 0px; \ border-right: 1px solid #999; \ border-bottom: 1px solid #555; \ cursor: pointer; \ } \ ");