Don't speak German? Here's a userscript for you

Recently, especially with feddit.de, there are a lot of posts in languages that are not English. This is great for adoption!, but unfortunately I have no idea what the posts are about because I don't speak German. I couldn't find a setting to hide posts in other languages either!

To make my feed better for myself, I wrote a simple user script which removes any posts that are tagged anything other than EN/ES (the two languages I can speak.

Update the script to your preferences (make sure to @match your instance), and load it up in TamperMonkey!

Here you go:

// ==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"]; // <-- Edit this to all of the languages you can speak / want to see in your feed. Format: ["lang", "lang", "lang"]

  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();
})();

28 points · 25 comments · view on lemmy.world

25 Comments

10A@kbin.social · 29 pts · 3y (7 replies)

So disappointing. I clicked on this hoping your userscript would teach me German.

dreadgoat@kbin.social · 7 pts · 3y (3 replies)

If you use Chrome, the world is your oyster at this point. Translation tools are getting amazing.

Text post, or title? Highlight, right click, translate. Done.

Oh no, but it's a meme/image/screenshot. Guess you're screwed, right? Gotta pull out your phone and use google lens, way too annoying, right? Wrong! Go to chrome://flags and enable "Translate text in images with Google Lens". Now you can right click anywhere to translate the page to English, and then just right-click any image and get a translated version.

Now go meme on some Germans. It is Wednesday, after all.

pikameiser@kbin.social · 2 pts · 3y

I appreciate you!

trent@kbin.social · 2 pts · 3y

This is great, and true too, but I hate google man. Gonna wait to see when translation tools like this become FOSS. I think AI might get us there. In the meantime, LibreTranslate does good for translation and Tesseract works for OCR.

Xeelee@kbin.social · 1 pts · 3y

Irgendwas irgendwas ... Mittwochsfrosch

DrNeurohax@kbin.social · 5 pts · 3y

Must be a bug. I tried it and now my dog speaks German, but I can only speak to bacteria. You wouldn't believe what assholes they are!

Xeelee@kbin.social · 1 pts · 3y (1 reply)

Repeat after me:

"Bier her, aber zackig!"

"Wo gibt's hier die beste Schweinshaxe, Du Hurensohn?"

"Nein, ich habe keine Fahrkarte, Du Möchtegern-Blockwart!"

"Ich rede nicht mit Subalternen. Bringen Sie mir sofort den Geschäftsführer!"

You are now fully prepared for your holiday in Germany,

aussiematt@kbin.social · 1 pts · 3y

"How to Win Friends and Influence People" in one short lesson :-)

chibi-totoro@kbin.social · 1 pts · 3y (1 reply)

I assume a setting for this would already be in the dev backlog? Does anyone know if there is an issue logged for this?

trent@kbin.social · 1 pts · 3y

I didn't check and didn't make one, but there certainly should be I agree. Take this as a hotfix

BaroqueInMind@kbin.social · 1 pts · 3y

Thank you for developing this!

ImplyingImplications@lemmy.ca · 1 pts · 3y (3 replies)

I've just made it a fun game to read the post and try to guess what it could mean!

trent@kbin.social · 4 pts · 3y (2 replies)
ImplyingImplications@lemmy.ca · 5 pts · 3y

German is such a beautiful language

Setarkus@lemmy.world · 4 pts · 3y

"Wtf is that title?!... Oh, it's 'Bild', makes sense."

marcf@kbin.social · 1 pts · 3y (5 replies)

Might be user error, but still seeing non-English articles (de, es). Script appears to be installed correctly.

trent@kbin.social · 1 pts · 3y (3 replies)

hmm

  • is it showing a red [1] in the extension list (to signify that it's running) on the homepage?
  • what device & window size are you using?
marcf@kbin.social · 2 pts · 3y (1 reply)

Wasn't running! Added an * to the @match url and that seems to have fixed it. I default to /sub as my home, so perhaps that was the problem?

Thanks for the script!

trent@kbin.social · 1 pts · 3y

glad you got it working for you (and I should probably update it to wildcard kbin.social, with that in mind)! I think your observation is right on the mark because my homepage is all, or /

marcf@kbin.social · 1 pts · 3y

Aha! Does not appear to be running. Will investigate…

noughtnaut@kbin.social · 1 pts · 3y

Edit: Disregard this comment; I see you've solved your problem elsehow.

How did you modify your script?
const allowedLangs = ["de", "es"]; // This should work
or
const allowedLangs = ["de, es"]; // This will not work

Good luck friend.