diff --git a/homeassistant/components/radio_browser/media_source.py b/homeassistant/components/radio_browser/media_source.py index db9d0b84d677..0f551230ef9b 100644 --- a/homeassistant/components/radio_browser/media_source.py +++ b/homeassistant/components/radio_browser/media_source.py @@ -35,6 +35,8 @@ CODEC_TO_MIMETYPE = { "OGG": "application/ogg", } +MAX_SEARCH_RESULTS = 100 + async def async_get_media_source(hass: HomeAssistant) -> RadioMediaSource: """Set up Radio Browser media source.""" @@ -144,7 +146,14 @@ class RadioMediaSource(MediaSource): return SearchMedia( result=self._async_build_stations( radios, - await radios.search(name=query.search_query, hide_broken=True), + # Order by popularity so the limit keeps the best matches + await radios.search( + name=query.search_query, + hide_broken=True, + limit=MAX_SEARCH_RESULTS, + order=Order.CLICK_COUNT, + reverse=True, + ), ) ) except (DNSError, RadioBrowserError) as e: diff --git a/tests/components/radio_browser/test_media_source.py b/tests/components/radio_browser/test_media_source.py index b5da46621456..ec01d0f3b4cb 100644 --- a/tests/components/radio_browser/test_media_source.py +++ b/tests/components/radio_browser/test_media_source.py @@ -148,7 +148,13 @@ async def test_search_media( SearchMediaQuery(search_query="my search"), ) - source.radios.search.assert_awaited_with(name="my search", hide_broken=True) + source.radios.search.assert_awaited_with( + name="my search", + hide_broken=True, + limit=100, + order=Order.CLICK_COUNT, + reverse=True, + ) assert len(result.result) == 5