From de0de68ba58d64d7f06121100280e63b0eac9e3e Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 28 Feb 2026 10:10:53 +0000 Subject: [PATCH] Fix same quality field crash in radarr and lidarr formatters Apply the same isinstance guard from the sonarr fix to radarr (movieFile.quality) and lidarr (trackFiles[].quality) so a plain string value no longer triggers an AttributeError. https://claude.ai/code/session_0188gygwJLdYhxbKvEz2jFjr --- app/formatters.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/app/formatters.py b/app/formatters.py index f0a5984..b96b741 100644 --- a/app/formatters.py +++ b/app/formatters.py @@ -15,12 +15,11 @@ def format_radarr(payload: dict) -> tuple[str, str]: year = movie.get("year", "") is_upgrade = payload.get("isUpgrade", False) - quality = ( - payload.get("movieFile", {}) - .get("quality", {}) - .get("quality", {}) - .get("name", "Unknown") - ) + quality_field = payload.get("movieFile", {}).get("quality", {}) + if isinstance(quality_field, dict): + quality = quality_field.get("quality", {}).get("name", "Unknown") + else: + quality = str(quality_field) if quality_field else "Unknown" if is_upgrade: lines = [ @@ -90,11 +89,11 @@ def format_lidarr(payload: dict) -> tuple[str, str]: track_files = payload.get("trackFiles", [{}]) tf = track_files[0] if track_files else {} - quality = ( - tf.get("quality", {}) - .get("quality", {}) - .get("name", "Unknown") - ) + quality_field = tf.get("quality", {}) + if isinstance(quality_field, dict): + quality = quality_field.get("quality", {}).get("name", "Unknown") + else: + quality = str(quality_field) if quality_field else "Unknown" header = f"\U0001f3b5 **{artist_name}**" if album_title: