$ git clone git@github.com:unb-cic-esw/youtube-data-monitor.git
Neste projeto, utilizamos a Youtube Data API v3. Para que o script funcione corretamente, é necessário que você registre seu projeto e crie as credenciais necessárias para acesso à API. As instruções estão disponíveis no Create API Keys.
Crie uma credencial do tipo API key e faça os seguintes procedimentos:
- Abra o Terminal e digite o seguinte comando
$ cd youtube-data-monitor
- Ainda no Terminal, digite:
$ bash youtube.sh install
-
Será requisitada a chave da API do YouTube, adquirida no passo anterior.
-
O Banco de Dados utilizado será o PostgreSQL. Insira um usuário e uma senha que desejar, quando solicitado.
-
Após este procedimento, a aplicação estará instalada na sua máquina.
Siga as instruções acima
Por fim, abra o arquivo activate que se encontra em venv/bin e adicione as seguintes linhas ao final da função deactivate():
unset YOUTUBE_KEY
unset DATABASE_URL/
- No diretório do repositório, digite:
$ bash youtube.sh run
-
A aplicação começará a coletar os dados do dia. Somente poderá executar uma vez por dia.
-
Para analisar os dados, basta executar:
$ flask run
- Com isso, os dados estarão dispostos nas seguintes rotas em seu browser:
Rota para todas as datas de coletas:
localhost:5000/dates
Rota para todos os atores políticos:
localhost:5000/actors
Rota para os dados de canal com DATA e ATOR específicos:
localhost:5000/<date>/canal/<actor>
Rota para os vídeos de DATA e ATOR específicos:
localhost:5000/<date>/canal/<actor>/videos
Primeiramente procure uma tarefa para começar. Temos uma lista de bugs e dívidas técnicas ou você pode procurar uma nova funcionalidade na API do Youtube Para cada história a ser resolvida, seguir o seguinte procedimento:
- Clone o repositório
- Prepare o ambiente como foi explicado acima
- Crie uma branch (local e remoto) sobre o problema a ser resolvido, e.g.:
$ git checkout -b dev-subscribers
$ git push origin dev-subscribers
- Após resolver a issue, rode os devidos testes (rode mesmo porque seu PR não será aceito se seus testes não estiverem passando!)
- Abra um ticket de pull request no github com o sentido (base <- head):
unb-cic-esw/youtube-data-monitor/master <- unb-cic-esw/youtube-data-monitor/dev-subscribers
- Espere o Travis CI executar os testes de integração
- Se os testes passarem o adm disponível no momento irá aceitar seu PR 🚀
Todos os testes foram desenvolvidos utilizando a biblioteca unittest nativa do Python.
Os testes podem ser executados pelo seguinte comando:
$ bash youtube.sh test
Alternativamente, para executá-los, a partir da pasta raiz do projeto (dentro do environment), execute:
$ python -m unittest discover tests
Para seguir os padrões PEP8 de código python estamos usando a biblioteca pycodestyle. Para cada novo módulo adicionado ao projeto é necessário criar um teste para checar seu estilo de código (ver exemplos em test_pep8). Para executar a ferramenta e checar algum código, basta executar:
$ pip install pycodestyle
$ pycodestyle youtube/youtube.py
Para automatizar a execução do programa, utilizamos a ferramenta crontab. Um script foi escrito para adicionar a rotina de coletar os dados da api do Youtube à meia-noite como é possível ver no arquivo scheduler.sh. Para ativar a rotina basta escrever o seguinte comando no terminal:
$ bash scheduler.sh
Para editar os crontabs:
$ crontab -e
Para listar os crontabs:
$ crontab -l
Em sistemas Linux, adicione a seguinte linha no arquivo aberto pelo comando de editar crontab:
$ 0 0 * * * comando_a_ser_executado
O primeiro '0' diz respeito ao minuto, já o segundo '0' às horas. É usado o sistema de 24 horas. Com o comando abaixo, o programa será executado todos os dias à meia-noite.
$ 0 0 * * * cd $HOME/youtube/youtube-data-monitor && . venv/bin/activate && python -m youtube.update
Para rodar o servidor local basta configurar a variável de ambiente do Flask:
$ FLASK_APP=server/main.py
E então executar o servidor com:
$ flask run