X-Git-Url: http://gitweb.pimeys.fr/?a=blobdiff_plain;f=today_server.py;h=ef73747f94dfa130555931a51c0ddd45a240b364;hb=ad1769887ace47d567227abe12eec8dc93e0955f;hp=cadb02dc1b331b735e47d8eb1434c1f455f3d3dd;hpb=4fdc7d41d82ff89bcb92cf6d93e2111399149c1e;p=today.git diff --git a/today_server.py b/today_server.py index cadb02d..ef73747 100755 --- a/today_server.py +++ b/today_server.py @@ -10,28 +10,21 @@ et répondre à un check. """ -import time, datetime import re +from lxml import etree import os import sys import urllib import json -import traceback os.chdir('/home/vincent/scripts/today/') sys.path.append("/home/vincent/scripts/dtc/") import dtc -#: Fichier où sont stockés les derniers IDs des trucs -store_published_file = "lasts_published" +#: Config serveur +import serverconfig -#: Fichier où est stockée une copie de la liste des derniers IDs *lus* -store_seen_file = "lasts_sync" - -def get_now(): - """Obtenir la date actuelle sous le bon format""" - timestamp = time.time() - now = datetime.datetime(*time.localtime(timestamp)[:7]) - return now +#: Récupération de toutes les nouveautés +import gather def last_dtc(): """Vérifie si il y a des quotes DTC non lues""" @@ -50,29 +43,25 @@ def last_xantah(): ids = [int(i) for i in ids] return max(ids) -def last_visiteur(): - p = urllib.urlopen("http://www.levisiteurdufutur.com/episodes.html") - t = p.read() - # On parse - soup = BeautifulSoup.BeautifulSoup(t) - # On récupère les différentes saisons - saisons = soup.findAll("div", attrs={"id" : "episodes_list"}) - nsaisons = len(saisons) - # La saison en cours est la première dans la liste - episodes = saisons[0].findAll("div", attrs={"class" : "thumbCaption"}) - nepisodes = len(episodes) - return nsaisons * 100 + nepisodes +def last_jl8(): + rss = urllib.urlopen("http://limbero.org/jl8/rss/") + t = rss.read() + x = etree.fromstring(t) + links = x.xpath("//link") + maxnum = links[1].text.split("/")[-1] + maxnum = int(maxnum) + return maxnum def get_file(): - """Récupère la liste des derniers ids de chaque truc, stockée dans le fichiers.""" - f = open(store_published_file) + """Récupère la liste des derniers ids de chaque truc, stockée dans le fichier.""" + f = open(serverconfig.store_published_file) news = json.load(f) f.close() return news def update_file(news): """Met à jour la liste des derniers ids dans le fichier.""" - f = open(store_published_file, 'w') + f = open(serverconfig.store_published_file, 'w') json.dump(news, f) f.close() @@ -80,7 +69,7 @@ FETCHS = { "xkcd" : last_xkcd, "dtc" : last_dtc, "xantah" : last_xantah, - "visiteur" : last_visiteur, + "dc" : last_jl8, } def fetch_all(): @@ -90,8 +79,8 @@ def fetch_all(): try: news[k] = f() except Exception as e: - print "Erreur à la récupération de %s :" % k - traceback.print_exc() + raise + news.update(gather.gather()) return news def sync(): @@ -100,23 +89,27 @@ def sync(): t = sys.stdin.read() on_client = json.loads(t) # On récupère où en est le serveur dans le fichier idoine - if os.path.isfile(store_seen_file): - on_server = json.load(open(store_seen_file)) + if os.path.isfile(serverconfig.store_seen_file): + on_server = json.load(open(serverconfig.store_seen_file)) else: on_server = {} # On garde le maximum for k in set(on_client.keys() + on_server.keys()): on_server[k] = max(on_client.get(k, 0), on_server.get(k, 0)) # On enregistre ce nouveau dico - json.dump(on_server, open(store_seen_file, "w")) + json.dump(on_server, open(serverconfig.store_seen_file, "w")) # On envoie au client ce nouveau dico print json.dumps(on_server) if __name__ == "__main__": + DEBUG = ("--debug" in sys.argv) or ("--verbose" in sys.argv) or serverconfig.DEBUG if sys.argv[1] == "check": news = fetch_all() - olds = get_file() - olds.update(news) + if "--init" in sys.argv: + olds = news + else: + olds = get_file() + olds.update(news) update_file(olds) elif sys.argv[1] == "whatsup": news = get_file()