#!/usr/bin/env python3 """Update dates for UUID-named files in Immich.""" import subprocess import json from urllib.request import Request, urlopen API_KEY = "GsWQUTR6EXlkKp1M82jDJ3KmzhM0fMAbbIbfHDyI" API_URL = "http://localhost:2283/api" # UUID files with their correct dates from Mylio XMP files = { "09C298F7-2237-4372-A99C-089BA7AE76A8.jpg": "2021-09-25T04:03:24.000Z", "1BF9EA26-225E-4AAE-B27D-3750C8AAF67A.jpg": "2021-09-25T04:04:06.000Z", "3CEFC5D9-B100-4AA3-9CCE-121F9CBEFB8C.jpg": "2021-10-04T03:55:08.000Z", "3F53A10E-8403-4C05-B180-32482554CD0F.jpg": "2021-09-11T03:05:17.000Z", "41F7B9E3-C476-460D-9A61-AC7794524864.jpg": "2021-12-28T16:57:59.000Z", "44C13A26-F430-4018-9CD5-5C64A84D9BE1.jpg": "2021-09-23T14:21:59.000Z", "507C94F6-EB74-4F6E-ACAF-F3D424DB5C30.jpg": "2021-12-28T16:58:36.000Z", "57E09983-E365-4D55-A6BD-FD48C4E93823.jpg": "2021-09-11T03:05:31.000Z", "73149BC3-657B-45E1-9F14-AF344CC17B74.jpg": "2021-12-28T16:57:26.000Z", "80262004-01C7-465F-BFC4-AA822A36EFF2.jpg": "2021-09-25T04:04:32.000Z", "8068628A-DF39-403E-A4FE-6095B59908D3.jpg": "2021-09-11T02:59:17.000Z", "81B12ED7-9C2A-457F-86A7-9EDA320607A0.jpg": "2021-09-23T14:22:00.000Z", "91E396CA-3528-4EDC-951E-FF70FD8768FD.jpg": "2021-12-28T16:57:51.000Z", "A6AEF278-BB86-49F9-BD93-EE728780213E.jpg": "2021-09-23T14:22:07.000Z", "B2AA2B92-F554-4E3F-90D3-AE59E3C41751.jpg": "2021-10-04T03:55:33.000Z", "B4899F17-6BA5-4516-81BD-04CC119D2C3D.jpg": "2021-10-04T03:54:09.000Z", "B9AD2FBE-5D33-426C-9F0C-08F4EAC27440.jpg": "2021-12-28T16:58:14.000Z", "BE71C547-F247-4CFD-BF66-65438C45C6C0.jpg": "2021-10-04T03:54:45.000Z", "CB381DB7-8B95-4581-B53A-D03B5B7EF94C.jpg": "2021-12-28T16:57:14.000Z", "E2A04304-643D-4569-839A-60A0E6D8071A.jpg": "2021-12-28T16:57:02.000Z", "ED522636-3584-4DD0-B176-BC0E5F8CCB88.jpg": "2021-10-04T03:54:33.000Z", "EEE55391-320C-4399-8378-6A42A99617BB.jpg": "2021-12-28T16:57:42.000Z", "F38214B0-166E-47B7-A2AE-328FB5DC8D8A.jpg": "2021-12-28T16:58:46.000Z", "F91246B7-039C-4E78-BF15-350E65FDEF44.jpg": "2021-12-28T16:58:27.000Z", "FB2BCD81-AD35-4A23-8EC2-CC8DAB42714E.jpg": "2021-10-04T03:54:26.000Z", } def get_asset_id(filename): """Get Immich asset ID from database.""" result = subprocess.run([ "docker", "exec", "immich_postgres", "psql", "-U", "postgres", "-d", "immich", "-t", "-c", f"SELECT id FROM asset WHERE \"originalPath\" LIKE '%/2024/01/{filename}' AND \"deletedAt\" IS NULL;" ], capture_output=True, text=True) return result.stdout.strip() def update_date(asset_id, date): """Update asset date via Immich API.""" data = json.dumps({"dateTimeOriginal": date}).encode() req = Request(f"{API_URL}/assets/{asset_id}", data=data, method="PUT", headers={"x-api-key": API_KEY, "Content-Type": "application/json"}) urlopen(req) updated = 0 for fname, date in files.items(): asset_id = get_asset_id(fname) if asset_id: update_date(asset_id, date) print(f"Updated {fname} -> {date[:10]}") updated += 1 else: print(f"NOT FOUND: {fname}") print(f"\nTotal updated: {updated}")