Articles

kevincianfarini / pyvt

Dekking StatusBouw-StatusPyPI versie

Een van Virginia Tech Tijdschema van de Klassen Python API

Installatie

pip install py-vt

Gebruik

Importeren van de Dienstregeling

from pyvt import Timetable

De API biedt toegang tot de Dienstregeling door middel van een Tijdschema object.

timetable = Timetable()

het timetable object biedt een aantal nuttige methoden voor het ophalen van gegevens uit de VT Timetable.

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

geeft het class section-object uit de dienstregeling terug met de CRN 17583 in de term year 201701, ongeacht of de klasse vol tot capaciteit is. Als alternatief als u alleen secties wilt vinden die open zijn:

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

alle methoden van de dienstregeling geven een standaardargument van open_only=True en term_year=None bij het indienen van dienstregelingsverzoeken. Bij een lookup, als termijn jaar is geen het zal in gebreke worden gesteld om de meest recente termijn jaar. Er is meer over dit in de Term jaar sectie.

enkele van de andere meest gebruikte lookup methoden zijn als volgt:

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

crn_lookup(...)geeft een enkeleSection(...)object ofNoneafhankelijk van het succes van de query. Geen wordt geretourneerd als er op basis van de argumenten geen klassesecties beschikbaar waren.

de volgende methoden geven een lijst van Section(...) objecten of None afhankelijk van het succes van de query.

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): ...

meer verfijnde zoekopdrachten kunnen worden uitgevoerd met behulp van de refined_lookup(...) methode

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

Gebruikscodes

enkele van de codes die met dit Api zijn uitsluitend om te voldoen aan de behoeften van de vt dienstregeling posten. Enkele handige codes zijn als volgt.

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'}

de Term Years

The Virginia Tech Timetable offers class section lookups for specific term years. Als u met de huidige term jaar wilt werken, kunt u term_year=None onaangeroerd laten in de dienstregeling methode aanroepen. Bij het indienen van het verzoek, zal de termijn jaar in gebreke worden gesteld om het meest recente termijn jaar.Term jaren gebeuren elk jaar in de maanden augustus, januari, juni en juli. Een standaard termijn jaar oproep in Maart zou resulteren in het retourneren van klassen secties voor de laatste actieve termijn jaar, dat is in Januari. Het voorjaarssemester. Dit is om te voorkomen dat er oproepen worden gedaan naar de VT-dienstregeling met termijnjaren die nog niet beschikbaar zijn.

Als u weet dat een bepaald termijnjaar beschikbaar is, maar niet het standaardjaar, kunt u in een termijnjaar overgaan naar de opzoekmethoden. Term years volgt een eenvoudig YYYYMM patroon zoals getoond:

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

het Sectieobject

klassen die uit de dienstregeling worden geretourneerd, hebben de vorm van een Section() object. Alle Sectieobjecten hebben de volgende eigenschappen:

section_attrs = 

een enkel sectieobject of een lijst met sectieobjecten zal naar u worden geretourneerd na een succesvolle query naar de VT-dienstregeling. U kunt toegang krijgen tot informatie over klassesecties vanuit de bovenstaande attributen.

de Timetabelerror

een Timetabelerror wordt weergegeven wanneer een Ongeldige aanvraag wordt gedaan of de VT-dienstregeling is uitgeschakeld. In feite, wanneer de statuscode van het verzoek is niet 200. De gegooid fout kan worden gebruikt om te proberen en sierlijk falen tot op zekere hoogte. De TimetableError biedt eensleep_time attribuut om een runtime pauze toe te staan.

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

het idee achter dit is dat als het verzoek slecht was, uw programma zal slapen voor een korte tijd. Als de VT-dienstregeling echter lager is en meerdere opeenvolgende TimetableErrors worden verhoogd, dan groeit sleep_time exponentieel om te voorkomen dat de server overweldigd wordt.