]>
gitweb.pimeys.fr Git - today.git/blob - today_server.py
cadb02dc1b331b735e47d8eb1434c1f455f3d3dd
2 # -*- encoding: utf-8 -*-
5 script qui affiche des trucs à penser, des J-n des conneries
8 Partie serveur, prévue pour chercher périodiquement les trucs non lus
9 et répondre à un check.
20 os
.chdir('/home/vincent/scripts/today/')
21 sys
.path
.append("/home/vincent/scripts/dtc/")
24 #: Fichier où sont stockés les derniers IDs des trucs
25 store_published_file
= "lasts_published"
27 #: Fichier où est stockée une copie de la liste des derniers IDs *lus*
28 store_seen_file
= "lasts_sync"
31 """Obtenir la date actuelle sous le bon format"""
32 timestamp
= time
.time()
33 now
= datetime
.datetime(*time
.localtime(timestamp
)[:7])
37 """Vérifie si il y a des quotes DTC non lues"""
38 return dtc
.last_inserted()
41 p
= urllib
.urlopen("http://xkcd.com")
43 current_id
= int(re
.findall("Permanent link to this comic: http://xkcd.com/(.*?)/", t
)[0])
47 p
= urllib
.urlopen("http://www.adoprixtoxis.com/lite/download/xantah_downloads.php")
49 ids
= re
.findall("""<div class="top">Xantah (.*?)</div>""", t
)
50 ids
= [int(i
) for i
in ids
]
54 p
= urllib
.urlopen("http://www.levisiteurdufutur.com/episodes.html")
57 soup
= BeautifulSoup
.BeautifulSoup(t
)
58 # On récupère les différentes saisons
59 saisons
= soup
.findAll("div", attrs
={"id" : "episodes_list"})
60 nsaisons
= len(saisons
)
61 # La saison en cours est la première dans la liste
62 episodes
= saisons
[0].findAll("div", attrs
={"class" : "thumbCaption"})
63 nepisodes
= len(episodes
)
64 return nsaisons
* 100 + nepisodes
67 """Récupère la liste des derniers ids de chaque truc, stockée dans le fichiers."""
68 f
= open(store_published_file
)
73 def update_file(news
):
74 """Met à jour la liste des derniers ids dans le fichier."""
75 f
= open(store_published_file
, 'w')
82 "xantah" : last_xantah
,
83 "visiteur" : last_visiteur
,
87 """Va chercher sur les différents sites les nouveaux trucs."""
89 for (k
, f
) in FETCHS
.iteritems():
92 except Exception as e
:
93 print "Erreur à la récupération de %s :" % k
98 """Reçoit une requête de synchronisation."""
99 # On récupère où en est le client sur stdin
101 on_client
= json
.loads(t
)
102 # On récupère où en est le serveur dans le fichier idoine
103 if os
.path
.isfile(store_seen_file
):
104 on_server
= json
.load(open(store_seen_file
))
107 # On garde le maximum
108 for k
in set(on_client
.keys() + on_server
.keys()):
109 on_server
[k
] = max(on_client
.get(k
, 0), on_server
.get(k
, 0))
110 # On enregistre ce nouveau dico
111 json
.dump(on_server
, open(store_seen_file
, "w"))
112 # On envoie au client ce nouveau dico
113 print json
.dumps(on_server
)
115 if __name__
== "__main__":
116 if sys
.argv
[1] == "check":
121 elif sys
.argv
[1] == "whatsup":
123 print json
.dumps(news
)
124 elif sys
.argv
[1] == "sync":