From: Vincent Le Gallic Date: Sun, 16 Feb 2014 00:10:16 +0000 (+0100) Subject: [server] Nouveau module : surveillance de tumblr X-Git-Url: http://gitweb.pimeys.fr/?p=today.git;a=commitdiff_plain;h=7df038370567352136b2e6fd749bc495d216a06b [server] Nouveau module : surveillance de tumblr Je ne suis pas satisfait de l'id utilisé (les gaps sont énormes) mais bon, au moins il a l'air d'être croissant… --- diff --git a/.gitignore b/.gitignore index 87aeb2b..7174137 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ saints.txt .lasttime .something youtube_channels +tumblrs diff --git a/gather.py b/gather.py index 99adade..fe6fe45 100755 --- a/gather.py +++ b/gather.py @@ -30,7 +30,10 @@ import comics #: Récupération des sagas MP3 import sagas -GATHERING_MODULES = [youtube, lastdtc, comics, sagas] +#: Récupération des tumblr +import tumblr + +GATHERING_MODULES = [youtube, lastdtc, comics, sagas, tumblr] def generate_errmsg(id): errmsg = "Erreur à la récupération de %s :\n" % id diff --git a/serverconfig.py b/serverconfig.py index c607f1f..84425ec 100644 --- a/serverconfig.py +++ b/serverconfig.py @@ -13,6 +13,9 @@ DEBUG = False #: La liste des chaînes Youtube à surveiller youtube_channels_file = "youtube_channels" +#: La list des tumblr à surveiller +tumblrs_file = "tumblrs" + #: Path du directory du module de gestion des quotes DTC dtc_path = "/home/vincent/scripts/dtc/" diff --git a/tumblr.py b/tumblr.py new file mode 100644 index 0000000..ca8a8e5 --- /dev/null +++ b/tumblr.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +""" Gestion des tumblr """ + +import urllib +from lxml import etree +import re + +import serverconfig + +def get_rss(url): + """Récupère un flux RSS et le etree-parse""" + p = urllib.urlopen(url) + t = p.read() + x = etree.fromstring(t) + return x + +def get_last_id(tree): + """Récupère le dernier tumblrid dans l'arbre""" + lastguid = tree.xpath("//item/guid")[0] + lastid = re.findall("/(\d+)$", lastguid.text)[0] + return int(lastid) + +def get_parser(domain): + """ Renvoie un parseur de tumblt prêt à être appelé """ + def local_parser(): + return get_last_id(get_rss("http://%s.tumblr.com/rss" % (domain,))) + return local_parser + +tumblrs = serverconfig.load_file(serverconfig.tumblrs_file) +functions = {id : get_parser(domain) for (id, domain) in tumblrs}