/fio-de-ariadne

🪁 Structuiring data on missing kids in Brazil

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Fio de Ariadne

Fio de Ariadne GitHub Actions: Tests

Essa é uma prova de conceito para um sistema de raspagem e estruturação de dados sobre crianças desaparecidas no Brasil. O Fio de Ariadne tem como requisitos técnicos Python 3.7+ e Poetry.

Rodando o Fio de Ariadne localmente (sem Docker)

Instalando as dependências

$ poetry install

Para utilizar as dependências, você precisa entrar no virtualenv que o Poetry criou:

$ poetry shell

Use exit para sair do virtualenv quando desejar.

Configurando a aplicação feita em Django

Execute esse comando e siga as instruções:

$ createnv

Raspando os dados

Esses comandos só precisam ser executados uma única vez. Eles criam a estrutura do banco de dados, raspam os dados e salvam tudo nesse banco:

$ python manage.py migrate
$ python manage.py crawl

Você pode ainda criar um usuário para acessar o painel de controle:

$ python manage.py createsuperuser

Iniciando a aplicação web

Utilize esse comando e depois acesse localhost:8000:

$ python manage.py runserver

Rodando o Fio de Ariadne via Docker

Não é necessária nenhuma configuração para rodar o Fio de Ariadne em modo de desenvolvimento.

Esses comandos só precisam ser executados uma única vez (como explicado anteriormente).

$ docker-compose run --rm web python manage.py migrate
$ docker-compose run --rm web python manage.py crawl
$ docker-compose run --rm web python manage.py createsuperuser

Para inicar a aplicação web em 0.0.0.0:8000, utilize:

$ docker-compose up

API web

GET /api/kid

Lista as crianças do nosso banco de dados.

Aceita como parâmetro de busca (busca exata) parâmetros de URL com os nomes dos campos do modelo web.core.models.Kid.

Exemplo

GET /api/kid?eyes=Pretos&hair=Castanho escuro lista apenas as crianças:

  • cujo campo eyes tenha o valor exato (case-sensitive, inclusive) "Pretos"
  • e cujo campo hair tenha o valor exato (case-sensitive, inclsuive) "Castanho escuro"

Contribuindo

Precisamos de ajuda

Você pode contribuir com melhorias no código e utilizar algumas verificações de qualidade:

$ mypy crawler
$ pytest