dA_ignore

ignores people on dA

目前為 2019-07-16 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        dA_ignore
// @namespace   dA_ignore
// @author   Dediggefedde
// @description ignores people on dA
// @match     http://*.deviantart.com/*
// @match     https://*.deviantart.com/*
// @require    	http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
// @require  		https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js
// @version     1.4.0
// @grant       GM_setValue
// @grant       GM_getValue
// @grant       GM.setValue
// @grant       GM.getValue
// ==/UserScript==

/*
Hide Tags/Description:

DiFi.pushPost("DeviationView","getExtrasHTML",["501848540","",{},{"is_referred":0,"origin":"dynamic_nav_click","is_new_tab":1}],function(success, data){
   console.log(data.response.content.html_col1.split("http://www.deviantart.com/tag/").length);
   //tag-count
});
DiFi.send();
*/

var ignorenames = [];
var settings = {
    hidecomments: false,
    hidemessages: true,
    deletemessages: true,
    hideprofile: true,
    hidedeivations: true
};
function pruf() {
    //dynamic browsing, check all 1s.
    setTimeout(pruf, 500);
    var foundindex=-1;
    if (settings.hidedeivations){
        var thumbs=$("div.tt-a.tt-fh:not(notignore)").filter(function(){
            for (var i = 0; i < ignorenames.length; i++){
                if ($(this).attr("username").toLowerCase() == ignorenames[i].toLowerCase().trim()){
                    foundindex=i;
                    return true;
                }
            }
            return false;
        }).attr("notignore","");
        thumbs.remove();
    }

    //eclipse: a.user-link:not(notignore)
    var bnam = $('a.u:not(notignore),a.user-link:not(notignore),div.tt-a:not(notignore),img.avatar:not(notignore)').filter(function(){
        for (var i = 0; i < ignorenames.length; i++){
            if(ignorenames[i]=="")continue;
            if ($(this).html().toLowerCase() == ignorenames[i].toLowerCase().trim()||($(this).attr("username")!=null&&$(this).attr("username").toLowerCase()==ignorenames[i].toLowerCase())||($(this).attr("title")!=null&&$(this).attr("title").toLowerCase()==ignorenames[i].toLowerCase())){
                if($(this).parents("div.stacklink-cover").length>0)return false;
                foundindex=i;
                return true;
            }
        }
        return false;
    }) .attr('notignore', '');


    if (settings.hideprofile && $("#da_unignore_but").length==0 &&(bnam.parents('div.catbar').length>0||bnam.parents("div._3HAOe").length>0) ) { // && bnam.parents('div.catbar').length > 0 && $("#da_unignore_but").length==0
        var replaceSite='<div align=center><img src="http://fc01.deviantart.net/fs46/f/2009/196/d/4/d49e01f2265f3024db7194a3622a415f.png" alt="user blocked" /><h1>You blocked this user!</h1></div>';
        $('#gmi-GPage').html(replaceSite);
        $('div.Nvj6n').html(replaceSite);//eclipse
        $("#da_ignore_but").remove();

        if ($("div.gmbutton2town.moarbuttons").length==0) {
            $("div.catbar").append($('<div class="gmbutton2town moarbuttons">'));
        }
        var al=$("div.gmbutton2town.moarbuttons");
        var clicker=function(){
            ignorenames.splice(foundindex,1);
            setTimeout(()=> {
                GM.setValue('blocklist',ignorenames.join("\n") );
                location.reload();
            }, 0);
        };
        var unignoreBut=$('<a id="da_unignore_but" class="devwatch gmbutton2 gmbutton2qn2r" style="min-width:auto;" title="remove from your ignore-list" href="#"><i class="icon i27"></i><span>UnIgnore</span><b></b></a>').click(clicker);
        al.prepend(unignoreBut);
        al=$("nav.cUIp3"); //eclipse
        al.append(unignoreBut); //eclipse
        al.find("#da_unignore_but").css("background-image","linear-gradient(242deg,#f00,#ddef31)"); //eclipse
        al.find("#da_unignore_but").addClass("ucOYB _1jsZj");//eclipse
        return;
    }
    if (bnam.length == 0) return ;

    if (settings.deletemessages ){//&& bnam.parents('div.mcbox') .length > 0
//         function parpas(bnam){
            if(bnam.parents('div.ch-ctrl').length>0)bnam.parents('div.ch-ctrl').find('span.mcx').get(0).click();
            if(bnam.closest("div.Ijp9_").length>0)bnam.closest("div.Ijp9_").find('button[aria-label="Remove"]').click();//
//         }
//         setTimeout(function(){parpas(bnam);},1000); //1s delay for removing
    }else
        if (bnam.filter("img.avatar").closest("div.grf-deviants").length>0){
            bnam.filter("img.avatar").closest("span.f").remove();
            bnam.filter("img.avatar").closest("div.grf-deviants").remove();
        }
    if(settings.hidedeivations){
        bnam.parents("span.thumb").remove();
        bnam.parents("div.sVdfP").parent().remove();
//         for (var i = 0, len = ignorenames.length; i < len; i++) {
//        $("a._5sgHw[href*="+ignorenames[i]+"]").closest("div.sVdfP").parent().remove();
     }
    if (bnam.filter("img.avatar").closest('a').length>0){
        bnam.filter("img.avatar").closest("a").remove();
    }
    if (settings.hidemessages ){//&& bnam.parents('div.mcbox').length > 0
        bnam.parents('div.mcbox').first().remove();
        bnam.parents("div.Ijp9_").remove();//eclipse
    }
    if (settings.hidecomments){
        bnam.parents('div.ccomment').remove();
        bnam.closest('div').remove(); //eclipse
    }
    if (settings.hidecomments && bnam.parents('div.deviation-full-minipage').length > 0){
        bnam.parents('div.deviation-full-minipage').prev("div.deviation-full-container").remove();
        bnam.parents('div.deviation-full-minipage').remove();
    }

}

