]> gitweb.pimeys.fr Git - dtc.git/blob - dtc.py
Affichage de l'erreur aussi + échec de %s
[dtc.git] / dtc.py
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 import sys
4
5 import psycopg2
6 import psycopg2.extras
7 import json
8
9 import fetch_dtc
10
11 VERBOSE = False
12
13 def getcursor():
14 """Récupère un curseur connecté à la base dtc"""
15 con = psycopg2.connect(database="dtc")
16 cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor)
17 return con, cur
18
19
20 def insert(quote):
21 """Insère une quote dans la base"""
22 if VERBOSE:
23 print "INSERTing %s" % quote["id"]
24 con, cur = getcursor()
25 cur.execute("INSERT INTO quotes (id, date, quote) VALUES (%(id)s, %(date)s, %(quote)s);",
26 quote)
27 cur.execute("COMMIT;")
28
29 def last_inserted():
30 """Récupère l'id de la dernière quote enregistrée"""
31 con, cur = getcursor()
32 cur.execute("SELECT MAX(id) AS maxid FROM quotes;")
33 return cur.fetchone()["maxid"]
34
35 def get_quotes(first, last=None):
36 """Récupère des quotes dans la base."""
37 add = ""
38 if last != None:
39 add = "AND id <= %(last)s"
40 con, cur = getcursor()
41 req = "SELECT * FROM quotes WHERE id >= %(first)s " + add + ";"
42 cur.execute(req, {"first" : first, "last" : last})
43 l = cur.fetchall()
44 l = [dict(q) for q in l]
45 for d in l:
46 if d["date"]:
47 d["date"] = d["date"].strftime("%F %T")
48 return l
49
50 def display(liste):
51 """Affiche des quotes"""
52 t = ("\n" + "_"*80 + "\n").join(["%(id)s (%(date)s)\n%(quote)s" % q for q in liste])
53 print t
54
55 if __name__ == "__main__":
56 import sys
57 if sys.argv[1] in ["fetch", "update", "pull"]:
58 l = fetch_dtc.getquotes()
59 last = last_inserted()
60 for q in l:
61 if q["id"] > last:
62 try:
63 insert(q)
64 except psycopg2.IntegrityError as err:
65 print "Bim %s\nl,last_inserted = %s, %s" % (err, l, last_inserted)
66 else:
67 id = int(sys.argv[1])
68 try:
69 id2 = int(sys.argv[2])
70 except ValueError:
71 if sys.argv[2] in ["+", "_"]:
72 id2 = None
73 else:
74 print "Le deuxième paramètre doit être un entier ou '+'"
75 except IndexError:
76 id2 = id
77 quotes = get_quotes(first=id, last=id2)
78 if "--json" in sys.argv:
79 print json.dumps(quotes)
80 else:
81 display(quotes)