-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
72 lines (57 loc) · 1.74 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Wykrywa zmiany ocen w USOS'ie i reaguje na nie.
Przykladowy plik konfiguracyjny:
def debug(str): pass
import subprocess #zeby moc uruchomic proces
login = 'PESEL'
haslo = 'HASLO'
plik_bazy = 'oceny.sqlite'
def powiadom(str):
return subprocess.call(['/home/g/sms.orange.pl, "docelowy-nr", str,
"login", "haslo"])
BY Jacek Wielemborek, LICENSED UNDER CREATIVE COMMONS BY-SA LICENSE.
Kod szybkiego testowania:
from config import * ; from usos import * ; usos = USOS(); \
usos_baza = USOS_Baza(plik_bazy) ; usos.login(login,haslo)
"""
import sys
from USOS_Baza import USOS_Baza
from USOS import USOS
from config import plik_bazy,login,haslo,debug,powiadom
if __name__ == '__main__':
baza = USOS_Baza(plik_bazy)
usos = USOS()
if not baza.ustaw_login(usos):
usos.login(login,haslo)
baza.zapisz_login(usos)
oceny = []
try:
oceny = usos.pobierz_oceny()
debug("Pobranie ocen udane")
except Exception,e:
if str(e[0]).count("Blad logowania")>0:
print("Potrzebuje ponownie sie zalogowac..."),
usos.login(login,haslo)
baza.zapisz_login(usos)
oceny = usos.pobierz_oceny()
else:
raise
for ocena in oceny:
z_bazy = baza.pobierz(ocena)
if z_bazy == ocena:
continue
print ".", ; sys.stdout.flush()
ocena.do_sredniej=usos.do_sredniej(ocena.url,ocena.typ)
if z_bazy==None:
baza.dodaj(ocena)
else:
baza.aktualizuj(ocena)
#w razie bledow z kodowaniem, nalezy odkomentowac jedna z
#ponizszych linijek, a zakomentowac druga:
powiadom("USOS: %s: %s" % (ocena.przedmiot,ocena.oceny))
#powiadom(("USOS: %s: %s" % (ocena.przedmiot,ocena.oceny)).encode(
# 'latin1'))
print "OK."
sys.exit(0)