Skip to main content

PUC-Rio Microhorario Downloader

Project description

Microhorario Downloader

Biblioteca destinada ao download e utilização de dados provenientes do Microhorario da PUC-Rio.

Essa biblioteca permite baixar todos os dados, e disponibiliza modelos para a utilização destes.

A biblioteca não tem poder de alterar nenhum dado, somente baixar os dados e manipular localmente.

Além disso, é possível baixar as ementas automaticamente de todas as disciplinas disponíveis.

Funcionamento

O microhorário não disponibiliza nenhuma API para poder fazer um download automático das disciplinas. Por isso, é necessário fazer requests específicos para conseguir simular um usuário baixando os dados.

Para baixar os dados, um usuário precisa carregar a página inicial, fazer uma consulta sem nenhum filtro, e depois baixar os dados no formato CSV. Essa biblioteca simula essas três simulações atráves de um GET e dois POSTS.

Para poder baixar o CSV, é preciso fazer um POST enviando os dados do formulário, assim como variáveis de ASP.NET. Essas variáveis são adquiridas ao fazer uma consulta sem filtro, por isso é necessário fazer um POST usando os dados do formulário para fazer essa consulta. Porém, essa consulta também utiliza variáveis de ASP.NET e um id de sessão adquiridos ao entrar na página. Por isso, é necessário fazer um GET na página inicial para poder adquirir essas variáveis e esse id.

Portanto, são feitos três requests, nomeados consulta_inicial, consulta_intermediaria, e consulta_final:

consulta inicial (GET https://puc-rio.br/microhorario):
    recebe:
        cookies
        id da sessao
        nomes e códigos dos departamentos
        nomes e códigos dos destinos
        __VIEWSTATEGENERATOR, __VIEWSTATE e __EVENTVALIDATION

consulta intermediaria (POST /WebMicroHorarioConsulta/MicroHorarioConsulta.aspx):
    envia:
        formulario pedindo uma consulta sem filtro
        cookies
        id da sessao
        __VIEWSTATEGENERATOR, __VIEWSTATE e __EVENTVALIDATION

    recebe:
        cookies
        id da sessao
        __VIEWSTATEGENERATOR, __VIEWSTATE e __EVENTVALIDATION

consulta final (POST /WebMicroHorarioConsulta/MicroHorarioConsulta.aspx):
    envia:
        formulario pedindo para baixar os resultados de uma consulta sem filtro
        cookies
        id da sessao
        __VIEWSTATEGENERATOR, __VIEWSTATE e __EVENTVALIDATION

    recebe:
        arquivo csv em utf-16

Uso

Instale a biblioteca:

pip install microhorario-dl

Importe e baixe os dados:

>>> from microhorario_dl import Microhorario

>>> micro = Microhorario.download()
<Microhorario object at ...>

>>> micro.disciplinas
[<Disciplina [ACN1000]>, <Disciplina[ACN1002]>, ...]

Baixe as ementas e prerequisitos:

>>> micro.coletar_extra(verbose=True)
[0/ 2000] Baixando ACN1000...  DONE (...)
[1/ 2000] Baixando ACN1002...  DONE (...)
[2/ 2000] Baixando ACN1004...
... 

Exporte para um json:

>>> import json

>>> print(json.dumps(micro.as_json(), indent=2))
{
    "periodo": "20221",
    "emissao": "05/04/2022 22:57 h",
    # ...
    "disciplinas": [
        # ...
    ]
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

microhorario-dl-1.5.3.tar.gz (15.9 kB view hashes)

Uploaded Source

Built Distribution

microhorario_dl-1.5.3-py3-none-any.whl (17.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page