您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Erweitert pr0gramm.com um weitere Funktionen
当前为
// ==UserScript== // @name Selfmade M0d // @author Frubi // @description Erweitert pr0gramm.com um weitere Funktionen // @include *://pr0gramm.com/* // @grant none // @version 1.23 // @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 checkSettingsReady; let checkURL= function() { if(url.length > 24) { if(url.includes("new") || url.includes("top") || url.includes("user")) { if($('.item-container').length != 0) { addBlockTagSign(); addBlockUserSign(); if(settings.isActive) { executeModules(); } } } else if(url.includes('settings')) { let settingsReady = new Event("settingsReady"); window.addEventListener("settingsReady", function() { clearInterval(checkSettingsReady); addSettingsTab(); }); clearInterval(checkSettingsReady); checkSettingsReady = setInterval(function() { if($('.tab-bar')[0] != undefined) window.dispatchEvent(settingsReady); } ,100); } } } let addSettingsTab = function() { let tmp = $('.Selfmade_M0d'); if(tmp.length != 0) { return; } let button = document.createElement('a'); button.innerText = 'Selfmade M0d'; button.className = "Selfmade_M0d"; button.href = '/settings/selfmade_M0d'; button.addEventListener('click', (e) => { e.preventDefault(); window.history.replaceState({},"Selfmade M0d Settings","/settings/selfmade_M0d"); createSettings(); }); $('.tab-bar')[0].appendChild(button); } let createSettings = function() { $('.pane.form-page').empty(); $('.active').toggleClass('active'); $('.Selfmade_M0d').addClass('active'); let wrapper = document.createElement('div'); wrapper.className = "form-section"; 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(','); tagText.appendChild(skippedTagsInput); wrapper.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); wrapper.appendChild(userText); let rankText = document.createElement('span'); rankText.innerText = "Geblockte Ränge: "; rankText.className = "Selfmade_M0d"; wrapper.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); wrapper.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); wrapper.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); wrapper.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); wrapper.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); wrapper.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); wrapper.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); wrapper.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); wrapper.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); wrapper.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); wrapper.appendChild(totalBenisText); let skipUploadByTotalBenisInput = document.createElement('input'); skipUploadByTotalBenisInput.type = "number"; skipUploadByTotalBenisInput.defaultValue = settings.minBenis; totalBenisText.appendChild(skipUploadByTotalBenisInput); wrapper.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); wrapper.appendChild(averageBenisText); let skipUploadByAverageBenisInput = document.createElement('input'); skipUploadByAverageBenisInput.type = "number"; skipUploadByAverageBenisInput.defaultValue = settings.minAverageBenis; averageBenisText.appendChild(skipUploadByAverageBenisInput); wrapper.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); wrapper.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); wrapper.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); wrapper.appendChild(directionText); let saveSettingsButton = document.createElement('button'); saveSettingsButton.type = "button"; saveSettingsButton.innerText = "Speichern"; saveSettingsButton.id = "SMSubmit"; wrapper.appendChild(saveSettingsButton); let resetSettingsButton = document.createElement('button'); resetSettingsButton.type = "button"; resetSettingsButton.innerText = "Einstellungen zurücksetzen"; resetSettingsButton.id = "SMReset"; wrapper.appendChild(resetSettingsButton); $('.pane.form-page')[0].appendChild(wrapper); $('.Selfmade_M0d:not(a)').css("display", "block"); $('#SMSubmit').click(function(){ saveSettings(); }); $('#SMReset').click(function(){ localStorage.removeItem('Selfmade_M0d_Settings'); location.href = "http://pr0gramm.com/new"; }); } 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); continue; } while(settings.blockedTags[i][0] == " ") { settings.blockedTags[i] = settings.blockedTags[i].slice(1,settings.blockedTags[i].length); } while(settings.blockedTags[i][settings.blockedTags[i].length-1] == " ") { settings.blockedTags[i] = settings.blockedTags[i].slice(0,settings.blockedTags[i].length-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; quickSave(); } let quickSave = function() { 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"); } quickSave(); }) } 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 start = new Date(); while($('.user')[0] == undefined) { if(new Date() - start > 5000) { console.error("Loading took too long"); return; } } return $('.item-details .user')[0].innerText; } let getUserRank = function() { let start = new Date(); while($('.user')[0] == undefined) { if(new Date() - start > 5000) { console.error("Loading took too long"); 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++) { if(settings.blockedTags.includes(tags[i].toLowerCase())) { if(settings.autoRateSkippedUploads) rateUpload(); console.log("Skipped because of Tag: " + tags[i]); nextUpload(); return true; } } } let skipUploadByUser = function() { let user = getUser(); for(let i = 0; i < settings.blockedUsers.length; i++) { if(settings.blockedUsers.includes(user)) { if(settings.autoRateSkippedUploads) rateUpload(); console.log("Skipped because of User: " + settings.blockedUsers[i]); nextUpload(); 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 addBlockTagSign = function() { let start = new Date(); while($('.item-tags')[0] == undefined) { if(new Date() - start > 5000) { console.error("Loading took too long"); return; } } let blockTagSign = document.createElement('span'); blockTagSign.className = "block-tag" blockTagSign.innerText = "ø"; $('.tag').append(blockTagSign); $('.block-tag').css("cursor", "pointer"); $('.block-tag').each(function() { let tmp = $(this).siblings()[0].innerText; if(settings.blockedTags.includes(tmp.toLowerCase())) { $(this).css("color", "red"); } else { $(this).css("color", "#888"); } }); $('.block-tag').click(function() { let tmp = $(this).siblings()[0].innerText; if($(this).css("color") == "rgb(255, 0, 0)") { settings.blockedTags.splice(settings.blockedTags.indexOf(tmp),1); if(settings.blockedTags.length > 0) settings.skipUploadByTag = true; else settings.skipUploadByTag = false; $(this).css("color","#888" ); } else { settings.blockedTags.push(tmp.toLowerCase()); settings.skipUploadByTag = true; $(this).css("color", "red"); } quickSave(); }); } let addBlockUserSign = function() { let start = new Date(); while($('.item-tags')[0] == undefined) { if(new Date() - start > 5000) { console.error("Loading took too long"); return; } } let blockUserSign = document.createElement('span'); blockUserSign.className = "block-user" blockUserSign.innerText = " ø"; $(blockUserSign).insertAfter($('.user')); $('.block-user').css("cursor", "pointer"); if(settings.blockedUsers.includes(getUser())) { $('.block-user').css("color", "red"); } $('.block-user').click(function() { let tmp = getUser(); if($('.block-user').css("color") == "rgb(255, 0, 0)") { settings.blockedUsers.splice(settings.blockedUsers.indexOf(tmp),1); if(settings.blockedUsers.length > 0) settings.skipUploadByUser = true; else settings.skipUploadByUser = false; $('.block-user').css("color","" ); } else { settings.blockedUsers.push(tmp); settings.skipUploadByUser = true; $(this).css("color", "red"); } quickSave(); }); } let url = "https://pr0gramm.com"; $(document).ready(function() { readSettings(); createFilter(); let urlChange = new Event('urlChange'); window.addEventListener("urlChange", function(){checkURL()}); setInterval(function() { if(url != window.location.href) { url = window.location.href; window.dispatchEvent(urlChange); } },100); });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址