You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.9 KiB
72 lines
2.9 KiB
import copy
|
|
import sys
|
|
import os
|
|
sys.path.insert(0,r"X:\Users\Ralphie\Documents\local_repo\price_finder")
|
|
dirname = os.path.dirname(__file__)
|
|
sys.path.insert(0,dirname)
|
|
# print(dirname)
|
|
sys.path.insert(0,dirname)
|
|
from batch_process import get_prices
|
|
from quad_dialog_new import message,dicter
|
|
import datetime
|
|
import sqlite3
|
|
import pandas
|
|
from decimal import Decimal as D
|
|
import argparse
|
|
# print('imports done')
|
|
# print(os.getcwd())
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('--stdout',action = 'store')
|
|
parser.add_argument('--stderr',action = 'store')
|
|
args = parser.parse_args()
|
|
# print('args parsed')
|
|
time = str(datetime.datetime.today())
|
|
# breakpoint()
|
|
if args.stdout:
|
|
with open(args.stdout,'w') as file:
|
|
file.write(time)
|
|
# print("stdout written")
|
|
sys.stdout = open(args.stdout,'a')
|
|
|
|
if args.stderr:
|
|
with open(args.stderr,'w') as file:
|
|
file.write(time)
|
|
# print("stderr written")
|
|
sys.stderr = open(args.stderr,'a')
|
|
con = sqlite3.connect(os.path.join(dirname,'quadparts.db'))
|
|
cur = con.cursor()
|
|
date = str(datetime.date.today())
|
|
result = list(cur.execute('SELECT * FROM parts WHERE date == ? LIMIT 1',(date,)))
|
|
quad_links = list(row[0] for row in cur.execute('SELECT link FROM links ORDER BY id'))
|
|
if not result:
|
|
print('Executing')
|
|
quad_parts_base = pandas.read_sql('SELECT * FROM names',con).to_dict('records')
|
|
products = get_prices(quad_links,use_proxies=True)
|
|
current = copy.deepcopy(quad_parts_base)
|
|
complete = list({'product_name':product.info_product['product_name'],
|
|
'price': float(product.info_product['price']),
|
|
'date': product.time.strftime('%Y-%m-%d'),
|
|
'time': product.time.strftime('%H:%M:%S.%f'),
|
|
'location':product.info_url.netloc,
|
|
'link_id': quad_links.index(product.url)} for product in products)
|
|
df = pandas.DataFrame(complete)
|
|
df.to_sql('parts',con,if_exists='append',index=False)
|
|
for i in range(len(complete)):
|
|
complete[i]['price'] = round(D(complete[i]['price']),2)
|
|
for item in current:
|
|
name = item['name']
|
|
link = item['link']
|
|
item['product_name'] = complete[link]['product_name']
|
|
item['price'] = complete[link]['price']
|
|
item['time'] = complete[link]['time']
|
|
bought = message(quad_parts_base,current)
|
|
quad_parts_base = dicter(quad_parts_base)
|
|
for key,is_purchased in bought.items():
|
|
if is_purchased:
|
|
if quad_parts_base[key]['count'] > 1:
|
|
cur.execute('UPDATE names SET count = count - 1 WHERE name == ?',(key,))
|
|
else:
|
|
cur.execute('UPDATE names SET purchased = 1 WHERE name == ?',(key,))
|
|
con.commit()
|
|
con.close()
|