kevincianfarini/pyvt
Un Calendrier Virginia Tech des Classes API Python
Installation
pip install py-vt
Utilisation
Importer le Calendrier
from pyvt import Timetable
L’API donne accès au Calendrier via un objet de calendrier.
timetable = Timetable()
L’objet timetable fournit des méthodes utiles pour extraire des données du calendrier VT.
timetable.crn_lookup('17583', term_year='201701', open_only=False)
renvoie l’objet de section de classe de l’horaire avec le CRN 17583 dans l’année de terme 201701
, que la classe soit pleine à pleine capacité ou non. Sinon, si vous souhaitez uniquement trouver des sections ouvertes:
timetable.crn_lookup('17583', term_year='201701')
Toutes les méthodes de l’horaire fournissent un argument par défaut de open_only=True
et term_year=None
lors de la demande d’horaire. Lors d’une recherche, si l’année de terme est nulle, elle sera par défaut à l’année de terme la plus récente. Il y a plus à ce sujet dans la section Année de mandat.
Certaines des autres méthodes de recherche les plus couramment utilisées sont les suivantes:
def crn_lookup(self, crn_code, term_year=None, open_only=True): ...
crn_lookup(...)
retournera soit un seul objet Section(...)
ou None
en fonction du succès de la requête. None est renvoyé s’il n’y avait pas de sections de classe disponibles basées sur les arguments.
Les méthodes suivantes renvoient soit une liste d’objets Section(...)
, soit None
en fonction du succès de la requête.
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): ...
Des recherches plus raffinées peuvent être effectuées à l’aide de la refined_lookup(...)
méthode
def refined_lookup(self, crn_code=None, subject_code=None, class_number=None, cle_code=None, term_year=None, open_only=True):
Codes d’utilisation
Certains des codes qui doivent être utilisé avec cette API sont uniquement pour satisfaire les besoins des postes de calendrier VT. Certains codes utiles sont les suivants.
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'}
Les années de terme
Le calendrier Virginia Tech propose des recherches de section de classe pour des années de terme spécifiques. Si vous souhaitez travailler avec l’année en cours, vous pouvez laisser term_year=None
intacte dans les appels de méthode de calendrier. Lors de la demande, l’année de mandat sera considérée par défaut comme l’année de mandat la plus récente.Les années de mandat ont lieu chaque année pendant les mois d’août, Janvier, Juin et Juillet. Un appel d’année de mandat par défaut en mars entraînerait le retour de sections de classe pour la dernière année de mandat active, qui est en janvier. Le semestre de printemps. Ceci afin d’éviter de faire des appels au calendrier VT avec des années de mandat qui ne sont pas encore disponibles.
Alternativement, si vous savez qu’une certaine année de terme est disponible mais pas la valeur par défaut, vous pouvez passer une année de terme aux méthodes de recherche. Les années de terme suivent un modèle AAAA simple comme indiqué:
term_years = { 'Spring 2017': '201701', 'Summer I 2017': '201706', 'Summer II 2017': '201707', 'Fall 2017': '201709', ...}
L’objet de section
Les sections de classe renvoyées par le calendrier se présentent sous la forme d’un objet Section()
. Tous les objets de section ont les propriétés suivantes :
section_attrs =
Un seul objet de section ou une liste d’objets de section vous sera renvoyée après une requête réussie au calendrier VT. Vous pouvez accéder aux informations sur les sections de classe à partir des attributs ci-dessus.
L’erreur TimetableError
Une erreur d’horaire est générée lorsqu’une mauvaise demande est faite ou que l’horaire VT est en panne. En effet, lorsque le code d’état de la requête n’est pas 200. L’erreur levée peut être utilisée pour essayer d’échouer gracieusement dans une certaine mesure. Le TimetableError fournit un attribut sleep_time
pour permettre une pause d’exécution.
from pyvt import TimetableErrortry: timetable.crn_lookup(...)except TimetableError as e: time.sleep(e.sleep_time)
L’idée derrière cela est que si la demande était mauvaise, votre programme dormira pendant un court laps de temps. Cependant, si le calendrier VT est en panne et que plusieurs TimetableErrors
successifs sont déclenchés, alors sleep_time
croît de manière exponentielle pour éviter d’accabler le serveur.