Articles

kevincianfarini / pyvt

stare acoperirestare construireversiune PyPI

un calendar Virginia Tech de clase Python API

instalare

pip install py-vt

utilizare

import calendarul

from pyvt import Timetable

API oferă acces la calendarul printr-un obiect calendar.

timetable = Timetable()

obiectul orar oferă câteva metode utile pentru extragerea datelor din calendarul VT.

timetable.crn_lookup('17583', term_year='201701', open_only=False)

returnează obiectul secțiunii de clasă din calendar cu CRN 17583 în termenul an201701, indiferent dacă clasa este sau nu plină la capacitate. Alternativ, dacă doriți să găsiți numai secțiuni care sunt deschise:

timetable.crn_lookup('17583', term_year='201701')

toate metodele calendarului oferă un argument implicit de open_only=True și term_year=None atunci când se face cereri de calendar. La o căutare, în cazul în care an pe termen este nici unul va fi implicit la cel mai recent an pe termen. Există mai multe despre acest lucru în secțiunea pe termen lung.

unele dintre celelalte metode de căutare cele mai frecvent utilizate sunt după cum urmează:

def crn_lookup(self, crn_code, term_year=None, open_only=True): ...

crn_lookup(...) va returna fie un singur Section(...) obiect sau None în funcție de succesul interogării. Niciunul nu este returnat dacă nu au existat secțiuni de clasă disponibile pe baza argumentelor.

următoarele metode returnează fie o listă deSection(...) obiecte sauNone în funcție de succesul interogării.

def class_lookup(self, subject_code, class_number, term_year=None, open_only=True): ...def cle_lookup(self, cle_code, term_year=None, open_only=True): ...def subject_lookup(self, subject_code, term_year=None, open_only=True): ...

căutări mai rafinate pot fi realizate folosindrefined_lookup(...) metoda

def refined_lookup(self, crn_code=None, subject_code=None, class_number=None, cle_code=None, term_year=None, open_only=True):

coduri de Utilizare

unele dintre codurile care trebuie să fi utilizate cu acest API sunt exclusiv pentru a satisface nevoile posturilor calendar VT. Unele coduri utile sunt următoarele.

len(crn_code) >= 3subj_codes = len(class_number) == 4cle_codes = { 'AR%': 'All Curriculums', 'AR01': 'Area 1 Classes', 'AR02': 'Area 2 Classes', ... 'AR07': 'Area 7 Classes'}

Anii Pe termen

Calendarul Virginia Tech oferă căutări secțiunea de clasă pentru anii pe termen specific. Dacă doriți să lucrați cu termenul curent an, puteți lăsaterm_year=None neatins în apelurile metodei orarului. La efectuarea cererii, anul de mandat va fi implicit pentru a fi cel mai recent an de mandat.Anii de termen se întâmplă în fiecare an în lunile August, ianuarie, iunie și iulie. Un apel implicit pentru anul de mandat în martie ar duce la returnarea secțiunilor de clasă pentru ultimul an de mandat activ, care este în ianuarie. Semestrul de primăvară. Acest lucru este de a evita efectuarea de apeluri la calendarul VT cu ani pe termen care nu sunt încă disponibile.

alternativ, dacă știți că un anumit an de termen este disponibil, dar nu implicit, puteți trece într-un an de termen la metodele de căutare. Anii de termen urmează un model simplu YYYYMM așa cum se arată:

term_years = { 'Spring 2017': '201701', 'Summer I 2017': '201706', 'Summer II 2017': '201707', 'Fall 2017': '201709', ...}

secțiunea obiect

secțiunile de clasă returnate din orar vin sub forma unui Section() obiect. Toate obiectele de secțiune au următoarele proprietăți:

section_attrs = 

fie un singur obiect de secțiune, fie o listă de obiecte de secțiune vă vor fi returnate la o interogare reușită a orarului VT. Puteți accesa informații despre secțiunile de clasă din atributele de mai sus.

TimetableError

o eroare de orar este aruncat atunci când fie o cerere de rău se face sau calendarul VT este în jos. De fapt, atunci când codul de stare al cererii nu este 200. Eroarea aruncată poate fi folosită pentru a încerca și a eșua grațios într-o măsură. TimetableError oferă un sleep_time atribut pentru a permite o pauză de rulare.

from pyvt import TimetableErrortry: timetable.crn_lookup(...)except TimetableError as e: time.sleep(e.sleep_time)

ideea din spatele acestui lucru este că, dacă cererea a fost proastă, programul dvs. va dormi pentru o perioadă scurtă de timp. Cu toate acestea, dacă orarul VT este scăzut și mai multe TimetableErrors sunt ridicate, atunci sleep_time crește exponențial pentru a evita copleșirea serverului.