From 8b232f2017c579388ca709292e7b0c974616d55a Mon Sep 17 00:00:00 2001 From: namrun Date: Mon, 17 Aug 2020 13:46:56 +0530 Subject: [PATCH 1/3] Added scripts for the Amazon price tracker --- .../Amazon-price-tracker/README.md | 32 +++++ .../Amazon-price-tracker/confirm.png | Bin 0 -> 4517 bytes .../Amazon-price-tracker/lesssecure.png | Bin 0 -> 14443 bytes .../Amazon-price-tracker/mail_in_python.py | 39 ++++++ .../Amazon-price-tracker/price_logger.txt | 1 + .../Amazon-price-tracker/price_tracker.py | 118 ++++++++++++++++++ .../Amazon-price-tracker/single.png | Bin 0 -> 10488 bytes 7 files changed, 190 insertions(+) create mode 100644 System-Automation-Scripts/Amazon-price-tracker/README.md create mode 100755 System-Automation-Scripts/Amazon-price-tracker/confirm.png create mode 100755 System-Automation-Scripts/Amazon-price-tracker/lesssecure.png create mode 100644 System-Automation-Scripts/Amazon-price-tracker/mail_in_python.py create mode 100644 System-Automation-Scripts/Amazon-price-tracker/price_logger.txt create mode 100644 System-Automation-Scripts/Amazon-price-tracker/price_tracker.py create mode 100755 System-Automation-Scripts/Amazon-price-tracker/single.png diff --git a/System-Automation-Scripts/Amazon-price-tracker/README.md b/System-Automation-Scripts/Amazon-price-tracker/README.md new file mode 100644 index 00000000..339f8630 --- /dev/null +++ b/System-Automation-Scripts/Amazon-price-tracker/README.md @@ -0,0 +1,32 @@ +## Amazon Price Tracker ## +- This script built in Python is an Amazon Price Tracker. +- The user enters : + - The URL of the product of which he would like the track the price of. + - His/Her budget for the product. + - His/Her Email credentials. +- The script runs continuously and checks on the price of the product every 12 hours. +- If the price of the product is equal to or below the user's budget, the user receives an email confirmation. +- The price of the product is logged into a file named price_logger.txt every 12 hours. + +## Working and Usage ## +- The BeautifulSoup library is used to scrape the price of the product from the Amazon site. +- On Amazon, the prices of products are either expressed as a range or as a single number. +- If the budget is within the range, an email will be sent. +- In the script, headers need to be used to make the get request to the Amazon site. +- In place of headers, the user must replace it with the result of **my user agent** must be used instead (this can be looked up in Google). +- The Email settings of the user must be configured to operate on less secure mode to facilitate the sending of emails. + +![Image](lesssecure.png) + +- After this, the script can be run. + +- Using this as an example + +![Image](single.png) + +- The user enters 700 rupees as the budget, as the price is lesser than the budget the following email is sent, else the program continues to run till the condition is satisfied. + +![Image](confirm.png) + +- The prices are also logged into the file price_logger.txt as shown, so the user will have an account of the changes the price underwent. + diff --git a/System-Automation-Scripts/Amazon-price-tracker/confirm.png b/System-Automation-Scripts/Amazon-price-tracker/confirm.png new file mode 100755 index 0000000000000000000000000000000000000000..7f2bc3b77755900661bf69420fb5d13babad9241 GIT binary patch literal 4517 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 Xoa8U)*w-ZaH=~MzhJ2aahp+z&wYY*v literal 0 HcmV?d00001 diff --git a/System-Automation-Scripts/Amazon-price-tracker/mail_in_python.py b/System-Automation-Scripts/Amazon-price-tracker/mail_in_python.py new file mode 100644 index 00000000..953d99d9 --- /dev/null +++ b/System-Automation-Scripts/Amazon-price-tracker/mail_in_python.py @@ -0,0 +1,39 @@ +#!/usr/bin/python + +import smtplib + +#The smtp module (Simple Mail Transfer Protocol) enables sending emails in python +#The sender's email must be configured to less secure apps. +#This configuration can be made on visiting account information. +#Under the category security, less secure apps must turned on + +def send_confirmation(sender_email, receiver_email, password, price_range): + + #Subject of the Email + subject = "Amazon product price " + + if len(price_range) == 1: + cost = "The cost of the product is" + str(price_range[0]) + else: + cost = "The cost of the product is within the range " + str(price_range[0]) + " and " + str(price_range[1]) + + #Content of the email + body_of_the_email = "Hello, This is to inform you that the price of the product you were looking for on Amazon is well-within your budget." + cost + " You can buy it right away." + + content = "Subject: {}\n\n{}".format(subject, body_of_the_email) + + #Specifications of the Email + + server = smtplib.SMTP("smtp.gmail.com" , 587) + + #Here the Gmail service is used, a different Email service can also be used + #The port 587, across which the email is sent + + server.starttls() + server.login(sender_email, password) + + #Login is authorised + server.sendmail(sender_email, receiver_email, content) + + #Email is sent, prints success on sending the email + diff --git a/System-Automation-Scripts/Amazon-price-tracker/price_logger.txt b/System-Automation-Scripts/Amazon-price-tracker/price_logger.txt new file mode 100644 index 00000000..36a65739 --- /dev/null +++ b/System-Automation-Scripts/Amazon-price-tracker/price_logger.txt @@ -0,0 +1 @@ +The cost of the product is 649.0 at 2020-08-11 19:23:36.359383 diff --git a/System-Automation-Scripts/Amazon-price-tracker/price_tracker.py b/System-Automation-Scripts/Amazon-price-tracker/price_tracker.py new file mode 100644 index 00000000..ebfb6b04 --- /dev/null +++ b/System-Automation-Scripts/Amazon-price-tracker/price_tracker.py @@ -0,0 +1,118 @@ +#Imports and dependencies + +import requests +import time +from bs4 import BeautifulSoup +from mail_in_python import send_confirmation +import datetime + +#This variable is to test the feasibility of the product +feasible = False + +#This function is to indicate to the user the currency the product is mentioned in, so the same currency is used for budget. + +def currency_used(URL): + + #These headers are user specific, look for "my user agent" in the google search bar and replace your user agent here" + headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0'} + + #Response got from the request sent to the desired product URL + response = requests.get(URL, headers=headers) + soup = BeautifulSoup(response.content, "html.parser") + + currency_symbols = {'€' : "Euro", '£' : "Pound", '$' : "Dollars", "¥" : "Renminbi", "HK$" : "Hong Kong Dollars", "₹" : "Rupeees"} + + #Using web-scraping the price of the product is found + price = soup.find(id="priceblock_ourprice").get_text() + currency = "" + + for symbol in currency_symbols: + if symbol in price: + currency = currency_symbols[symbol] + price = price.replace(symbol, "") + + #The currency of the product is stored here" + return(currency) + + +def price_check(URL, budget): + + headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0'} + feasible = False + response = requests.get(URL, headers=headers) + soup = BeautifulSoup(response.content, "html.parser") + currency_symbols = {'€' : "Euro", '£' : "Pound", '$' : "Dollars", "¥" : "Renminbi", "HK$" : "Hong Kong Dollars", "₹" : "Rupeees"} + price = soup.find(id="priceblock_ourprice").get_text() + currency = "" + + for symbol in currency_symbols: + if symbol in price: + currency = currency_symbols[symbol] + price = price.replace(symbol, "") + + #string is converted to a number and extra characters are removed + + if "," in price: + price = price.replace(",", "") + + #The price for some products is expressed as a range, thus the following is performed + price = price = price.split("-") + price_now = [] + if len(price) == 2: + lower, upper = float(price[0].strip('\xa0')) , float(price[1].strip('\xa0')) + price_now.append(lower) + price_now.append(upper) + price_range = [*(range(int(lower), int(upper+1)))] + if budget in price_range: + feasible = True + else: + price = float(price[0].strip("\xa0")) + if budget >= int(price): + feasible = True + price_now.append(price) + return(feasible, price_now) + +#Enter the URL of the amazon product +URL = input("Enter the URL of the Amazon product : ") + +print("The price of the product is expressed in " + (currency_used(URL))) + +#Enter your budget in the same currency as mentioned above +budget = int(input("Enter your budget for the product in same unit of currency as mentioned above: ")) + +print("Please enter your email details as asked, when the price of the product is below or equal to your budget, you will receive an email conformation") + +#Since a mail is sent from this script, security mode has to be disabled +print("Also ensure that security mode is switched off in your email settings") + +sender_email = input("Enter the sender's Email-ID : ") +receiver_email = input("Enter the receiver's Email-ID : ") +password = input("Enter the sender's password : ") + +feasible, price_range = price_check(URL, budget) + +#The price_check function will execute every 12 hours to check, the prices will also be logged so that a comparison can be made +while not feasible: + feasible, price_range = price_check(URL, budget) + + if len(price_range) == 1: + cost = "The cost of the product is " + str(price_range[0]) + else: + cost = "The cost of the product is within the range " + str(price_range[0]) + " and " + str(price_range[1]) + + current_time = datetime.datetime.now() + + #Logging records into the text file. + with open("price_logger.txt" , "w") as file: + file.write(cost + " at " + str(current_time)) + file.write("\n") + + if feasible: + break + else: + #Sleeps for 12 hours and then checks for the same + time.sleep(43200) + +#The user will be notified through an email +send_confirmation(sender_email, receiver_email, password, price_range) + diff --git a/System-Automation-Scripts/Amazon-price-tracker/single.png b/System-Automation-Scripts/Amazon-price-tracker/single.png new file mode 100755 index 0000000000000000000000000000000000000000..40296991360b7d8960fb80390fabcdc42b7c88a4 GIT binary patch literal 10488 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 F{{^GUOVR)U literal 0 HcmV?d00001 From 07a3abde8a5b637e790f5bd2ffb744734d008727 Mon Sep 17 00:00:00 2001 From: namrun Date: Mon, 17 Aug 2020 13:54:13 +0530 Subject: [PATCH 2/3] Updated price_tracker.py --- .../Amazon-price-tracker/price_tracker.py | 64 ++++++++++--------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/System-Automation-Scripts/Amazon-price-tracker/price_tracker.py b/System-Automation-Scripts/Amazon-price-tracker/price_tracker.py index ebfb6b04..4e0d5539 100644 --- a/System-Automation-Scripts/Amazon-price-tracker/price_tracker.py +++ b/System-Automation-Scripts/Amazon-price-tracker/price_tracker.py @@ -72,47 +72,49 @@ def price_check(URL, budget): price_now.append(price) return(feasible, price_now) -#Enter the URL of the amazon product -URL = input("Enter the URL of the Amazon product : ") -print("The price of the product is expressed in " + (currency_used(URL))) +if __name__ == "__main__": + #Enter the URL of the amazon product + URL = input("Enter the URL of the Amazon product : ") -#Enter your budget in the same currency as mentioned above -budget = int(input("Enter your budget for the product in same unit of currency as mentioned above: ")) + print("The price of the product is expressed in " + (currency_used(URL))) -print("Please enter your email details as asked, when the price of the product is below or equal to your budget, you will receive an email conformation") + #Enter your budget in the same currency as mentioned above + budget = int(input("Enter your budget for the product in same unit of currency as mentioned above: ")) -#Since a mail is sent from this script, security mode has to be disabled -print("Also ensure that security mode is switched off in your email settings") + print("Please enter your email details as asked, when the price of the product is below or equal to your budget, you will receive an email conformation") -sender_email = input("Enter the sender's Email-ID : ") -receiver_email = input("Enter the receiver's Email-ID : ") -password = input("Enter the sender's password : ") + #Since a mail is sent from this script, security mode has to be disabled + print("Also ensure that security mode is switched off in your email settings") -feasible, price_range = price_check(URL, budget) + sender_email = input("Enter the sender's Email-ID : ") + receiver_email = input("Enter the receiver's Email-ID : ") + password = input("Enter the sender's password : ") -#The price_check function will execute every 12 hours to check, the prices will also be logged so that a comparison can be made -while not feasible: feasible, price_range = price_check(URL, budget) + + #The price_check function will execute every 12 hours to check, the prices will also be logged so that a comparison can be made + while not feasible: + feasible, price_range = price_check(URL, budget) - if len(price_range) == 1: - cost = "The cost of the product is " + str(price_range[0]) - else: - cost = "The cost of the product is within the range " + str(price_range[0]) + " and " + str(price_range[1]) + if len(price_range) == 1: + cost = "The cost of the product is " + str(price_range[0]) + else: + cost = "The cost of the product is within the range " + str(price_range[0]) + " and " + str(price_range[1]) - current_time = datetime.datetime.now() + current_time = datetime.datetime.now() - #Logging records into the text file. - with open("price_logger.txt" , "w") as file: - file.write(cost + " at " + str(current_time)) - file.write("\n") + #Logging records into the text file. + with open("price_logger.txt" , "w") as file: + file.write(cost + " at " + str(current_time)) + file.write("\n") - if feasible: - break - else: - #Sleeps for 12 hours and then checks for the same - time.sleep(43200) - -#The user will be notified through an email -send_confirmation(sender_email, receiver_email, password, price_range) + if feasible: + break + else: + #Sleeps for 12 hours and then checks for the same + time.sleep(43200) + + #The user will be notified through an email + send_confirmation(sender_email, receiver_email, password, price_range) From 985ebe02e976047e250be30f6f8e0c6a93677dcf Mon Sep 17 00:00:00 2001 From: namrun Date: Mon, 17 Aug 2020 21:01:57 +0530 Subject: [PATCH 3/3] Images added to a separate folder --- .../Amazon-price-tracker/README.md | 6 +++--- .../{ => images}/confirm.png | Bin .../{ => images}/lesssecure.png | Bin 14443 -> 14444 bytes .../{ => images}/single.png | Bin 4 files changed, 3 insertions(+), 3 deletions(-) rename System-Automation-Scripts/Amazon-price-tracker/{ => images}/confirm.png (100%) rename System-Automation-Scripts/Amazon-price-tracker/{ => images}/lesssecure.png (99%) rename System-Automation-Scripts/Amazon-price-tracker/{ => images}/single.png (100%) diff --git a/System-Automation-Scripts/Amazon-price-tracker/README.md b/System-Automation-Scripts/Amazon-price-tracker/README.md index 339f8630..ff28392b 100644 --- a/System-Automation-Scripts/Amazon-price-tracker/README.md +++ b/System-Automation-Scripts/Amazon-price-tracker/README.md @@ -16,17 +16,17 @@ - In place of headers, the user must replace it with the result of **my user agent** must be used instead (this can be looked up in Google). - The Email settings of the user must be configured to operate on less secure mode to facilitate the sending of emails. -![Image](lesssecure.png) +![Image](../images/lesssecure.png) - After this, the script can be run. - Using this as an example -![Image](single.png) +![Image](../images/single.png) - The user enters 700 rupees as the budget, as the price is lesser than the budget the following email is sent, else the program continues to run till the condition is satisfied. -![Image](confirm.png) +![Image](../images/confirm.png) - The prices are also logged into the file price_logger.txt as shown, so the user will have an account of the changes the price underwent. diff --git a/System-Automation-Scripts/Amazon-price-tracker/confirm.png b/System-Automation-Scripts/Amazon-price-tracker/images/confirm.png similarity index 100% rename from System-Automation-Scripts/Amazon-price-tracker/confirm.png rename to System-Automation-Scripts/Amazon-price-tracker/images/confirm.png diff --git a/System-Automation-Scripts/Amazon-price-tracker/lesssecure.png b/System-Automation-Scripts/Amazon-price-tracker/images/lesssecure.png similarity index 99% rename from System-Automation-Scripts/Amazon-price-tracker/lesssecure.png rename to System-Automation-Scripts/Amazon-price-tracker/images/lesssecure.png index 339e34011f59f645d5641f1f0c083e8b1aa78873..2501a081acfc5cc00b89b93fac01df14e6d904c5 100755 GIT binary patch delta 9 QcmaD|@TOoxwgn>>02;6a761SM delta 7 OcmaD;@Va0_wgmtZkOT_= diff --git a/System-Automation-Scripts/Amazon-price-tracker/single.png b/System-Automation-Scripts/Amazon-price-tracker/images/single.png similarity index 100% rename from System-Automation-Scripts/Amazon-price-tracker/single.png rename to System-Automation-Scripts/Amazon-price-tracker/images/single.png