Articles

kevincianfarini / pyvt

Cobertura de EstadoStatus de CompilaçãoPyPI versão

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.