Skip to content

Bot que compara preços de boardgames anunciados no Ludopedia e notifica caso o valor esteja abaixo da média.

Notifications You must be signed in to change notification settings

renanstn/buscador-de-boardgames

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Buscador de Boardgames

@Ludopedia Scrapper Bot

Projeto que compara preços de boardgames anunciados do Ludopedia com o preço médio encontrado no Compara Jogos, e notifica caso o valor esteja abaixo da média.

O que é

  • Este bot serve para monitorar o preço de um boardgame que você tenha interesse, no site de leilões Ludopedia. Fiz a pedido de um amigo que é viciado em comprar boardgames nesses leilões da vida.
  • O preço dos anúncios do Ludopedia é comparado com o preço médio do jogo no Compara Jogos
  • Caso o preço de um anúncio esteja abaixo da média, o bot te notifica, informando o jogo, o preço, e o link

Como utilizar

  • Este bot está online atualmente, basta clicar no aqui para acessá-lo em seu Telegram
  • Cadastre produtos neles com o comando /busca <nome do jogo>
  • Pronto. A partir de agora você receberá notificações caso o bot encontre algum anúncio com preço abaixo da média
  • Para cancelar a busca de um produto, utilize o comando /cancela <nome do jogo>

Como eu fiz

Para desenvolvimento local eu utilizei o Docker-compose. Caso queira rodar localmente suba o banco com:

docker-compose up postgres adminer

Com o adminer você pode ver os dados no banco em http://localhost:8080

Crie um arquivo .env na raíz do projeto com a seguinte estrutura:

TELEGRAM_TOKEN=<seu:token_do_telegram>

Suba o Bot com

docker-compose up bot

E para executar o script de verificação:

docker-compose up checker

Este repositório possui 2 scripts que são pontos de partida: o start_bot.py e o checker.py.

  • O start_bot inicializa o bot e mantém ele ouvindo os comandos. Todo cadastro recebido é salvo no postgres através do sync
  • O checker é o script que faz a verificação periódica, compara os preços, e notifica o usuário. Um scheduler no Heroku roda esse script de hora em hora

Dentro de modules, temos:

  • O bot, é o Bot (dã), implementado usando o python-telegram-bot
  • O scrapper é quem faz a busca no ludopedia, aqui eu uso o BeautifulSoup para fazer o web scrapping
  • O service (não arrumei um nome melhor) utiliza o backend do Compara Jogos para buscar o preço médio, através de graphQL (agradeço de coração aos devs do Compara Jogos pelo endpoint)
  • O sync é quem manipula o banco. Utilizei o Peewee como ORM

TODO

  • Não permitir que o bot notifique o usuário mais de uma vez caso encontre um produto abaixo do preço
  • Adicionar um comando /cancela, que remove um jogo da busca periódica

About

Bot que compara preços de boardgames anunciados no Ludopedia e notifica caso o valor esteja abaixo da média.

Topics

Resources

Stars

Watchers

Forks

Languages