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.
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.
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
.
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
.
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
.
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.
- [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)