Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cria worker para converter arquivos PDF para TXT #119

Merged
merged 10 commits into from Jul 18, 2023

Conversation

zoedsoupe
Copy link
Member

@zoedsoupe zoedsoupe commented Jul 8, 2023

Descrição

Esta PR implementa a segunda parte do script de importação de cotações de pescado do site da Pesagro. Nesta parte do fluxo, um novo worker foi implementado, para vasculhar a tabela cotacao em busca de cotações (links) que ainda não foram baixadas.

Após baixar cada arquivo, uma verificação deve ser feita, pois alguns links da Pesagro são um conjunto de PDFs num arquivo zip, que devem ser extraídos.

Com todos os PDFs extraídos, deve-se então fazer upload na API da Zamzar de cada um dos PDFs extraídos, os convertendo para TXT. Não podemos ultrapassar o rate limit da API deles (5 requests por segundo).

Tendo o arquivo convertido, é preciso baixá-lo para que o último worker possa ser iniciado para fazer a ingestão (parsing) dos dados de cada pescado.

O script original pode ser encontrado no repositório cotacoes-api: https://github.com/peapescarte/cotacao-api/blob/feat-etl-module/etl/crawler.py

Pontos para atenção

  • O worker de conversão deve seguir o seguinte fluxo:
    1. Buscar cotacoes no banco que ainda não foram baixadas
    2. Baixar cada cotação, no site da Pesagro
    3. Caso uma cotação seja um arquivo zip, extrair todos os PDFs contidos no arquivo
    4. Fazer upload de cada PDF para a API da Zamzar, para conversão em TXT de cada um, respeitando o rate limit deles (no máximo 5 requests por segundo)
    5. Baixar o arquivo convertido da Zamzar, caso já esteja pronto ou agendar uma nova consulta na API deles

Possui novas configurações?

  • Configurações internas para o uso correto da lib mox
  • Variável de ambiente FETCH_PESAGRO_COTACOES, um booleano para controlar se os workers devem ser iniciados com a aplicação ou não

Possui migrations?

N/A

@zoedsoupe zoedsoupe self-assigned this Jul 8, 2023
Copy link

@Cyytrus Cyytrus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eu curti bastante as abordagens utilizadas, mas tenho 1 ponto, que foi o mesmo que levantei no twitter:

Não acho mta lógica em utilizar uma API para converter PDF para txt, existem formas gratuitas bem mais rapidas para isso, como ghostscript, é possível instalá-lo no docker da aplicação e utilizá-lo sem problemas, uma vez que tenha os PDFs baixados basta você rodar o comando do link acima com um System.cmd() que rapidinho um txt é baixado onde vc especificar, sem rate limit.

Com isso, fica até mais fácil de testar com os asserts e tals 😃

Caso tenha dificuldades, podemos marcar um pair para fazer essa implementação <3

@zoedsoupe
Copy link
Member Author

@Cyytrus Primeiramente, muito obrigada pelo comentário! Você realmente me salvou! Eu fiquei procurando e pesquisando formas de converter um PDF pra TXT e não achei nada sobre ghostscript. Como são muitos arquivos, vou extrair essa lógica pra um outro worker, porque esse Converter ficou muito grande.

@zoedsoupe zoedsoupe enabled auto-merge (squash) July 11, 2023 00:29
@zoedsoupe zoedsoupe requested a review from Cyytrus July 11, 2023 00:37
…rte-plataforma into feat/cotacao-converter

* 'feat/cotacao-converter' of github.com:peapescarte/pescarte-plataforma:
@zoedsoupe zoedsoupe disabled auto-merge July 18, 2023 20:08
@zoedsoupe zoedsoupe merged commit 503bc4e into main Jul 18, 2023
3 of 4 checks passed
@zoedsoupe zoedsoupe deleted the feat/cotacao-converter branch July 18, 2023 20:08
zoedsoupe pushed a commit that referenced this pull request Jul 18, 2023
* main:
  Cria worker para converter arquivos PDF para TXT (#119)
zoedsoupe pushed a commit that referenced this pull request Jul 19, 2023
* main:
  Feat/radio component (#121)
  Melhora o ambiente de desenvolvimento com Docker (#123)
  resolve testes do contexto de cotacao
  Melhora estrutura para importação de cotações da Pesagro (#122)
  Cria worker para converter arquivos PDF para TXT (#119)
zoedsoupe pushed a commit that referenced this pull request Jul 24, 2023
* main: (35 commits)
  divide Dockerfile em prod e dev stages e atualiza doc
  Criando estrutura inicial para app catalogo (#120)
  Feat/radio component (#121)
  Melhora o ambiente de desenvolvimento com Docker (#123)
  resolve testes do contexto de cotacao
  Melhora estrutura para importação de cotações da Pesagro (#122)
  Cria worker para converter arquivos PDF para TXT (#119)
  chore: increment asdf documentation (#117)
  Adiciona integração com API da Zamzar para conversão de PDF para TXT (#118)
  Cria app CotacoesETL e buscador de novas cotações na Pesagro (#113)
  Implementa handler e repository para app cotacoes (#114)
  Cria modelos para APP de Cotações (#111)
  adiciona app de cotacoes (#110)
  Feat/textarea component (#109)
  Bug/correcoes layout (#108)
  Bug/correcoes layout (#84)
  adiciona mutation para adicionar tags a uma midia (#107)
  adiciona o app seeder no Dockerfile
  adiciona secret key base para api
  corrige strings para atomos na release
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Completo
Development

Successfully merging this pull request may close these issues.

None yet

2 participants