Files
new_dbsync/cache/process.py
2025-05-20 12:02:07 -04:00

90 lines
4.3 KiB
Python

import os
import progressbar
from pathlib import Path
from time import sleep
from tqdm import tqdm
class Cacher(object):
def __init__(self):
pass
def process(self, options, jget, new_updates, ROOTDIR, URLS):
SERIESCACHE = str(ROOTDIR) + '/cache/series/'
EPISODECACHE = str(ROOTDIR) + '/cache/episodes/'
CASTCACHE = str(ROOTDIR) + '/cache/cast/'
CREWCACHE = str(ROOTDIR) + '/cache/crew/'
TEMPDIR = ROOTDIR + '/temp/'
available_updates = {}
updateList = []
if options['refreshcache'] == '1':
print('Refreshing cache directory.')
print('Checking cache directory for missing files.')
for update in new_updates:
available_updates[update[0]] = update[1]
updateList = [str(key) for key in available_updates.keys()]
for series in tqdm(range(len(new_updates)), desc='Checking cache', unit='series'):
seriesid = new_updates[series][0]
cachefile = str(seriesid) + '.json'
seriescachefile = f'{SERIESCACHE}{cachefile}'
episodecachefile = f'{EPISODECACHE}{cachefile}'
castcachefile = f'{CASTCACHE}{cachefile}'
crewcachefile = f'{CREWCACHE}{cachefile}'
self.check_and_download(jget, URLS['showurl'], str(seriesid), new_updates[0], seriescachefile, 1500)
sleep(1)
self.check_and_download(jget, URLS['episodesurl'], str(seriesid), new_updates[0], episodecachefile, 1500)
sleep(1)
self.check_and_download(jget, URLS['casturl'], str(seriesid), new_updates[0], castcachefile, 500)
sleep(1)
self.check_and_download(jget, URLS['crewurl'], str(seriesid), new_updates[0], crewcachefile, 500)
sleep(1)
print('Refresh completed.')
def check_and_download(self, jget, url, SERIESID, series_id, cachefile, size_limit):
try:
my_abs_path = Path(cachefile).resolve(strict=True)
file_stats = os.stat(cachefile)
if file_stats.st_size <= size_limit:
#print(f'File Size for {cachefile} in Bytes is {file_stats.st_size}. File too small. Attempting to download.')
jget.fetch_json(url.replace(SERIESID, str(series_id)), series_id, cachefile)
except FileNotFoundError:
#print(f'{cachefile} does not exist. Attempting to download.')
jget.fetch_json(url.replace(SERIESID, str(series_id)), series_id, cachefile)
except Exception as e:
print(f'Unable to download {cachefile}. {e}')
def update_cache(self, jget, updateList, ROOTDIR, URLS, options, lprint):
if options['skipcache'] == '0':
SERIESCACHE = str(ROOTDIR) + '/cache/series/'
EPISODECACHE = str(ROOTDIR) + '/cache/episodes/'
CASTCACHE = str(ROOTDIR) + '/cache/cast/'
CREWCACHE = str(ROOTDIR) + '/cache/crew/'
TEMPDIR = ROOTDIR + '/temp/'
print('Now downloading updates.')
updaterange = len(updateList)
for seriesid in tqdm(range(updaterange), desc='Downloading updates', unit='seriesid'):
cachefile = f'{updateList[seriesid]}.json'
seriescachefile = SERIESCACHE + cachefile
episodecachefile = EPISODECACHE + cachefile
castcachefile = CASTCACHE + cachefile
crewcachefile = CREWCACHE + cachefile
self.download_json(jget, URLS['showurl'], updateList[seriesid], seriescachefile, lprint)
sleep(1)
self.download_json(jget, URLS['episodesurl'], updateList[seriesid], episodecachefile, lprint)
sleep(1)
self.download_json(jget, URLS['casturl'], updateList[seriesid], castcachefile, lprint)
sleep(1)
self.download_json(jget, URLS['crewurl'], updateList[seriesid], crewcachefile, lprint)
sleep(1)
def download_json(self, jget, url, seriesid, cachefile, lprint):
try:
jget.fetch_json(url.replace('<seriesid>', str(seriesid)), seriesid, cachefile)
except Exception as e:
lprint.logprint('info', f'Unable to acquire {cachefile}. {e}')
def __del__(self):
pass