From 7df038370567352136b2e6fd749bc495d216a06b Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Sun, 16 Feb 2014 01:10:16 +0100 Subject: [PATCH] [server] Nouveau module : surveillance de tumblr MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Je ne suis pas satisfait de l'id utilisé (les gaps sont énormes) mais bon, au moins il a l'air d'être croissant… --- .gitignore | 1 + gather.py | 5 ++++- serverconfig.py | 3 +++ tumblr.py | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 tumblr.py 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} -- 2.39.2