Skip to content

Conversation

@AndreFelix74
Copy link

Proposta para agilizar a manipulação dos dados e melhorar eficiência do uso das redes.

Na versão atual, o script sempre faz download dos arquivos do site do TSE. No caso da pessoa criar dois dataframes com o mesmo arquivo de origem, o arquivo é descarregado duas vezes. Por exemplo:

> df_elec_fed_ac <- electionsBR::candidate_fed(2014, "AC")
trying URL 'http://agencia.tse.jus.br/estatistica/sead/odsele/consulta_cand/consulta_cand_2014.zip'
Content type 'application/zip' length 5585613 bytes (5.3 MB)
==================================================
downloaded 5.3 MB

Processing the data...
Done.

> df_elec_fed_am <- electionsBR::candidate_fed(2014, "AM")
trying URL 'http://agencia.tse.jus.br/estatistica/sead/odsele/consulta_cand/consulta_cand_2014.zip'
Content type 'application/zip' length 5585613 bytes (5.3 MB)
==================================================
downloaded 5.3 MB

Processing the data...
Done.

A proposta dessas alterações é permitir às pessoas configurar uma pasta local para armazenar os arquivos e passar a ler os dados dessa pasta local. Se trabalhar com dados locais pode levar o usuário a utilizar dados desatualizados, o risco é compensado ao promover agilidade de quem não tem uma excelente conexão de internet. Importante destacar que sem definir essa configuração o script permanecerá com o comportamento atual de sempre baixar os arquivos.
Para implementar essa configuração foi levado em consideração que o TSE não realiza alterações nos arquivos com alta frequência, não será em horas ou mesmo semanas, que haverá defasagem de dados. Também foi considerado o princípio de desenvolvimento em Python de que somos todos adultos responsáveis.

Por meio da função options do pacote base do R, o usuário pode configurar a pasta de downloads dos arquivos na variável electionsBR-data-path. Por exemplo:

> options('electionsBR-data-path' = '~/Documents/dados_tse')

Ao executar as funções o script primeiro buscará os arquivos na pasta configurada no passo anterior e, se não encontrar, então, fará o descarregamento do arquivo.

> df_elec_fed_ac <- electionsBR::candidate_fed(2014, "AC")
Downloading data to: ~/Documents/dados_tse/consulta_cand_2014.zip
trying URL 'http://agencia.tse.jus.br/estatistica/sead/odsele/consulta_cand/consulta_cand_2014.zip'
Content type 'application/zip' length 5585613 bytes (5.3 MB)
==================================================
downloaded 5.3 MB

Processing the data...
Done.

> df_elec_fed_am <- electionsBR::candidate_fed(2014, "AM")
Processing the data...
Done.

Com essa alteração, na segunda execução da função candidate_fed o script utiliza o arquivo já descarregado pela execução anterior.

O script foi refatorado para centralizar o tratamento dos arquivos em três funções. Nessa refatoração foi considerado o princípio Don't repeat Yourself de não redundância de código. Isso facilitou a implementação da função de verificação da opção de pasta local e dos arquivos descarregados. E, também, preparou a estrutura do código para agilizar futuras manutenções na função de tratamento arquivos, como por exemplo, verificar a versão dos arquivos remotos e sugerir ao usuário o novo download.

@silvadenisson
Copy link
Owner

Obrigado meu caro... essa era atividade programada pra próxima atualização, logo mais dou uma olhada com calma da sugestão.

@AndreFelix74
Copy link
Author

AndreFelix74 commented Jul 11, 2020

Por nada, é uma satisfação poder contribuir. É uma ferramenta bastante útil.
Tive mais um tempo e implementei o teste de comparação da data to arquivo remoto com o arquivo local.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants