Submissão de Sprints Python Brasil 2019
O Sprint é um espaço proporcionado pela conferência Python Brasil para desenvolvimento e contribuição de projetos open source.
Caso ainda não saiba o que é um sprint você pode assistir o vídeo que o Álvaro Justen fez explicando tudo o que você precisa saber: https://www.youtube.com/watch?v=8QNjwSNd4s0
A ideia das submissões de Sprint servirá para que os participantes da Python Brasil tenham noção dos projetos previamente, porém algumas ideias irão aparecer durante o evento, por isso as sugestões ficarão abertas até o último dia e sem a necessidade de submeter aqui.
Datas Importantes
28/10/2019 - Dia dos sprints
Dados do projeto
Nome
Qual projeto open-source você estará apresentando para que os participantes contribuam? Exempo: Operação Serenata de Amor
Resumo
Descrição sobre o projeto. Exemplo: "A Operação Serenata de Amor é um projeto de inteligência artificial para análise de gastos públicos no Brasil."
Propostas
Brasil.IO & rows: ajudando na abertura de dados abertos brasileiros
Os processos de captura, conversão e limpeza de dados tomam muito tempo em qualquer projeto de análise de dados - e costuma ser pior nos casos de dados públicos, onde os dados estão muito dispersos e disponíveis em formatos não legíveis por máquina. Foram criados dois projetos para ajudar a resolver esse problema:
- A biblioteca (e interface de linha de comando) rows foi criada para ajudar a automatizar esse processo (é possível, com um comando, converter PDFs para CSV, por exemplo);
- A plataforma Brasil.IO, que é um repositório de dados abertos já disponíveis em formatos mais acessíveis, incluindo filtros e uma API.
Ambos projetos foram criados em Python e são software livre. Durante essa sprint Álvaro Justen (criador dos projetos) estará disponível para ajudar aos que querem colaborar pela primeira vez e parear com os demais para resolver bugs e criar novas funcionalidades.
COLABORADADOS: O VEÍCULO COLABORATIVO SOBRE TRANSPARÊNCIA E OPEN DATA NO BRASIL.
O Colaboradados é um veículo que busca, de forma colaborativa, reunir, demonstrar, investigar e monitorar o acesso à informação no Brasil
Com o uso de ferramentas diversas, nosso objetivo é apenas um: tornar mais democrático o acesso a dados e informação. Para isso, temos o compromisso com a veracidade e o fácil acesso à informação. Possuímos diversas 'veias' de atuação, que auxiliam a sociedade nessa missão:
1. Uma de nossas ferramentas é o nosso robô, o @colaborabot, feito em Python, que monitora o acesso aos portais de transparência governamental do país. Aliando tecnologia e cidadania, nosso bot avisa no Twitter sempre que um portal de dados do governo saí do ar. Produzindo também uma base de dados de quedas de sites, o @colaborabot já foi, inclusive, materia de reportagem no Portal G1.
Links:
https://g1.globo.com/economia/tecnologia/noticia/2019/03/01/regras-do-twitter-afetam-robos-que-monitoram-politicos-e-orgaos-publicos.ghtml;
https://twitter.com/colabora_bot
2. Nosso banco de bases de dados permite que o usuário navegue em meio a centenas de bases onde todas passaram por uma curadoria que atestaram a sua confiança e veracidade. Organizadas por assunto, nosso banco permite que você entre em links e baixe dados abertos.
Link:
http://colaboradados.com.br/
3. O podcast brasileiro de jornalismo de dados, o Coluna7, é feito para levar para você, que nunca ouviu falar sobre jornalismo de dados, conhecimentos sobre educação, dados abertos e como é usar programação no jornalismo - e em outras áreas também. Estamos presentes no Spotify, Google Podcasts, e também no nosso site.
Link:
http://colaboradados.com.br/podcast.html
pyp5js: Desenhando com Python na Web
O pyp5js é um projeto que visa permitir a pessoas desenharem utilizando código Python direto no navegador web.
Documentação do projeto: https://berinhard.github.io/pyp5js/
Repositório do projeto: https://github.com/berinhard/pyp5js
Instruções de setup: https://berinhard.github.io/pyp5js/#i-want-to-hack
sinesp-bot
O sinesp-client tornou possível a consulta à base de dados do SINESP Cidadão sem a necessidade do preenchimento de captchas ou algum outro tipo de autenticação. O SINESP Cidadão é uma base de dados pública de veículos brasileiros. É muito útil para identificar carros ou motos roubados ou suspeitos.
Não sabemos o porquê, mas o governo não mantém uma API verdadeiramente pública para este serviço. A única maneira de acessar os dados é acessando o site do SINESP e respondendo a perguntas de verificação (captchas) para cada uma das requisições.
Felizmente as aplicações para Android e iOS permitem que a busca seja feita sem que seja preciso responder a nenhum teste captcha. A comunidade então fez uma engenharia reversa no aplicativo para que pudéssemos ter acesso a essas informações públicas sem que fosse preciso responder a esses captchas. Isso deu origem a diversas bibliotecas nas mais diversas linguagens de programação. Eu estava mantendo a sinesp-client, que era a versão em Python, amplamente utilizada por empresas de segurança, estacionamentos e até mesmo algumas repartições públicas, incluindo DETRAN e delegacias de polícia.
No entanto, a equipe do SINESP constantemente lança atualizações do aplicativo dificultando o acesso automatizado das informações e obfuscando a forma com a qual o acesso é feito. Foi então que tive a ideia de criar um repositório demonstrando a utilização de uma técnica não invasiva utilizada principalmente em testes de QA. Usei o SDK do Android e suas ferramentas agregadas e o software Appium para automatizar as consultas, simulando o comportamento de um usuário comum, ou seja, utilizando um dispositivo físico ou o emulador oficial da plataforma.
Assim, o aplicativo funciona como uma caixa preta, não sendo necessário obter detalhes sobre sua implementação, dependendo apenas dos identificadores únicos utilizados na plataforma Android e que ficam disponíveis por questões de usabilidade da Interface de Usuário do sistema operacional. Sua assinatura digital é mantida.
A prova de conceito funciona, mas o processo ainda possui muitas partes manuais, como a instalação e configuração do ambiente e do emulador do Android. Possível linha de melhorias pra tornar a utilização mais fácil e pronta para utilização em produção:
- criar um container docker com todas as dependências para execução stand-alone
- melhorar a documentação (incluindo instruções para uso de proxy)
- melhorar o código fonte (foi feito bem rápido apenas como prova de conceito)
- criar e distribuir um pacote python (setup.py e afins; pode ser no docker hub também)
Links:
- https://github.com/victor-torres/sinesp-client