diff --git a/src/mopidy_smartplaylists/generators.py b/src/mopidy_smartplaylists/generators.py index 9456914..05b2a56 100644 --- a/src/mopidy_smartplaylists/generators.py +++ b/src/mopidy_smartplaylists/generators.py @@ -205,13 +205,23 @@ def save_smart_playlist( def refresh_smart_playlists(core: CoreProxy, config_dict: dict) -> None: prefix = config_dict.get("playlist_prefix", "[Smart]") - raw = config_dict.get("search_uris", "") + raw = config_dict.get("search_uris") uris: list[Uri] | None = None - if raw: + if isinstance(raw, (list, tuple)): + uris = cast("list[Uri]", list(raw)) + elif isinstance(raw, str) and raw.strip(): uris = cast("list[Uri]", [u.strip() for u in raw.split(",") if u.strip()]) - playlist_dir = config_dict.get("playlist_dir") or None - max_tracks = int(config_dict.get("max_tracks", 0) or 0) - max_per_album = int(config_dict.get("max_per_album", 0) or 0) + playlist_dir = config_dict.get("playlist_dir") + if isinstance(playlist_dir, str): + playlist_dir = playlist_dir.strip() or None + try: + max_tracks = int(config_dict.get("max_tracks") or 0) + except (ValueError, TypeError): + max_tracks = 0 + try: + max_per_album = int(config_dict.get("max_per_album") or 0) + except (ValueError, TypeError): + max_per_album = 0 decades_raw = config_dict.get("decades", "") if decades_raw: diff --git a/src/mopidy_smartplaylists/web.py b/src/mopidy_smartplaylists/web.py index 9be710a..1bdd72d 100644 --- a/src/mopidy_smartplaylists/web.py +++ b/src/mopidy_smartplaylists/web.py @@ -293,8 +293,12 @@ class StatusHandler(tornado.web.RequestHandler): def _parse_search_uris(config: Config) -> list[Uri] | None: - raw = config.get("smartplaylists", {}).get("search_uris", "") - if raw: + raw = config.get("smartplaylists", {}).get("search_uris") + if raw is None: + return None + if isinstance(raw, (list, tuple)): + return cast("list[Uri]", list(raw)) + if isinstance(raw, str): uris = cast("list[Uri]", [u.strip() for u in raw.split(",") if u.strip()]) return uris or None return None