[PT] Projeto desenvolvido com o propósito de disponibilizar a integração de um projeto Scrapy com um BOT do Telegram, a fim de receber os stats das Spiders após a execução.
[EN] Project developed with the purpose of providing the integration of a Scrapy project with a Telegram BOT, in order to receive the stats of the Spiders after execution.
- Python 3.10
- PIP (Python package manager)
- [PT] Clone o repositório: | [EN] Clone the repository:
git clone https://github.com/jorgezanguettin/scrapy-telegram-bot.git
- [PT] Navegue para o diretório do projeto: | [EN] Navigate to the project directory:
cd scrapy-telegram-bot
- [PT] Crie um ambiente virtual: | [EN] Create a virtual environment:
python -m venv venv
- [PT] Instale as dependencias: | [EN] Install the dependencies:
pip install -r requirements.txt
[PT]
Para configurar seu Github, você precisa previamente ter um acesso e credenciais na AWS e também um ChatBOT criado no Telegram.
- Crie um fork deste repositório e adicione os seguintes secrets:
- AWS_ACCESS_KEY_ID - Access Key da sua AWS
- AWS_SECRET_ACCESS_KEY - Secret Key da sua AWS
- AWS_REGION - Regiao da sua AWS
- CHAT_ID - ID do seu CHAT no com o seu ChatBOT do Telegram
- TELEGRAM_TOKEN - Token do seu ChatBOT do Telegram.
- Execute o Workflow deploy_lambda.yml
- Pronto! O Workflow deve dar conta de configurar o restante.
[EN]
To set up your Github, you must first have access and credentials to AWS salso a ChatBOT created on Telegram.
- Fork this repository and add the following secrets:
- AWS_ACCESS_KEY_ID - Your AWS access key
- AWS_SECRET_ACCESS_KEY - Your AWS secret key
- AWS_REGION - Your AWS region
- CHAT_ID - ID of your CHAT with your Telegram ChatBOT
- TELEGRAM_TOKEN - Token for your Telegram ChatBOT.
- Run the deploy_lambda.yml workflow
- Done! The Workflow must have a configuration account for the remainder.
[PT]
- Na sua AWS, acesse o AWS Lambda que foi criado pelo Github Workflow e copie sua invoke url
- Configure a Webhook URL do seu TelegramBOT através desta chamada HTTP:
https://api.telegram.org/bot{my_bot_token}/setWebhook?url={invoke_url}
- Pronto! Seu BOT esta configurado para enviar mensagens utilizando seu Pipeline Scrapy.
- Em seu projeto Scrapy, adicione o seguinte Pipeline em seu pipelines.py
class TelegramStatsPipeline: def close_spider(self, spider): stats = spider.crawler.stats.get_stats() spider.logger.info('Spider closed: %s' % spider.name) requests.post( "aws_lambda_invoke_url_here", headers={ 'Content-Type': 'application/json' }, json={ "spider": spider.name, "stats": json.dumps(stats, indent=4, sort_keys=True, default=str) } )
- Ative o Pipeline em seu settings.py
ITEM_PIPELINES = { "project.pipelines.TelegramStatsPipeline": 300, }
- Pronto! Agora suas Spiders podem ser monitoradas diretamente pelo Telegram.
[EN]
- On your AWS, access the AWS Lambda that was created by Github Workflow and copy its invoke url
- Configure your TelegramBOT's Webhook URL through this HTTP call:
https://api.telegram.org/bot{my_bot_token}/setWebhook?url={invoke_url}
- Done! Your BOT is configured to send messages using your Scrapy Pipeline.
- In your Scrapy project, add the following Pipeline in your pipelines.py
class TelegramStatsPipeline: def close_spider(self, spider): stats = spider.crawler.stats.get_stats() spider.logger.info('Spider closed: %s' % spider.name) requests.post( "aws_lambda_invoke_url_here", headers={ 'Content-Type': 'application/json' }, json={ "spider": spider.name, "stats": json.dumps(stats, indent=4, sort_keys=True, default=str) } )
- Activate Pipeline in your settings.py
ITEM_PIPELINES = { "project.pipelines.TelegramStatsPipeline": 300, }
- Done! Now your Spiders can be monitored directly via Telegram.