Je n'utilise aucun logiciel pour Atom ou RSS. Mais comme les
fichiers RSS de Radio France sont en XML, il est très simple de
les manipuler un peu et d'en produire un fichier en HTML, comme
celui dans cette copie d'écran:
Transformer XML en HTML est une des applications pour XSLT (“Extended Style Language Transformations”). Le cœur de ma procédure est donc un stylesheet, qui contient des règles pour la transformation. Il faut ensuite un logiciel (“Xslt-Processor”) qui lit le fichier RSS et mon fichier XSL pour en produire un fichier HTML.
Enfin, j'ai écris un script pour
Dans la chronologie de l'exécution, le script qui organise tout, serait la première pièce à vous montrer. Mais ce script est facile à écrire et – de plus – pas forcément le même pour chaque interpréteur de commandes. J'utilise la Bash sous Linux et mon Xslt-Processeur est xsltproc, mais le stylesheet va fonctionner aussi dans d'autres contextes.
Voici donc le stylesheet (scroll):
<?xml version="1.0" encoding="UTF-8"?> <!-- ©2020-2020 Michael Uplawski <michael.uplawski@uplawski.eu> Created with nothing. --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" omit-xml-declaration="yes"/> <!-- match the root-tag --> <xsl:template match="/"> <!-- matches the root-tag --> <xsl:message> <xsl:text>handling root</xsl:text> </xsl:message> <xsl:apply-templates select="//rss"/> </xsl:template> <!-- traverse the xml-structure to where we want to go. This can serve other purposes, later --> <xsl:template match="rss"> <xsl:message> <xsl:text>handling rss</xsl:text> </xsl:message> <xsl:apply-templates select="channel"/> </xsl:template> <!-- match the channel tag --> <xsl:template match="channel"> <xsl:message> <xsl:text>handling channel </xsl:text> </xsl:message> <html> <head> <title><xsl:value-of select="title"/></title> <style type="text/css"> body { background-color:black; font-family:"Linux Biolinum"; font-size: 15pt; } table { border:1px solid black; border-radius:5px; background-color:black; border-spacing:0; cell-spacing:3px; margin: 1em; } th, td { border:1px solid black; border-radius:5px; background-color:#f0f0e0; } a { font-weight:bold; } h1 id="" {color: #ffff00;} </style> </head> <body> <h1><xsl:value-of select="title"/></h1 id=""> <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="link"/> </xsl:attribute> <xsl:value-of select="link"/> </xsl:element> <table> <tr> <th>Émission (mp3)</th> <th>Titre</th> <th>Détails</th> </tr> <xsl:apply-templates select="item"/> </table> <p>Ω</p> </body> </html> </xsl:template> <xsl:template match="item"> <tr> <xsl:call-template name="emission"/> <xsl:apply-templates select="title"> <xsl:with-param name="link" select="link"/> </xsl:apply-templates> <xsl:apply-templates select="description"/> </tr> </xsl:template> <xsl:template name="emission"> <td> <xsl:element name="a"> <xsl:attribute name="href"><xsl:value-of select="enclosure/@url"/></xsl:attribute> <xsl:value-of select="pubDate"/> </xsl:element> </td> </xsl:template> <xsl:template match="item/title"> <xsl:param name="link"/> <td> <xsl:element name="a"> <xsl:attribute name="href"><xsl:value-of select="$link"/></xsl:attribute> <xsl:value-of select="."/> </xsl:element> </td> </xsl:template> <xsl:template match="item/description"> <td><xsl:value-of select="."/></td> </xsl:template> </xsl:stylesheet> <!-- EOF -->
Si le stylesheet est nécessaire pour la transformation de XML (RSS) en HTML, ce que je fais dans le script est un peu plus ce que je souhaite, personnellement.
A part de mon choix d'un Xslt-Processeur, quelques détails sont du a mes propres préférences et pas techniquement obligatoires :
La modification du script ne devrait pas être trop compliqué, si vous le souhaitez. Voici la version actuelle :
#!/bin/bash # ©2020-2020 Michael Uplawski <michael.uplawski@uplawski.eu> # Use ths script at your own risk, modify it as you please. # But maybe leave the copyright-notice intact. Thank You. if [ $# == 0 ] then echo -e "=========================================" echo -e "ERROR! Argument missing!" echo -e "\tExemples:" echo -e "\tLes Chemins De La Philosophie: 10467" echo -e "\tÀ Présent: 21450" echo -e "\tLa Question Du Jour: 16362" echo -e "=========================================" echo -e "Hit any key to exit" read a exit 1 fi if [ ! `which xsltproc` ] then echo -e "=========================================" echo -e "ERROR! xsltproc is not found in the path." echo -e "=========================================" echo -e "\tHit any key to exit" read a exit 2 fi # --------- SOME DEFINITIONS ---------- # The Name of the RSS-provider: RSS_NAME='France Culture www.franceculture.fr' # The part of the RSS-url which precedes the rss-file RSS=http://radiofrance-podcast.net/podcast09/ # The xsl stylesheet which produces html XSL=~/bin/planks_and_nails.xsl NBR=$1 # The browser to pipe the result to # BROWSER='/usr/bin/lynx' # BROWSER='/usr/bin/lynx' # BROWSER='/usr/bin/w3m' BROWSER='/usr/bin/firefox' # a temporary xml-file FL=`mktemp --suffix=.xml` # a temporary html-file HTML=`mktemp --suffix=.html` # --------> ACTION <--------- # First download the rss-file torify curl -s -A '' "$RSS"rss_"$NBR".xml > $FL # ... then transform it to HTML xsltproc -o $HTML $XSL $FL # ... then tidy up the HTML-code if tidy is available if [ `which tidy` ] then tidy -i -m -asxhtml --output-xhtml yes --strict-tags-attributes yes --add-xml-decl yes --add-xml-space yes --doctype strict -utf8 "$HTML" fi # <--------- END Action ---------> # Display $BROWSER $HTML # remove temporary files sleep 10 rm -f $FL rm -f $HTML
Les différents flux des émissions de Radio-France portent un suffixe numérique, qui les identifie. Trois exemples :
Pour connaître ce numéro, il faut se rendre sur la page Web
d'une émission sur franceculture.fr. Cliquez sur le lien
S'ABONNER, puis tenez la souris au-dessus de RSS,
comme sur la copie d'écran pour « Les Nuits de France
Culture » :
Vous devrez voir le numéro à la fin de l'URL qui correspond à
ce flux RSS.
Si le script est ~/bin/planks_and_nails (« des_planches_et_des_clous ») et le stylesheet est ~/bin/planks_and_nails.xsl , comme noté dans le script, la commande suivante va produire une version du Flux RSS pour l'émission « Les Chemins de la Philosophie » : :~$ bin/planks_and_nails 10467
Comme je m'intéresse aux toujours mêmes flux de seulement six émissions, j'ai ajouté une autre étappe d'automatisation.
Il existent des logiciels qui fournissent un simple interface graphique aux scripts shell. Exemple :
Je suis plus à l'aise avec Yad, mais les autres font à peu près la même chose: Dialog, Whiptail, Zenity peuvent remplacer Yad. Voici alors un autre script, qui ne fait pas plus que créer un dialogue graphique qui me propose les émissions de ma liste. C'est très court. Dans le dialogue, je peux marquer l'entrée pour qui je souhaite voir l'historique des émissions et ensuite pousser le bouton 'OK'. À ce moment le script d'origine est appelé pour la suite.
#!/bin/bash emission=`yad --title="choose RSS" --num-output --entry-label "Émission" --entry "Les pieds sur terre" "La question du jour" "À présent" "Les chemins de la philosophie" "La méthode scientifique" "La série documentaire"` # emission is a 1-based array. if [ $emission ] then # each numbrer refers to 1 emission. This array is # 0-based, hence the 0 at the beginning. nums=(0 10078 16362 21450 10467 14312 10177) echo "emission is $emission, number is ${nums[$emission]}" ref=${nums[$emission]} planks_and_nails $ref fi
La page générée vous laisse le choix de, soit, télécharger le fichier mp3 d'une émission ou de vous rendre sur la page Web de l'émission, si vous souhaitez vous informer sur le contexte ou voir les références et recommandations de littérature. En tout cas, vous voyez rapidement l'historique de vos émissions préférées sans avoir besoin de naviguer sur le site de France Culture.