python3 print_grades.py <email> <passwd>
Last active
September 4, 2019 14:41
-
-
Save kpostekk/f45c1ce2181e47402867a33c57ac83d3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
import getpass | |
from colorama import Fore, init as colorama_init | |
from librus_tricks import create_session, SynergiaSubject | |
def ask_for_credentials(): | |
login = sys.argv[1] | |
# login = input('E-mail: ') | |
passwd = sys.argv[2] | |
# passwd = getpass.getpass('Passwd: ') | |
return {'email': login, 'password': passwd} | |
def sort_grades(session): | |
""" | |
:type session: librus_tricks.core.SynergiaClient | |
""" | |
obj_grades = session.get_grades() | |
grades_sorted = {} | |
grades = {} | |
for g in obj_grades: | |
grade_subject_id = g._json_payload['Subject']['Id'] | |
if not (str(grade_subject_id) in grades_sorted.keys()): | |
grades_sorted[str(grade_subject_id)] = [] | |
else: | |
pass | |
grades_sorted[str(grade_subject_id)].append(g) | |
for key in grades_sorted.keys(): | |
grades[SynergiaSubject(key, session)] = grades_sorted[key] | |
return grades | |
if __name__ == '__main__': | |
colorama_init(autoreset=True) | |
print(Fore.CYAN + 'Logging in...') | |
session = create_session(**ask_for_credentials()) | |
print(Fore.CYAN + 'Printing user\'s grades') | |
gs = sort_grades(session) | |
for subject in gs.keys(): | |
print(Fore.MAGENTA + subject.name + ':') | |
for grade in gs[subject]: | |
if grade.metadata.is_constituent: | |
category = grade.category | |
print(Fore.BLUE + f' {grade.grade} with category {category.name} ({category.weight}) @ {grade.date}') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import getpass | |
import sys | |
from datetime import datetime | |
from types import SimpleNamespace as Namespace | |
from colorama import init as colorama_init, Fore | |
from prettytable import PrettyTable | |
from librus_tricks import create_session | |
def ask_for_credentials(): | |
login = sys.argv[1] | |
# login = input('E-mail: ') | |
passwd = sys.argv[2] | |
# passwd = getpass.getpass('Passwd: ') | |
return {'email': login, 'password': passwd} | |
def max_lenght_of_ttc(dtc): | |
lens = [] | |
for k in dtc.keys(): | |
lens.append( | |
dtc[k].__len__() | |
) | |
return max(*lens) | |
def get_longest_ttc_ranges(dtc): | |
max_len = 0 | |
output = [] | |
for k in dtc.keys(): | |
if dtc[k].__len__() > max_len: | |
max_len = dtc[k].__len__() | |
output = [(tte.start, tte.end) for tte in dtc[k]] | |
return output | |
if __name__ == '__main__': | |
colorama_init(autoreset=True) | |
print(Fore.BLUE + 'Logging in...') | |
session = create_session(**ask_for_credentials()) | |
class FakeTTE: | |
def __init__(self): | |
self.subject = Namespace() | |
self.subject.name = '' | |
self.subject.short_name = '' | |
self.classroom = Namespace() | |
self.classroom.symbol = '' | |
tt = session.get_timetable() | |
pt = PrettyTable() | |
mlv = max_lenght_of_ttc(tt) | |
for k in tt.keys(): | |
if tt[k].__len__() < mlv: | |
for n in range(mlv - tt[k].__len__()): | |
tt[k].append(FakeTTE()) | |
pt.add_column( | |
'', | |
[Fore.CYAN + f'{tter[0].strftime("%H:%M")} - {tter[1].strftime("%H:%M")}' + Fore.RESET for tter in | |
get_longest_ttc_ranges(tt)] | |
) | |
for day in tt.keys(): | |
pt.add_column( | |
datetime.strptime(day, '%Y-%m-%d').strftime(Fore.CYAN + '%A' + Fore.RESET), | |
[f'{tte.subject.name}' for tte in tt[day] if tte] | |
) | |
print(pt) | |
import getpass | |
from colorama import Fore, init as colorama_init | |
from librus_tricks import create_session, SynergiaSubject | |
def ask_for_credentials(): | |
login = input('E-mail: ') | |
passwd = getpass.getpass('Passwd: ') | |
return {'email': login, 'password': passwd} | |
def sort_grades(session): | |
""" | |
:type session: librus_tricks.core.SynergiaClient | |
""" | |
obj_grades = session.get_grades() | |
grades_sorted = {} | |
grades = {} | |
for g in obj_grades: | |
grade_subject_id = g._json_payload['Subject']['Id'] | |
print(grade_subject_id) | |
if not (str(grade_subject_id) in grades_sorted.keys()): | |
print('Id not found') | |
grades_sorted[str(grade_subject_id)] = [] | |
else: | |
print('Id found') | |
grades_sorted[str(grade_subject_id)].append(g) | |
print(grades_sorted[str(grade_subject_id)]) | |
for key in grades_sorted.keys(): | |
grades[SynergiaSubject(key, session)] = grades_sorted[key] | |
return grades | |
if __name__ == '__main__': | |
colorama_init(autoreset=True) | |
print(Fore.CYAN + 'Logging in...') | |
session = create_session(**ask_for_credentials()) | |
print(Fore.CYAN + 'Printing user\'s grades') | |
gs = sort_grades(session) | |
for subject in gs.keys(): | |
print(Fore.MAGENTA + subject.name + ':') | |
for grade in gs[subject]: | |
if grade.metadata.is_constituent: | |
category = grade.category | |
print(Fore.BLUE + f' {grade.grade} with category {category.name} ({category.weight}) @ {grade.date}') | |
import getpass | |
from datetime import datetime | |
from types import SimpleNamespace as Namespace | |
from colorama import init as colorama_init, Fore | |
from prettytable import PrettyTable | |
from librus_tricks import create_session | |
def ask_for_credentials(): | |
login = input('E-mail: ') | |
passwd = getpass.getpass('Passwd: ') | |
return {'email': login, 'password': passwd} | |
def max_lenght_of_ttc(dtc): | |
lens = [] | |
for k in dtc.keys(): | |
lens.append( | |
dtc[k].__len__() | |
) | |
return max(*lens) | |
def get_longest_ttc_ranges(dtc): | |
max_len = 0 | |
output = [] | |
for k in dtc.keys(): | |
if dtc[k].__len__() > max_len: | |
max_len = dtc[k].__len__() | |
output = [(tte.start, tte.end) for tte in dtc[k]] | |
return output | |
if __name__ == '__main__': | |
colorama_init(autoreset=True) | |
print(Fore.BLUE + 'Logging in...') | |
session = create_session(**ask_for_credentials()) | |
class FakeTTE: | |
def __init__(self): | |
self.subject = Namespace() | |
self.subject.name = '' | |
self.subject.short_name = '' | |
self.classroom = Namespace() | |
self.classroom.symbol = '' | |
tt = session.get_timetable() | |
pt = PrettyTable() | |
mlv = max_lenght_of_ttc(tt) | |
for k in tt.keys(): | |
if tt[k].__len__() < mlv: | |
for n in range(mlv - tt[k].__len__()): | |
tt[k].append(FakeTTE()) | |
pt.add_column( | |
'', | |
[Fore.CYAN + f'{tter[0].strftime("%H:%M")} - {tter[1].strftime("%H:%M")}' + Fore.RESET for tter in | |
get_longest_ttc_ranges(tt)] | |
) | |
for day in tt.keys(): | |
pt.add_column( | |
datetime.strptime(day, '%Y-%m-%d').strftime(Fore.CYAN + '%A' + Fore.RESET), | |
[f'{tte.subject.name}' for tte in tt[day] if tte] | |
) | |
print(pt) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment