GitXplorerGitXplorer
f

ufabc-matricula-server-old

public
1 stars
1 forks
7 issues

Commits

List of commits on branch master.
Unverified
1b9a13fd64cd9704ac15e7f285275f7d4c64d7fd

Update

committed 6 years ago
Unverified
8caf00a3c36a8056fdb290ccbc8f29cc21b8194c

Fix for new quad

committed 7 years ago
Unverified
61c9f36f222d357ad55cff3fb649c48ce7ae4045

add new domain and replace my id

committed 7 years ago
Unverified
10a6d3de62b1ddd3cda408fb134899984e9cecf5

Add snapshot

committed 7 years ago
Unverified
dcddf0ae00f1146ebbdecfb12381544247e9cb5f

Fix wrong build

committed 7 years ago
Unverified
b2c862901010d2b3b165682c3299c559590dad8f

New build

committed 7 years ago

README

The README file for this repository.

ufabc-matricula-server

Web service que alimenta ufabc-matricula-extension, extensão para Google Chrome que extende e aumenta as funcionalidades do sistema de matrículas da UFABC.

Início rápido

Com o Node.js instalado e o MongoDB também, vá dentro da pasta raiz e digite:

$ npm install

Provavelmente todos os dados do servidor já estão prontos (horarios e disciplinas), então basta digitar:

$ npm start

Abra o browser e digite o endereço: http://localhost:3000/disciplinas. A lista de turmas, com seus respectivos professores e notas no UFABC HELP! deverá aparecer.

Como funciona

Extraindo dados do UFABC HELP!

O repositório já possui um arquivo chamado help.json, que foi resultado de um extração de dados feita no site UFABC HELP!, caso você queria fazer sua própria extração de dados, você precisa ter uma conta no UFABC HELP! associada ao seu Facebook. Entretanto, para rodar o extrator você precisa do Python e algumas de suas dependências instalados:

$ pip install mechanize
$ pip install beautifulsoup4

Para rodar o extrator, dentro da pasta root navegue até a pasta build e então:

$ python load_help.py -u user_facebook -p password_facebook

Um arquivo chamado help.json, será criado com os dados extraídos do UFABC HELP! dentro da pasta build/tmp.

Extraindo dados do PDF de horários da matrícula da UFABC (beta)

O arquivo horarios.json representa o resultado do que faremos a seguir: ainda dentro da pasta build, existe a opção de passarmos o PDF das disciplinas, turmas e horários da UFABC para extrairmos os dados pertinentes. Caso você não tenha instalado as dependências não se esqueça de fazer:

$ npm install

Para extrair os dados, rode:

$ node pdf_parser.js url

Onde url é o link do PDF dos horários disponibilizado pela PROGRAD.

Pronto, um arquivo horarios.json deve aparecer dentro da pasta build/tmp.

Mesclando dados

Agora que temos ambos os arquivos horarios.json e help.json podemos mesclar os dois para obtermos uma único arquivo JSON que será enviado para todos os alunos que estiverem com a extensão do Google Chrome ativada. Agora começamos a fazer a transição da parte de processamento de dados para o servidor web especificamente.

Caminhe até a pasta build e então faça:

$ node build.js

Um arquivo processed.json será criado como combinação das extrações feitas anteriormente. Para facilitar nossa vida vamos enviar esse arquivo quando o usuário fizer um requisição ao invés de armazená-lo em um banco de dados. Por isso, tenha certeza que esse arquivo existe dentro da pasta build/tmp.

Inicializando o servidor

No diretório principal existe um arquivo chamado .env, dentro dele você pode colocar se está desenvolvendo em development ou em production. O valor padrão desse campo é true. Caso esteja rodando em production, será necessário mudar a URI de conexão do banco, caso esteja usando o mlab, apenas substitua os valores de DB_USER e DB_PASSWORD dentro do arquivo .env.

Agora é só fazer:

$ npm start

Abra o browser e digite o endereço: http://localhost:3000/disciplinas. A lista de turmas, com seus respectivos professores e notas no UFABC HELP! deverá aparecer.

TODO 1.0

  • [x] Processar arquivo com a lista de professores, salas e disciplinas
  • [x] Extração de dados do UFABC HELP!
  • [x] Join na lista de professores com os dados do UFABC HELP!
  • [x] Carregar lista para o banco de dados (DAR .JSON)
  • [x] Criar endpoints da API
  • [x] Melhorar parsing do PDF de horários (SOFRÍVEL)