Articles

kevincianfarini / pyvt

Estado de coberturaEstado de compilaciónVersión PyPI

Un Horario de clases de Virginia Tech Python API

Instalación

pip install py-vt

Uso

Importe el horario

from pyvt import Timetable

La API proporciona acceso al Horario a través de un objeto de horario.

timetable = Timetable()

El objeto timetable proporciona algunos métodos útiles para extraer datos del horario VT.

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

devuelve el objeto de sección de clase del horario con el CRN 17583 en el término year 201701, independientemente de si la clase está llena o no a su capacidad. Alternativamente, si solo desea encontrar secciones abiertas:

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

Todos los métodos del horario proporcionan un argumento predeterminado de open_only=True y term_year=None al realizar solicitudes de horario. En una búsqueda, si el año de vigencia no es Ninguno, el valor predeterminado será el año de vigencia más reciente. Hay más sobre esto en la sección del Año de Término.

Algunos de los otros métodos de búsqueda más utilizados son los siguientes:

def crn_lookup(self, crn_code, term_year=None, open_only=True): ...
crn_lookup(...) devolverá un único Section(...) objeto o None dependiendo del éxito de la consulta. No se devuelve ninguna si no hay secciones de clase disponibles basadas en los argumentos.

Los siguientes métodos devuelven una lista de Section(...) objetos o None dependiendo del éxito de la consulta.

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

Se pueden realizar búsquedas más refinadas utilizando el método refined_lookup(...)

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

Códigos de uso

Algunos de los códigos que necesitan para ser utilizados con esta API son únicamente para satisfacer las necesidades de las publicaciones de horarios de VT. Algunos códigos útiles son los siguientes.

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

Los años de plazo

El horario de Virginia Tech ofrece búsquedas de secciones de clase para años de plazo específicos. Si desea trabajar con el año de plazo actual, puede dejar term_year=None sin tocar en las llamadas al método de horario. Al hacer la solicitud, el año de plazo será el año de plazo más reciente.Los años de plazo ocurren cada año en los meses de Agosto, Enero, Junio y Julio. Una llamada por año de término predeterminado en marzo daría lugar a la devolución de secciones de clase para el último año de término activo, que es en enero. El semestre de primavera. Esto es para evitar hacer llamadas al Horario de TV con años de plazo que aún no están disponibles.

Alternativamente, si sabe que un determinado año de plazo está disponible, pero no el predeterminado, puede pasar un año de plazo a los métodos de búsqueda. Los años de término siguen un patrón YYYYMM simple como se muestra:

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

El objeto de sección

Las secciones de clase devueltas del horario vienen en forma de un objeto Section(). Todos los objetos de sección tienen las siguientes propiedades:

section_attrs = 

Se le devolverá un solo objeto de sección o una lista de objetos de sección al realizar una consulta correcta al horario de VT. Puede acceder a la información sobre las secciones de clase desde los atributos anteriores.

El error TimetableError

Se genera un error de horario cuando se realiza una solicitud incorrecta o cuando el horario de VT está inactivo. En efecto, cuando el código de estado de la solicitud no sea 200. El error lanzado se puede usar para intentar fallar hasta cierto punto. El error TimetableError proporciona un atributo sleep_time para permitir una pausa en tiempo de ejecución.

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

La idea detrás de esto es que si la solicitud era mala, su programa dormirá durante un corto período de tiempo. Sin embargo, si el horario de VT está inactivo y se elevan varios TimetableErrors, entonces sleep_time crece exponencialmente para evitar abrumar al servidor.