A03: [Wrangling] Exclude Subtags

Link to works for a canonical tag, excluding all sub tags

目前为 2024-06-24 提交的版本。查看 最新版本

// ==UserScript==
// @name         A03: [Wrangling] Exclude Subtags
// @namespace    https://greasyfork.org/en/users/1322876-keladry
// @version      1.0
// @description  Link to works for a canonical tag, excluding all sub tags
// @author       keladry
// @match        *://*.archiveofourown.org/tags/*
// @license MIT
// @grant        none
// ==/UserScript==

function search_string(canonical, excludes) {
    var start = "https://archiveofourown.org/works?commit=Sort+and+Filter&work_search%5Bexcluded_tag_names%5D=";
    return(start + excludes + "&tag_id=" + encodeURIComponent(canonical));
}

(function() {
    'use strict';

// Landing Page
if (document.getElementsByClassName('sub').length > 0) {

    var subtags_landing = document.getElementsByClassName('sub').item(0).getElementsByTagName('li');
    var excludes_landing = "";

    for(var i=0; i <= subtags_landing.length-1; i++){
        excludes_landing += encodeURIComponent(subtags_landing[i].childNodes[0].innerText);

        if (i < subtags_landing.length-1){
            excludes_landing += encodeURIComponent(",");
        }
    }

    if (excludes_landing != "") {
        var canonical_landing = document.querySelector('h2.heading').innerHTML;
        var search_landing = search_string(canonical_landing, excludes_landing)
        var button_landing = document.querySelector('.tag [role="navigation"]');
        button_landing.innerHTML = '<li><a href="' + search_landing + '">Exclude Subtags</a></li>' + button_landing.innerHTML;
    }
}
// Edit Page
else if (document.getElementsByClassName('tags-edit').length > 0) {

    var subtags_edit = document.getElementById("child_SubTag_associations_to_remove_checkboxes").childNodes[0].getElementsByTagName('li');
    var excludes_edit = ""

    for(var j=0; j <= subtags_edit.length-1; j++){
        excludes_edit += encodeURIComponent(subtags_edit[j].innerText);

        if (j < subtags_edit.length-1){
            excludes_edit += encodeURIComponent(",");
        }
    }

    if (excludes_edit != "") {
        var canonical_edit = document.getElementById("tag_name").value;
        var search_edit = search_string(canonical_edit, excludes_edit);
        var button_edit = document.querySelectorAll("div.tag.wrangling ul.navigation")[1];
        button_edit.innerHTML = button_edit.innerHTML + '<li><a href="' + search_edit + '">Exclude Subtags</a></li>';
    }
}


})();