fix: catch JSONDecodeError in API calls, use get_headers() consistently

- get_people() and fetch_all_assets() only caught RequestException, leaving
  JSONDecodeError unhandled if Immich returns a non-JSON 200 response
- cli.py thumbnail fetch used a raw header dict instead of get_headers()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-12 00:09:11 +00:00
co-authored by Claude Sonnet 4.6
parent 63cfe62340
commit 86db51e00f
2 changed files with 4 additions and 4 deletions
+2 -2
View File
@@ -12,7 +12,7 @@ from rich.progress import BarColumn, Progress, SpinnerColumn, TaskProgressColumn
from rich.prompt import Confirm, IntPrompt, Prompt from rich.prompt import Confirm, IntPrompt, Prompt
from rich.table import Table from rich.table import Table
from .config import Config, ConfigManager from .config import Config, ConfigManager, get_headers
from .diversity import select_diverse_assets from .diversity import select_diverse_assets
from .embeddings import is_embedding_available, load_embedding_model from .embeddings import is_embedding_available, load_embedding_model
from .image_processing import process_face_mode, process_full_mode, process_object_mode from .image_processing import process_face_mode, process_full_mode, process_object_mode
@@ -541,7 +541,7 @@ def execute_jobs(jobs: list[dict]) -> None:
else: else:
resp = requests.get( resp = requests.get(
f"{Config.IMMICH_URL}/api/assets/{asset['id']}/thumbnail?size=preview&format=JPEG", f"{Config.IMMICH_URL}/api/assets/{asset['id']}/thumbnail?size=preview&format=JPEG",
headers={"x-api-key": Config.API_KEY, "Accept": "application/json"}, headers=get_headers(),
timeout=30, timeout=30,
) )
img = Image.open(BytesIO(resp.content)) if resp.ok else None img = Image.open(BytesIO(resp.content)) if resp.ok else None
+2 -2
View File
@@ -37,7 +37,7 @@ def get_people() -> list[dict]:
) )
resp.raise_for_status() resp.raise_for_status()
return resp.json().get("people", []) return resp.json().get("people", [])
except requests.RequestException as e: except (requests.RequestException, ValueError) as e:
logger.error(f"Failed to fetch people: {e}") logger.error(f"Failed to fetch people: {e}")
return [] return []
@@ -78,7 +78,7 @@ def fetch_all_assets(person: dict) -> list[dict]:
if len(page_assets) < page_size: if len(page_assets) < page_size:
break break
except requests.RequestException as e: except (requests.RequestException, ValueError) as e:
logger.error(f"Exception fetching assets for {name}: {e}") logger.error(f"Exception fetching assets for {name}: {e}")
break break