DomainKiller

Automatycznie zakopuje wybrane domeny. Działa na wykopy sponsorowane.

目前为 2017-08-29 提交的版本。查看 最新版本

// ==UserScript==
// @name DomainKiller
// @version 0.93
// @description Automatycznie zakopuje wybrane domeny. Działa na wykopy sponsorowane.
// @author llinney małpa outlook.com
// @grant none
// @match http://www.wykop.pl/wykopalisko/*
// @match https://www.wykop.pl/wykopalisko/*
// @match https://www.wykop.pl/ustawienia/czarne-listy/
// @namespace http://www.wykop.pl/
// ==/UserScript==

// you can fill hardcoded domains table for preserving settings even after browser storage has been cleared.
// example:
// var hardCodedDomains = ['youtube.pl', 'liveleak.com'];
var hardCodedDomains = [];

const icoLock = '<i class="fa fa-lock"></i>';
const icoEye = '<i class="fa fa-eye-slash"></i>';
const icoX = '<i class="fa fa-times"></i>';
const blockedIconLi = '<li><a id="domainKillerPanel" title="Zakopywane domeny" class="dropdown-show ajax">' + icoLock + '</a></li>';
const blockedPanel = '<div id="domainKillerPanelDiv" class="dropdown right notificationsContainer bodyClosable"><div><ul id="domainKillerPanelList" class="menu-list"></ul><div></div>';
const settingsSectionNoGreens = '<div class="rbl-block"><div class="mark-bg"><div><form method="post" class="make-center-block tspace bspace default blackListForm width-two-third"><legend>Zielonki</legend><div class="space"><div class="row"><input class="checkbox" name="down_green" id="down_green" type="checkbox"><label class="inline" for="down_green">Zakopuj znaleziska</label></div><div class="row"><input class="checkbox" name="hide_green" id="hide_green" type="checkbox"><label class="inline" for="hide_green">Ukrywaj znaleziska</label></div></div></fieldset></form></div></div><div class="space"><span></span></div></div>';
const settingsSectionTitleOrContent = '<div class="rbl-block"><div class="mark-bg"><p>Filtry wykopaliska</p><div><form method="post" class="make-center-block tspace bspace default blackListForm width-two-third"><legend>Tytuł bądź opis zawiera słowo:</legend><input class="medium vtop marginright5" id="wordFilter" value="" type="text"><fieldset class="row buttons"><p><input value="Dodaj" class="cfff large fnormal" id="group-search-button" type="submit"><input id="__token" style="display: none" name="__token" value="a90233fb06c855669455e1aa2db0769b-1502454963" type="hidden"></p></fieldset></form></div></div><div class="space">space</div></div>';
const settingsBlackListsUrl = '/ustawienia/czarne-listy/';
const articlesUrl = '/wykopalisko/';

var greensDown = false;
var greensHide = false;
var greensMinus = false;

function init() {
    //getBlockedDomains();
    getGreenSettings();
}

function getBlockedDomains() {
    if (localStorage.getItem("unwantedDomains") === null) {
        setBlockedDomains(hardCodedDomains);
    }
    return JSON.parse(localStorage.getItem("unwantedDomains"));
}

function setBlockedDomains(domains) {
    localStorage.setItem("unwantedDomains", JSON.stringify(domains));
}

function getGreenSettings() {
    greensDown = JSON.parse(localStorage.getItem("greensDown"));
    greensHide = JSON.parse(localStorage.getItem("greensHide"));
    greensMinus = JSON.parse(localStorage.getItem("greensMinus"));
}

function updateGreenSettings() {
    localStorage.setItem("greensDown", JSON.stringify(greensDown));
    localStorage.setItem("greensHide", JSON.stringify(greensHide));
    localStorage.setItem("greensMinus", JSON.stringify(greensMinus));
}

function removeDomainFromArray(ind) {
    var array = getBlockedDomains();
    var removedIt = array.splice(ind,1);
    setBlockedDomains(array);
    $('#domainKillerPanelListItem' + ind).parent().parent().hide();
}

function createPanel() {
    $('#domainKillerPanel').after(blockedPanel);
        var array = getBlockedDomains();
        var iter = 0;
        array.forEach(function(domain) {
            var currIt = iter;
            $('#domainKillerPanelList').append('<li><p><a  href="' + 'https://www.wykop.pl/szukaj/url:' + domain + '">' + domain + '</a><a id="domainKillerPanelListItem' + iter + '"title="Usuń z listy" class="close">' + icoX + '</a></p></li>');
            var name = '#domainKillerPanelListItem' + iter;
            $(name).on( "click", function() {
                removeDomainFromArray(currIt);
            });
            iter++;
        });
}

