Concilier lifearea (agrégateur) et les patates

Je ne sais pas si certain dans d’entre vous connaissent l’excellent site L’actu en patate : c’est un site où l’auteur publie chaque jour une petite BD sur l’actualité. Seul bémol, le flux rss de ce site est assez nul. Par nul je veux dire que ce flux permet seulement de voir si il y a des nouveautés, mais ne permet pas de les visualiser avec liferea (l’agrégateur de gnome).

Cependant, j’ai découvert il y a peu une fonctionnalité sympa de ce logiciel : il est possible de personnaliser les flux avec des scripts.

Plus concrètement, un flux rss est fichier xml qui contient les dernières nouveautés. Il suffit alors de créer un script qui modifie le fichier original (lu sur l’entrée standard) en un nouveau fichier (la sortie standard) qui contient le contenu que l’on désire.

Pour ceux que ça intéressent, je vous donne le script ci-dessous qui vous permettra de lire l’actu en patate depuis liferea.
Pour faire simple, il récupère dans le flux rss original, la page du blog en question, puis la télécharge et récupère alors le contenu désiré (image + commentaire) et créée à partir de ce contenu un nouveau flux rss.

Le fichier sauv permet de sauvegarder la liste des articles déjà traités, ainsi on ne télécharge le contenu uniquement si l’article en question n’a pas déjà été rencontré.

#!/bin/sh
# http://feeds.feedburner.com/lemonde/vidberg?format=xml
DIR="/home/cantor/.bin/liferea/vidberg"
URL="http://vidberg.blog.lemonde.fr/files/"
RSS="$DIR/tmp/rss"
HTML="$DIR/tmp/html"
LAST1="$DIR/tmp/last1"
LAST2="$DIR/tmp/last2"
SAUV="$DIR/vidberg.data"

touch $SAUV

echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<?xml-stylesheet type=\"text/xsl\" media=\"screen\" href=\"/~d/styles/rss2full.xsl\"?>
<?xml-stylesheet type=\"text/css\" media=\"screen\" href=\"http://feeds.feedburner.com/~d/styles/itemcontent.css\"?>
<rss>
<channel>
   <title>L'actu en patates</title>
   <link>http://vidberg.blog.lemonde.fr</link>
   <description>Les dessins d'actualité et d'humeur de Martin Vidberg</description>"

> $LAST1
> $LAST2
> $RSS

cp $SAUV $LAST1

while read line ;do 
   echo $line >> $RSS
done

echo -n "   ";
grep -m 1 pubDate $RSS


grep guid $RSS | sed 's/.*\(http.*\)<.*/\1/' | while read line ;do
   if [ "$line" != "" ]; then 
       if [ ! $(grep $line $LAST1) ]; then
	   > $HTML
	   echo $line >> $LAST2
	   wget -q -O $HTML "$line"
	   echo  "   <item>"
	   echo -n "      "
	   grep -B 7 guid.*$line $RSS | grep title
	   echo "      <link>$line</link>"
	   echo "      <guid>$line</guid>"
	   echo -n "      "
	   grep -B 6 guid.*$line $RSS | grep pubDate 
	   echo -n "      <description><![CDATA["
	   sed ':s;N;s/\n/ /;bs' $HTML | awk -F "entry\">" {'print $2'} | awk -F "<table" {'print $1'} | sed 's/[ \t]*<p/<p/'
	   echo "]]></description>"
	   echo "   </item>"
       fi
   fi
done
echo "</channel>"
echo "</rss>"

cat $LAST2 $LAST1  | head -n 100 > $SAUV

je n’ai pas réussi à transposer pour moi.

Que dois modifier dans ton script? Il y a un truc que je ne comprend pas.

Dois créer le dossier /home/limax/.bin/liferea/vidberg ???
Chez moi il n’y est pas!!!