Giter VIP home page Giter VIP logo

buscador-de-boardgames's Introduction

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.