fix: gPodder not checking guid on playlog sync if it is present (#2053)
authorFabian Munkes <105975993+fmunkes@users.noreply.github.com>
Mon, 24 Mar 2025 14:23:33 +0000 (07:23 -0700)
committerGitHub <noreply@github.com>
Mon, 24 Mar 2025 14:23:33 +0000 (15:23 +0100)
music_assistant/providers/gpodder/__init__.py

index e7e9d22cc72df6e84bc953dddfe7f459fd92587d..7d7502119edf4b788773a3cc10ff34294448f5fd 100644 (file)
@@ -372,8 +372,24 @@ class GPodder(MusicProvider):
                     # we do not have to add the progress, these would make calls twice,
                     # and we only use the object to propagate to playlog
                     self.progress_guard_timestamp = time.time()
-                    _episode_id = f"{feed_url} {_progress.episode}"
-                    mass_episode = await self.get_podcast_episode(_episode_id, add_progress=False)
+                    _episode_ids: list[str] = []
+                    if _progress.guid is not None:
+                        _episode_ids.append(f"{feed_url} {_progress.guid}")
+                    _episode_ids.append(f"{feed_url} {_progress.episode}")
+                    mass_episode: PodcastEpisode | None = None
+                    for _episode_id in _episode_ids:
+                        try:
+                            mass_episode = await self.get_podcast_episode(
+                                _episode_id, add_progress=False
+                            )
+                            break
+                        except MediaNotFoundError:
+                            continue
+                    if mass_episode is None:
+                        self.logger.debug(
+                            f"Was unable to use progress for episode {_progress.episode}."
+                        )
+                        continue
                     if isinstance(_progress, EpisodeActionNew):
                         await self.mass.music.mark_item_unplayed(mass_episode)
                     else: