diff --git a/musicfetch b/musicfetch index be9c55f..c554089 100755 --- a/musicfetch +++ b/musicfetch @@ -126,6 +126,15 @@ def _artist_to_hit(artist: dict) -> Hit: ) +def _split_query(query: str) -> tuple[str, Optional[str]]: + """Split a Shazam-style 'Artist - Track' on the first ' - '. + Returns (artist, track) or (term, None) when there is no separator.""" + if " - " in query: + left, right = query.split(" - ", 1) + return left.strip(), right.strip() + return query.strip(), None + + def lidarr_search(query: str, limit: int) -> list[Hit]: """Universal search via /api/v1/search; fall back to album+artist lookup.""" if not API_KEY: diff --git a/tests/test_lidarr_match.py b/tests/test_lidarr_match.py new file mode 100644 index 0000000..674edf5 --- /dev/null +++ b/tests/test_lidarr_match.py @@ -0,0 +1,18 @@ +import server.mf # noqa: F401 — loads musicfetch, registers musicfetch_core in sys.modules +import musicfetch_core as mf + + +def test_split_query_with_dash(): + assert mf._split_query("Daft Punk - Discovery") == ("Daft Punk", "Discovery") + + +def test_split_query_no_dash(): + assert mf._split_query("Daft Punk") == ("Daft Punk", None) + + +def test_split_query_splits_on_first_dash_only(): + assert mf._split_query("A - B - C") == ("A", "B - C") + + +def test_split_query_strips_whitespace(): + assert mf._split_query(" Daft Punk - Discovery ") == ("Daft Punk", "Discovery")