musicdlp/backend/config.py

38 lines
1.2 KiB
Python

import os
from pathlib import Path
class Config:
def __init__(self) -> None:
self.host = os.getenv('HOST') or '0.0.0.0'
self.port = int(os.getenv('PORT') or 4009)
# This directory will be searched for <site>.txt (e.g. yandex.txt)
# Cookies are in Netscape CSV format, see yt-dlp docs
self.cookies_dir = Path(os.getenv('COOKIES_DIR') or 'cookies')
# Note: yt-dlp's path trimmer also counts album_path_tmpl, not only filename
# Why 235? 255 is the ext4 limit. 255 - len("/var/lib/musicdlp/") = 237, rounded down to 235
self.path_length = int(os.getenv('PATH_LENGTH') or 235)
self.tmpl = os.path.join(
# `artists.0` instead of `artist`, because the latter can contain "feat. ..."
os.getenv('ALBUM_PATH_TMPL') or 'music/%(artists.0)s/%(album)s',
os.getenv('TRACK_FILE_TMPL') or '%(track)s.%(ext)s',
)
# Proxy URL for yt_proxied downloader (can be used for geo-restricted content)
self.yt_proxy = os.getenv('YT_PROXY') or 'http://127.0.0.1:1080'
_config: Config | None = None
def get() -> Config:
global _config
if _config is None:
_config = Config()
return _config