from music_assistant_models.media_items import (
AudioFormat,
ItemMapping,
+ MediaItemChapter,
MediaItemImage,
Podcast,
PodcastEpisode,
)
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:
"""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()
)
},
)
+ 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 = [