Selfmade M0d

Erweitert pr0gramm.com um weitere Funktionen

当前为 2017-11-15 提交的版本,查看 最新版本

// ==UserScript==
// @name		Selfmade M0d
// @author		Frubi
// @description	Erweitert pr0gramm.com um weitere Funktionen
// @include		*://pr0gramm.com/*
// @grant       none
// @version		1.1
// @namespace https://gf.qytechs.cn/users/158955
// ==/UserScript==

let settings = 
{
    isActive : true,
    skipUploadByTag : false,
    blockedTags : [],
    onlyGoodTags : true,
    amountOfTagsChecked: -1,
    skipUploadByUser : false,
    blockedUsers : [],
    skipUploadByTotalBenis : false,
    minBenis : 0,
    skipUploadByAverageBenis : false,
    minAverageBenis : 0,
    skipUploadByUserRank : false,
    blockedUserRanks : [],
    nextUploadDirection : -1,
    autoRateSkippedUploads : false
}



let readSettings = function()
{
   let temp = JSON.parse(localStorage.getItem("Selfmade_M0d_Settings"));
   if(temp != null)
   {
       settings = temp;
   }
}

let checkURL= function(data)
{
    if ( url != data)
    {
        url = data;
        if(url.length > 24)
        {
            if(url.indexOf("new") != -1 || url.indexOf("top") != -1 || url.indexOf("user") != -1)
            {
                if($('.item-container').length != 0 && settings.isActive)
                    executeModules();
            }
            else if(url.indexOf("selfmade_M0d") != -1 )
            {
                createSettings();
            }
            else if(url.indexOf("settings") != -1)
            {
                addSettingsTab();
            }
            
        }
    }
}

let addSettingsTab = function()
{
    let i = 0
    while($('.tab-bar')[0] == undefined)
    {
        if(i++ >100)
            return;
    }
    let tmp = $('.Selfmade_M0d');
    if(tmp.length != 0)
    {
        tmp.remove(); 
    }
    let button = document.createElement('a');
    button.innerText = 'Selfmade M0d';
    button.className = "Selfmade_M0d";
    button.href = '/settings/selfmade_M0d';
    $('.tab-bar')[0].appendChild(button); 
}


