]> gitweb.pimeys.fr Git - today.git/blobdiff - today_server.py
[client] Séparation de la config
[today.git] / today_server.py
index 598a421fad662ec52baac72f42786947ef21c305..1c6e78734b3ad390f4df607bbcf5381f2b74c945 100755 (executable)
@@ -18,6 +18,8 @@ import sys
 import urllib
 import json
 import traceback
+import inspect
+import pprint
 os.chdir('/home/vincent/scripts/today/')
 sys.path.append("/home/vincent/scripts/dtc/")
 import dtc
@@ -102,14 +104,15 @@ def last_noob_warpzone():
     for serie in [noobs, warpzones]:
         # Les titres sont dans l'ordre antichronologique, on s'arrête donc au premier qu'on comprend
         for titre in serie:
-            if "noob le film" in titre or "making of" in titre:
+            if "noob le film" in titre or "making of" in titre or "noob versus rct" == titre or "extraits ost" in titre:
                 continue
             try:
                 if DEBUG:
                     print titre
                 saison, ep = get_season_episode(titre)
-            except ValueError:
-                pass
+            except (ValueError, IndexError) as e:
+                print "%s sur un season_episode warpzone : %s\n" % (e, titre)
+                continue
             lasts.append([saison, ep])
             del saison, ep
             break
@@ -139,6 +142,14 @@ def last_grenier():
     titles = parse_youtube("joueurdugrenier")
     return len(titles)
 
+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 fichier."""
@@ -164,6 +175,7 @@ FETCHS = {
           "norman" : last_norman,
           "cyprien" : last_cyprien,
           "grenier" : last_grenier,
+          "dc" : last_jl8,
          }
 
 def fetch_all():
@@ -173,8 +185,18 @@ def fetch_all():
         try:
             news[k] = f()
         except Exception as e:
-            print "Erreur à la récupération de %s :" % k
-            traceback.print_exc()
+            errmsg = "Erreur à la récupération de %s :\n" % k
+            errmsg += traceback.format_exc()
+            # On dumpe le contenu local de la mémoire au moment de l'exception
+            fobj = inspect.trace()[-1][0]
+            # On fait un peu de ménage
+            d = {k:v for (k,v) in fobj.f_locals.iteritems() if not k.startswith("_")}
+            # On évite d'envoyer truckLoadsOfShit
+            d = {k: (v if len(str(v)) < 800
+                     else str(v)[:400] + "*" * 40 + "TRUNCATED OBJECT" + "*" * 40 + str(v)[-400:])
+                 for (k,v) in d.iteritems()}
+            errmsg += "\nContexte : %s\n\n" % (pprint.pformat(d))
+            print errmsg
     return news
 
 def sync():
@@ -200,8 +222,11 @@ if __name__ == "__main__":
         DEBUG = True
     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()