#!/usr/bin/env python3 """Delete all corrupted files from 2012/09 folder in Immich.""" import requests API_KEY = "GsWQUTR6EXlkKp1M82jDJ3KmzhM0fMAbbIbfHDyI" BASE_URL = "http://localhost:2283/api" # Files to delete (from 2012/09 folder) CORRUPTED_FILES = [ "CIMG0057.avi", "MVI_0302.avi", "CIMG0066.avi", "MVI_0313.avi", "MVI_0928.avi", "MVI_0872.avi", "MVI_0927.avi", "MVI_0174.avi", "MVI_0312.avi", "MVI_1334.avi", "MVI_1253.avi", "CIMG0017.avi", "MVI_0150.avi", "MVI_1333.avi", "MOV01161.avi", "MOV01027.avi", "MOV00421.avi", "MVI_0068.avi", "MVI_0232.avi", "CIMG0067.avi", "MOV00743.avi", "MOV00757.avi", "MOV00083.avi", "MVI_0314.avi", "MVI_0088.avi", "MVI_0521.avi", "MVI_0074.avi", "MVI_0904.avi", "MOV01159.avi", "MVI_0656.avi", "MVI_0087.avi", "MOV00689.avi", "MVI_1502.avi", "MVI_1271.avi", "MOV00884.avi", "MVI_1473.avi", "MVI_0192.avi", "MVI_0903.avi", "MVI_0190.avi", "MVI_0658.avi", "MOV01026.avi", "DSCN0848.avi", "MVI_0657.avi", "MVI_0665.avi", "MVI_0067.avi", "MVI_0191.avi", "MVI_0315.avi", "MVI_0193.avi", "MOV00883.avi" ] def search_file(filename): resp = requests.post( f"{BASE_URL}/search/metadata", headers={"x-api-key": API_KEY, "Content-Type": "application/json"}, json={"originalFileName": filename} ) if resp.status_code == 200: return resp.json().get("assets", {}).get("items", []) return [] def delete_asset(asset_id): resp = requests.delete( f"{BASE_URL}/assets", headers={"x-api-key": API_KEY, "Content-Type": "application/json"}, json={"ids": [asset_id], "force": True} ) return resp.status_code == 204 deleted = 0 for filename in CORRUPTED_FILES: assets = search_file(filename) for asset in assets: path = asset.get("originalPath", "") if "/2012/09/" in path: if delete_asset(asset["id"]): print(f"DELETED: {filename} from {path}") deleted += 1 else: print(f"FAILED: {filename}") print(f"\nTotal deleted: {deleted}")