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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c887feecaa7fed8e161cb4bcc7e0e93aace0b3eefb3855da626bce09d6d86a1a
|
|
| MD5 |
10da0d6fa1dc252b67909839ec6f12d3
|
|
| BLAKE2b-256 |
bbe074f6dd389a8c0d638f152c4a96aa1594f8defcd5a5b010f7f9acce66059c
|
File details
Details for the file microhorario_dl-1.6.3-py3-none-any.whl.
File metadata
- Download URL: microhorario_dl-1.6.3-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf999a319defb69f28c190096c962ce92789e8278fa5f0bdab6d91c9d319be95
|
|
| MD5 |
51ba88fbcfc7d7c179221578500de807
|
|
| BLAKE2b-256 |
d4a9cbaa5bc42fad31eb46aa701326ecfef5946ff6bf2fec06d072ab3e46f5be
|