您需要先安装一个扩展,例如 篡改猴、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();
- }
- });