let createSettings = function()
{  
    let i = 0;
    while( $('#main-view h2') == undefined)
    {
        if(i++ > 100)
            return;
    }
    $('#main-view h2').remove();
    
    let tagText = document.createElement('span');
    tagText.innerText = "Geblockte Tags: ";
    tagText.className = "Selfmade_M0d";
    tagText.id = 'bt';
    tagText.title = "Tags mit Komma trennen!";
    let skippedTagsInput = document.createElement('input');
    skippedTagsInput.defaultValue = settings.blockedTags.join(',');
    skippedTagsInput.onmouseover = function()
    {
       // consoleconsole.log($('#bt')[0].children[0].height);
       // $('#bt')[0].children[0].width = "textarea";
    };
    tagText.appendChild(skippedTagsInput);
    $('#main-view')[0].appendChild(tagText);

    let userText = document.createElement('span');
    userText.innerText = "Geblockte Nutzer: ";
    userText.className = "Selfmade_M0d";
    userText.id = 'bu';
    userText.title = "Nutzernamen mit Komma trennen!";
    let skippedUsersInput = document.createElement('input');
    skippedUsersInput.defaultValue = settings.blockedUsers.join(',');
    userText.appendChild(skippedUsersInput);
    $('#main-view')[0].appendChild(userText);

    let rankText = document.createElement('span');  
    rankText.innerText = "Geblockte Ränge: ";
    rankText.className = "Selfmade_M0d";
    $('#main-view')[0].appendChild(rankText);

    let fagText = document.createElement('span');
    fagText.innerText = "Schwuchtel: ";
    fagText.className = "Selfmade_M0d";
    fagText.id = 'fag';
    let skipFagRankButton = document.createElement('input');
    skipFagRankButton.type = "checkbox";
    if(settings.blockedUserRanks.includes("fag"))
        skipFagRankButton.defaultChecked = true;
    fagText.appendChild(skipFagRankButton);
    $('#main-view')[0].appendChild(fagText);

    let newFagText = document.createElement('span');
    newFagText.innerText = "Neuschwuchtel: ";
    newFagText.className = "Selfmade_M0d";
    newFagText.id = 'newfag';
    let skipNewfagRankButton = document.createElement('input');
    skipNewfagRankButton.type = "checkbox";
    if(settings.blockedUserRanks.includes("newfag"))
        skipNewfagRankButton.defaultChecked = true;
    newFagText.appendChild(skipNewfagRankButton);
    $('#main-view')[0].appendChild(newFagText);

    let oldFagText = document.createElement('span');
    oldFagText.innerText = "Altschwuchtel: ";
    oldFagText.className = "Selfmade_M0d";
    oldFagText.id = 'oldfag';
    let skipOldfagRankButton = document.createElement('input');
    skipOldfagRankButton.type = "checkbox";
    if(settings.blockedUserRanks.includes("oldfag"))
        skipOldfagRankButton.defaultChecked = true;
    oldFagText.appendChild(skipOldfagRankButton);
    $('#main-view')[0].appendChild(oldFagText);

    let pr0miumText = document.createElement('span');
    pr0miumText.innerText = "Pr0mium: ";
    pr0miumText.className = "Selfmade_M0d";
    pr0miumText.id = 'pr0mium';
    let skippr0miumRankButton = document.createElement('input');
    skippr0miumRankButton.type = "checkbox";
    if(settings.blockedUserRanks.includes("pr0mium"))
        skippr0miumRankButton.defaultChecked = true;
    pr0miumText.appendChild(skippr0miumRankButton);
    $('#main-view')[0].appendChild(pr0miumText);

    let deletedText = document.createElement('span');
    deletedText.innerText = "Gesperrt: ";
    deletedText.className = "Selfmade_M0d";
    deletedText.id = 'deleted';
    let skipDeletedRankButton = document.createElement('input');
    skipDeletedRankButton.type = "checkbox";
    if(settings.blockedUserRanks.includes("deleted"))
        skipDeletedRankButton.defaultChecked = true;
    deletedText.appendChild(skipDeletedRankButton);
    $('#main-view')[0].appendChild(deletedText);

    let scumText = document.createElement('span');
    scumText.innerText = "Fliesentischbesitzer: ";
    scumText.className = "Selfmade_M0d";
    scumText.id = 'scum';
    let skipScumRankButton = document.createElement('input');
    skipScumRankButton.type = "checkbox";
    if(settings.blockedUserRanks.includes("scum"))
        skipScumRankButton.defaultChecked = true;
    scumText.appendChild(skipScumRankButton);
    $('#main-view')[0].appendChild(scumText);
        

    let legendText = document.createElement('span');
    legendText.innerText = "Lebende Legende: ";
    legendText.className = "Selfmade_M0d";
    legendText.id = 'legend';
    let skipLegendRankButton = document.createElement('input');
    skipLegendRankButton.type = "checkbox";
    if(settings.blockedUserRanks.includes("legend"))
    skipLegendRankButton.defaultChecked = true;
    legendText.appendChild(skipLegendRankButton);
    $('#main-view')[0].appendChild(legendText);

    let modText = document.createElement('span');
    modText.innerText = "Moderator: ";
    modText.className = "Selfmade_M0d";
    modText.id = 'mod';
    let skipModRankButton = document.createElement('input');
    skipModRankButton.type = "checkbox";
    if(settings.blockedUserRanks.includes("mod"))
    skipModRankButton.defaultChecked = true;
    modText.appendChild(skipModRankButton);
    $('#main-view')[0].appendChild(modText);

    let adminText = document.createElement('span');
    adminText.innerText = "Administrator: ";
    adminText.className = "Selfmade_M0d";
    adminText.id = 'admin';
    let skipAdminRankButton = document.createElement('input');
    skipAdminRankButton.type = "checkbox";
    if(settings.blockedUserRanks.includes("admin"))
    skipAdminRankButton.defaultChecked = true;
    adminText.appendChild(skipAdminRankButton);
    $('#main-view')[0].appendChild(adminText);

    let totalBenisText = document.createElement('span');
    totalBenisText.innerText = "Mindest Benis: ";
    totalBenisText.className = "Selfmade_M0d";
    totalBenisText.id = 'mb';
    let skipUploadByTotalBenisButton = document.createElement('input');
    skipUploadByTotalBenisButton.type = "checkbox";
    skipUploadByTotalBenisButton.defaultChecked = settings.skipUploadByTotalBenis;
    totalBenisText.appendChild(skipUploadByTotalBenisButton);
    $('#main-view')[0].appendChild(totalBenisText);
    let skipUploadByTotalBenisInput = document.createElement('input');
    skipUploadByTotalBenisInput.type = "number";
    skipUploadByTotalBenisInput.defaultValue = settings.minBenis;
    totalBenisText.appendChild(skipUploadByTotalBenisInput);
    $('#main-view')[0].appendChild(totalBenisText);

    let averageBenisText = document.createElement('span');
    averageBenisText.innerText = "Mindest Durchschnittsbenis: ";
    averageBenisText.className = "Selfmade_M0d";
    averageBenisText.id = 'ab';
    let skipUploadByAverageBenisButton = document.createElement('input');
    skipUploadByAverageBenisButton.type = "checkbox";
    skipUploadByAverageBenisButton.defaultChecked = settings.skipUploadByAverageBenis;
    averageBenisText.appendChild(skipUploadByAverageBenisButton);
    $('#main-view')[0].appendChild(averageBenisText);
    let skipUploadByAverageBenisInput = document.createElement('input');
    skipUploadByAverageBenisInput.type = "number";
    skipUploadByAverageBenisInput.defaultValue = settings.minAverageBenis;
    averageBenisText.appendChild(skipUploadByAverageBenisInput);
    $('#main-view')[0].appendChild(averageBenisText);

    let onlyGoodTagsText = document.createElement('span');
    onlyGoodTagsText.innerText = "Keine Heruntergevoteten Tags berücksichtigen ";
    onlyGoodTagsText.className = "Selfmade_M0d";
    onlyGoodTagsText.id = 'gt';
    let onlyGoodTagsButton = document.createElement('input');
    onlyGoodTagsButton.type = "checkbox";
    onlyGoodTagsButton.defaultChecked = settings.onlyGoodTags;
    onlyGoodTagsText.appendChild(onlyGoodTagsButton);
    $('#main-view')[0].appendChild(onlyGoodTagsText);

    let amountOfTagsText = document.createElement('span');
    amountOfTagsText.innerText = "Anzahl der Tags: ";
    amountOfTagsText.className = "Selfmade_M0d";
    amountOfTagsText.id = 'at';
    amountOfTagsText.title = "-1 = alle";
    let amountOfTagsCheckedInput = document.createElement('input');
    amountOfTagsCheckedInput.type = "number";
    amountOfTagsCheckedInput.defaultValue = settings.amountOfTagsChecked;
    amountOfTagsText.appendChild(amountOfTagsCheckedInput);
    $('#main-view')[0].appendChild(amountOfTagsText);

    let directionText = document.createElement('span');
    directionText.innerText = "Skiprichtung rechts ";
    directionText.className = "Selfmade_M0d";
    directionText.id = 'di';
    let nextUploadDirection = document.createElement('input');
    nextUploadDirection.type = "checkbox";
    if(settings.nextUploadDirection == -1)
        nextUploadDirection.defaultChecked = true;
    directionText.appendChild(nextUploadDirection);
    $('#main-view')[0].appendChild(directionText);   

    let saveSettingsButton = document.createElement('button');
    saveSettingsButton.type = "button";
    saveSettingsButton.innerText = "Speichern";
    saveSettingsButton.id = "SMSubmit";
    $('#main-view')[0].appendChild(saveSettingsButton);

    let resetSettingsButton = document.createElement('button');
    resetSettingsButton.type = "button";
    resetSettingsButton.innerText = "Einstellungen zurücksetzen";
    resetSettingsButton.id = "SMReset";
    $('#main-view')[0].appendChild(resetSettingsButton);

    $('#SMSubmit').click(function(){
        saveSettings();
    });

    $('#SMReset').click(function(){
        localStorage.removeItem('Selfmade_M0d_Settings');
        location.reload();
    });

    $('span.Selfmade_M0d').css("display", "block");
}

let saveSettings = function()
{
    settings.blockedTags = $('#bt')[0].children[0].value.split(',');
    for(let i = settings.blockedTags.length-1; i>= 0; i--)
        { 
            if(settings.blockedTags[i] == "")
                settings.blockedTags.splice(i,1);
        }
    if(settings.blockedTags.length >0)
        settings.skipUploadByTag = true;
    else    
        settings.skipUploadByTag = false;

    settings.onlyGoodTags = $('#gt')[0].children[0].checked;

    settings.amountOfTagsChecked = Number($('#at')[0].children[0].value);

    settings.blockedUsers = $('#bu')[0].children[0].value.split(','); 
    for(let i = settings.blockedUsers.length-1; i>= 0; i--)
    { 
        if(settings.blockedUsers[i] == "")
            settings.blockedUsers.splice(i,1);
    }
      
    if(settings.blockedUsers.length >0)
        settings.skipUploadByUser = true;
    else    
        settings.skipUploadByUser = false;

    settings.skipUploadByTotalBenis = $('#mb')[0].children[0].checked;
    settings.minBenis = Number($('#mb')[0].children[1].value);

    settings.skipUploadByAverageBenis = $('#ab')[0].children[0].checked;
    settings.minAverageBenis = Number($('#ab')[0].children[1].value);

    settings.blockedUserRanks = [];
    if($('#fag')[0].children[0].checked)
        settings.blockedUserRanks.push("fag");
    if($('#newfag')[0].children[0].checked)
        settings.blockedUserRanks.push("newfag");
    if($('#oldfag')[0].children[0].checked)
        settings.blockedUserRanks.push("oldfag");
    if($('#pr0mium')[0].children[0].checked)
        settings.blockedUserRanks.push("pr0mium");
    if($('#deleted')[0].children[0].checked)
        settings.blockedUserRanks.push("deleted");
    if($('#scum')[0].children[0].checked)
        settings.blockedUserRanks.push("scum");
    if($('#legend')[0].children[0].checked)
        settings.blockedUserRanks.push("legend");
    if($('#mod')[0].children[0].checked)
        settings.blockedUserRanks.push("mod");
    if($('#admin')[0].children[0].checked)
        settings.blockedUserRanks.push("admin");
     
    if(settings.blockedUserRanks.length >0)
        settings.skipUploadByUserRank = true;
    else    
        settings.skipUploadByUserRank = false;

    if($('#di')[0].children[0].checked)
        settings.nextUploadDirection = -1;
    else
        settings.nextUploadDirection = 1;

    settings.autoRateSkippedUploads = false;

    localStorage.setItem("Selfmade_M0d_Settings", JSON.stringify(settings));
}

let createFilter = function()
{
    let filter = $('.filter-setting:eq(2)');
    filter.clone().insertAfter(filter);
    filter = $('.filter-setting:eq(3)');
    let circle = filter[0].children[0].children[0];
    filter[0].children[0].innerText = "Self-made M0d";
    filter[0].children[0].prepend(circle);
    filter[0].children[1].innerText = "Aktiviere das Selfmade M0d Addon. Speichern nicht erforderlich";
    filter.attr("data-flag",8);

    $('#filter-link').click(function(){
        if(settings.isActive)
            filter.addClass("active");
        else
            filter.removeClass("active"); 

    })
    
    filter.click(function(){
        if($('.filter-setting:eq(3)').hasClass("active"))
        {
            settings.isActive = false;
            $('.filter-setting:eq(3)').removeClass("active");
        }
        else    
        {
            settings.isActive = true;
            $('.filter-setting:eq(3)').addClass("active");
        }

        localStorage.setItem("Selfmade_M0d_Settings", JSON.stringify(settings));
    })
}

let nextUpload = function()
{
    if(settings.nextUploadDirection == 1)
    {
        $('.stream-prev').click();
    }
    else if(settings.nextUploadDirection == -1)
    {
        $('.stream-next').click();
    }
}

let rateUpload = function(direction = -1)
{
    if(direction == 1)
    {
        if($('.item-vote')[0].className.indexOf("voted-up") == -1)
            $('.vote-up').click();
    }
    else if(direction == -1)
    {
        if($('.item-vote')[0].className.indexOf("voted-down") == -1)
            $('.vote-down').click();
    }
}

let getTags = function()
{
    let tags = [];
    let rawTags;

    if(settings.onlyGoodTags == true)
    {
        rawTags = $('.tag-good');
    }
    else
    {
        rawTags = $('.tag-good,.tag-bad');
    }
    let amount = settings.amountOfTagsChecked;
    if(amount == -1)
    {
        amount = rawTags.length;
    }
    else
    {
        amount = Math.min(amount, rawTags.length)
    }

    for(let i = 0; i <amount; i++)
    {
        tags.push(rawTags[i].children[0].innerText);
    }
    return tags;
}

let getTotalBenis = function()
{
    let score = $('.item-vote .score');
    if(score.length != 0)
    {
        return $('.item-vote .score')[0].innerText;
    }
    return undefined;
}

