Hides works by one particular ship.
// ==UserScript== // @name Ao3 Show every pairing except THAT one // @namespace https://greasyfork.org/en/users/36620 // @version 1 // @description Hides works by one particular ship. // @author Modified by Neeve, originally by scriptfairy // @include http://archiveofourown.org/* // @include https://archiveofourown.org/* // @grant none // ==/UserScript== /* CONFIG keep a plaintext file of your config because they will not be saved when the script updates */ var relationships = ['Jeon Jungkook/Park Jimin','Min Yoongi | Suga/Park Jimin','Kim Namjoon | RM/Kim Seokjin | Jin','Kim Namjoon | Rap Monster/Kim Seokjin | Jin','Jeon Jungkook/Kim Taehyung | V','Jeon Jungkook | Jungkook/Kim Taehyung | V', 'Jeon Jeongguk | Jungkook/Kim Taehyung | V','Jung Hoseok | J-Hope/Min Yoongi | Suga','Jung Hoseok | J-Hope/Park Jimin','Kim Taehyung | V/Min Yoongi | Suga','Kim Seokjin | Jin/Park Jimin','Kim Seokjin | Jin/Kim Taehyung | V','Kim Seokjin | Jin/Min Yoongi | Suga','Jeon Jungkook/Min Yoongi | Suga','Jung Hoseok | J-Hope/Kim Taehyung | V','Kim Namjoon | RM/Min Yoongi | Suga','Kim Namjoon | Rap Monster/Min Yoongi | Suga','Kim Namjoon | RM/Park Jimin','Kim Namjoon | Rap Monster/Park Jimin','Jeon Jungkook/Kim Seokjin | Jin','Jeon Jungkook/Jung Hoseok | J-Hope','Kim Namjoon | RM/Kim Taehyung | V','Kim Namjoon | Rap Monster/Kim Taehyung | V','Jung Hoseok | J-Hope/Kim Namjoon | RM','Jung Hoseok | J-Hope/Kim Namjoon | Rap Monster','Jeon Jungkook/Kim Namjoon | RM','Jeon Jungkook/Kim Namjoon | Rap Monster','Jung Hoseok | J-Hope/Kim Seokjin | Jin']; // remove the relationship from this list which you do not want to read. There may be more than one for a relationship. // this has been customised to the BTS fandom. For other fandoms: enter every pairing for your fandom, and remove the ones you don't want to read. // There is definitely an easier way to do this, and when I find out how I will update this script. In theory. var characters = [ ]; // the character tags you want to see (exact, case-sensitive) var relpad = 1; // you want to see at least one of your relationships within this many relationship tags var charpad = 5; // you want to see at least one of your characters within this many character tags /* END CONFIG */ (function($) { $('<style>').text( '.workhide{border:1px solid rgb(221,221,221);margin:0.643em 0em;padding:0.429em 0.75em;height:29px;} .workhide .left{float:left;padding-top:5px;} .workhide .right{float:right}' ).appendTo($('head')); if (relationships.length === 0 && characters.length === 0) {return;} var checkfandom = document.createElement('div'); var fandomlink = $('h2.heading a')[0].href; fandomlink = fandomlink.slice(fandomlink.indexOf('tags')); $(checkfandom).load('/'+fandomlink+' .parent', function(){ if ($('ul', checkfandom).text() == "No Fandom") {return;} else { for(i=0;i<$('.index .blurb').length;i++){ var tags = $('.index .blurb ul.tags')[i]; var reltags = $('.relationships', tags).slice(0,relpad); var chartags = $('.characters', tags).slice(0,charpad); var temprel = []; var tempchar = []; $(reltags).map(function() { temprel.push(this.innerText); }); $(chartags).map(function() { tempchar.push(this.innerText); }); var relmatch = temprel.filter(function(n) { return relationships.indexOf(n) != -1; }); var charmatch = tempchar.filter(function(n) { return characters.indexOf(n) != -1; }); if (relmatch.length === 0 && charmatch.length === 0) { var work = $('.index .blurb')[i]; work.style.display = 'none'; var button = document.createElement('div'); button.setAttribute('class','workhide'); button.innerHTML = '<div class="left">This work does not prioritize your preferred tags.</div><div class="right"><button type="button" class="showwork">Show Work</button></div>'; $(work).after(button); } } $(document).ready(function(){ $('.showwork').click(function() { var blurb = $(this).parents('.workhide').prev()[0]; $(blurb).removeAttr('style'); $(this).parents('.workhide').remove(); }); }); } }); })(window.jQuery);