62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
# Bryan Schumaker (5 / 6 / 2011)
|
|
|
|
import os
|
|
join = os.path.join
|
|
sep = os.path.sep
|
|
isfile = os.path.isfile
|
|
isdir = os.path.isdir
|
|
getsize = os.path.getsize
|
|
CACHE_DIR = None
|
|
|
|
def set_basedir(saria_dir):
|
|
global CACHE_DIR
|
|
CACHE_DIR = join(saria_dir, "cache")
|
|
|
|
def file_exists(cache_path):
|
|
if not isfile(cache_path):
|
|
return False
|
|
return getsize(cache_path) != 0
|
|
|
|
def file_empty(cache_path):
|
|
if not isfile(cache_path):
|
|
return False
|
|
return getsize(cache_path) == 0
|
|
|
|
def make_cache_path(artist, album, file):
|
|
cache_file = "%s%s%s%s" % (artist, sep, album, sep)
|
|
cache_path = join(CACHE_DIR, cache_file)
|
|
if not isdir(cache_path):
|
|
os.makedirs(cache_path)
|
|
return join(cache_path, file)
|
|
|
|
def fill_cache(artist, album, title, cache_func, cache_path):
|
|
text = cache_func(artist, album, title)
|
|
if text != None:
|
|
f = open(cache_path, 'w')
|
|
f.write(text)
|
|
f.close()
|
|
return True
|
|
return False
|
|
|
|
def get_item(artist, album, title, file, cache_func, default):
|
|
cache_path = make_cache_path(artist, album, file)
|
|
filled = True
|
|
if not file_exists(cache_path):
|
|
filled = fill_cache(artist, album, title, cache_func, cache_path)
|
|
if filled == False:
|
|
return default
|
|
return cache_path
|
|
|
|
def test_item(artist, album, file, default):
|
|
cache_path = make_cache_path(artist, album, file)
|
|
if not file_exists(cache_path):
|
|
return default
|
|
return cache_path
|
|
|
|
def copy_in_file(artist, album, file, orig_file):
|
|
cache_path = make_cache_path(artist, album, file)
|
|
orig = open(orig_file)
|
|
f = open(cache_path, 'w')
|
|
f.write(orig.read())
|
|
f.close()
|