Récupérer un flux rss en ligne de commande

Le mar. 09 novembre 2010 par Kasey

J'ai ressemant codé un script python permettant de récupérer une flux rss en ligne de commande. Si vous etes intéréssé la suite est dans le post (code + exemple)

Exemple :

rssReader http://kasey.fr/atomflux.xml 4

Donne :

############
# kasey.fr #
############

Infra serveur :: SAN :
----------------------

Mes notes sur le second cours d'infra serveur :

SAN

NAS

Baies dédiées constructeurs

Nouveau blog en ligne :
-----------------------

Voila, cela fait maintenant plusieurs jours que j'avais mis en place un blog en test sur teaser.kasey.fr.

Je viens donc juste de basculer sur le nouveau système de blog en python. Surtout, n'hésitez pas a me faire remonter vos remarques/problèmes (et il va y en avoir :) )

SimpleHTTPServer improved pour Mac OS X :
-----------------------------------------

Je ne sais pas si vous connaissez le super online script python permettant de faire un serveur HTTP :

python -c 'import SimpleHTTPServer;SimpleHTTPServer.test()'
Et bien dans la suite du post je vous livre un script qui permet d'améliorer un peux tout ça :)

ToIP Step 1 :
-------------

Au programme :

Modélisation

Evolution de la téléphonie

Apparition de la VoIP

RTC

Et voila le code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#! /opt/local/bin/python
# -*- coding: utf-8 -*-
import re,sys,htmlentitydefs
from feedparser import parse
p = re.compile(r'<.*?>')

myfeed = parse("http://news.google.fr/news?pz=1&cf=all&ned=fr&hl=fr&topic=b&output=rss")
nb_entries = 3

def remove_html_tags(data):
    return p.sub('', data)

def unescape(text):
    def fixup(m):
        text = m.group(0)
        if text[:2] == "&#":
            try:
                if text[:3] == "&#x":
                    return unichr(int(text[3:-1], 16))
                else:
                    return unichr(int(text[2:-1]))
            except ValueError:
                pass
        else:
            try:
                text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
            except KeyError:
                pass
        return text # leave as is
    return re.sub("&#?\w+;", fixup, text)

if len(sys.argv) == 2 or len(sys.argv) == 3 :
    myfeed = parse(sys.argv[1])
else:
    print "rssreader url [nb_entries]"
    quit()

if len(sys.argv) == 3:
    nb_entries = int(sys.argv[2])

i=0

print '#'*(len(myfeed.feed.title)+4)
print '# '+myfeed.feed.title+' #'
print '#'*(len(myfeed.feed.title)+4)+"\n"

for item in myfeed['entries']:
    i=i+1
    if i <= nb_entries:
        print item.title+" :"
        print '-'*(len(item.title)+2)+"\n"
        print unescape(remove_html_tags(item.description))+"\n"
    else:
        quit()