import dtc
#: Fichier où sont stockés les derniers IDs des trucs
-store_file = "lasts_published"
+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"""
def get_file():
"""Récupère la liste des derniers ids de chaque truc, stockée dans le fichiers."""
- f = open(store_file)
+ 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_file, 'w')
+ f = open(store_published_file, 'w')
json.dump(news, f)
f.close()
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)
- if sys.argv[1] == "whatsup":
+ elif sys.argv[1] == "whatsup":
news = get_file()
print json.dumps(news)
+ elif sys.argv[1] == "sync":
+ sync()