From: Marcel van der Veldt Date: Mon, 6 Jan 2025 20:29:34 +0000 (+0100) Subject: Small fixes for podcast RSS provider X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=4951907f9cd9c0d452e3f422443c20089e6a8c41;p=music-assistant-server.git Small fixes for podcast RSS provider - ensure a stable podcast ID - add chapters to episodes --- diff --git a/music_assistant/providers/podcastfeed/__init__.py b/music_assistant/providers/podcastfeed/__init__.py index ee4b37bb..b943bf6f 100644 --- a/music_assistant/providers/podcastfeed/__init__.py +++ b/music_assistant/providers/podcastfeed/__init__.py @@ -27,6 +27,7 @@ from music_assistant_models.errors import InvalidProviderURI, MediaNotFoundError from music_assistant_models.media_items import ( AudioFormat, ItemMapping, + MediaItemChapter, MediaItemImage, Podcast, PodcastEpisode, @@ -34,6 +35,7 @@ from music_assistant_models.media_items import ( ) from music_assistant_models.streamdetails import StreamDetails +from music_assistant.helpers.compare import create_safe_string from music_assistant.models.music_provider import MusicProvider if TYPE_CHECKING: @@ -96,7 +98,7 @@ class PodcastMusicprovider(MusicProvider): """Handle async initialization of the provider.""" # ruff: noqa: S310 feed_url = podcastparser.normalize_feed_url(self.config.get_value(CONF_FEED_URL)) - self.podcast_id = str(hash(feed_url)) + self.podcast_id = create_safe_string(feed_url.replace("http", "")) async with self.mass.http_session.get(feed_url) as response: if response.status == 200: feed_data = await response.read() @@ -242,6 +244,15 @@ class PodcastMusicprovider(MusicProvider): ) }, ) + if "chapters" in episode_obj: + episode.metadata.chapters = [ + MediaItemChapter( + position=idx, + name=chapter_obj["title"], + start=chapter_obj["start"], + ) + for idx, chapter_obj in enumerate(episode_obj["chapters"]) + ] if "episode_art_url" in episode_obj: episode.metadata.images = [