kevincianfarini / pyvt
Virginia Tech Calendário de Classes API do Python
Instalação
pip install py-vt
de Uso
Importar o Calendário
from pyvt import Timetable
A API fornece acesso ao Calendário através de um Calendário de objeto.
timetable = Timetable()
o objecto de horário fornece alguns métodos úteis para extrair dados do calendário VT.
timetable.crn_lookup('17583', term_year='201701', open_only=False)
retorna a classe de objeto de seção do calendário com o CRN 17583 no prazo de ano 201701
, independentemente de estarem ou não a classe está cheio. Alternativamente, se você gostaria de encontrar apenas seções que estão abertas:
timetable.crn_lookup('17583', term_year='201701')
Todos os métodos do calendário de fornecer um padrão de argumento de open_only=True
e term_year=None
ao fazer o calendário pedidos. Após um olhar para cima, se o ano do termo é nenhum ele será default ao ano do termo mais recente. Há mais sobre isso na seção de termo ano.alguns dos outros métodos de pesquisa mais usados são os seguintes::
def crn_lookup(self, crn_code, term_year=None, open_only=True): ...
crn_lookup(...)
irá retornar um único Section(...)
objeto ou None
dependendo do sucesso da consulta. Nenhum é devolvido se não houver seções de classe disponíveis com base nos argumentos.
Os seguintes métodos retornam uma lista de Section(...)
objectos ou None
dependendo do sucesso da 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): ...
Mais refinado buscas podem ser realizadas usando o refined_lookup(...)
método
def refined_lookup(self, crn_code=None, subject_code=None, class_number=None, cle_code=None, term_year=None, open_only=True):
o Uso de Códigos
Alguns dos códigos que precisam ser utilizados com esta API são exclusivamente para satisfazer as necessidades do VT Horário posts. Alguns códigos úteis são os seguintes.
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 Timetable offers class section lookups for specific term years. Se você gostaria de trabalhar com o período atual, você pode deixar term_year=None
intocado no método de cronograma chamadas. Ao fazer o pedido, o termo ano será faltado para ser o mais recente mandato ano.Os anos de mandato acontecem todos os anos nos meses de agosto, janeiro, junho e julho. Uma chamada do ano do prazo padrão em Março resultaria em retornar seções da classe para o último ano ativo, que é em janeiro. Primavera. Isto é para evitar fazer chamadas para o calendário VT com anos de duração que ainda não estão disponíveis.
Alternativamente, se você sabe que um determinado termo ano está disponível, mas não o padrão, você pode passar em um termo ano para os métodos de pesquisa. Os anos de duração seguem um padrão simples de AAAAMM como mostrado:
term_years = { 'Spring 2017': '201701', 'Summer I 2017': '201706', 'Summer II 2017': '201707', 'Fall 2017': '201709', ...}
a secção objecto
as secções de classe devolvidas do horário vêm na forma de um Section()
objecto. Todos os objetos da seção têm as seguintes propriedades:
section_attrs =
ou um único objeto da seção ou uma lista de objetos da seção serão devolvidos a você em uma consulta bem sucedida para o calendário VT. Você pode acessar informações sobre seções de classe A partir dos atributos acima.
o erro horário
um erro de horário é jogado quando um mau pedido é feito ou o horário VT é baixo. Com efeito, quando o código de Estado do pedido não for 200. O erro jogado pode ser usado para tentar e graciosamente falhar em uma extensão. The TimetableError provides a sleep_time
attribute to allow for a runtime pause.
from pyvt import TimetableErrortry: timetable.crn_lookup(...)except TimetableError as e: time.sleep(e.sleep_time)
No entanto, se o calendário VT é baixo, e vários sucessivos TimetableErrors
são levantados, então sleep_time
cresce exponencialmente para evitar sobrecarregar o servidor.