Greasy Fork is available in English.

ao3 hide crossovers

hides works with too many fandom tags

// ==UserScript==
// @name         ao3 hide crossovers
// @namespace    https://greasyfork.org/en/users/36620
// @version      0.3.1
// @description  hides works with too many fandom tags
// @author       scriptfairy
// @include      http://archiveofourown.org/*works*
// @include      https://archiveofourown.org/*works*
// @grant        none
// ==/UserScript==

/* CONFIG */

var max = 2;
// this is the maximum number of fandoms a work can have before being hidden

/* END CONFIG */

(function($) {
    $('<style>').text(
        '.hide .hideleft {width:85%;float:left;} .hide .hideright {float:right;padding-top:5px;}'
    ).appendTo($('head'));
    var works = $('ol.index li.blurb');
    for (i=0;i<works.length;i++){
        var fandoms = $('.header .fandoms a', works[i]);
        if (fandoms.length > max) {
            var button = document.createElement('div');
            button.setAttribute('class','hide');
            button.innerHTML = '<div class="hideleft">This work is tagged' + $('.header .fandoms', works[i])[0].innerHTML + 'and may be a crossover, fusion, or multi-fandom collection.</div><div class="hideright"><button type="button" class="show">Click to Show</button></div>';
            works[i].appendChild(button);
            $(works[i]).children(':not(".hide")').css('display','none');
        }
    }

    $(document).ready(function(){
        $('.hide button').click(function() {
            var work = $(this).parents('li')[0];
            if ($(this).hasClass("show")) {
                $(work).children(':not(".hide")').show();
                $(work).find('.hideleft').css('visibility', 'hidden');
                $(this).text("Click to Hide");
                $(this).removeClass("show").addClass("shown");
            }
            else {
                $(work).children(':not(".hide")').hide();
                $(work).find('.hideleft').css('visibility', 'visible');
                $(this).text("Click to Show");
                $(this).removeClass("shown").addClass("show");
            }
        });
    });
})(window.jQuery);