This commit is contained in:
Kovid Goyal 2022-04-13 07:43:49 +05:30
parent 572c34b821
commit 02368d2888
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -36,7 +36,7 @@ def reading_rates_path():
return os.path.join(cache_dir(), 'viewer-reading-rates.json') return os.path.join(cache_dir(), 'viewer-reading-rates.json')
def save_reading_rates(key, rates): def get_existing_reading_rates():
path = reading_rates_path() path = reading_rates_path()
existing = {} existing = {}
try: try:
@ -49,12 +49,18 @@ def save_reading_rates(key, rates):
existing = json.loads(raw) existing = json.loads(raw)
except Exception: except Exception:
pass pass
return existing
def save_reading_rates(key, rates):
existing = get_existing_reading_rates()
existing.pop(key, None) existing.pop(key, None)
existing[key] = rates existing[key] = rates
while len(existing) > 50: while len(existing) > 50:
expired = next(iter(existing)) expired = next(iter(existing))
del existing[expired] del existing[expired]
ddata = json.dumps(existing, indent=2).encode('utf-8') ddata = json.dumps(existing, indent=2).encode('utf-8')
path = reading_rates_path()
try: try:
with tempfile.NamedTemporaryFile(dir=os.path.dirname(path), delete=False) as f: with tempfile.NamedTemporaryFile(dir=os.path.dirname(path), delete=False) as f:
f.write(ddata) f.write(ddata)
@ -65,15 +71,5 @@ def save_reading_rates(key, rates):
def load_reading_rates(key): def load_reading_rates(key):
path = reading_rates_path() existing = get_existing_reading_rates()
try:
with open(path, 'rb') as f:
raw = f.read()
except OSError:
existing = {}
else:
try:
existing = json.loads(raw)
except Exception:
existing = {}
return existing.get(key) return existing.get(key)