Greasy Fork is available in English.

ao3 romantic relationship savior

hide works with romantic relationships on AO3

// ==UserScript==
// @name        ao3 romantic relationship savior
// @description hide works with romantic relationships on AO3
// @namespace   https://greasyfork.org/en/scripts/464861
// @author       MM
// @match        https://archiveofourown.org/tags/*
// @match        https://archiveofourown.org/works?commit=Sort+and+Filter*
// @grant       none
// @version     1.1
// @license     none
// ==/UserScript==



/********************************/

(function($) {

    var works = $('li.blurb');
    if (!works[0]) return;

    var toggleClass = 'ao3-rels-hide-toggle',
        fold = $('<p>').addClass('fold').append(
            $('<span>').addClass(toggleClass).text('This work is hidden! '),
            $('<span>').addClass(toggleClass).html('This work was hidden. ').hide(),
            $('<span>').addClass('reason'),
            $('<span>').addClass('actions').append(
                $('<a>').addClass('action').css({
                    'position': 'absolute',
                    'right': 8,
                    'top': 10
                }).text('Unhide')
            )
        ),
        
        shouldBlacklist = function(work) {
            var relationships = work.find('.relationships').find('a.tag');
            //console.log(relationships);
            //var relationshiptags = [];
            let checkRomRel;
            let checkRel;
            let returnRomvalue;
            for(var i = 0; i< relationships.length; i++){
                checkRel = relationships[i].href;
                //relationshiptags.push(checkRel);
                if(checkRel !== null && checkRel !== undefined ) {
                    checkRomRel = checkRel.match(/\*s\*/g);
                    if(checkRomRel !== null && checkRomRel !== undefined) {
                        returnRomvalue = checkRomRel;
                    }
                }
            }

            if(returnRomvalue !== null && returnRomvalue !== undefined) {
                return returnRomvalue;
            }

        },
        blacklist = function(work, reason) {
            var cut = $('<div>').addClass('cut').html(work.html()),
                reason = '  (One or more romantic relationships) ',
                thisFold = fold.clone(),
                reasonContainer = thisFold.find('.reason');

            reasonContainer.html(reason);

            work.empty().append(thisFold, cut.hide());
            work.find('a.action').click(function() {
                var fold = $(this).closest('.fold'),
                    cut = fold.next('.cut');

                cut.add(fold.children('.'+toggleClass)).toggle();
                $(this).text(cut.is(':visible') ? 'Hide' : 'Unhide');
            })
        };

    works.each(function() {
        var reason = shouldBlacklist($(this));
        if (reason) {
            blacklist($(this), reason)
        }
    });

})(window.jQuery);