Просмотр исходного кода

[podcasts] Try to clean up lookups

Colin Powell 1 день назад
Родитель
Сommit
72f739ee5a

+ 8 - 8
vrobbler/apps/podcasts/models.py

@@ -143,13 +143,13 @@ class PodcastEpisode(ScrobblableMixin):
     def find_or_create(
         cls,
         title: str,
-        podcast_name: str,
-        podcast_description: str,
         pub_date: str,
-        number: int = 0,
-        mopidy_uri: str = "",
-        producer_name: str = "",
+        episode_num: int = 0,
         run_time_seconds: int = 1800,
+        mopidy_uri: str = "",
+        podcast_name: str = "",
+        podcast_producer: str = "",
+        podcast_description: str = "",
         enrich: bool = True,
     ) -> "PodcastEpisode":
         """Given a data dict from Mopidy, finds or creates a podcast and
@@ -158,8 +158,8 @@ class PodcastEpisode(ScrobblableMixin):
         """
         log_context={"mopidy_uri": mopidy_uri, "media_type": "Podcast"}
         producer = None
-        if producer_name:
-            producer = Producer.find_or_create(producer_name)
+        if podcast_producer:
+            producer = Producer.find_or_create(podcast_producer)
 
         podcast, created = Podcast.objects.get_or_create(name=podcast_name, defaults={"description": podcast_description})
         log_context["podcast_id"] = podcast.id
@@ -175,7 +175,7 @@ class PodcastEpisode(ScrobblableMixin):
             podcast=podcast,
             defaults={
                 "run_time_seconds": run_time_seconds,
-                "number": number,
+                "number": episode_num,
                 "pub_date": pub_date,
                 "mopidy_uri": mopidy_uri,
             }

+ 8 - 25
vrobbler/apps/podcasts/utils.py

@@ -40,20 +40,20 @@ def fetch_metadata_from_rss(uri: str) -> dict[str, Any]:
 
     podcast_data = {
         "podcast_name": feed.feed.get("title", "Unknown Podcast"),
-        "podcast_description": feed.feed.get("description", ""),
-        "podcast_link": feed.feed.get("link", ""),
+        # "podcast_description": feed.feed.get("description", ""),
+        # "podcast_link": feed.feed.get("link", ""),
         "podcast_producer": podcast_publisher or podcast_owner or podcast_other
     }
 
     for entry in feed.entries:
         if target_guid in target_guid:
             logger.info("🎧 Episode found in RSS feed", extra=log_context)
-            podcast_data["episode_name"] = entry.title
+            podcast_data["title"] = entry.title
             podcast_data["episode_num"] = entry.guid
-            podcast_data["episode_pub_date"] = entry.get("published", None)
-            podcast_data["episode_description"] = entry.get("description", None)
-            podcast_data["episode_url"] = entry.enclosures[0].href if entry.get("enclosures") else None
-            podcast_data["episode_runtime_seconds"] = parse_duration(entry.get("itunes_duration", None))
+            podcast_data["pub_date"] = entry.get("published", None)
+            podcast_data["run_time_seconds"] = parse_duration(entry.get("itunes_duration", None))
+            # podcast_data["description"] = entry.get("description", None)
+            # podcast_data["episode_url"] = entry.enclosures[0].href if entry.get("enclosures") else None
             return podcast_data
     else:
         logger.info("Episode not found in RSS feed.")
@@ -112,24 +112,7 @@ def parse_mopidy_uri(uri: str) -> dict[str, Any]:
 
 def get_or_create_podcast(post_data: dict) -> PodcastEpisode:
     logger.info("Looking up podcast", extra={"post_data": post_data, "media_type": "Podcast"})
-
     mopidy_uri = post_data.get("mopidy_uri", "")
     parsed_data = parse_mopidy_uri(mopidy_uri)
-    producer_name = parsed_data.get("podcast_producer", post_data.get("artist", ""))
-    podcast_name = parsed_data.get("podcast_name", post_data.get("album", ""))
-    episode_name = parsed_data.get("episode_title", parsed_data.get("episode_filename", ""))
-    run_time_seconds = parsed_data.get("episode_runtime_seconds", post_data.get("run_time", 2700))
-
-    episode_dict = {
-    }
 
-    return PodcastEpisode.find_or_create(
-        title=episode_name,
-        podcast_name=podcast_name,
-        podcast_description=parsed_data.get("podcast_description", ""),
-        pub_date=parsed_data.get("pub_date", ""),
-        number=parsed_data.get("episode_num", 0),
-        mopidy_uri=mopidy_uri,
-        producer_name=producer_name,
-        run_time_seconds=run_time_seconds
-    )
+    return PodcastEpisode.find_or_create(**parsed_data)

+ 4 - 11
vrobbler/apps/scrobbles/scrobblers.py

@@ -56,18 +56,11 @@ def mopidy_scrobble_media(post_data: dict, user_id: int) -> Scrobble:
 
     if media_type == Scrobble.MediaType.PODCAST_EPISODE:
         parsed_data = parse_mopidy_uri(post_data.get("mopidy_uri", ""))
-        podcast_name = post_data.get(
-            "album", parsed_data.get("podcast_name", "")
-        )
+        if not parsed_data:
+            logger.warning("Tried to scrobble podcast but no uri found", extra={"post_data": post_data})
+            return Scrobble()
 
-        media_obj = PodcastEpisode.find_or_create(
-            title=parsed_data.get("episode_filename", ""),
-            podcast_name=podcast_name,
-            producer_name=post_data.get("artist", ""),
-            number=parsed_data.get("episode_num", ""),
-            pub_date=parsed_data.get("pub_date", ""),
-            mopidy_uri=post_data.get("mopidy_uri", ""),
-        )
+        media_obj = PodcastEpisode.find_or_create(**parsed_data)
     else:
         media_obj = Track.find_or_create(
             title=post_data.get("name", ""),