Articles

kevincianfarini / pyvt

DekningsstatusBygge Statuspypi versjon

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=Trueogterm_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.