Support a TOML configuration file

The new config file currently only configures the same options that were
already available through environment variables. However I have ideas
for additional features that would be much nicer to support using a
structured configuration format like TOML rather than environment
variables, so config files exist now!

The previous environment variables are still supported and will be used
if you don't have a config file. I plan to keep supporting the MPD_HOST
and MPD_PORT environment variables forever since they're shared with
other MPD clients such as mpc, but I may eventually drop the environment
variables specific to mpd-now-playable in a future release.
This commit is contained in:
Danielle McLean 2024-06-22 18:19:39 +10:00
parent 796e3df87d
commit dc037a0a4b
Signed by: 00dani
GPG key ID: 6854781A0488421C
12 changed files with 305 additions and 33 deletions

View file

@ -2,6 +2,8 @@ from __future__ import annotations
from typing import TypedDict
from yarl import URL
from ..async_tools import run_background_task
from ..cache import Cache, make_cache
from .types import CurrentSongResponse, MpdStateHandler
@ -23,12 +25,15 @@ def calc_track_key(song: CurrentSongResponse) -> str:
return song["file"]
MEMORY = URL("memory://")
class MpdArtworkCache:
mpd: MpdStateHandler
album_cache: Cache[ArtCacheEntry]
track_cache: Cache[ArtCacheEntry]
def __init__(self, mpd: MpdStateHandler, cache_url: str = "memory://"):
def __init__(self, mpd: MpdStateHandler, cache_url: URL = MEMORY):
self.mpd = mpd
self.album_cache = make_cache(cache_url, "album")
self.track_cache = make_cache(cache_url, "track")