FreshRSS: Duplettenerkennung
Seit einiger Zeit nutzt ich FreshRSS, um meine RSS-Feeds zu verwalten. Ein großes Problem, das dabei auftreten kann, ist die Entstehung von Duplikaten. Besonders dann, wenn man mehrere RSS-Feeds von derselben Quelle abonniert, wie zum Beispiel bei Regionalteilen einer Tageszeitung oder verschiedenen Kategorien eines Blogs.
Wenn ein Post in mehreren Kanälen veröffentlicht wird, kann es zu Duplikaten kommen. FreshRSS hat zwar eine eingebaute Duplettenerkennung, aber diese funktioniert leider nur pro RSS-Abo. Das bedeutet, dass wenn ein Post in mehreren Feeds erscheint, es als separates Element behandelt wird und somit Duplikate entstehen.
Um dieses Problem zu lösen, habe ich eine SQL-basierte Lösung verwenden, die beim Aktualisieren der Feeds Duplikate als gelesen markiert. Hier ist ein Beispiel für den SQL-Code, den du verwenden kannst:
UPDATE freshrss_entry
SET is_read = 1
WHERE id NOT IN (
SELECT MIN(id)
FROM freshrss_entry
GROUP BY title
);
Hinweis: Der obige Code ist ein Platzhalter und sollte an deine spezifische Datenbankstruktur angepasst werden. Du kannst diesen SQL-Code in den Cron-Job für die Aktualisierung von FreshRSS integrieren, um sicherzustellen, dass Duplikate regelmäßig entfernt werden. Hier ist ein Beispiel, wie du den SQL-Code in einen Cron-Job einbinden kannst:
* * * * * /usr/bin/php /pfad/zu/freshrss/cli/actualize-user.php --user <Benutzer> > /dev/null 2>&1 && /usr/bin/mariadb --defaults-extra-file=/pfad/zu/.my.cnf -D <Datenbank> -e "UPDATE freshrss_entry SET is_read = 1 WHERE id NOT IN (SELECT MIN(id) FROM freshrss_entry GROUP BY title);"
Leider ist diese Lösung nicht perfekt. Es gibt zwei Hauptnachteile: Erstens werden nicht alle Duplikate erkannt, da manchmal Titel oder andere Metadaten geändert werden, was dazu führt, dass die Duplettenerkennung nicht alle Dopplungen erfasst. Zweitens wird in der Weboberfläche nach dem Abrufen der Feeds manchmal eine falsche Anzahl neuer Posts angezeigt.
Die SQL-basierte Lösung hilft dabei, viele Duplikate zu erkennen, aber sie ist nicht perfekt. Es gibt noch Raum für Verbesserungen, insbesondere bei der Erkennung von Duplikaten mit leicht geänderten Titeln oder Metadaten. Wenn du eine bessere Lösung hast, wäre ich sehr daran interessiert, diese zu hören!