您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds some shortcuts to assign tags to VBRPF fandoms more quickly.
当前为
- // ==UserScript==
- // @name AO3: [Wrangling] VBRPF Fandom Assignment Shortcuts
- // @description Adds some shortcuts to assign tags to VBRPF fandoms more quickly.
- // @version 1.1.1
- // @author kaerstyne (edits owlwinter)
- // @namespace https://github.com/kaerstyne/ao3-wrangling-scripts
- // @license GPL-3.0 <https://www.gnu.org/licenses/gpl.html>
- // @match *://*.archiveofourown.org/tags/*/edit
- // @match *://*.archiveofourown.org/tags/*/wrangle*
- // @require https://code.jquery.com/jquery-3.6.0.min.js
- // @grant none
- // ==/UserScript==
- (function($) {
- // which page is this?
- var page_url = window.location.pathname;
- // unwrangled bin
- if (page_url.includes("/wrangle")) {
- // add shortcut checkboxes
- var current_fandom = $("h2.heading a").text();
- var fandoms_to_add = ["Video Blogging RPF", "Dream SMP", "Origins SMP", "30 Day SMP | Free Trial SMP", "Minecraft (Video Game)", "No Fandom"];
- if (!fandoms_to_add.includes(current_fandom)) {
- fandoms_to_add.unshift(current_fandom);
- }
- var fandom_shortcuts = $('<ul class="filters" style="padding-bottom: .643em;"></ul>');
- for (let fandom of fandoms_to_add) {
- var escaped_fandom = fandom.replace(/"/g, """);
- fandom_shortcuts.append('<li style="display: inline"><label>' +
- '<input type="checkbox" name="fandom_shortcut" value="' + escaped_fandom + '">' +
- '<span class="indicator" aria-hidden="true"></span>' +
- '<span>' + fandom + '</span>' +
- '</label></li>');
- }
- $("dd[title='wrangle to fandom(s)'").prepend(fandom_shortcuts);
- // you should only have one fandom checked at once
- $("input[name='fandom_shortcut']").change(function() {
- $("input[name='fandom_shortcut']").not(this).prop("checked", false);
- });
- // add fandom on form submit
- $("form#wrangulator").submit(function() {
- var selected_fandom = $("input[name='fandom_shortcut']:checked").val();
- if (selected_fandom) {
- var fandom_input = $("input#fandom_string");
- var existing_fandoms = fandom_input.val();
- var separator = existing_fandoms == "" ? "" : ",";
- fandom_input.val(existing_fandoms + separator + selected_fandom);
- }
- });
- // tag edit page
- } else if (page_url.includes("/edit")) {
- function create_fandom_checkbox(name, url) {
- const escaped_name = name.replace(/"/g, """);
- return $("<li></li>").html(`<label>
- <input type="checkbox" name="fandom_shortcuts" value="${escaped_name}">
- <span class="indicator" aria-hidden="true"></span>
- <span><a class="tag" href="${url}">${name}</a></span>
- </label>`);
- }
- // add shortcut checkboxes
- const fandom_list = $("dt:contains('Suggested Fandoms')").next().find("ul");
- fandom_list.addClass("filters");
- var suggested_fandoms = $("dt:contains('Suggested Fandoms')").next().find("li").map(function() {
- return [{name: $(this).text(), url: $(this).find("a")[0].href }];
- }).get();
- suggested_fandoms.push({name: "No Fandom", url: "/tags/No%20Fandom/edit"});
- suggested_fandoms.push({name: "Video Blogging RPF", url: "/tags/Video%20Blogging%20RPF/edit"});
- suggested_fandoms.push({name: "Dream SMP", url: "/tags/Dream%20SMP/edit"});
- suggested_fandoms.push({name: "Minecraft (Video Game)", url: "/tags/Minecraft%20(Video%20Game)/edit"});
- suggested_fandoms.push({name: "Origins SMP", url: "/tags/Origins%20SMP/edit"});
- suggested_fandoms.push({name: "30 Day SMP | Free Trial SMP", url: "/tags/30%20Day%20SMP%20%7C%20Free%20Trial%20SMP/edit"});
- var deduplicated_fandoms = [];
- suggested_fandoms.forEach(oi => {
- if (deduplicated_fandoms.filter(item => item.name == oi.name).length == 0) {
- deduplicated_fandoms.push(oi);
- }
- })
- fandom_list.html(deduplicated_fandoms.map(({name, url}) => create_fandom_checkbox(name, url)));
- // add fandoms on form submit
- $("form#edit_tag").submit(function() {
- var selected_fandoms = $("input[name='fandom_shortcuts']:checked").map(function() {
- return $(this).val();
- }).toArray().join();
- var fandom_input = $("input#tag_fandom_string");
- var existing_fandoms = fandom_input.val();
- var separator = existing_fandoms == "" ? "" : ","
- fandom_input.val(existing_fandoms + separator + selected_fandoms);
- });
- }
- })(jQuery);