6.14. Générateur de flux RSS

6.14.1 RSS()

Karrigell fournit une classe, RSS(), vous permettant de facilement générer des flux RSS 2.0.

Utilisation de RSS() :

from k_rss import RSS
rss = RSS(parameters)

Les paramètres de RSS() sont nommés. En voici la liste :
  • title (obligatoire)
  • link (obligatoire)
  • description (obligatoire)
  • language
  • copyright
  • managingEditor
  • webMaster
  • pubDate
  • lastBuildDate
  • category
  • generator
  • docs
  • cloud
  • ttl
  • image
  • rating
  • skipHours
  • skipDays

6.14.2 AddItem()

Une fois le "channel" créé à l'aide de RSS(), vous pouvez ajouter des éléments à l'aide de la méthode AddItem().
Utilisation de AddItem():

rss.AddItem(parameters)

Les paramètres de AddItem() sont nommés. En voici la liste :
  • title
  • link
  • description
  • author
  • category
  • comments
  • enclosure
  • guid
  • pubDate
  • source
Au minimum, title ou description doit être passé en argument à AddItem().

6.14.3 Types des paramètres

Les paramètres de RSS() et de AddItem() peuvent être des types suivants :
  • texte : une chaine de caractère ou une chaine unicode.
  • date : datetime.datetime convertit en chaine de caractère en respectant le bon formatage. La "Timezone" est gérée (cf note).
  • image : un dictionaire contenant les clés suivantes :
    • url (obligatoire)
    • title (obligatoire)
    • link (obligatoire)
    • width
    • height
    • description
Note : La "Timezone" correspond au décalage horaire et prend en charge l'heure d'été. Si aucune "Timezone" est spécifiée, la "Timezone" locale au serveur est utilisée. Si votre serveur est dans une "Timezone" mais que les dates que vous utilisez se trouvent dans une autre "Timezone" vous devez spécifier la bonne "timezone" (pour plus détails, voir la doc python).

6.14.4 Render() and RenderInFile()

Pour générer un flux RSS, vous pouvez utiliser Render() or RenderInFile().

Render() accepte un seul paramètre : l'encodage de sortie (optionnel, l'encodage de sortie par défaut est iso-8859-1).
Render() retourne une chaine unicode correctement formattée.

RenderInfile() accepte deux paramètres : un nom de fichier (obligatoire) ainsi que l'encodage de sortie (optionnel).
RenderInfile() a le même fonctionnement que Render() mais génère un fichier et ne retourne rien.

6.14.5 Exemple

from k_rss import RSS
import datetime
rss = RSS(title="Karrigell", 
          description="Flexible Python web framework, with a clear and intuitive syntax.", 
          link="http://www.karrigell.com",
          webMaster="quentel.pierre@wanadoo.fr (Pierre Quentel)", 
          language="en",
          generator="Karrigell RSS generator",
          image={"url":"http://karrigell.sourceforge.net/images/karrigell_skeudenn.png",
                 "title":"Karrigell",
                 "link":"http://www.karrigell.com"}
          )
rss.AddItem (title='Last item', 
             description='My most recent item.',
             pubDate = datetime.datetime.now())
rss.AddItem (title='First item', 
             description='My first item.',
             pubDate = datetime.datetime(year=2009, month=3, day=16, hour=22, minute=34, second=17))
print rss.Render()

Dans cet exemple, un flux RSS est généré avec comme titre "Karrigell". Deux éléments sont ajoutés.