this post was submitted on 20 Jun 2023
3 points (100.0% liked)

/kbin meta

2 readers
1 users here now

Magazine dedicated to discussions about the kbin itself. Provide feedback, ask questions, suggest improvements, and engage in conversations related to the platform organization, policies, features, and community dynamics. ---- * Roadmap 2023 * m/kbinDevlog * m/kbinDesign

founded 1 year ago
 

Can anyone tell me how I can block an entire instance on kbin? I don't speak German so I want to remove feddit.de from my feed. I found how to block a single magazine/community but not how to block an entire instance.

you are viewing a single comment's thread
view the rest of the comments
[–] trent@kbin.social 1 points 1 year ago

Kbin does have tags for the language of posts, and they are accurately represented in these German posts, but I can't find a way to filter them without just blocking the server!

As a quick fix, a user script:

// ==UserScript==
// @name         Kbin: delete articles in other languages
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Auto-delete posts in languages you do not speak.
// @author       luphoria (https://kbin.social/u/trent)
// @match        https://kbin.social/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=kbin.social
// @grant        none
// ==/UserScript==

(function() {
  'use strict';
  const allowedLangs = ["en", "es"]; // Edit this to all of the languages you can speak / want to see in your feed

  let deleteUnwantedPosts = () => {
    const postTags = document.getElementsByClassName("kbin-bg");

    for (let i = 0; i < postTags.length; i++) {
      let postTag = postTags[i];
      if (postTag && postTag.textContent && postTag.textContent !== "OC" && !allowedLangs.includes(postTag.textContent)) { // OC tags are the only elements (i know of) with the same class.
        // Delete element's parent's parent's parent
        if (postTag.parentElement.children[0].textContent) {
          console.log(`Removing post labeled \`${postTag.textContent}\`: "${postTag.parentElement.children[0].textContent}"`);
          postTag.parentElement.parentElement.parentElement.remove();
        }
      }
    }
  }
  deleteUnwantedPosts(); // on load

  // for continuous feeds
  let observeDOMChanges = () => {
    const observer = new MutationObserver(function(mutationsList) {
      deleteUnwantedPosts();
    });
    observer.observe(document.body, { childList: true, subtree: true });
  }
  observeDOMChanges();
})();