Conky : flux RSS

Hier j'ai cherché une bonne partie de la soirée pour trouver pourquoi mes flux rss s'affichaient difficilement avec conky.

Voilà un compte rendu des flux RSS sous conky.

Pour commencer, voilà le script conky-rss (que j'ai dans le répertoire /opt/sbin) :

conky-rss

#!/bin/bash
# RSS Display Script by Bill Woodford (admin@sdesign.us) v1.0
#
# This script is designed to output story titles for most any RSS Feed.
#
# This script depends on curl.  Please ensure it is installed and in your $PATH
# Gentoo: emerge -av net-misc/curl
# Debian: apt-get install curl
# Homepage: http://curl.haxx.se/
#
# Usage:
# .conkyrc:     ${execi [time] /path/to/script/conky-rss.sh URI LINES TITLENUM}
#       URI = Location of feed, ex. http://www.gentoo.org/rdf/en/glsa-index.rdf
#       LINES = How many titles to display (default 5)
#       TITLENUM = How many times the title of the feed itself is specified, usually 1 or 2 (default 2)
#
# Usage Example
#               ${execi 300 /home/youruser/scripts/conky-rss.sh http://www.foxnews.com/xmlfeed/rss/0,4313,1,00.rss 4 2}

#RSS Setup - Don't change unless you want these values hard-coded!
uri=$1							#URI of RSS Feed
lines=$2						#Number of headlines
titlenum=$3						#Number of extra titles

#Script start
#Require a uri, as a minimum
if [[ "$uri" == "" ]]; then
	echo "No URI specified, cannot continue!" >&2
	echo "Please read script for more information" >&2
else
	#Set defaults if none specified
	if [[ $lines == "" ]]; then lines=5 ; fi
	if [[ $titlenum == "" ]]; then titlenum=2 ; fi

	#The actual work
	curl -s --connect-timeout 30 $uri |\
	sed -e 's/<\/title>/\n/g' |\
	grep -o '.*' |\
	<span class="cmd">sed</span> -e 's/<title>//' |\
	<span class="cmd">head</span> -n $(($lines <span class="ope">+</span> $titlenum)) |\
	<span class="cmd">tail </span>-n $(($lines))
fi

</pre>


<h3>utilisation</h3>

<p>Voici un exemple d'utilisation :</p>



<pre class="script">
TEXT
${<span class="cmd">exec</span>i 300 /opt/sbin/conky-rss.sh http://planet.ubuntu-fr.org/feed/rss2 5 1}
</pre>


<p>Ceci affichera les titres des 5 derniers articles du planet ubuntu-fr. L'affichage s'actualisera toutes les 300 millisecondes.</p>

<p>Cependant, les accents passent mal avec conky. Pour régler ce probleme, j'utilise la commande <span class="cmd">sed</span> :</p>



<pre class="script">
TEXT
${<span class="cmd">exec</span>i 300 /opt/sbin/conky-rss.sh http://planet.ubuntu-fr.org/feed/rss2 5 1  | <span class="cmd">sed</span> s/\[éèêÉÈÊ\]/e/g | <span class="cmd">sed</span> s/\[âàÂÀ\]/a/g | <span class="cmd">sed</span> s/\[îÎ\]/i/g | <span class="cmd">sed</span> s/\[ôÔ\]/o/g | <span class="cmd">sed</span> s/\[ùûÛÙ\]/u/g | <span class="cmd">sed</span> s/\[çÇ\]/c/g}
</pre>


<p>Ainsi, je supprime tous les caractères accentués du flux (en attendant une meilleure solution). Mais il reste encore un problème : le flux est tronqué. <br/>En effet, la taille du buffer est trop petite par défaut, il faut l'augmenter en ajoutant au début de votre conkyrc (avant TEXT) :</p>



<pre class="script">
text_buffer_size 512
</pre>


<p>Et voilà, après ces quelques étapes, vos flux s'afficheront convenablement (mais sans accents) !</p>
</div>
<p class="caption">27/07/08, 18:18</p>

</div><!-- breve-bottom-->
</div><!-- breve-top-->
</div><!-- breve-->

<div id="commentaires">
<div id="commentaires-top">
<div id="commentaires-bottom">

<h2>Commentaires</h2>

<div class="commentaire">
  <p class="commentaireAuteur">pmd - 15-10-2008, 13:20 :</p>
  <p class="commentaireContenu">Dans les dépôts ubuntu, il y a une fonction rss dans le paquet conky. <br />
Pour plus d'aide : <a href="http://conky.sourceforge.net/variables.html">conky.sourceforge.net/variables.html</a><br />
Cependant, dans les dépôts debian, le mainteneur du paquet ne voulant pas l'ajouter ta solution va me servir :D <br />
<br />
PS : Putain de robots ...</p>
</div>

<div class="commentaire">
  <p class="commentaireAuteur">Hells_Dark - 16-10-2008, 13:10 :</p>
  <p class="commentaireContenu">Je vais virer ce spam une fois rentré chez moi ;)<br />
Merci pour l'alternative, je vais l'étudier.</p>
</div>


<form id="commentaireForm" action="addComment.php" method="post">
<fieldset>
<legend>Ajouter un commentaire</legend>
  <p>
    <label for="auteur">Pseudo : </label>
    <input type="text" id="auteur" name="auteur" value=""/>
  </p>
  <p>
    <label for="contenu">Contenu : </label><br/>
    <textarea id="contenu" name="contenu" rows="8" cols="40"></textarea>
  </p>
  <p>
    <label for="verifbot">Répondez à cette opération : <img src="pics/pix_operation.gif" alt="" /> = ? </label>
    <input type="text" id="verifbot" name="verifbot" />
  </p>
  <p>
    <input type="submit" name="comSub" value="ajouter" />
    <input type="hidden" name="id" id="id" value="201" />
    <input type="hidden" name="titre" id="ftitre" value="Conky : flux RSS" />
  </p>
</fieldset>
</form>

</div><!-- commentaires-bottom-->
</div><!-- commentaires-top-->
</div><!-- commentaires-->

<div id="footer">
 <ul>
    <li>Flux <a href="rss">RSS</a> & <a href="atom">Atom</a></li>
    <li><a href="http://jigsaw.w3.org/css-validator/validator?uri=breves.openlimeade.net/breve.php">CSS valid</a></li>
    <li><a href="http://validator.w3.org/check?uri=referer">XHTML valid</a></li>
    <li>Powered by <a href="cv" title="Voir mon CV">myself</a>, php & GNU/Linux</li>
  </ul>
</div>

<!-- <Google-Analytics> -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-188582-3");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- </Google-Analytics> -->

</body>
</html>