buypeeb/settings.py

69 lines
1.9 KiB
Python

import json, os, pickle
from os import path
from datetime import datetime
import functions
from listing import YahooAuctionsItem, JST
class BuypeebSettings:
def __init__(self, location: str):
self.updateInterval = 10 * 60
self.favouriteUpdateInterval = 5 * 60
self.updateIntervalCritical = 60
self.favouriteUpdateIntervalCritical = 30
self.watchlist = {}
self.jwatchlist = {}
self.location = location
def save(self):
for id, item in self.watchlist.items():
self.jwatchlist[id] = {
"name": item.name,
"original_name": item.original_name,
"favourite": False
}
self.watchlist = {}
print(self.__dict__)
json.dump(self.__dict__, open(self.location + "config.json", 'w'))
def load(self):
if not path.isfile(self.location + "config.json"):
os.makedirs(self.location, 0o755, True)
open(self.location + "config.json", 'x')
else:
try:
j = json.load(open(self.location + "config.json", 'r'))
for key in j:
setattr(self, key, j[key])
for key in self.jwatchlist:
self.watchlist[key] = YahooAuctionsItem(url = None, from_json = self.jwatchlist[key], id = key)
self.jwatchlist = {}
except:
raise
print("Couldn't load settings - using defaults")
def watch(self, url: str, name: str = ""):
id = functions.id_from_url(url)
self.watchlist[id] = YahooAuctionsItem(url, id, name)
for item in self.watchlist.values():
print(item.name, item.price)
def outdated_items(self):
out = []
now = datetime.now(tz = JST).timestamp()
for item in self.watchlist.values():
time_difference = now - item.last_checked.timestamp()
ending_soon = False # TODO: this
if (item.favourite and time_difference >= self.favouriteUpdateInterval) or \
(item.favourite and ending_soon and time_difference >= self.favouriteUpdateIntervalCritical) or \
(time_difference >= self.updateInterval) or \
(ending_soon and time_difference >= self.updateIntervalCritical):
out.append(item)
return out