Relatório 7 – Biochaves
Luiz Miranda Cavalcante Neto
Olá a todos. Temos uma base, e das grandes. Todos (ou quase todos) os artistas que possuem acordes registrados no cifraclub.com.br foram capturados pelo código rastreados que comecei a desenvolver no primeiro relatório. No total foram 224.226 artistas escaneados, uma média de 8600 artistas por letra inicial. Foram 21.578 artistas começando com a letra M e a letra inicial com menos artistas foi a letra X com 653 artistas. O tamanho total dos arquivos foi de 128mb, que não parece ser muito, até você lembrar que são 128mb de arquivos .txt. Vamos aqui a alguns comentários sobre a base e um relato dos bugs do código.
A base
A base de dados que não tem nome (pensei agora em Biochords, mas não sei se é bom) está organizada da seguinte forma:
- Artistas estão separados em pastas correspondentes à primeira letra do seu nome, ou a primeira letra do nome mais usado, por exemplo: Os Paralamas do Sucesso estão na pasta da letra P ao invés da letra O.
- Cada arquivo de artista engloba todas as músicas listadas no site e essas músicas estão separadas por um char ‘\n’.
- Os acordes estão separados por um espaço ‘ ‘.
- Não é possível saber o nome da música que está sendo analisada.
- Os acordes estão no tom padrão apresentado pelo site, um ajuste de tom para igualar os acordes se faz necessário.
- Está disponível pelo link : https://goo.gl/4fH1Yc use o quanto quiser <3;
Os bugs
O código do crawler é bem simples, basta escrever um código que extraia uma página html em formato txt e procurar certas tags para conseguir os acordes, esse procedimento foi descrito no relatório 1. No entanto, o cifraclub não ajudou nem um pouco. Constantemente ele negava acesso às páginas por isso era necessário aguardar um pouco e re-solicitar acesso (eu fiz o código esperar 5s antes de uma nova tentativa) isso, em geral resolvia o problema de conexão. Quando, mesmo tentando outra vez, o site encrencava com o programa eu disse para o crawler simplesmente ignorar esse artista/música e pular para o próximo, assim o problema de conexão foi resolvido.
Outro problema que fazia o código parar constantemente eram os caracteres usados pelo site (ou pela biblioteca de extração html). Esses caracteres eram codificados em Unicode, enquanto a função f.write só aceita ASCII. Eu não sabia, por isso, ao sair e deixar o código rodando, perdi muito tempo que poderia ser de processamento com o código parado, para só descobrir a falha quando retornava. A solução foi converter a codificação dos caracteres. Depois disso o código rodou liso por 6 dias seguidos, e esse foi o tempo necessário para extrair a base toda.
Você fez já alguma coisa com a base toda?
Não, mas pretendo executar o código de mapeamento com a base toda durante esse final de semana.
Mas por que você não rodou durante a semana?
Porque eu esqueci (risos)
Possui graduação em Engenharia Elétrica com habilitação em Eletrônica pela Universidade Federal de Sergipe (2014) e mestrado em Engenharia Elétrica pela Universidade Federal de Sergipe (2017). Foi professor voluntário da Universidade Federal de Sergipe no período de 2015/1 lecionando a disciplina de Circuitos Digitais. É Professor substituto de Ensino Básico, Técnico, Tecnológico e Superior do Instituto Federal de Sergipe no Campus Lagarto (IFS-Lagarto). Tem experiência na área de Engenharia Elétrica, com ênfase em Robótica e Reconhecimento de Padrões.