immich-compare/delete_sep10_corrupted.py

57 lines
2.0 KiB
Python

#!/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}")