Added the skipped day(Amazon Price Tracker)

This commit is contained in:
Muhammad Ibrahim 2024-11-30 18:56:20 +05:30
parent aa4a137e3b
commit 370cc50d3d
2 changed files with 78 additions and 0 deletions

View File

@ -0,0 +1,3 @@
SMTP_ADDRESS="smtp.gmail.com"
EMAIL_ADDRESS="your_email@email.com"
EMAIL_PASSWORD="your app password"

View File

@ -0,0 +1,75 @@
from bs4 import BeautifulSoup
import requests
import smtplib
import os
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Practice
# url = "https://appbrewery.github.io/instant_pot/"
# Live Site
url = "https://www.amazon.com/dp/B075CYMYK6?psc=1&ref_=cm_sw_r_cp_ud_ct_FM9M699VKHTT47YD50Q6"
# ====================== Add Headers to the Request ===========================
# header = {
# "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
# "Accept-Encoding": "gzip, deflate, br, zstd",
# "Accept-Language": "en-GB,de;q=0.8,fr;q=0.6,en;q=0.4,ja;q=0.2",
# "Dnt": "1",
# "Priority": "u=1",
# "Sec-Fetch-Dest": "document",
# "Sec-Fetch-Mode": "navigate",
# "Sec-Fetch-Site": "none",
# "Sec-Fetch-User": "?1",
# "Sec-Gpc": "1",
# "Upgrade-Insecure-Requests": "1",
# "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:126.0) Gecko/20100101 Firefox/126.0",
# }
# A minimal header:
header = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36",
"Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8"
}
# Adding headers to the request
response = requests.get(url, headers=header)
soup = BeautifulSoup(response.content, "html.parser")
# Check you are getting the actual Amazon page back and not something else:
print(soup.prettify())
# Find the HTML element that contains the price
price = soup.find(class_="a-offscreen").get_text()
# Remove the dollar sign using split
price_without_currency = price.split("$")[1]
# Convert to floating point number
price_as_float = float(price_without_currency)
print(price_as_float)
# Get the product title
title = soup.find(id="productTitle").get_text().strip()
print(title)
# Set the price below which you would like to get a notification
BUY_PRICE = 70
if price_as_float < BUY_PRICE:
message = f"{title} is on sale for {price}!"
# ====================== Send the email ===========================
with smtplib.SMTP(os.environ["SMTP_ADDRESS"], port=587) as connection:
connection.starttls()
result = connection.login(os.environ["EMAIL_ADDRESS"], os.environ["EMAIL_PASSWORD"])
connection.sendmail(
from_addr=os.environ["EMAIL_ADDRESS"],
to_addrs=os.environ["EMAIL_ADDRESS"],
msg=f"Subject:Amazon Price Alert!\n\n{message}\n{url}".encode("utf-8")
)