]>
gitweb.pimeys.fr Git - dtc.git/blob - fetch_dtc.py
2 # -*- encoding: utf-8 -*-
4 """Pour récupérer les quotes DTC à partir du flux RSS"""
12 #: Regexp permettant de matcher l'id d'une quote et de virer le garbage qui traîne en bas
13 endquote_regexp
= ur
"\n\[#(\d+)\]\(http://danstonchat.com/\1\) - \[Voir les.commentaires\]\(http://danstonchat.com/\1#c\)"
14 endreg
= re
.compile(endquote_regexp
, flags
=re
.DOTALL
)
16 def properquote(quote
):
17 """Prend la quote tirée RSS et la renvoie dans un format lisible."""
18 quote
= str(quote
).decode("utf-8")
19 quote
= html2text
.html2text(quote
)
20 # Ce truc génère bêtement des lignes vides
21 quote
= quote
.replace(u
"\n\n", u
"\n")
24 def parsequote(quote
):
25 """Parse la quote. Renvoie ``(<id>, <quote nettoyée>)`` ou ``None`` si il n'y a pas d'id.
26 (C'est-à-dire, si ce n'est en fait pas une quote)
27 Renvoie aussi ``None`` sur un commentaire ``"_(A propos de)_"``"""
28 ids
= endreg
.findall(quote
)
29 if quote
.startswith(u
"_(A propos de)_"):
32 return {"id" : int(ids
[0]), "quote" : endreg
.sub("", quote
)}
37 """Récupère toutes les quotes, avec date de publication et id."""
38 flux
= feedparser
.parse("http://danstonchat.com/rss.xml")
40 for entry
in flux
["entries"]:
41 content
= entry
["summary"]
42 soup
= BeautifulSoup
.BeautifulSoup(content
)
43 quotes
= soup
.findChildren(name
="p")
44 quotes
= [properquote(q
) for q
in quotes
]
45 # Attention, en vrai il n'y a pas que des quotes là-dedans,
46 # mais aussi des top comments et autre random shit
47 # donc on vire les None
48 quotes
= [parsequote(q
) for q
in quotes
]
49 quotes
= [q
for q
in quotes
if not q
is None]
50 [q
.update({"date": entry
["published"]}) for q
in quotes
]
51 allquotes
.extend(quotes
)