if ($("div.catbar").length>0||$("nav.cUIp3").length>0) {
    if($("#da_ignore_but").length==0){
        if ($("div.gmbutton2town.moarbuttons").length==0) {
            $("div.catbar").append($('<div class="gmbutton2town moarbuttons">'));
        }
        var al=$("div.gmbutton2town.moarbuttons");
        var ignoreBut=$('<a id="da_ignore_but" class="devwatch gmbutton2 gmbutton2qn2r" style="min-width:0;" title="Add to your ignore-list" href="#"><i class="icon i27"></i><span>Ignore</span><b></b></a>').click(
            function(){
                // console.log(ignorenames);
                if($("#deviant a.u").length>0)
                    ignorenames.push($("#deviant a.u").html());
                else
                    ignorenames.push($("div.AEPha a.user-link").text());

                setTimeout(()=> {
                    GM.setValue('blocklist',ignorenames.join("\n") );
                }, 0);
            });
        al.prepend(ignoreBut);
        al=$("nav.cUIp3");
        al.append(ignoreBut); //eclipse
        al.find("#da_ignore_but").css("background-image","linear-gradient(242deg,#f00,#ddef31)"); //eclipse
        al.find("#da_ignore_but").addClass("ucOYB _1jsZj");//eclipse
    }
}
if (location.href.indexOf('https://www.deviantart.com/settings') == 0) {
    var ignoremenu = $('<li><a href="#">Ignore User</a></li>');
    $('#settings_public') .parent() .after(ignoremenu);
    ignoremenu.find('a') .click(function () {
        $('a.active') .removeClass('active');
        $(this) .addClass('active');
        $('div.settings_form') .html('' +
                                     '<div class="fooview ch">' +
                                     '<div class="fooview-inner">' +
                                     '<h3>Ignore Users</h3>' +
                                     '<span>Separate usernames by linebreaks!</span>' +
                                     '<fieldset style="border:none;padding:0;">' +
                                     '<textarea cols="70" rows="4" class="itext_uplifted" id="da_ignore_textarea">' + ignorenames.join('\n') + '</textarea>' +
                                     '</fieldset>' +
                                     '<div class=" buttons ch hh " id="submit">' +
                                     '<div style="text-align:right" class="rr">' +
                                     '<a class="smbutton smbutton-green" href="javascript:void(0)"><span id="da_ignore_saveblocklist">Save</span></a>' +
                                     '</div></div></div></div>' +
                                     '' +
                                     '<div class="fooview ch">' +
                                     '<div class="fooview-inner">' +
                                     '<h3>Behavior</h3>' +
                                     '<div class="altaltview altaltview-wider">' +
                                     '<div class="row">' +
                                     '<input ' + (settings.hidecomments?'checked="checked"':'') + ' type="checkbox" value="1" id="da_ignore_hidecomments" class="icheckbox">' +
                                     '<label for="da_ignore_hidecomments" class="l">Hide Comments</label>' +
                                     '<br><small>This will automatically <strong>hide</strong> comments and replies made by a ignored user. This affects all Submissions. Other People can still see comments hidden like this.</small>' +
                                     '</div>' +
                                     '<div class="browse-sitback row">' +
                                     '<input ' + (settings.hidemessages ? 'checked="checked"' : '') + ' type="radio" value="1" id="da_ignore_hidemessages" name="da_ignore_message" class="icheckbox">' +
                                     '<label for="da_ignore_hidemessages" class="l">Hide Messages</label>' +
                                     '<br><small>This will automatically <strong>hide</strong> Replies and Comments given to you by ignored users. Hidden Comments are still existent and won\'t get removed.</small>' +
                                     '</div>' +
                                     '<div class="browse-sitback row">' +
                                     '<input ' + (settings.deletemessages ? 'checked="checked"' : '') + ' type="radio" value="1" id="da_ignore_deletemessages" name="da_ignore_message" class="icheckbox">' +
                                     '<label for="da_ignore_deletemessages" class="l">Delete Messages</label>' +
                                     '<br><small>This will automatically <strong>delete</strong> Replies and Comments given to you by ignored users.</small>' +
                                     '</div>' +
                                     '<div class="browse-sitback row">' +
                                     '<input ' + (settings.hideprofile ? 'checked="checked"' : '') + ' type="checkbox" value="1" id="da_ignore_hideprofile" class="icheckbox">' +
                                     '<label for="da_ignore_hideprofile" class="l">Hide Profile</label>' +
                                     '<br><small>This will automatically hide ignored user\'s profile-page. You can still visit them, but instead of their profile-content, there will be a notification.</small>' +
                                     '</div>' +
                                     '<div class="browse-sitback row">' +
                                     '<input ' + (settings.hidedeivations ? 'checked="checked"' : '') + ' type="checkbox" value="1" id="da_ignore_hidedeivations" class="icheckbox">' +
                                     '<label for="da_ignore_hidedeivations" class="l">Hide Deviations</label>' +
                                     '<br><small>Hide all submissions from a user that are displayed on deviantart\'s front-pages.</small>' +
                                     '</div>' +
                                     '<div class=" buttons ch hh " id="submit">' +
                                     '<div style="text-align:right" class="rr">' +
                                     '<a class="smbutton smbutton-green" href="javascript:void(0)"><span id="da_ignore_savesettings">Save</span></a>' +
                                     '</div></div></div></div></div>');
        $('#da_ignore_saveblocklist') .click(()=> {
            ignorenames = $('#da_ignore_textarea') .val() .split('\n');
            setTimeout(()=> {
                GM.setValue('blocklist', $('#da_ignore_textarea') .val());
            }, 0);
            alert('List saved!');
        });
        $('#da_ignore_savesettings') .click(()=> {
            settings.hidecomments = $('#da_ignore_hidecomments') .prop('checked');
            settings.hidemessages = $('#da_ignore_hidemessages') .prop('checked');
            settings.deletemessages = $('#da_ignore_deletemessages') .prop('checked');
            settings.hideprofile = $('#da_ignore_hideprofile') .prop('checked');
            settings.hidedeivations = $('#da_ignore_hidedeivations') .prop('checked');
            setTimeout(()=>{
                GM.setValue('settings', JSON.stringify(settings));
            }, 0);
            alert('List saved!');
        });
    });
}
async function loadsettings() {
    var Zignorenames = await GM.getValue('blocklist',null);
    if(Zignorenames!=null)ignorenames=Zignorenames.split('\n');
    var Zsettings = await GM.getValue('settings',null);
    if(Zsettings!=null)settings=$.parseJSON(Zsettings);

    if(settings.hidecomments==null)settings.hidecomments = true;
    if(settings.hidemessages==null)settings.hidemessages = false;
    if(settings.deletemessages==null)settings.deletemessages = true;
    if(settings.hideprofile==null)settings.hideprofile = true;
    if(settings.hidedeivations==null)settings.hidedeivations = true;
}

var prom=loadsettings();
prom.then(pruf);