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 .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