Script "Ignoreliste"
- whisper
- Beiträge: 3379
- Registriert: 23.09.2002 14:32:21
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: Script "Ignoreliste"
Ja Firemonkey ging sofort
Script genommen, 20 User rein und gut.
Ok, ein paar weniger waren's
Danke danke danke
Script genommen, 20 User rein und gut.
Ok, ein paar weniger waren's
Danke danke danke
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
@JTH: Ja. Das primäre hier beschriebene Problem (springender Inhalt) löst das Script perfekt. Danke!
Es 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.
Es 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.
Re: Script "Ignoreliste"
Ich hab zwar nicht vor, das Skript wirklich zu benutzen, aber das war mir auch noch aufgefallen Ich vermute, der Grund dahinter war auch der Grund, warum das Skript aufm Smartphone vorhin nicht funktioniert hat (dort kommt ein Element mit Klasse responsive-show zum Tragen, aufm Desktop ein anderes mit responsive-hide – die beiden haben unterschiedlichen Inhalt).heisenberg 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.
Ich 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
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);
})();
Manchmal bekannt als Just (another) Terminal Hacker.
Re: Script "Ignoreliste"
Danke, die dicke Kanone ist nun auch gepatcht.
https://git.aero2k.de/?p=dfde/hide-stuf ... ff.user.js
https://git.aero2k.de/?p=dfde/hide-stuf ... ff.user.js
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
- whisper
- Beiträge: 3379
- Registriert: 23.09.2002 14:32:21
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: Script "Ignoreliste"
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
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
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
Zuletzt geändert von heisenberg am 04.03.2024 13:38:11, insgesamt 1-mal geändert.
Re: Script "Ignoreliste"
Ja, und wenn du es schaffst, es zu verkaufen, darfst du das auch
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
@TRex:
Wie nutzt man Dein Script? Mit welchem Plugin/Browser? Firefox + Firemonkey? Wie/wo setze ich die hidden_users bzw. hidden_threads? (Ich lese im Code dass das via localStorage gespeichert wird.)
Du schriebst etwas von Buttons. Ich sehe keine Buttons, die hier erscheinen. (Bookworm, Firefox 123, Firemonkey 2.72)
Wie nutzt man Dein Script? Mit welchem Plugin/Browser? Firefox + Firemonkey? Wie/wo setze ich die hidden_users bzw. hidden_threads? (Ich lese im Code dass das via localStorage gespeichert wird.)
Du schriebst etwas von Buttons. Ich sehe keine Buttons, die hier erscheinen. (Bookworm, Firefox 123, Firemonkey 2.72)
Re: Script "Ignoreliste"
Ich sehs auch gerade, ich habs mit dem letzten Commit kaputt gemacht. Ich war der Meinung, das so getestet zu haben...
https://git.aero2k.de/?p=dfde/hide-stuf ... 2faff1339a
der vorige Commit tut noch, ich werd den anderen reverten und das mit ner 0.4.1 versehen. Später. Sieht dann so aus:
Threads werden rechts mit dem Auge ausgeblendet, User haben dafür rechts im Profil eine Mülltonne.
https://git.aero2k.de/?p=dfde/hide-stuf ... 2faff1339a
der vorige Commit tut noch, ich werd den anderen reverten und das mit ner 0.4.1 versehen. Später. Sieht dann so aus:
Threads werden rechts mit dem Auge ausgeblendet, User haben dafür rechts im Profil eine Mülltonne.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
Ok. Mit der älteren Variante, die noch springt (hash: bec7e9530e05a01b36c0a57fee74640d41ccca36) geht es. (Thread hide, Thread unhide. User hide. Thread temp unhide, User temp unhide)
Aber wie bekomme ich den User wieder weg aus der Sperrliste? Wenn ich mir den Code anschaue, dann sehe ich da ein unhide_users, ein unhide_threads und ein unhide_thread, aber kein unhide_user (ohne s). Das gibt's dann wohl aktuell nicht.
Aber wie bekomme ich den User wieder weg aus der Sperrliste? Wenn ich mir den Code anschaue, dann sehe ich da ein unhide_users, ein unhide_threads und ein unhide_thread, aber kein unhide_user (ohne s). Das gibt's dann wohl aktuell nicht.
Das sieht doch insgesamt schon wirklich sehr gut aus! Fishing for Compliments?
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
@JTH: Danke nochmal für das Script. Ich hatte natürlich auch etwas gegraben. Aber MutationsObserver habe ich nicht gefunden.
Ich habe mir jetzt auf Deiner Basis ein Script für nebenan.de gebastelt, womit ich gewerbliche Beiträge und tendenziell Anderes ausblenden kann:
Ich habe mir jetzt auf Deiner Basis ein Script für nebenan.de gebastelt, womit ich gewerbliche Beiträge und tendenziell Anderes ausblenden kann:
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);
})();
- whisper
- Beiträge: 3379
- Registriert: 23.09.2002 14:32:21
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: Script "Ignoreliste"
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:
Super Idee!
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
Ich habe das Skript jetzt nochmal ein klein wenig erweitert, so dass man auch Themen mit angegebenem Betreff verstecken kann:
https://codeberg.org/megabert/script-pa ... anforum.de
https://codeberg.org/megabert/script-pa ... anforum.de
Re: Script "Ignoreliste"
aber für "KI" gibts sicher viele false positives
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
Es wird der komplette Betreff auf Gleichheit geprüft, kein Regex oder "beinhaltet" Vergleich.aber für "KI" gibts sicher viele false positives
Edit: Ich hab's jetzt zu RegEx-Match umgebaut.
Edit: Ich blende jetzt auch die Posts der Nutzer inThread in der IgnorierListe aus. (Funktioniert langsam richtig gut. Uh! Oh!)
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
Ich habe jetzt noch ein Script DF-Hide-User-Posts.js geschrieben, dass auch die Posts IN-Thread entfernt. Es kann auch die Signaturen aller Posts entfernen.
https://codeberg.org/megabert/script-pa ... anforum.de
Das Sourcecodeverzeichnis im Repository wurde von greasemonkey zu firemonkey umbenannt.
https://codeberg.org/megabert/script-pa ... anforum.de
Das Sourcecodeverzeichnis im Repository wurde von greasemonkey zu firemonkey umbenannt.
Re: Script "Ignoreliste"
Damit man nicht irgendwann anfängt, halb phpBB nachzubauen … :
Signaturen kann man einfach im „Persönlichen Bereich“ unter „Einstellungen“, „Anzeigeoptionen“ über die Einstellung „Signaturen anzeigen“ abschalten.
Manchmal bekannt als Just (another) Terminal Hacker.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
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.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
Ich hatte jetzt noch den Wunsch, das Script automatisch aktualisieren zu lassen, weil ich mehrere Firefox-Instanzen synchronsieren möchte.
Das geht mit einer UpdateURL in den Metadaten des Scriptes:
// ==UserScript==
// @name DF_Hide_User_Posts
// @author some_random_dude
// @version 2
// @namespace some_random_dude
// @match https://debianforum.de/forum/viewtopic.php*
// @updateURL https://www.yourserver.de/downloads/df_hide_user_posts.user.js
// @run-at document-start
// ==/UserScript==
Anschließend kann man das manuell Update im Firemonkey mit dem Update-Knopf testen und das automatische Update über die Checkbox "Auto-Update" aktivieren.
Wichtig dabei ist, bei jeder Änderung die Versionsnummer im Script auf dem Server um eines zu erhöhen. Was mir noch nicht gelungen ist, ist dass Script über einen Server mit Passwortschutz aktualisieren zu lassen (HTTP Basic Auth). Dafür wollte ich Benutzername und Passwort in der URL mit angeben. Für Firefox ist das noch unterstützt, aber als veraltet gekennzeichnet. [1] In Google Chrome ist die Funktionalität seit Version 59 entfernt. [2] Funktionieren tut es in Firefox aber trotzdem nicht.
ChatGPT empfiehlt als Alternative als primitiven Zugangsschutz, das Passwort per HTTP-GET-Variable anzugeben und als Wrapper ein serverseitiges Script zu verwenden, so in der Art:
@updateURL https://www.yourserver.de/get_script.php?access_token=skdlyfjdlkfsjdklsfkjl34r532lrksf.dsfslfk
Nachtrag
Hier mal eine Beispiel-Konfiguration für einen Zugriffsschutz per GET-Variable:
Das ist das PHP-Wrapper-Script z. B. mit dem Namen df_hide_user_posts.user.js.php
Das ist die zugehörige Update-URL:
https://yourserver.tld/downloads/df_hide_user_posts.user.js.php?access_token=dein.geheimes.passwort
Das ist die zugehörige Apache-Konfiguration (für Apache v2.4+) für das Download-Verzeichnis:
[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication
[2] https://chromestatus.com/feature/5669008342777856
Das geht mit einer UpdateURL in den Metadaten des Scriptes:
// ==UserScript==
// @name DF_Hide_User_Posts
// @author some_random_dude
// @version 2
// @namespace some_random_dude
// @match https://debianforum.de/forum/viewtopic.php*
// @updateURL https://www.yourserver.de/downloads/df_hide_user_posts.user.js
// @run-at document-start
// ==/UserScript==
Anschließend kann man das manuell Update im Firemonkey mit dem Update-Knopf testen und das automatische Update über die Checkbox "Auto-Update" aktivieren.
Wichtig dabei ist, bei jeder Änderung die Versionsnummer im Script auf dem Server um eines zu erhöhen. Was mir noch nicht gelungen ist, ist dass Script über einen Server mit Passwortschutz aktualisieren zu lassen (HTTP Basic Auth). Dafür wollte ich Benutzername und Passwort in der URL mit angeben. Für Firefox ist das noch unterstützt, aber als veraltet gekennzeichnet. [1] In Google Chrome ist die Funktionalität seit Version 59 entfernt. [2] Funktionieren tut es in Firefox aber trotzdem nicht.
ChatGPT empfiehlt als Alternative als primitiven Zugangsschutz, das Passwort per HTTP-GET-Variable anzugeben und als Wrapper ein serverseitiges Script zu verwenden, so in der Art:
@updateURL https://www.yourserver.de/get_script.php?access_token=skdlyfjdlkfsjdklsfkjl34r532lrksf.dsfslfk
Nachtrag
Hier mal eine Beispiel-Konfiguration für einen Zugriffsschutz per GET-Variable:
Das ist das PHP-Wrapper-Script z. B. mit dem Namen df_hide_user_posts.user.js.php
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";
}
}
?>
https://yourserver.tld/downloads/df_hide_user_posts.user.js.php?access_token=dein.geheimes.passwort
Das ist die zugehörige Apache-Konfiguration (für Apache v2.4+) für das Download-Verzeichnis:
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>
[2] https://chromestatus.com/feature/5669008342777856
Zuletzt geändert von heisenberg am 15.10.2024 18:09:09, insgesamt 2-mal geändert.
Re: Script "Ignoreliste"
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.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script "Ignoreliste"
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.