feat: Implement internal cache path management for improved resource handling

This commit is contained in:
JB
2025-10-06 16:34:01 -07:00
parent e76701ab32
commit fd8ede318f
2 changed files with 21 additions and 1 deletions
+18
View File
@@ -183,6 +183,8 @@ def get_user_cache_root():
for env_var in ("HUGGINGFACE_HUB_CACHE", "TRANSFORMERS_CACHE"): for env_var in ("HUGGINGFACE_HUB_CACHE", "TRANSFORMERS_CACHE"):
os.environ.setdefault(env_var, hf_cache) os.environ.setdefault(env_var, hf_cache)
os.environ.setdefault("ABOGEN_INTERNAL_CACHE_ROOT", cache_base)
cache_root = None cache_root = None
override = os.environ.get("ABOGEN_TEMP_DIR") override = os.environ.get("ABOGEN_TEMP_DIR")
@@ -217,6 +219,22 @@ def get_user_cache_root():
return cache_root return cache_root
def get_internal_cache_root():
root = os.environ.get("ABOGEN_INTERNAL_CACHE_ROOT") or os.environ.get("XDG_CACHE_HOME")
if root:
return ensure_directory(root)
home_dir = os.environ.get("HOME") or os.path.join("/tmp", "abogen-home")
home_dir = ensure_directory(home_dir)
return ensure_directory(os.path.join(home_dir, ".cache"))
def get_internal_cache_path(folder=None):
base = get_internal_cache_root()
if folder:
return ensure_directory(os.path.join(base, folder))
return base
def get_user_cache_path(folder=None): def get_user_cache_path(folder=None):
base = get_user_cache_root() base = get_user_cache_root()
if folder: if folder:
+3 -1
View File
@@ -17,6 +17,7 @@ from abogen.text_extractor import ExtractedChapter, extract_from_path
from abogen.utils import ( from abogen.utils import (
calculate_text_length, calculate_text_length,
create_process, create_process,
get_internal_cache_path,
get_user_cache_path, get_user_cache_path,
get_user_output_path, get_user_output_path,
load_config, load_config,
@@ -310,7 +311,8 @@ def _open_audio_sink(
fmt: Optional[str] = None, fmt: Optional[str] = None,
metadata: Optional[Dict[str, str]] = None, metadata: Optional[Dict[str, str]] = None,
) -> AudioSink: ) -> AudioSink:
static_ffmpeg.add_paths() ffmpeg_cache = get_internal_cache_path("ffmpeg")
static_ffmpeg.add_paths(download_dir=ffmpeg_cache)
fmt_value = (fmt or job.output_format).lower() fmt_value = (fmt or job.output_format).lower()
if fmt_value in {"wav", "flac"}: if fmt_value in {"wav", "flac"}: