diff --git a/abogen/utils.py b/abogen/utils.py index f4308b7..acd580e 100644 --- a/abogen/utils.py +++ b/abogen/utils.py @@ -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: diff --git a/abogen/web/conversion_runner.py b/abogen/web/conversion_runner.py index de9aa03..e51dbcf 100644 --- a/abogen/web/conversion_runner.py +++ b/abogen/web/conversion_runner.py @@ -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"}: