Desafio de programação com resultado prático

A maioria dos programadores que conheço curtem passar o tempo livre resolvendo desafios, então eu gostaria de propor um para quem se interessar.

É um desafio diferente, a complexidade não é a mesma dos problemas matemáticos e quebra-cabeças lógicos, mas não deixa de ser bem interessante.

O problema

1.  Existe uma “lista negra” de empresas queimadas na praça. São as chamadas “inidôneas” e “suspensas”.

O Cadastro Nacional de Empresas Inidôneas e Suspensas (CEIS) é um banco de informações mantido pela Controladoria-Geral da União que tem como objetivo consolidar a relação das empresas que sofreram sanções pelos órgãos e entidades da Administração Pública das diversas esferas federativas.

Ele pode ser acessado aqui: http://www.portaltransparencia.gov.br/ceis/

Pra facilitar, já exportamos os dois bancos no formato CSV. Baixe-os aqui.

2. Existe um formulário do TSE na web que permite consultar se uma determinada empresa foi doadora de campanha para algum candidato. Ele traz também os detalhes dessa doação, e principalmente para quem foi o dinheiro.

Ele fica aqui: http://www4.tse.gov.br/spce2008ConsultaFinanciamento/consultaReceitaDespesaCandidatoServlet.do

Queremos encontrar a intersecção entre esses dois mundos, que nos traria um resultado muito revelador: quem são os políticos que recebem dinheiro de empresas inidôneas. A idéia é usar o CNPJ das listas na busca do TSE para descobrir se há conexões e quais são os seus detalhes.

A solução

Está dada a largada. Quem quiser debater o problema ou mandar tudo resolvido pode usar os comentários deste post. Você também pode perguntar no Twitter pra mim (@pedrovalente) ou para o Fabiano Angélico (@fangelico), da Transparência Brasil. Foi ele quem me propôs o desafio, que resolvi compartilhar com quem quiser ajudar.

Só existe uma condição para participar, que você libere todo o código e explique como fez, para que outras pessoas também consigam reproduzir o seu resultado e aprender com ele.

O prêmio é apenas o reconhecimento público de um trabalho bem feito, e a satisfação de ter gasto seu tempo livre com um desafio que realmente pode ter algum impacto na vida real.

Se esta experiência der certo e alguém responder, quem sabe pode ser o início de uma série de cooperações independentes entre jornalistas e programadores na busca de menos sacanagem com o dinheiro público.

Atualização de domingo à noite (15/3):

Parece que já temos a resolução do problema. O Marcos Vinícius da Silva, de Ribeirão Preto, foi o primeiro a mandar uma solução que consegui rodar tranquilamente e pareceu funcionar direitinho. Com a palavra, o próprio Marcos:

Estou te mandando os fontes do que fiz até agora para o desafio.
Os fontes que estou te mandando assumem o Python instalado (o meu aqui é o 2.5.2), e que os arquivos Inidoneas.csv e Suspensas.csv estejam no mesmo diretorio dos fontes.
O programa irá gerar os arquivos saida_Suspensos.csv e saida_Inidoneos.csv, na mesma ordem que aparecem nos resultados das pesquisas realizadas no site.

Para executar o programa, basta chamar “python pesquisar.py”. Eu testei no Linux (Ubuntu), mas creio que funcione no windows também, pois não utilizei nenhum recurso fora do que o Python oferece.

Espero que seja útil!

Empacotei o código do Marcos com os arquivos CSV junto para quem quiser testar também.

Depois de rodar o código, estes foram os resultados encontrados no cruzamento.

Não posso deixar de agradecer também o Julio Biason, por ter liberado seu código inicial e aos outros que tentaram resolver. Acabo de dar uma olhada (23h) no repositório compartilhado pelo Julio e parece que ele está bem perto de um resultado. Aguardo seu relato para publicar aqui.

Fiquem à vontade pra comentar sobre as soluções e ajudar a melhorá-las, se necessário.

Agora é digerir esses dados e tentar interpretar o que eles significam.  Já vi alguns nomes bem interessantes ali dentro…

Atualização de segunda (16/3):

O Julio Biason também chegou à solução. Pontos pra ele por ter colocado o código num repositório compartilhado e feito uma visualização mais fácil do resultado. Parabéns!

Março 13, 2009

Como baixar mp3 do deezer.com

O Deezer é um site muito legal pra ouvir música. Você pode mandar qualquer mp3 pra lá e ouvir qualquer faixa que os outros mandaram. Pena que ele não deixa a gente baixar as músicas…

Mas peraí. Eu clico no play, a música carrega e eu ouço. Isso quer dizer que a faixa vem até o meu computador. Vem escondida, mas vem.

Aí é que entra o Firebug, extensão do Firefox obrigatória pra qualquer pessoa que faz site.

Então, já criou sua conta no Deezer e instalou o Firebug? Vamos em frente.

Pra saber qual o endereço da música que o Deezer tá tocando, abra o Firebug na aba “Net”, e mande tocar alguma coisa lá no site.

Arquivo mp3 no deezer.comEssa aba “Net” mostra todas as requisições que o site faz pro servidor e que chegam na sua máquina. Ali no meio tem um arquivinho bem suspeito, com mais ou menos o tamanho de uma música mp3 e o sugestivo nome de “encapsulation.php” (amplie a imagem pra ver melhor).

Taí o seu arquivo mp3. Com um clique do botão direito você pode copiar o endereço e ir à loucura com ele. Alguns players de música vão tocar se você jogar a URL nele e mandar tocar.

Como estou no Linux, usei o wget pra baixar o arquivo já renomeando pra alguma_coisa.mp3. Se você conseguir salvar no seu computador, é só renomear pra mp3 que ele funciona.

Não tive tempo de fuçar, mas o navegador deve guardar uma cópia desse arquivo no cache, como fazia com o finado (para os brasileiros) Pandora. Se encontrar o arquivo no cache também, é só renomear.

Se alguém descobrir como baixar uma playlist inteira de uma vez, por favor avise! Nesse ponto provavelmente as gravadoras já vão ter acabado com ele…

Agosto 22, 2007