From dd3e6f619ff99f2330b323096c595d0367eaedf4 Mon Sep 17 00:00:00 2001 From: Shaun Setlock Date: Sat, 25 Nov 2023 16:10:21 -0500 Subject: [PATCH] Initial commit. Working. --- main.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 13 +++++++++++ 2 files changed, 72 insertions(+) create mode 100644 main.py create mode 100644 requirements.txt diff --git a/main.py b/main.py new file mode 100644 index 0000000..c84bae9 --- /dev/null +++ b/main.py @@ -0,0 +1,59 @@ +import os +import requests +from bs4 import BeautifulSoup +from telegram import Bot + +# Function to load environment variables from .env file +def load_env(): + with open('.env', 'r') as file: + for line in file: + if line.strip() and not line.startswith('#'): + key, value = line.strip().split('=', 1) + os.environ[key] = value + +# Function to retrieve webpage contents and count occurrences of the keyword +def count_keyword_occurrences(url, keyword): + try: + # Retrieve webpage contents + response = requests.get(url) + response.raise_for_status() # Raise an HTTPError for bad responses + html_content = response.text + + # Count occurrences of the keyword in the HTML content + occurrences = html_content.lower().count(keyword.lower()) + return occurrences + + except Exception as e: + print(f"An error occurred: {e}") + return 0 + +# Function to send a Telegram message +async def send_telegram_message(api_token, chat_id, message): + try: + bot = Bot(token=api_token) + response = await bot.send_message(chat_id=chat_id, text=message) + print(f"Telegram message sent successfully. Message ID: {response.message_id}") + except Exception as e: + print(f"An error occurred while sending Telegram message: {e}") + +if __name__ == "__main__": + # Load environment variables from .env file + load_env() + + # Retrieve variables from environment variables + url_to_check = os.getenv("URL_TO_CHECK") + telegram_api_token = os.getenv("TELEGRAM_API_TOKEN") + telegram_chat_id = os.getenv("TELEGRAM_CHAT_ID") + search_keyword = os.getenv("SEARCH_KEYWORD") + + # Count occurrences of the keyword on the webpage + keyword_occurrences = count_keyword_occurrences(url_to_check, search_keyword) + + # Define the message based on the occurrences + if keyword_occurrences > 0: + message = f"The word '{search_keyword}' was found {keyword_occurrences} times on {url_to_check}. Sending Telegram message." + # Send the message to Telegram + import asyncio + asyncio.run(send_telegram_message(telegram_api_token, telegram_chat_id, message)) + else: + print(f"The word '{search_keyword}' was found {keyword_occurrences} times on {url_to_check}. Not sending Telegram message.") diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d870bd5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,13 @@ +anyio==4.1.0 +beautifulsoup4==4.12.2 +certifi==2023.11.17 +charset-normalizer==3.3.2 +h11==0.14.0 +httpcore==1.0.2 +httpx==0.25.1 +idna==3.4 +python-telegram-bot==20.6 +requests==2.31.0 +sniffio==1.3.0 +soupsieve==2.5 +urllib3==2.1.0