let getAverageBenis = function()
{
    let score = $('.item-vote .score');
    if(score.length != 0)
    {
        score = $('.item-vote .score')[0].title;
        let divident = Number(score.substr(0,score.indexOf("u")-1));
        let divisor = Number(score.substr(score.indexOf("u")+4,score.indexOf("u")));
        if(divisor == 0)
        {
            return divident;
        }
        return divident / divisor;
    }
    else undefined; 
}

let getUser = function()
{
    let i = 0;
    while($('.item-details .user')[0] == undefined)
    {
        if(i++ > 100)
            return;
    }
    return $('.item-details .user')[0].innerText;
}

let getUserRank = function()
{
    let i = 0;
    while($('.item-details .user')[0] == undefined)
    {
        if(i++ > 100)
            return;
    }
    switch($('.item-details .user')[0].classList[1])
    {
        case("um0"):
            return "fag";
        break;
        case("um1"):
            return "newfag";
        break;
        case("um2"):
            return "oldfag";
        break;
        case("um3"):
            return "admin";
        break;
        case("um4"):
            return "deleted";
        break;
        case("um5"):
            return "mod";
        break;
        case("um6"):
            return "scum";
        break;
        case("um7"):
            return "legend";
        break;
        case("um8"):
        break;
        case("um9"):
            return "pr0mium";
        break;
        default:
        break;

    }
}

let executeModules = function()
{
    let wasSkipped = false;

    if(settings.skipUploadByTag)
    {
        wasSkipped = skipUploadByTag();
    }
    if(settings.skipUploadByUser && !wasSkipped)
    {
        wasSkipped = skipUploadByUser();
    }
    if(settings.skipUploadByTotalBenis && !wasSkipped)
    {
        wasSkipped = skipUploadByTotalBenis();
    }
    if(settings.skipUploadByAverageBenis && !wasSkipped)
    {
        wasSkipped = skipUploadByAverageBenis();
    }
    if(settings.skipUploadByUserRank && !wasSkipped)
    {   
        wasSkipped = skipUploadByUserRank();
    }
}

let skipUploadByTag = function()
{
    
    let tags = getTags();
    for(let i = 0; i < tags.length; i++)
    {
        for(let j = 0; j < settings.blockedTags.length; j++)
        {
            if(tags[i].toLowerCase().indexOf(settings.blockedTags[j].toLowerCase()) != -1)
            {
                if(settings.autoRateSkippedUploads)
                {
                    rateUpload();
                }
                nextUpload();
                console.log("Skipped because of Tag: " + settings.blockedTags[j]);
                return true;
            }
        }
    }
}

let skipUploadByUser = function()
{
    let user = getUser();
    for(let i = 0; i < settings.blockedUsers.length; i++)
    {
        if(user.toLowerCase() == settings.blockedUsers[i].toLowerCase())
        {
            if(settings.autoRateSkippedUploads)
            {
                rateUpload();
            }
            nextUpload();
            console.log("Skipped because of User: " + settings.blockedUsers[i]);
            return true;
        }
    }
}

let skipUploadByTotalBenis = function()
{ 
    let score = getTotalBenis();
    if(score != undefined)
    {
        if(score < settings.minBenis)
            {   
                if(settings.autoRateSkippedUploads)
                {
                    rateUpload();
                }
                nextUpload();
                console.log("Skipped because of Benis: " + score);
                return true;
            }
    }
}

let skipUploadByAverageBenis = function()
{
    let score = getAverageBenis();
    if(score != undefined)
    {
        if(getAverageBenis() < settings.minAverageBenis)
        {   
            if(settings.autoRateSkippedUploads)
            {
                rateUpload();
            }
            nextUpload();
            console.log("Skipped because of average Benis: " + score);
            return true;
        }
    }
}

let skipUploadByUserRank = function()
{
    let rank = getUserRank();
    for(let i = 0; i < settings.blockedUserRanks.length; i++)
    {
        if(rank == settings.blockedUserRanks[i])
        {
            if(settings.autoRateSkippedUploads)
            {
                rateUpload();
            }
            nextUpload();
            console.log("Skipped because of Userrank: " + settings.blockedUserRanks[i]);
            return true;
        }
    }
}
let checkRated ;

let url = "https://pr0gramm.com";

$(document).ready(function()
{
    readSettings();
    createFilter();

    setInterval(function()
    {
        checkURL(window.location.href);
    },500); 
});

QingJ © 2025

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