Compare commits

..

2 commits

2 changed files with 38 additions and 10 deletions

View file

@ -198,7 +198,7 @@ class BuypeebApp:
self.items.set(treeIter, 0, item.name if item.name is not None else "") self.items.set(treeIter, 0, item.name if item.name is not None else "")
if item.ready: if item.ready:
listing[1], listing[2], listing[3] = item.price_jpy(), item.price_aud(), item.ending_at() listing[1], listing[2], listing[3] = item.price_jpy(), item.price_aud(), item.ending_at(True)
else: else:
listing[0] = "Loading..." if item.name == "" else item.name listing[0] = "Loading..." if item.name == "" else item.name
for i in range(1, 4): for i in range(1, 4):
@ -208,7 +208,7 @@ class BuypeebApp:
def updateListTimes(self): def updateListTimes(self):
for listing in self.items: for listing in self.items:
item = self.settings.watchlist[listing[4]] item = self.settings.watchlist[listing[4]]
listing[3] = item.ending_at() listing[3] = item.ending_at(True)
def updateSidePane(self, id: str): def updateSidePane(self, id: str):
item = self.settings.watchlist[id] item = self.settings.watchlist[id]
@ -218,7 +218,7 @@ class BuypeebApp:
"YahooName": item.original_name, "YahooName": item.original_name,
"Price": item.price_jpy(), "Price": item.price_jpy(),
"PriceAUD": item.price_aud(), "PriceAUD": item.price_aud(),
"Ending": item.ending_in(), "Ending": item.ending_in(True),
"Bids": str(item.bids), "Bids": str(item.bids),
"BuyItNow": f"{item.price_jpy(win = True)} ({item.price_aud(win = True)})" if item.win_price not in [0, "0", None, ""] else "No", "BuyItNow": f"{item.price_jpy(win = True)} ({item.price_aud(win = True)})" if item.win_price not in [0, "0", None, ""] else "No",
"AutoExtension": "Yes" if item.auto_extension else "No", "AutoExtension": "Yes" if item.auto_extension else "No",

View file

@ -1,11 +1,12 @@
import requests import requests
import re, json import re, json, math
from datetime import datetime, timezone, timedelta from datetime import datetime, timezone, timedelta
import functions import functions
JST = timezone(timedelta(hours = 9)) JST = timezone(timedelta(hours = 9))
LOCALTIME = timezone(timedelta(hours = 10)) # TODO: allow for customisation
class YahooAuctionsItem: class YahooAuctionsItem:
""" """
@ -60,7 +61,8 @@ class YahooAuctionsItem:
self.win_price = 0 self.win_price = 0
self.original_name = "" self.original_name = ""
self.favourite = None self.favourite = None
self.end_date = None self.end_date = datetime.fromisoformat('1970-01-01').replace(tzinfo = JST)
self.start_date = datetime.fromisoformat('1970-01-01').replace(tzinfo = JST)
self.bids = 0 self.bids = 0
self.auto_extension = None self.auto_extension = None
self.rate = 75.0 self.rate = 75.0
@ -114,6 +116,8 @@ class YahooAuctionsItem:
if self.name == None or self.name == "": if self.name == None or self.name == "":
self.name = j['productName'] self.name = j['productName']
self.available = (self.end_date_local() >= datetime.now(LOCALTIME))
self.ready = True self.ready = True
self.updating = False self.updating = False
@ -136,14 +140,38 @@ class YahooAuctionsItem:
p = self.win_price p = self.win_price
return f"${self.price / rate:.2f}" return f"${self.price / rate:.2f}"
def ending_in(self): def end_date_local(self):
return "heenlo" return self.end_date.astimezone(LOCALTIME)
def ending_at(self): def start_date_local(self):
now = datetime.now() return self.start_date.astimezone(LOCALTIME)
def ending_in(self, local = False):
if local:
difference = self.end_date_local() - datetime.now(tz = LOCALTIME)
else:
difference = self.end_date - datetime.now(tz = JST)
ds = int(difference.total_seconds())
seconds = ds % 60
minutes = math.floor(ds / 60) % 60
hours = math.floor(ds / (60 * 60)) % 24
days = math.floor(ds / (60 * 60 * 24))
out = ""
if days > 0: out += f"{days}d "
if hours > 0: out += f"{hours}h "
if minutes > 0: out += f"{minutes}m "
return f"{out}{seconds}s"
def ending_at(self, local = False):
now = datetime.now(tz = LOCALTIME)
ndate = now.strftime("%d %b") ndate = now.strftime("%d %b")
if self.end_date != None: if self.end_date != None:
idate, itime = self.end_date.strftime("%d %b"), self.end_date.strftime("%H:%M") ed = self.end_date_local() if local else self.end_date
idate, itime = ed.strftime("%d %b"), ed.strftime("%H:%M")
if idate == ndate: if idate == ndate:
return itime return itime
else: else: