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.6.3.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

microhorario_dl-1.6.3-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file microhorario-dl-1.6.3.tar.gz.

File metadata

  • Download URL: microhorario-dl-1.6.3.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for microhorario-dl-1.6.3.tar.gz
Algorithm Hash digest
SHA256 c887feecaa7fed8e161cb4bcc7e0e93aace0b3eefb3855da626bce09d6d86a1a
MD5 10da0d6fa1dc252b67909839ec6f12d3
BLAKE2b-256 bbe074f6dd389a8c0d638f152c4a96aa1594f8defcd5a5b010f7f9acce66059c

See more details on using hashes here.

File details

Details for the file microhorario_dl-1.6.3-py3-none-any.whl.

File metadata

File hashes

Hashes for microhorario_dl-1.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cf999a319defb69f28c190096c962ce92789e8278fa5f0bdab6d91c9d319be95
MD5 51ba88fbcfc7d7c179221578500de807
BLAKE2b-256 d4a9cbaa5bc42fad31eb46aa701326ecfef5946ff6bf2fec06d072ab3e46f5be

See more details on using hashes here.

Supported by

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