kevincianfarini / pyvt
en virginia tech timeplan for klasser python api
installasjon
pip install py-vt
bruk
importer timeplanen
from pyvt import Timetable
Api Gir Tilgang til timeplanen gjennom en timeplan objekt.
timetable = Timetable()
rutetabellobjektet gir noen nyttige metoder for å trekke data fra Vt-Rutetabellen.
timetable.crn_lookup('17583', term_year='201701', open_only=False)
returnerer klasseseksjonsobjektet fra tidsplanen med CRN 17583 i termen år 201701
, uavhengig av om klassen er full til kapasitet. Alternativt hvis du bare vil finne seksjoner som er åpne:
timetable.crn_lookup('17583', term_year='201701')
Alle metoder i rutetabellen gir et standardargument av open_only=True
ogterm_year=None
når du gjør rutetabellforespørsler. Ved et oppslag, hvis sikt år Er Ingen det vil bli misligholdt til den siste sikt år. Det er mer om Dette i Term Year-delen.
Noen av de andre mest brukte oppslagsmetodene er som følger:
def crn_lookup(self, crn_code, term_year=None, open_only=True): ...
crn_lookup(...)
vil returnere enten en enkelt Section(...)
objekt eller None
avhengig av suksessen til spørringen. Ingen returneres hvis det ikke var tilgjengelige klasseseksjoner basert på argumentene.
følgende metoder returnerer enten en liste overSection(...)
objekter ellerNone
avhengig av suksessen til spørringen.
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): ...
Flere raffinerte søk kan utføres ved hjelp avrefined_lookup(...)
metode
def refined_lookup(self, crn_code=None, subject_code=None, class_number=None, cle_code=None, term_year=None, open_only=True):
Brukskoder
noen av kodene som må brukes med denne api er utelukkende for å tilfredsstille behovene til vt timeplan innlegg. Noen nyttige koder er som følger.
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'}
Termen År
Virginia Tech Timeplanen tilbyr klasseseksjon oppslag for bestemte term år. Hvis du ønsker å jobbe med inneværende termin år, kan du la term_year=None
urørt i rutetabellen metode samtaler. Ved å gjøre forespørselen, begrepet året vil bli misligholdt å være den siste sikt år.Term år skje hvert år i månedene August, januar, juni og juli. En standard sikt år samtale I Mars vil resultere i retur klasse seksjoner for den siste aktive sikt år, som er i januar. Vårsemesteret. Dette er for å unngå å ringe TIL Vt Timeplan med sikt år som ennå ikke er tilgjengelig.
Alternativt, hvis du vet at et bestemt termår er tilgjengelig, men ikke standard, kan du overføre et termår til oppslagsmetodene. Termår følger et enkelt ååååmmønster som vist:
term_years = { 'Spring 2017': '201701', 'Summer I 2017': '201706', 'Summer II 2017': '201707', 'Fall 2017': '201709', ...}
Seksjonsobjektet
Klasseseksjoner returnert fra timeplanen kommer i form av en Section()
objekt. Alle Seksjonsobjekter har følgende egenskaper:
section_attrs =
enten et enkelt seksjonsobjekt eller en liste over seksjonsobjekter vil bli returnert til DEG etter en vellykket spørring TIL Vt-Tidsplanen. Du kan få tilgang til informasjon om klasseseksjoner fra attributtene ovenfor.
TimetableError
En Rutetabellfeil blir kastet når enten en dårlig forespørsel er gjort eller Vt Rutetabellen er nede. I virkeligheten, når statuskoden til forespørselen ikke er 200. Den kastet feilen kan brukes til å prøve og grasiøst mislykkes i en grad. TimetableError gir ensleep_time
attributt for å tillate en runtime pause.
from pyvt import TimetableErrortry: timetable.crn_lookup(...)except TimetableError as e: time.sleep(e.sleep_time)
tanken bak dette er at hvis forespørselen var dårlig, vil programmet sove for en kort tid. Men hvis Vt-Tidsplanen er nede, og flere påfølgende TimetableErrors
heves, vokser sleep_time
eksponentielt for å unngå å overvelde serveren.