[podcasts] Try to clean up lookups

This commit is contained in:
2025-10-14 11:45:47 -04:00
parent 56ee14512d
commit 72f739ee5a
3 changed files with 20 additions and 44 deletions

View File

@ -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)