function togglePanel() {
    $('#domainKillerPanelDiv').toggle();
}

function addSettingsIcon() {
    $('#openNaturalSearch').parent().parent().prepend(blockedIconLi);

    $( "#domainKillerPanel" ).on( "click", function() {
        togglePanel();
    });
}

function addDownIcon(tagLine) {
    var source = $(tagLine)[0].getElementsByClassName('affect')[1].innerHTML.toString();
    $(tagLine).children('.tag.create').eq(2).before("<a href='' class='tag affect create' onclick='var array = JSON.parse(localStorage.getItem(\"unwantedDomains\"));Array.prototype.push.apply(array, [\"" + source + "\"]);localStorage.setItem(\"unwantedDomains\", JSON.stringify(array));'>zakopuj domenę</a>");
}

function addSettingsTitleOrContentSection() {
    $('.grid-main.m-reset-margin').append(settingsSectionTitleOrContent);
}

function addSettingsGreenOnesSection() {
    $('.grid-main.m-reset-margin').append(settingsSectionNoGreens);

    if (greensDown) {
        $('#down_green').attr("checked", "true");
    }

    if (greensHide) {
        $('#hide_green').attr("checked", "true");
    }

    $('#down_green').change(function() {
        if($(this).is(":checked")) {
     	    greensDown = true;
        } else {
	    greensDown = false;
	}
     	updateGreenSettings();
    });

    $('#hide_green').change(function() {
        if($(this).is(":checked")) {
     	    greensHide = true;
        } else {
	    greensHide = false;
	}
     	updateGreenSettings();
    });
}

function hideArticle(article) {
    //console.log('Proba ukrycia: ' + $(article).find('h2').children().eq(0).attr('href'));
    var hide = article.getElementsByClassName('fix-tagline')[0].getElementsByClassName('ajax affect create')[0];
        if (typeof hide === "undefined") {
	    return;
	} else {
	     hide.click();
	}
}

function downAll() {
    var array = getBlockedDomains();
    var iter = 0;

    $('.article.clearfix.preview.dC').each(function() {
        var downvote;
        var tagLine = $(this).find('.fix-tagline');
        addDownIcon(tagLine, iter);
	iter++;
        var source = $(tagLine)[0].getElementsByClassName('affect')[1].innerHTML.toString();
	var senderType = $(tagLine).children().eq(0).attr('class');

	if (shouldHide(source, array, senderType)) {
            hideArticle(this);
	}
	
        if (shouldDown(source, array, senderType)) {
		try {
	  	    //console.log('Proba zakopania: ' + $(this).find('h2').children().eq(0).attr('href'));
		    
		    var that = this;
		    downvote = this.getElementsByClassName('dropdown fix-dropdown bodyClosable');

		    if (downvote.length > 0) {
		        downvote = downvote[0].getElementsByClassName('ajax');
		     	downvote[4].click();
		    } else {
		        var upVote = this.getElementsByClassName('button button submit');
			if (typeof upVote[0] != "undefined") {
		            upVote[0].click();
			} else { return; }
		        var undo = this.getElementsByClassName('ajax');

		        setTimeout(function() {
		            undo[0].click();

		            setTimeout(function() {
		                downvote = that.getElementsByClassName('dropdown fix-dropdown bodyClosable')[0].getElementsByClassName('ajax');
		                downvote[4].click();
		            }, 2000);
		        }, 2000);
		    }
		    //console.log('Zakopano: ' + $(this).find('h2').children().eq(0).attr('href'));
		} catch (e) {
			console.log('Blad podczas zakopywania: ' + $(that).find('h2').children().eq(0).attr('href'));
			console.log(e);
		}
        }
    });
}

$(document).ready(function() {
    work();
});

function shouldDown(source, array, senderType) {

    if(greensDown && senderType == 'color-0 affect') {
        return true;
    }

    if(jQuery.inArray(source, array) > -1) {
        return true;
    }

    return false;
}

function shouldHide(source, array, senderType) {

    if(greensHide && senderType == 'color-0 affect') {
        return true;
    }

    if(jQuery.inArray(source, array) > -1) {
        return true;
    }

    return false;
}

function work() {
    init();
    addSettingsIcon();
    if (window.location.pathname == settingsBlackListsUrl) {
        //addSettingsTitleOrContentSection();
        addSettingsGreenOnesSection();
    }
    createPanel();
    if (window.location.pathname.slice(0, 13) == articlesUrl) {
        downAll();
    }
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址