Merge pull request 'Fix rename webhook targeting using episodeId lookup' (#39) from sonarrissues into dev
Local Docker Build (Dev) / build-dev (push) Successful in 4s
Local Docker Build (Dev) / build-dev (push) Successful in 4s
Reviewed-on: #39
This commit was merged in pull request #39.
This commit is contained in:
+30
-45
@@ -152,54 +152,39 @@ async def sonarr_webhook(request: Request, background_tasks: BackgroundTasks, de
|
|||||||
if recent_renames:
|
if recent_renames:
|
||||||
# Take the most recent rename event
|
# Take the most recent rename event
|
||||||
latest_rename = recent_renames[0]
|
latest_rename = recent_renames[0]
|
||||||
print(f"DEBUG: Latest rename event keys: {list(latest_rename.keys())}")
|
print(f"DEBUG: Processing latest rename event")
|
||||||
print(f"DEBUG: Latest rename event full structure: {latest_rename}")
|
|
||||||
|
|
||||||
# Try different possible episode data locations
|
# Extract episodeId directly from the rename event
|
||||||
episode_info = latest_rename.get("episode", {})
|
episode_id = latest_rename.get("episodeId")
|
||||||
episode_file_info = latest_rename.get("episodeFile", {})
|
print(f"DEBUG: Found episodeId {episode_id} in rename event")
|
||||||
data_info = latest_rename.get("data", {})
|
|
||||||
|
|
||||||
print(f"DEBUG: Episode info: {episode_info}")
|
if episode_id:
|
||||||
print(f"DEBUG: EpisodeFile info: {episode_file_info}")
|
# Fetch episode details using the episodeId
|
||||||
print(f"DEBUG: Data info: {data_info}")
|
episode_detail_url = f"{config.sonarr_url}/api/v3/episode/{episode_id}"
|
||||||
|
episode_response = requests.get(episode_detail_url, headers={"X-Api-Key": os.environ.get("SONARR_API_KEY", "")}, timeout=10)
|
||||||
# Try to extract episode info from any available source
|
|
||||||
season_num = None
|
if episode_response.status_code == 200:
|
||||||
episode_num = None
|
episode_detail = episode_response.json()
|
||||||
episode_id = None
|
season_num = episode_detail.get("seasonNumber")
|
||||||
episode_title = None
|
episode_num = episode_detail.get("episodeNumber")
|
||||||
|
episode_title = episode_detail.get("title")
|
||||||
# Check episode object first
|
|
||||||
if episode_info:
|
print(f"DEBUG: Episode details - Season: {season_num}, Episode: {episode_num}, Title: {episode_title}")
|
||||||
season_num = episode_info.get("seasonNumber")
|
|
||||||
episode_num = episode_info.get("episodeNumber")
|
if season_num is not None and episode_num is not None:
|
||||||
episode_id = episode_info.get("id")
|
episodes_data = [{
|
||||||
episode_title = episode_info.get("title")
|
"seasonNumber": season_num,
|
||||||
|
"episodeNumber": episode_num,
|
||||||
# Check episodeFile object
|
"id": episode_id,
|
||||||
if not season_num and episode_file_info:
|
"title": episode_title
|
||||||
season_num = episode_file_info.get("seasonNumber")
|
}]
|
||||||
episode_num = episode_file_info.get("episodeNumber")
|
print(f"INFO: Successfully identified renamed episode: S{season_num:02d}E{episode_num:02d} - {episode_title}")
|
||||||
episode_id = episode_file_info.get("episodeId") or episode_file_info.get("id")
|
else:
|
||||||
|
print(f"DEBUG: Episode details missing season/episode numbers")
|
||||||
# Check data object
|
else:
|
||||||
if not season_num and data_info:
|
print(f"DEBUG: Failed to fetch episode details: {episode_response.status_code}")
|
||||||
season_num = data_info.get("seasonNumber")
|
|
||||||
episode_num = data_info.get("episodeNumber")
|
|
||||||
|
|
||||||
print(f"DEBUG: Extracted - Season: {season_num}, Episode: {episode_num}, ID: {episode_id}")
|
|
||||||
|
|
||||||
if season_num and episode_num:
|
|
||||||
episodes_data = [{
|
|
||||||
"seasonNumber": season_num,
|
|
||||||
"episodeNumber": episode_num,
|
|
||||||
"id": episode_id,
|
|
||||||
"title": episode_title
|
|
||||||
}]
|
|
||||||
print(f"INFO: Found recently renamed episode from history: S{season_num:02d}E{episode_num:02d}")
|
|
||||||
else:
|
else:
|
||||||
print(f"DEBUG: Could not extract episode data from rename event")
|
print(f"DEBUG: No episodeId found in rename event")
|
||||||
else:
|
else:
|
||||||
print(f"DEBUG: No recent rename events found in last hour")
|
print(f"DEBUG: No recent rename events found in last hour")
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user