+++ /dev/null
-#!/usr/bin/python
-# -*- encoding: utf-8 -*-
-
-""" Codé par 20-100
-script qui affiche des trucs à penser, des J-n des conneries
-or that kind of stuff.
-
-Partie serveur, prévue pour chercher périodiquement les trucs non lus
-et répondre à un check.
-
-"""
-
-import time, datetime
-import re
-import os
-import sys
-import urllib
-import json
-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"
-
-#: 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
-
-def last_dtc():
- """Vérifie si il y a des quotes DTC non lues"""
- return dtc.last_inserted()
-
-def last_xkcd():
- try:
- p = urllib.urlopen("http://xkcd.com")
- except IOError:
- return "Impossible de se connecter à xkcd"
- t = p.read()
- current_id = int(re.findall("Permanent link to this comic: http://xkcd.com/(.*?)/", t)[0])
- return current_id
-
-def get_file():
- """Récupère la liste des derniers ids de chaque truc, stockée dans le fichiers."""
- f = open(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')
- json.dump(news, f)
- f.close()
-
-def fetch_all():
- """Va chercher sur les différents sites les nouveaux trucs."""
- news = {}
- news["xkcd"] = last_xkcd()
- news["dtc"] = last_dtc()
- return news
-
-def sync():
- """Reçoit une requête de synchronisation."""
- # On récupère où en est le client sur stdin
- 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))
- 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"))
- # On envoie au client ce nouveau dico
- print json.dumps(on_server)
-
-if __name__ == "__main__":
- if sys.argv[1] == "check":
- news = fetch_all()
- update_file(news)
- elif sys.argv[1] == "whatsup":
- news = get_file()
- print json.dumps(news)
- elif sys.argv[1] == "sync":
- sync()
--- /dev/null
+#!/usr/bin/python
+# -*- encoding: utf-8 -*-
+
+""" Codé par 20-100
+script qui affiche des trucs à penser, des J-n des conneries
+or that kind of stuff.
+
+Partie serveur, prévue pour chercher périodiquement les trucs non lus
+et répondre à un check.
+
+"""
+
+import time, datetime
+import re
+import os
+import sys
+import urllib
+import json
+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"
+
+#: 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
+
+def last_dtc():
+ """Vérifie si il y a des quotes DTC non lues"""
+ return dtc.last_inserted()
+
+def last_xkcd():
+ try:
+ p = urllib.urlopen("http://xkcd.com")
+ except IOError:
+ return "Impossible de se connecter à xkcd"
+ t = p.read()
+ current_id = int(re.findall("Permanent link to this comic: http://xkcd.com/(.*?)/", t)[0])
+ return current_id
+
+def get_file():
+ """Récupère la liste des derniers ids de chaque truc, stockée dans le fichiers."""
+ f = open(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')
+ json.dump(news, f)
+ f.close()
+
+FETCHS = {
+ "xkcd" : last_xkcd,
+ "dtc" : last_dtc,
+ }
+def fetch_all():
+ """Va chercher sur les différents sites les nouveaux trucs."""
+ news = {}
+ for (k, f) in FETCHS.iteritems():
+ news[k] = f()
+ return news
+
+def sync():
+ """Reçoit une requête de synchronisation."""
+ # On récupère où en est le client sur stdin
+ 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))
+ 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"))
+ # On envoie au client ce nouveau dico
+ print json.dumps(on_server)
+
+if __name__ == "__main__":
+ if sys.argv[1] == "check":
+ news = fetch_all()
+ update_file(news)
+ elif sys.argv[1] == "whatsup":
+ news = get_file()
+ print json.dumps(news)
+ elif sys.argv[1] == "sync":
+ sync()