diff options
author | Jordan <me@jordan.im> | 2023-08-03 01:06:37 -0700 |
---|---|---|
committer | Jordan <me@jordan.im> | 2023-08-03 01:08:43 -0700 |
commit | b72268810036f8f195df7b44f4cb95b4f4762ef6 (patch) | |
tree | b98bdad856b9e57e4737eb2512ba6ee2f650da3a /lib | |
parent | 1e96379ff3adaf12ccf222629fe9c6250d57b336 (diff) | |
download | roka-b72268810036f8f195df7b44f4cb95b4f4762ef6.tar.gz roka-b72268810036f8f195df7b44f4cb95b4f4762ef6.zip |
roka: misc housekeeping
Diffstat (limited to 'lib')
-rw-r--r-- | lib/books.py | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/lib/books.py b/lib/books.py index 95df374..3244d13 100644 --- a/lib/books.py +++ b/lib/books.py @@ -9,16 +9,11 @@ from datetime import timedelta from flask import Flask from lib.tinytag import TinyTag -ABS_PATH = os.path.dirname(os.path.abspath(__file__)) -CACHE_PATH = os.path.join(ABS_PATH, '../', 'cache') -JSON_PATH = os.path.join(CACHE_PATH, 'audiobooks.json') - class Books: - def __init__(self): - ''' - Book-related handlers (r/w cache) and track discovery - ''' - if os.path.exists(JSON_PATH): + def __init__(self, cache_path): + self.cache_path = cache_path + self.json_path = os.path.join(cache_path, 'audiobooks.json') + if os.path.exists(self.json_path): self._cache = self._read_cache() else: self._cache = {} @@ -52,24 +47,21 @@ class Books: ''' Dump contents of :books: to :json_path: ''' - if not os.path.exists(CACHE_PATH): - os.mkdir(CACHE_PATH) - with open(JSON_PATH, 'w') as cache: + if not os.path.exists(self.cache_path): + os.mkdir(self.cache_path) + with open(self.json_path, 'w') as cache: json.dump(self.books, cache, indent=4) def _read_cache(self): ''' Return dict of existing cache ''' - with open(JSON_PATH, 'r') as cache: + with open(self.json_path, 'r') as cache: data = json.load(cache) return data def _validate(self, v, b): - ''' - Returns :v: if :v: and v.isspace(), otherwise :b: - ''' if v and not v.isspace(): return v @@ -84,10 +76,7 @@ class Books: def scan_books(self, audiobook_path=None): ''' - Discover audiobooks under :root_path: and populate books object - - :cache: existing JSON cache, used to determine which content is new - (existing content is not re-hashed) + Discover audiobooks under :root_path: and populate books ''' ex = self._get_path_hash_dict() dirs = self._get_dirs(audiobook_path) @@ -106,8 +95,7 @@ class Books: def _check_dir(self, path): ''' - Determine if :path: contains (supported) audio files; return populated - book dict or None + Determine if :path: contains (supported) audio files ''' ext = ['mp3'] # m4b seems to be unsupported by Apple is_book = False @@ -203,5 +191,3 @@ class Books: book['duration_str'] = duration_str.split('.')[0] return (folder_hash, book) - - return None |