Greasy Fork

ao3 work block

permanently hide selected works

目前为 2016-06-02 提交的版本。查看 最新版本

// ==UserScript==
// @name         ao3 work block
// @namespace    https://greasyfork.org/en/users/36620
// @version      0.4
// @description  permanently hide selected works
// @author       scriptfairy
// @match        http*://archiveofourown.org/*works*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_listValues
// @grant        GM_deleteValue
// ==/UserScript==

(function($) {
    function blockThis(work) {
        var id = $(work).attr('id');
        GM_setValue(id, id);
        GM_setValue('last', id);
    }
    function blockAll(works) {
        var blocked = GM_listValues();
        for (j=0;j<works.length;j++) {
            var workId = $(works[j]).attr('id');
            if ($.inArray(workId, blocked) != -1) {
                $(works[j]).hide();
            }
        }
    }
    $(document).ready(function() {
        var works = $('li.blurb');
        blockAll(works);
        $('<style>').text('a.workblock {margin-left:5px;}').appendTo($('head'));

        // unblock works
        $('ul.primary.navigation.actions li.search').before('<li class="dropdown workblock"><a>Work Block</a><ul class="menu"><li class="clear-last"><a>Unblock last</a></li><li class="clear-all"><a>Unblock all</a></li></ul></li>');
        $('.workblock .clear-all').click(function() {
            var keys = GM_listValues();
            for (k=0;k<keys.length; k++) {
                GM_deleteValue(keys[k]);
            }
            location.reload();
        });
        $('.workblock .clear-last').click(function() {
            var unblockId = GM_getValue('last');
            GM_deleteValue('last');
            GM_deleteValue(unblockId);
            location.reload();
        });

        // block works
        for (i=0;i<works.length;i++) {
            $(works[i]).find('.datetime').append('<a href="javascript:void(0)" class="workblock block">Block</a>');
        }
        $('.workblock.block').click(function() {
            var work = $(this).parents('li.blurb');
            blockThis(work);
            $(work).hide();
        });
    });
})(window.jQuery);