IPT merge all similar

 avatar
unknown
python
9 months ago
1.1 kB
16
No Index
import requests


def find_similar(person_id, person_name):
    similar = requests.get(f"{base_url}/api/people/{person_id}/similar-faces", headers=headers).json()
    if similar and isinstance(similar, list):
        merge_payload = {"ids": [p["id"] for p in similar]}
        requests.post(f"{base_url}/api/immich-proxy/people/{person_id}/merge", json=merge_payload)
        print(f"{person_id} - {person_name:<20} - Merged with {','.join(merge_payload['ids'])}")
    else:
        print(f"{person_id} - {person_name:<20} - No merge")


def main():
    page = 1
    more = True

    while more:
        people = requests.get(f"{base_url}/api/people/list?page={page}", headers=headers).json()["people"]
        for person in people:
            find_similar(person["id"], person["name"])

        if len(people) == 60:
            page += 1
        else:
            more = False


base_url = "<power_tools_url>"
headers = {
    "immich_access_token": "<immich_token>",
    "immich_auth_type": "password",
    "immich_is_authenticated": "true"
}


if __name__ == "__main__":
    main()
Editor is loading...
Leave a Comment