kevincianfarini / pyvt
Virginia Techin aikataulu luokista Python API
asennus
pip install py-vt
käyttö
tuo aikataulu
from pyvt import Timetable
API tarjoaa pääsyn aikatauluun aikataulun kautta vastalause.
timetable = Timetable()
aikataulukohde tarjoaa joitakin hyödyllisiä menetelmiä tietojen vetämiseksi VT-aikataulusta.
timetable.crn_lookup('17583', term_year='201701', open_only=False)
palauttaa luokkaosuuden kohteen aikataulusta CRN 17583: n kanssa lukuvuonna 201701
riippumatta siitä, onko Luokka täynnä. Vaihtoehtoisesti, jos haluat löytää vain avoimia osioita:
timetable.crn_lookup('17583', term_year='201701')
kaikki aikataulun menetelmät antavat oletusargumentin open_only=True
ja term_year=None
aikataulupyyntöjä tehtäessä. Upon lookup, jos aikavälillä vuosi ei ole mitään se on defaulted to the last term year. On enemmän tästä aikavälillä vuosi osiossa.
muita yleisimmin käytettyjä hakumenetelmiä ovat seuraavat:
def crn_lookup(self, crn_code, term_year=None, open_only=True): ...
crn_lookup(...)
palaa joko yhden Section(...)
object tai None
kyselyn onnistumisesta riippuen. Mitään ei palauteta, jos argumenttien perusteella ei ole käytettävissä olevia luokkaosuuksia.
seuraavat menetelmät palauttavat joko listan Section(...)
oliot tai None
kyselyn onnistumisesta riippuen.
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): ...
tarkemmat haut voidaan tehdä käyttämällä refined_lookup(...)
menetelmä
def refined_lookup(self, crn_code=None, subject_code=None, class_number=None, cle_code=None, term_year=None, open_only=True):
käyttökoodit
joitakin koodeja, joita tarvitaan käytetään tämän API ovat vain tyydyttää tarpeet VT aikataulu virkaa. Joitakin hyödyllisiä koodeja ovat seuraavat.
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'}
the Term Years
the Virginia Tech schedule offers class section lookups for specific term years. Jos haluat työskennellä kuluvan lukuvuoden kanssa, voit jättää term_year=None
koskematta aikataulumenetelmäkutsuihin. Pyyntöä tehtäessä lukuvuosi jää maksamatta viimeisimmäksi lukuvuodeksi.Aikavälillä vuotta tapahtuu vuosittain elokuussa, tammikuussa, kesäkuussa ja heinäkuussa. Määräaikaiskutsu maaliskuussa johtaisi luokkaosuuksien palauttamiseen viimeiseltä aktiiviselta lukuvuodelta eli tammikuulta. Kevätlukukausi. Tällä pyritään välttämään se, että VT: n aikatauluun soitettaisiin sellaisia lukuvuosia, joita ei vielä ole saatavilla.
Vaihtoehtoisesti, jos tiedät, että tietty lukuvuosi on käytettävissä, mutta ei oletuksena, voit siirtyä lukuvuonna hakumenetelmiin. Lukuvuodet noudattavat yksinkertaista YYYM-kaavaa kuten on esitetty:
term_years = { 'Spring 2017': '201701', 'Summer I 2017': '201706', 'Summer II 2017': '201707', 'Fall 2017': '201709', ...}
aikataulusta palautetut Lohkokohteet tulevat muodossaSection()
objekti. Kaikilla Osioobjekteilla on seuraavat ominaisuudet:
section_attrs =
section_attrs =
joko yksi osioobjekteista tai luettelo osioobjekteista palautetaan sinulle, kun VT-aikataulua koskeva kysely on onnistunut. Voit käyttää tietoja luokan osioista yllä olevista attribuuteista.
Aikatauluvirhe
aikatauluvirhe heitetään, kun joko tehdään huono pyyntö tai VT: n aikataulu on alhaalla. Kun pyynnön tilakoodi ei ole 200. Heittovirheellä voi yrittää ja sulavasti epäonnistua jossain määrin. Aikatauluvirhe antaa sleep_time
attribuutin, joka mahdollistaa ajonaikaisen tauon.
from pyvt import TimetableErrortry: timetable.crn_lookup(...)except TimetableError as e: time.sleep(e.sleep_time)
tämän taustalla on ajatus siitä, että jos pyyntö oli huono, ohjelma nukkuu lyhyen aikaa. Jos VT-aikataulu kuitenkin laskee ja useita peräkkäisiä TimetableErrors
nostetaan, niin sleep_time
kasvaa eksponentiaalisesti, jotta palvelin ei jäisi ylivoimaiseksi.