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