Duplication RSS

Aujourd’hui, nous allons nous intéresser à un problème qui est survenu il y a quelques temps sur mon système Synology. Il s’agissait d’un dysfonctionnement lors de la récupération des flux RSS par le client Download Station.

Remarque : Il semblerait que ces bugs aient été liés au version suivantes : 3.3-2382 & 3.3-2383.

Certaines personnes (en plus de moi-même) ont rencontré ce problème et ont remonté ce problème sur les forums officiels de Synology. Les symptômes étaient les suivants : Certains des flux RSS étaient dupliqués lors de l’import.
Toutefois, même si la solution a été apportée via des correctifs sur le client Download Station. Voici la marche à suivre pour éviter que ce problème ne se reproduise (si par exemple, vous ne voulez pas mettre à jour votre Synology).

La solution consiste a exécuter la requête suivante, sur la console de votre Disk Station :

/usr/syno/pgsql/bin/psql -t -A -U admin -d download -c 'CREATE RULE "RSSDuplicateFix"
AS ON INSERT TO rss_item DO delete from rss_item dupe1 where exists
(select * from rss_item dupe2 where dupe2.feed_id = dupe1.feed_id
and dupe2.title = dupe1.title and dupe2.url = dupe2.url and dupe2.id < dupe1.id);'

Après avoir exécuté le code suivant, le message CREATE RULE devrait apparaître. Cette règle PGSQL, qui compare ce qui est déjà présent lors de la lecture de la mise à jour du flux RSS. Elle regarde si la tâche est déjà présente ou non. Pour se faire, elle va regarder les champs suivants : feed_id, title et enfin l’url. Si elle trouve un ou plusieurs items déjà présent, alors l’import de la tâche ne sera pas effectué. Les nouveaux ajouts ne seront pas effectués et seul restera le seul et unique flux original.

Pour supprimer cette règle, il suffit simplement d’exécuter la requête suivante, sur la console de votre Disk Station :
/usr/syno/pgsql/bin/psql -t -A -U admin -d download -c 'DROP RULE "RSSDuplicateFix" ON rss_item'

Lien pour marque-pages : Permaliens.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *