Articles

kevincianfarini / pyvt

Pokrytí StavVytvořit StavPyPI verze

Virginia Tech Rozvrh Tříd Python API

Instalace

pip install py-vt

Použití

Importovat časový Rozvrh

from pyvt import Timetable

API poskytuje přístup k Rozvrhu přes časový plán objektu.

timetable = Timetable()

objekt jízdního řádu poskytuje některé užitečné metody pro vytahování dat z jízdního řádu VT.

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

vrátí třídě objektu z jízdního řádu s CRN 17583 v horizontu roku 201701, bez ohledu na to, zda je či není třída je plná k prasknutí. Případně, pokud chcete najít pouze otevřené sekce:

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

Všechny metody harmonogram poskytnout výchozí argument open_only=Trueterm_year=None při vytváření harmonogramu žádosti. Při vyhledávání, pokud termín rok není žádný, bude v prodlení s posledním termínem roku. Více se o tom dozvíte v sekci termín roku.

některé z dalších nejčastěji používaných vyhledávacích metod jsou následující:

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

crn_lookup(...) vrátí buď jeden Section(...) objekt nebo None v závislosti na úspěchu dotaz. Žádný není vrácen, pokud na základě argumentů nebyly k dispozici žádné sekce tříd.

následující metody vrátí buď seznam Section(...) objekty nebo None v závislosti na úspěchu dotaz.

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

Více rafinované vyhledávání může být provedeno pomocí refined_lookup(...) metoda

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

Použití Kódů

Některé kódy, které musí být použity s tímto API se výhradně na uspokojení potřeb VT Harmonogram příspěvky. Některé užitečné kódy jsou následující.

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

Období Let

Virginia Tech Harmonogram nabízí třídy sekci vyhledávání pro konkrétní období let. Pokud byste chtěli pracovat s aktuálním volebním rokem, můžete nechat term_year=None nedotčené ve voláních metody jízdního řádu. Po podání žádosti, termín rok bude splácet být poslední termín roku.Termínové roky se odehrávají každý rok v měsících Srpen, leden, červen, a červenec. Výchozí termín rok volání v březnu by mělo za následek vrácení třídních sekcí za poslední aktivní období, což je v lednu. Jarní semestr. Tím se zabrání volání do harmonogramu VT s termínovými roky, které ještě nejsou k dispozici.

alternativně, pokud víte, že určitý termín rok je k dispozici, ale ne výchozí, můžete předat v semestru rok k metodám vyhledávání. Období let postupujte podle jednoduchého YYYYMM vzor jako na obrázku:

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

Část Objektu

Třída oddíly se vrátil z harmonogramu přijít v podobě Section() objekt. Všechny Sekce objekty mají následující vlastnosti:

section_attrs = 

Buď jeden bod objekt nebo seznam sekce objekty budou vráceny po provedení dotazu do VT Harmonogram. Informace o sekcích tříd můžete získat z výše uvedených atributů.

TimetableError

chyba jízdního řádu je vyvolána, když je podán Špatný požadavek nebo je jízdní řád VT nefunkční. Ve skutečnosti, když stavový kód žádosti není 200. Hozená chyba může být použita k pokusu a elegantně selhat do určité míry. TimetableError poskytuje atribut sleep_time, který umožňuje pauzu za běhu.

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

myšlenka je, že pokud byl požadavek špatný, váš program bude spát na krátkou dobu. Nicméně, pokud VT Harmonogram je dolů, a více po sobě jdoucích TimetableErrors jsou zvýšeny, pak sleep_time roste exponenciálně, aby se zabránilo přetížení serveru.