Skip to content

Conversation

@kieranhogg
Copy link

@kieranhogg kieranhogg commented Oct 28, 2025

Creating a new MR for this as I seem to have failed to rebase properly and it was showing more than the expected amount of commits in the previous one (#2283).

I've addressed the original comments raised by updating the queue details to use the new method. In hindsight I should have just fixed that and merged as the rest of the functionality took a disproportionate amount of time!

Pre-requisites before merge

  • Release non-beta version of auntie-sounds and update manifest to this version
  • Clarify best method for folder icons
  • Check if StreamMetadata.image_url should be used in the player display or not
  • Add provider details as requested by OzGav
  • Update icons as requested by OzGav

Overview

This provider now implements almost all of the full BBC Sounds functionality/catalog. The logic of whether to show the UK version or the slimmed down international version is down to the Sounds API itself. I've made this a manual toggle in the settings just until it's been a bit more road-tested.

Existing issues and queries

  • Using the new StreamMetadata works fine, the image_url doesn't seem to be used, however. I'm not sure if the display image is meant to use this yet, or not?
  • I currently use some folder images from a remote URL, if there is a way to include these locally that feels a neater solution

Future discussions

With maybe a few final tweaks, this is good enough as a starting point. Looking at another iteration, these are areas I need some guidance on whether it is worth pursuing a discussion on discord/issues to improve or adapt existing functionality, or whether they are not going to be likely or possible:

  • Currently streams are set to be not seekable, ideally I'd like to look to bring pausing and seeking functionality to the stations, whether that is with the current functionality or with a custom stream implementation
  • Mapping all the objects to Track, Podcast and PodcastEpisode has ended up with some odd things. So at a minimum, expanding the Radio object to include something like RadioEpisode, RadioSeries. E.g. while it is functional, browsing the API can give a list of mixed PodcastEpisodes and not being able to show which Podcast they belong to
  • Linked to this, the listing in the frontend are a little limiting when trying to show more information about an item
  • Logged in users are able to subscribe to radio shows and podcasts which then appear in their "My Sounds" area. At one staged I had these appear in the Library podcasts section, which worked functionally, but running the provider as a half-streaming, half-not streaming felt a bit odd. The main issue was that it surfaces the fact that radio shows are classed as podcasts so they appeared under Podcasts but I would assume users would expect them to be in Radio?

Any guidance on how welcome a discussion or plan in these areas is welcome.

@OzGav
Copy link
Contributor

OzGav commented Oct 29, 2025

So you weren't able to map all pre-recorded episodes to Podcast for example?

@kieranhogg
Copy link
Author

So you weren't able to map all pre-recorded episodes to Podcast for example?

The vast majority of playable items have a container which does map to a Podcast or a RadioSeries (which then also maps to a Podcast eventually). There are a handful of items that are just mapped to Tracks as they don't have a parent container.

This largely works well with the content retrieved. In the below screenshot, the first row are actual podcasts, the bottom row are treated as podcats, but arguably some are more closer to a radio series, or a collection, but it still all works fine.

image

At its least polished part, when you navigate to the "Latest news" menu item in the built-in API menu, you are presented with a collection of items which are mapped to Track and PodcastEpisode, but seeing them all in a jumble together highlights how much I'm bending MA's existing models and functionality to allow it to work.

image

There's also few clunky edge cases where I can probably improve things without any extra MA changes, I just need to think of some tidier solutions. E.g. browsing radio shows from yesterday, looks mostly fine:

image

But when played the metadata is not the neatest!

image

@OzGav
Copy link
Contributor

OzGav commented Oct 29, 2025

Yeah its tough when they don't have a coherent structure that you can work from. My Internet Archive provider would be way worse than this as it is just a bunch of people adding "stuff" in a variety of ways. At the end of the day if people can find in MA what they can find in the native app then that would seem to be a good outcome?

@OzGav
Copy link
Contributor

OzGav commented Oct 29, 2025

In regards to the logo if you can create a larger one 512x512 that would be great (wikimedia has one you could crop) and make a monochrome one as well where the three rectangles are just plain white.

@kieranhogg
Copy link
Author

Docs

FEATURES

  • Stream live BBC radio shows, podcast series and on-demand audio
  • Shows the currently playing song when streaming radio stations
  • Access your personalised BBC Sounds content*
  • Keeps your My Sounds listen history up to date with your Music Assistant activity*

*Requires a logged in BBC account

CONFIGURATION
The provider works without a login, but you will be restricted to the limited International version of the Sounds menu

KNOWN ISSUES/ NOTES
The full functionality is enabled when you are a UK-based listener, and signed in to your BBC account. The BBC has slowly been moving towards excluding non-UK listeners from using its own Sounds platform, more details here. This provider currently allows access to live and catch up radio to International listeners via the Sounds API, but this could be restricted in the future.

NOT YET SUPPORTED

  • Pausing and seeking live radio
  • The international menu should show avaiable podcasts, this will be supported in a future release, but is not currently
  • Showing the currently playing song on catch-up
  • For signed-in users, accessing your subscribed content through the library is not yet supported, but is planned

async def get_track(self, prov_track_id: str) -> Track:
"""Get full track details by id.

Only called if provider supports ProviderFeature.LIBRARY_TRACKS.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You dont have this feature enabled so I don't think this function should be here?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thought I was going mad and imagining it, but yes this does seem to be called even if ProviderFeature.LIBRARY_TRACKS isn't supported.

image

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not the expert here but I understand the LIBRARY_* features are for when the provider has a library of media items that you are syncing to MA. So if you have "tracks" in your BBC Sounds account then it makes it possible to pull those tracks across. So either it is a bug or the comment in the code is outdated...? Marcel will know!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that docstring is simply not right - you are probably returning a track somewhere and when those details are viewed, the core wants to fetch the full details through this method. If that is something you wont be able to handle, we'll have to look for a workaround.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the one from the demo provider so I need to delete it away. It works completely fine as is, I return Tracks which are streaming items. get_track() and get_stream_details() both work as I need them to, so unless it's problematic, no changes needed.

@OzGav
Copy link
Contributor

OzGav commented Oct 29, 2025

@kieranhogg You can review the docs here music-assistant/beta.music-assistant.io#49

Let me know if any changes are required!

@kieranhogg
Copy link
Author

In regards to the logo if you can create a larger one 512x512 that would be great (wikimedia has one you could crop) and make a monochrome one as well where the three rectangles are just plain white.

sounds-512 sounds-mono-white sounds-mono

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants