mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 13:40:27 +02:00
feat: Implement internal cache path management for improved resource handling
This commit is contained in:
@@ -183,6 +183,8 @@ def get_user_cache_root():
|
||||
for env_var in ("HUGGINGFACE_HUB_CACHE", "TRANSFORMERS_CACHE"):
|
||||
os.environ.setdefault(env_var, hf_cache)
|
||||
|
||||
os.environ.setdefault("ABOGEN_INTERNAL_CACHE_ROOT", cache_base)
|
||||
|
||||
cache_root = None
|
||||
|
||||
override = os.environ.get("ABOGEN_TEMP_DIR")
|
||||
@@ -217,6 +219,22 @@ def get_user_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):
|
||||
base = get_user_cache_root()
|
||||
if folder:
|
||||
|
||||
@@ -17,6 +17,7 @@ from abogen.text_extractor import ExtractedChapter, extract_from_path
|
||||
from abogen.utils import (
|
||||
calculate_text_length,
|
||||
create_process,
|
||||
get_internal_cache_path,
|
||||
get_user_cache_path,
|
||||
get_user_output_path,
|
||||
load_config,
|
||||
@@ -310,7 +311,8 @@ def _open_audio_sink(
|
||||
fmt: Optional[str] = None,
|
||||
metadata: Optional[Dict[str, str]] = None,
|
||||
) -> 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()
|
||||
|
||||
if fmt_value in {"wav", "flac"}:
|
||||
|
||||
Reference in New Issue
Block a user