#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Author: Hendrik Schutter, mail@hendrikschutter.com Date of creation: 2022/05/31 Date of last modification: 2022/05/31 """ from bs4 import BeautifulSoup import datetime from tinydb import TinyDB, Query import urllib3 import sys import scrape_listing as sl import search_eBay as se if __name__ == "__main__": seller_db = TinyDB("seller_db.json") database_lenght = len(seller_db.all()) if database_lenght == 0: print("Unable to load seller shop database!") sys.exit(-1) print("Loaded seller shop database: " + str(database_lenght) + " listings") for shop_listing_url in seller_db.all(): #print(shop_listing_url["epid"]) for retrieve_counter in range(5): try: shop_listing_data = sl.scrape_listing(shop_listing_url["epid"]) break except: #pass print("Unable to retrieve seller listing data from: " + shop_listing_url["epid"]) if shop_listing_data: print("\n\nCompare: " + shop_listing_data["title"] + " | " + str(shop_listing_data["price"]) + "€ | " + shop_listing_url["epid"]) competitor_listings = se.search(shop_listing_data["title"], 1) print("Found " + str(len(competitor_listings)) + " listings from competitors with term: " + shop_listing_data["title"]) sys.stdout.flush() cheaper_listings = list() for competitor_listing_url in competitor_listings: #print(competitor_listing_url) #print(shop_listing_url["epid"]) if seller_db.search(Query().epid == competitor_listing_url): #if competitor_listing_url == shop_listing_url["epid"]: print("Found listing from sellers shop --> ignore " + competitor_listing_url) continue #else: #print("not from own shop") for retrieve_counter_competitor in range(5): try: #print("scraping : " + competitor_listing_url) competitor_listing_data = sl.scrape_listing(competitor_listing_url) break except: pass #print("Unable to retrieve competitor listing data from: " + competitor_listing_url) if competitor_listing_data: #print(competitor_listing_data["price"]) if competitor_listing_data["price"] < shop_listing_data["price"]: #print("found cheaper competitor: " + str(competitor_listing_data["price"]) + "€ instead: " + str(shop_listing_data["price"]) + "€ ---> " + competitor_listing_url) cheaper_listings.append({ 'title': competitor_listing_data["title"], 'price': competitor_listing_data["price"], 'url': competitor_listing_url}) for cheaper_listing in sorted(cheaper_listings, key=lambda d: d['price']) : #print(cheaper_listing) print("found cheaper competitor: " + str(cheaper_listing["price"]) + "€ instead: " + str(shop_listing_data["price"]) + "€ ---> " + cheaper_listing["url"]) #break