Articles

kevincianfarini / pyvt

Coverage StatusPyPI-versio

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 = 

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.