Script genommen, 20 User rein und gut.
Ok, ein paar weniger waren's

Danke danke danke

Ich hab zwar nicht vor, das Skript wirklich zu benutzen, aber das war mir auch noch aufgefallenheisenberg hat geschrieben:01.03.2024 21:13:02Es wird auch zusätzlich der Beitrag ausgeblendet, wenn der betreffend geblacklistete User den letzten Beitrag eines Threads gepostet hat. Das will ich noch weg machen.
Code: Alles auswählen
// ==UserScript==
// @name DF_Hide_User_Threads
// @author some_random_dude
// @version 1
// @namespace some_random_dude
// @match https://debianforum.de/forum/search.php*
// @match https://debianforum.de/forum/viewforum.php*
// @run-at document-start
// ==/UserScript==
(() => {
"use strict";
const hiddenUsers = [
"feltel",
"heisenberg",
];
function hideUserThreads(mutations, observer) {
for (const mutation of mutations) {
for (const node of mutation.addedNodes) {
const usernameElems = node.querySelectorAll?.("dt .username, dt .username-coloured") ?? [];
for (const usernameElem of usernameElems) {
/* There is a parallel username element with class "responsive-show"
* in the <dt>, that shows the *last poster* on mobile. We are not
* looking for that element here.
*/
if (!hiddenUsers.includes(usernameElem.textContent) ||
!usernameElem.parentElement.classList.contains("responsive-hide")) {
continue;
}
const rowToRemove = usernameElem.closest("li.row");
/* Since we are removing a row, shift the light and dark grey
* backgrounds accordingly.
*/
let prevRow = rowToRemove;
let prevClasses = rowToRemove.className;
let row = rowToRemove.nextElementSibling;
while (row) {
const classes = row.className;
row.className = prevClasses;
prevClasses = classes;
prevRow = row;
row = prevRow.nextElementSibling;
}
rowToRemove.remove();
}
}
}
}
const observer = new MutationObserver(hideUserThreads);
observer.observe(document.documentElement, { childList: true, subtree: true });
addEventListener("load", observer.disconnect);
})();
Jo, gerade praktisch getestet, Vielen Dank, perfekt!JTH hat geschrieben:01.03.2024 21:59:31Ich hab nochmal nachgebessert, es wird nun wirklich nur nach dem Eröffner des Threads geguckt. Und die abwechselnd hell- und dunkelgrauen Hintergründe werden auch noch passend mit verschoben![]()
TRex hat geschrieben: ping
Erlaubt Ihr eine Weitergabe Eurer Scripte? Lizenz? Ich würde das ggf. gerne direkt in mein öffentliches git-repo aufnehmen.JTH hat geschrieben: ping
Das sieht doch insgesamt schon wirklich sehr gut aus! Fishing for Compliments?
Code: Alles auswählen
// ==UserScript==
// @name NEBENAN_HIDE_CONTENT
// @author some_random_dude
// @version 1
// @namespace some_random_dude
// @match https://nebenan.de/feed*
// @run-at document-start
// ==/UserScript==
const hide_articles=[
"Gewerbliche Beiträge",
"Marktplatz"
];
const hide_subjects=[
"Hund"
"Katze",
"Maus",
]
function mylog(msg) {
console.log(msg);
}
(() => {
"use strict";
function hideContents(mutations, observer) {
for (const mutation of mutations) {
for (const node of mutation.addedNodes) {
const my_headers = node.querySelectorAll?.("article.ui-card strong") ?? [];
for (const my_header of my_headers) {
// mylog("header: " + my_header.textContent)
const header_text=my_header.textContent;
for(const hide_article of hide_articles) {
const regex=new RegExp(hide_article);
if(header_text.match(regex)) {
const container = my_header.closest("article");
mylog("found element to hide: " + container.nodeName + " for pattern >>" + hide_article + "<<");
container.remove();
}
}
}
const my_user_article_subjects = node.querySelectorAll?.("span.c-emoji") ?? [];
for (const my_subject of my_user_article_subjects) {
// mylog("header: " + my_header.textContent)
const subject_text=my_subject.textContent;
for(const hide_subject of hide_subjects) {
const regex=new RegExp(hide_subject);
if(subject_text.match(regex)) {
const container = my_subject.closest("article");
mylog("found element to hide: " + container.nodeName + " for pattern >>" + hide_subject + "<<");
container.remove();
}
}
}
}
}
}
const observer = new MutationObserver(hideContents);
observer.observe(document.documentElement, { childList: true, subtree: true });
addEventListener("load", observer.disconnect);
})();
Whow Werde ich bestimmt noch heute mal ausprobierenheisenberg hat geschrieben:19.03.2024 21:53:34Ich habe mir jetzt auf Deiner Basis ein Script für nebenan.de gebastelt, womit ich gewerbliche Beiträge und tendenziell Anderes ausblenden kann:
Es wird der komplette Betreff auf Gleichheit geprüft, kein Regex oder "beinhaltet" Vergleich.aber für "KI" gibts sicher viele false positives
Damit man nicht irgendwann anfängt, halb phpBB nachzubauen …
Danke. Das ist natürlich besser!JTH hat geschrieben:15.05.2024 09:16:17Signaturen kann man einfach im „Persönlichen Bereich“ unter „Einstellungen“, „Anzeigeoptionen“ über die Einstellung „Signaturen anzeigen“ abschalten.
Code: Alles auswählen
<?PHP
$password="dein.geheimes.passwort"; # bitte zeichenvorrat beachten (siehe preg_match Zeile unten)
if ($_GET['access_token'] != "" ) {
preg_match('/^([0-9a-zA-Z-_\.:,;=§$%.+]+)$/',$_GET['access_token'],$matches);
$submitted_password=$matches[1];
if ($password == $submitted_password) {
header("Content-Type: text/plain");
$input = file_get_contents("df_hide_user_posts.user.js");
echo "$input";
}
}
?>
Code: Alles auswählen
<Directory /path/to/wwwroot/downloads>
Options -Indexes
# Zugriff auf alle Dateien mit Endung .user.js verbieten.
# Der Zugriff muss über das jeweillige Wrapper-Script erfolgen
<FilesMatch "\.user\.js$">
Require all denied
</FilesMatch>
</Directory>
Wenn die User nicht auch über das Script synchronisiert werden müssten, wärs ja an der Stelle schon fertig... aber dafür hab ich leider auch keine Lösung.heisenberg hat geschrieben:15.10.2024 16:26:43Ich hatte jetzt noch den Wunsch, das Script automatisch aktualisieren zu lassen, weil ich mehrere Firefox-Instanzen synchronsieren möchte.
Die ausgeblendeten Benutzer und die ausgeblendeten Threadtitel stehen jeweils in den Scripten. Ist natürlich suboptimal. Aber es funktioniert schon so wie es soll.TRex hat geschrieben:15.10.2024 18:02:32Wenn die User nicht auch über das Script synchronisiert werden müssten, wärs ja an der Stelle schon fertig... aber dafür hab ich leider auch keine Lösung.heisenberg hat geschrieben:15.10.2024 16:26:43Ich hatte jetzt noch den Wunsch, das Script automatisch aktualisieren zu lassen, weil ich mehrere Firefox-Instanzen synchronsieren möchte.