From 75bf1b470e32c47444317277e302d095061a8353 Mon Sep 17 00:00:00 2001 From: SBCrumb Date: Mon, 8 Sep 2025 11:06:56 -0400 Subject: [PATCH] api update --- VERSION | 2 +- clients/radarr_client.py | 7 ++++--- core/path_mapper.py | 19 ++++++++++++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 3a4036f..b003284 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.5 +0.2.7 diff --git a/clients/radarr_client.py b/clients/radarr_client.py index d877a39..7899808 100644 --- a/clients/radarr_client.py +++ b/clients/radarr_client.py @@ -184,9 +184,10 @@ class RadarrClient: _log("INFO", f"Finding earliest import for movie_id {movie_id}") # Get movie info for path validation - movie_info = self._get("/api/v3/movie", {"movieId": movie_id}) - if isinstance(movie_info, list) and movie_info: - movie_info = movie_info[0] + movie_info = self._get(f"/api/v3/movie/{movie_id}") + if not movie_info or not isinstance(movie_info, dict): + _log("ERROR", f"Could not get movie info for ID {movie_id}") + return None earliest_real_import = None first_grab = None diff --git a/core/path_mapper.py b/core/path_mapper.py index f72d4b9..16dbb8f 100644 --- a/core/path_mapper.py +++ b/core/path_mapper.py @@ -4,6 +4,7 @@ Path mapping module for NFOGuard Handles path translation between container, Radarr/Sonarr, and download client paths """ import os +import re from pathlib import Path from datetime import datetime from typing import Dict, List, Optional, Tuple @@ -165,10 +166,14 @@ class PathMapper: path_lower = str(path).lower() return any(indicator in path_lower for indicator in self.download_path_indicators) - def analyze_import_source_path(self, source_path: str) -> Tuple[bool, str]: + def analyze_import_source_path(self, source_path: str, movie_path: str = None) -> Tuple[bool, str]: """ Analyze import source path to determine if it's from downloads. + Args: + source_path: Path to analyze + movie_path: Optional movie path to validate against + Returns: (is_from_downloads, reason) """ @@ -177,6 +182,18 @@ class PathMapper: path_lower = source_path.lower() + # If movie_path is provided, check if source path has matching IMDb ID or movie name + if movie_path: + movie_lower = str(movie_path).lower() + movie_basename = os.path.basename(movie_lower) + source_basename = os.path.basename(path_lower) + + # Extract IMDb ID pattern + imdb_match = re.search(r'tt\d+', movie_basename) + if imdb_match and imdb_match.group(0) in source_basename: + _log("DEBUG", f"Source path matches movie IMDb ID: {imdb_match.group(0)}") + return True, "matched_movie_imdb" + # Check for download indicators for indicator in self.download_path_indicators: if indicator in path_lower: