Skip to content

Instantly share code, notes, and snippets.

@kpostekk
Last active September 4, 2019 14:41
Show Gist options
  • Save kpostekk/f45c1ce2181e47402867a33c57ac83d3 to your computer and use it in GitHub Desktop.
Save kpostekk/f45c1ce2181e47402867a33c57ac83d3 to your computer and use it in GitHub Desktop.

Usage

python3 print_grades.py <email> <passwd>
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}')
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