您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Erweitert pr0gramm.com um weitere Funktionen
当前为
// ==UserScript== // @name Selfmade M0d // @author Frubi // @description:de (Beta) Erweitert pr0gramm.com um weitere Funktionen zum Blocken von Content // @include *://pr0gramm.com/* // @grant none // @version 1.6.0Beta // @namespace https://gf.qytechs.cn/users/158955 // @description Erweitert pr0gramm.com um weitere Funktionen // ==/UserScript== console.log("Selfmade M0d running"); const defaultSettings = { 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, blockCommentsByUser : false, commentBlacklist: [], blockCommentsByBlacklist: false, blockCommentsByBenis: false, commentMinBenis: 0 } let settings = Object.assign({},defaultSettings); let readSettings = function() { let tmp = JSON.parse(localStorage.getItem("Selfmade_M0d_Settings")); if(tmp != null) { Object.keys(tmp).forEach(function(e) { if(settings[e] != undefined) settings[e] = tmp[e]; }); } } let checkPageReady; let checkURL = function() { clearInterval(checkPageReady); if(url.length > 24) { checkPageReady = setInterval(function() { if($('.tags').length != 0 && $('.block-user').length == 0) { clearInterval(checkPageReady); addBlockTagSign(); addBlockUserSign(); if(settings.isActive) { executeModules(); } } else if($('.tab-bar').length != 0 && $('.Selfmade_M0d').length == 0 && url.includes('settings')) { clearInterval(checkPageReady); addSettingsTab(); } },10); } } 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).click(function(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 settingsPageContent = ` <div class='form-section'> <div class='Selfmade_M0d' id='bt' style='display:block'> Geblockte Tags:<br> <div style='margin-top:5px'></div> <input placeholder='tag1,tag2,tag3,...' title='Tags mit Komma trennen!'></input> <input type="checkbox" class="box-from-label" name="onlyGoodTags"> <label for="onlyGoodTags"> Ignoriere Tags mit negativen Benis </label> Anzahl der zu berücksichtigen Tags: <input type="number" min="-1" max="999" value="-1" title="-1 = alle"> </div> <br><hr size="1" style="color:gray"> <div class='Selfmade_M0d' id='bu' style='display:block' title='Nutzernamen mit Komma trennen!'> Geblockte Nutzer:<br> <div style='margin-top:5px'></div> <input placeholder='nutzer1,nutzer2,nutzer3,...'></input> <input type='checkbox' class="box-from-label" name="bc"> <label for="bc"> Kommentare von geblockten Nutzern entfernen</label> </div> <br><hr size="1" style="color:gray"> <div class="Selfmade_M0d" id='bc' style='display:block'> Geblockte Wörter in den Kommentaren:<br> <div style='margin-top:5px'></div> <input placeholder='wort1,wort2,wort3,...' title='Wörter mit Komma trennen!'></input><br> <input type="checkbox" class="box-from-label" name="ComMinBenis"> <label for="ComMinBenis" style="display:inline-block"> Mindest Benis bei Kommentaren:</label> <input type="number" min="-999" max="999" value="0"> </div> <br><hr size="1" style="color:gray"> <div class='Selfmade_M0d' id='br' style='display:block'> Geblockte Ränge:<br> <div style="margin-left:25px;"> <input type="checkbox" class='box-from-label' name='Neuschwuchtel'> <label for='Neuschwuchtel' style='color:#E108E9' >Neuschwuchtel</label> <input type="checkbox" class='box-from-label' name='Schwuchtel'> <label for='Schwuchtel' style='color:#FFFFFF'>Schwuchtel</label> <input type="checkbox" class='box-from-label' name='Altschwuchtel'> <label for='Altschwuchtel' style='color:#5BB91C'> Altschwuchtel</label> <input type="checkbox" class='box-from-label' name="Edler Spender"> <label for="Edler Spender" style='color:#1cb992'> Edler Spender</label> <input type="checkbox" class='box-from-label' name="Gesperrt"> <label for="Gesperrt" style='color:#444444'> Gesperrt </label> <input type="checkbox" class='box-from-label' name="Fliesentischbesitzer"> <label for="Fliesentischbesitzer" style='color:#6C432B'> Fliesentischbesitzer</label> <input type="checkbox" class='box-from-label' name="Lebende Legende"> <label for="Lebende Legende" style='color:#1cb992'> Lebende Legende</label> <input type="checkbox" class='box-from-label' name="Moderator"> <label for="Moderator" style='color:#008FFF'> Moderator</label> <input type="checkbox" class='box-from-label' name="Administrator"> <label for="Administrator" style='color:#FF9900'> Administrator</label> </div> </div> <br><hr size="1" style="color:gray"> <div class='Selfmade_M0d' id='mb' style='display:block'> <input type="checkbox" class="box-from-label" name="minBenis" > <label for="minBenis" style="display:inline-block">Mindest Benis: </label><input type="number" min="-999" max="999" value="0"><br> <input type="checkbox" class="box-from-label" name="minAverageBenis" > <label for="minAverageBenis" style="display:inline-block"> Mindest Durchschnittsbenis: </label><input type="number" min="-999" max="999" value="0"> </div> <br><hr size="1" style="color:gray"> <div class='Selfmade_M0d' id='sr' style='display:block'> <input type="checkbox" class="box-from-label" name="sr"> <label for="sr"> Nach rechts Skippen</label> </div> <br> <div class="Selfmade_M0d" id='save'> <input type="submit" value="Speichern" class="confirm settings-save"></input> </div> <br> <div class='Selfmade_M0d' id='reset'> <a class='action clear-settings-button'>Einstellungen zurücksetzen</a> </div> </div> ` $('.pane.form-page').append(settingsPageContent); settings.blockedTags.forEach(function(e) { createNameTag($('#bt input')[0], e); }); $('#bt input:first').keyup(function(e){ if(e.key == ',') { let text = this.value.slice(0,this.value.length-1).trim().toLowerCase(); if(text.length <3) { this.value = text; return; } createNameTag(this, text); } }); $('#bt input')[1].checked = settings.onlyGoodTags; $('#bt input')[2].value = settings.amountOfTagsChecked; settings.blockedUsers.forEach(function(e) { createNameTag($('#bu input')[0], e); }); $('#bu input:first').keyup(function(e){ if(e.key == ',') { let text = this.value.slice(0,this.value.length-1).trim(); if(text.length <3) { this.value = text; return; } createNameTag(this, text); } }); $('#bu input')[1].checked = settings.blockCommentsByUser; settings.commentBlacklist.forEach(function(e) { createNameTag($('#bc input')[0], e); }); $('#bc input:first').keyup(function(e){ if(e.key == ',' || e.key == ' ') { let text = this.value.slice(0,this.value.length-1).trim().toLowerCase(); if(text.length <3) { this.value = text; return; } createNameTag(this, text); } }); $('#bc input')[1].checked = settings.blockCommentsByBenis; $('#bc input')[2].value = settings.commentMinBenis; settings.blockedUserRanks.forEach(function(e) { let tmp = $('label:contains(' + e + ')'); if(tmp.length != 0) $('label:contains(' + e + ')').prev()[0].checked = true; }); $('#mb input')[0].checked = settings.skipUploadByTotalBenis; $('#mb input')[1].value = settings.minBenis; $('#mb input')[2].checked = settings.skipUploadByAverageBenis; $('#mb input')[3].value = settings.minAverageBenis; $('#sr input')[0].checked = settings.nextUploadDirection==-1?true:false; $('#save input').click(function() { saveSettings(); showNotification("Einstellungen gespeichert"); }); $('#reset a').click(function() { localStorage.removeItem('Selfmade_M0d_Settings'); settings = Object.assign({},defaultSettings); $('a.Selfmade_M0d').click(); showNotification("Einstellungen zurückgesetzt"); }); $('.box-from-label').next().each(function() { $(this).click(function() { $(this).prev()[0].checked = !$(this).prev()[0].checked; }); }); } let createNameTag = function(element, data) { let wrapper = document.createElement('span'); $(wrapper).addClass('tag'); $(wrapper).text(data); let x = document.createElement('a'); $(x).href='#'; $(x).html(" x"); $(x).css("color","red"); $(x).click(function(e) { e.preventDefault(); $(this).parent().remove(); }); wrapper.append(x); element.value = ""; $(element).prev().append(wrapper); } let saveSettings = function() { settings.blockedTags = []; $('#bt input').prev().find('span').each(function() { let text = this.innerText.slice(0,this.innerText.length-3); settings.blockedTags.push(text.toLowerCase()); }); settings.skipUploadByTag = settings.blockedTags.length >0?true:false; settings.onlyGoodTags = $('#bt input')[1].checked; settings.amountOfTagsChecked = Number($('#bt input')[2].value); settings.blockedUsers = []; $('#bu input:first').prev().find('span').each(function() { let text = this.innerText.slice(0,this.innerText.length-3); settings.blockedUsers.push(text.toLowerCase()); }); settings.skipUploadByUser = settings.blockedUsers.length >0 ? true:false; settings.blockCommentsByUser = $('#bu input')[1].checked; settings.commentBlacklist = []; $('#bc input:first').prev().find('span').each(function() { let text = this.innerText.slice(0,this.innerText.length-3); settings.commentBlacklist.push(text.toLowerCase()); }); settings.blockCommentsByBlacklist = settings.commentBlacklist.length >0 ? true:false; settings.blockCommentsByBenis = $('#bc input')[1].checked; settings.commentMinBenis = Number($('#bc input')[2].value); settings.blockedUserRanks = []; let tmp = $('#br input:checked').next(); for(let i = 0; i < tmp.length; i++) { settings.blockedUserRanks.push(tmp[i].innerText.trim()); } settings.skipUploadByUserRank = settings.blockedUserRanks.length >0 ? true:false; settings.skipUploadByTotalBenis = $('#mb input')[0].checked; settings.minBenis = Number($('#mb input')[1].value); settings.skipUploadByAverageBenis = $('#mb input')[2].checked; settings.minAverageBenis = Number($('#mb input')[3].value); settings.nextUploadDirection = $('#sr input')[0].checked ? -1: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) { showNotification("Upload wurde bewertet"); if(direction == 1) { if($('.item-vote:has(.pict)')[0].className.indexOf("voted-up") == -1) $('.item-vote:has(.pict) .vote-up').click(); } else if(direction == -1) { if($('.item-vote:has(.pict)')[0].className.indexOf("voted-down") == -1) $('.item-vote:has(.pict) .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() { return $('.item-details .user')[0].innerText.toLowerCase(); } let getUserRank = function(user) { switch(user.classList[1]) { case("um0"): return "Schwuchtel"; break; case("um1"): return "Neuschwuchtel"; break; case("um2"): return "Altschwuchtel"; break; case("um3"): return "Administrator"; break; case("um4"): return "Gesperrt"; break; case("um5"): return "Moderator"; break; case("um6"): return "Fliesentischbesitzer"; break; case("um7"): return "Lebende Legende"; break; case("um8"): break; case("um9"): return "Edler Spender"; 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(); } if(settings.deleteComments && !wasSkipped) { deleteCommentsByUser(); } else if(!wasSkipped) { if(settings.blockCommentsByUser) blockCommentsByUser(); if(settings.blockCommentsByBenis) blockCommentsByBenis(); if(settings.skipUploadByUserRank) blockCommentsByRank(); if(settings.blockCommentsByBlacklist) blockCommentsByBlacklist(); } } 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(); } showNotification("Skipped because of Tag: " + tags[i]); nextUpload(); return true; } } } let skipUploadByUser = function() { let user = getUser(); if(settings.blockedUsers.includes(user)) { if(settings.autoRateSkippedUploads) rateUpload(); showNotification("Skipped because of User: " + user); nextUpload(); return true; } } let skipUploadByTotalBenis = function() { let score = getTotalBenis(); if(score != undefined) { if(score < settings.minBenis) { if(settings.autoRateSkippedUploads) { rateUpload(); } nextUpload(); showNotification("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(); showNotification("Skipped because of average Benis: " + score); return true; } } } let skipUploadByUserRank = function() { let rank = getUserRank($('.item-details .user')[0]); if(settings.blockedUserRanks.includes(rank)) { if(settings.autoRateSkippedUploads) { rateUpload(); } nextUpload(); showNotification("Skipped because of Userrank: " + rank); return true; } } let addBlockTagSign = function() { let blockTagSign = document.createElement('span'); blockTagSign.className = "block-tag" blockTagSign.innerText = "ø"; if($('.block-tag').length == 0) { $('.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 blockUserSign = document.createElement('span'); blockUserSign.className = "block-user" blockUserSign.innerText = " ø"; if($('.block-user').length == 0) { $(blockUserSign).insertAfter($('.user')); $('.block-user').css("cursor", "pointer"); $('.block-user').each(function() { if(settings.blockedUsers.includes($(this).prev()[0].innerText)) { $(this).css("color", "red"); } }); $('.block-user').click(function() { let user = $(this).prev()[0].innerText; if($(this).css("color") == "rgb(255, 0, 0)") { settings.blockedUsers.splice(settings.blockedUsers.indexOf(user),1); if(settings.blockedUsers.length > 0) settings.skipUploadByUser = true; else settings.skipUploadByUser = false; $(this).css("color","" ); } else { settings.blockedUsers.push(user); settings.skipUploadByUser = true; $(this).css("color", "red"); } quickSave(); }); } } let blockCommentsByUser = function() { $('.comment:not(textarea)').each(function() { if(settings.blockedUsers.includes($(this).find($('.comment-foot .user'))[0].innerText)) { blockComment(this); } }); } let blockCommentsByBlacklist = function() { $('.comment .comment-content').each(function() { element = this; if($(element).attr("data-comment") != undefined) return; $($(this).text().toLowerCase().replace(/[^\w\s]/g, '').split(" ")).each(function() { if(settings.commentBlacklist.includes(String(this))) { blockComment($(element).parent()); return false; } }); }); } let blockCommentsByBenis = function() { $('.comment-foot .score').each(function() { if(parseFloat(this.innerText) < settings.commentMinBenis) blockComment($(this).parent().parent()); }); } let blockCommentsByRank = function() { $('.comment-foot .user').each(function() { if(settings.blockedUserRanks.includes(getUserRank(this))) blockComment($(this).parent().parent()); }); } let blockComment = function(element) { let tmp = $(element).find($('.comment-content')); if(tmp.attr("data-comment") == undefined) { $(tmp).css("color", "grey"); $(tmp).css("cursor", "pointer"); tmp.attr("data-comment", tmp[0].innerText ) tmp[0].innerText = "[Blocked]"; tmp.click(function() { if(this.innerText == "[Blocked]") this.innerText = $(this).attr("data-comment"); else this.innerText = "[Blocked]"; }); $(element).find('.fold-in').click(); } } let showNotification = function(text) { let element = document.createElement('span'); $(element).css("cssText",'display:none; position:absolute; bottom:0; left:0; line-height:60px; width:100%; background:#ee4d2e; text-align:center; vertical-align:middle'); element.innerText = text; $('#notificationbox').append(element); $(element).slideToggle(); $('#notificationbox span:not(:last)').animate( { bottom: "+=60" } ) $(element).click(function() { $(this).animate( { left: "-300px" },function(){this.remove()}); }); setTimeout(function(){ $(element).animate( { left: "-300px" },function(){element.remove()}); },3000); } let url = "https://pr0gramm.com"; $(document).ready(function() { readSettings(); createFilter(); window.addEventListener("resize", function(){checkURL()}); let notificationbox = "<div id='notificationbox' style='position:fixed; width:300px; left:0; bottom:0; z-index:11'></div>"; $('body').append(notificationbox); if(window.location.href.includes("Selfmade_M0d")) { window.location.href = "https://pr0gramm.com/settings/site"; } setInterval(function() { if(url != window.location.href) { url = window.location.href; checkURL(); } },100); });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址