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

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()