Articles

kevincianfarini / pyvt

DækningsstatusByg StatusPyPI version

a Virginia Tech tidsplan for klasser Python API

installation

pip install py-vt

brug

importer tidsplanen

from pyvt import Timetable

API ‘ en giver adgang til tidsplanen gennem en tidsplan objekt.

timetable = Timetable()

tidsplanobjektet giver nogle nyttige metoder til at trække data fra VT-tidsplanen.

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

returnerer klassesektionsobjektet fra tidsplanen med CRN 17583 i termen år201701, uanset om klassen er fuld til kapacitet. Alternativt, hvis du kun vil finde sektioner, der er åbne:

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

alle metoder i tidsplanen giver et standardargument på open_only=True og term_year=None når du foretager tidsplananmodninger. Ved et opslag, hvis term år er ingen det vil blive misligholdt til den seneste sigt år. Der er mere om dette i afsnittet sigt år.

nogle af de andre mest anvendte opslagsmetoder er som følger:

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

crn_lookup(...) returnerer enten et enkelt Section(...) objekt eller None afhængigt af forespørgslens succes. Ingen returneres, hvis der ikke var nogen tilgængelige klassesektioner baseret på argumenterne.

følgende metoder returnerer enten en liste over Section(...) objekter eller None afhængigt af forespørgslens succes.

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 raffinerede søgninger kan udføres ved hjælp af refined_lookup(...) metode

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

Brugskoder

nogle af de koder, der skal bruges til at gøre det muligt for dig at gøre det bruges med denne API er udelukkende for at tilfredsstille behovene i VT tidsplan indlæg. Nogle 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'}

sigt år

Virginia Tech tidsplan tilbyder klasse sektion opslag for specifikke sigt år. Hvis du gerne vil arbejde med det aktuelle år, kan du lade term_year=None uberørt i tidsplanmetoden opkald. Efter anmodning, termen år vil blive misligholdt til at være den seneste sigt år.Term år sker hvert år i månederne August, januar, juni, og juli. En standard sigt år opkald i Marts ville resultere i returnering klasse sektioner for den sidste aktive sigt år, som er i Januar. Forårssemesteret. Dette er for at undgå at foretage opkald til VT-tidsplanen med terminsår, der endnu ikke er tilgængelige.

alternativt, hvis du ved, at et bestemt term år er tilgængeligt, men ikke standard, kan du passere i et term år til opslagsmetoderne. Term år følger et simpelt YYYYMM mønster som vist:

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

Sektionsobjektet

Klassesektioner returneret fra tidsplanen kommer i form af et Section() objekt. Alle Sektionsobjekter har følgende egenskaber:

section_attrs = 

enten et enkelt sektionsobjekt eller en liste over sektionsobjekter returneres til dig efter en vellykket forespørgsel til VT-tidsplanen. Du kan få adgang til oplysninger om klassesektioner fra ovenstående attributter.

Timetablerror

en Tidsplanfejl kastes, når der enten fremsættes en dårlig anmodning, eller Vt-tidsplanen er nede. Faktisk, når statuskoden for anmodningen ikke er 200. Den kastede fejl kan bruges til at forsøge og yndefuldt mislykkes i et omfang. Timetablerror giver ensleep_time attribut for at give mulighed for en runtime pause.

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

ideen bag dette er, at hvis anmodningen var dårlig, vil dit program sove i kort tid. Men hvis VT-tidsplanen er nede, og flere successive TimetableErrors hæves, vokser sleep_time eksponentielt for at undgå at overvælde serveren.