2022-05-31 18:41:27 +02:00
#!/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 \n Compare: " + 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 ( )
2022-06-01 22:37:19 +02:00
cheaper_listings = list ( )
2022-05-31 18:41:27 +02:00
for competitor_listing_url in competitor_listings :
#print(competitor_listing_url)
#print(shop_listing_url["epid"])
2022-06-01 22:37:19 +02:00
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
2022-05-31 18:41:27 +02:00
#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 " ] :
2022-06-01 22:37:19 +02:00
#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 } )
2022-05-31 18:41:27 +02:00
2022-06-01 22:37:19 +02:00
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 " ] )
2022-05-31 18:41:27 +02:00
#break