From: relic664 <138946165+relic664@users.noreply.github.com> Date: Tue, 24 Feb 2026 14:11:30 +0000 (-0500) Subject: Add custom URL endpoint for listenbrainz scrobble (#3228) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=60d87a5f5ab6cc181ba4ca3a312a01b262fe78a8;p=music-assistant-server.git Add custom URL endpoint for listenbrainz scrobble (#3228) * add custom URL for listenbrainz scrobble Bump to 0.7.0 for custom URL specification, add the proper handling for a custom listenbrainz scrobble endpoint * minor change hide API base URL under advanced, streamline constructo --- diff --git a/music_assistant/providers/listenbrainz_scrobble/__init__.py b/music_assistant/providers/listenbrainz_scrobble/__init__.py index 79d518c6..e5b06243 100644 --- a/music_assistant/providers/listenbrainz_scrobble/__init__.py +++ b/music_assistant/providers/listenbrainz_scrobble/__init__.py @@ -27,6 +27,8 @@ from music_assistant.models import ProviderInstanceType from music_assistant.models.plugin import PluginProvider CONF_USER_TOKEN = "_user_token" +CONF_API_BASE_URL = "api_base_url" +LISTENBRAINZ_API_URL = "https://api.listenbrainz.org" SUPPORTED_FEATURES: set[ProviderFeature] = ( set() ) # we don't have any special supported features (yet) @@ -37,12 +39,14 @@ async def setup( ) -> ProviderInstanceType: """Initialize provider(instance) with given configuration.""" token = config.get_value(CONF_USER_TOKEN) + api_base_url = config.get_value(CONF_API_BASE_URL, LISTENBRAINZ_API_URL) + if not token: raise SetupFailedError("User token needs to be set") assert token != SECURE_STRING_SUBSTITUTE - client = ListenBrainz() + client = ListenBrainz(api_base_url=api_base_url) client.set_auth_token(token) return ListenBrainzScrobbleProvider(mass, manifest, config, client) @@ -155,6 +159,16 @@ async def get_config_entries( required=True, value=values.get(CONF_USER_TOKEN) if values else None, ), + ConfigEntry( + key=CONF_API_BASE_URL, + type=ConfigEntryType.STRING, + label="Base URL", + required=False, + value=values.get(CONF_API_BASE_URL) if values else None, + description="URL for listenbrainz endpoint. Leave blank to default" + "to the public listenbrainz API.", + advanced=True, + ), # add user selection entry await create_scrobble_users_config_entry(mass), ) diff --git a/music_assistant/providers/listenbrainz_scrobble/manifest.json b/music_assistant/providers/listenbrainz_scrobble/manifest.json index 28ab9454..a4f8cd8d 100644 --- a/music_assistant/providers/listenbrainz_scrobble/manifest.json +++ b/music_assistant/providers/listenbrainz_scrobble/manifest.json @@ -9,5 +9,5 @@ "documentation": "https://music-assistant.io/plugins/listenbrainz_scrobble/", "multi_instance": false, "builtin": false, - "requirements": ["liblistenbrainz==0.6.1"] + "requirements": ["liblistenbrainz==0.7.0"] } diff --git a/requirements_all.txt b/requirements_all.txt index 9a9ada4e..0de002b1 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -37,7 +37,7 @@ gql[all]==4.0.0 hass-client==1.2.0 ibroadcastaio==0.4.0 ifaddr==0.2.0 -liblistenbrainz==0.6.1 +liblistenbrainz==0.7.0 librosa==0.11.0 lyricsgenius==3.7.5 mashumaro==3.18