您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
filter unwanted communities from showing up in your lemmy.ml feed
// ==UserScript== // @name Filter lemmy.ml communities // @namespace http://tampermonkey.net/ // @version 0.2 // @description filter unwanted communities from showing up in your lemmy.ml feed // @author bigguy // @match https://lemmy.ml/home/data_type/Post/* // @match https://lemmy.ml // @icon https://www.google.com/s2/favicons?domain=lemmy.ml // @grant GM_setValue // @grant GM_getValue // ==/UserScript== //simple scrappy way to auto filter unwanted communities from showing up in your feed //a link (Y) shows up next to the community name in your feed which you press to filter that community //to undo a filtered community: you need to press H key to halt all further filtering, then refresh, now you can select 'N' link. //press H again to toggle halting on/off - no need to refresh turning halt off. var fucks = GM_getValue("fuckers",[]); //local storage within userscript space var halt = GM_getValue("halt",false); console.log("community filter on", fucks); function removePosts() { document.querySelectorAll('.list-inline-item').forEach(function(postinner) { var links = postinner.getElementsByTagName('a'); if (links.length > 1) { var curl = postinner.getElementsByTagName('a')[1].href.split('/'); var community = curl[3]+'/'+curl[4]; //console.log(community); if (!halt && community && fucks.includes(community)) { console.log(community + ' the fucker, has been blocked'); //console.log(postinner.parentElement.parentElement.parentElement.parentElement.parentElement); postinner.parentElement.parentElement.parentElement.parentElement.parentElement.remove(); } } }); }; function applyButtons() { if (document.getElementsByClassName("togg").length == 0 && document.getElementsByClassName("toff").length == 0){ document.querySelectorAll('.list-inline-item').forEach(function(postinner) { //console.log(postinner.getElementsByTagName('a').length); var links = postinner.getElementsByTagName('a'); if (links.length > 1) { var curl = postinner.getElementsByTagName('a')[1].href.split('/'); var community = curl[3]+'/'+curl[4]; //console.log(community); var a = document.createElement('a'); a.className = 'togg'; //a.href = 'javascript:void(0)'; //causes chrome to shit the bed with the script. a.innerText = " [Y] "; a.onclick = function test(){ fucks.indexOf(community) === -1 ? fucks.push(community) : null; GM_setValue("fuckers", fucks); console.log(fucks); removePosts(); postinner.parentElement.parentElement.getElementsByClassName("post-title")[0].innerText = ",'" + community + "'";} postinner.append(a); if (community && fucks.includes(community)) { var b = document.createElement('a'); b.className = 'toff'; b.innerText = " [N] "; b.onclick = function test(){ delete fucks[fucks.indexOf(community)]; GM_setValue("fuckers", fucks); console.log(fucks);} postinner.append(b); } } }); } }; setInterval(applyButtons, 5000); setInterval(removePosts, 3000); //lemmy is a dynamic site so I am spamming the function execution since I can't remember what dom modification I need to listen for. applyButtons(); document.addEventListener('keydown', function(event) { if (event.code == 'KeyS'){ //start applyButtons(); } if (event.code == 'KeyF'){ //filter removePosts(); } if (event.code == 'KeyR'){ //reset fully //GM_setValue("fuckers", []) } if (event.code == 'KeyL'){ //list console.log(fucks); } if (event.code == 'KeyH'){ //halt halt = !halt; console.log("halting", halt); GM_setValue("halt", halt); removePosts(); } });