diff --git a/immich_album_watcher/README.md b/immich_album_watcher/README.md index 5641666..a7be4eb 100644 --- a/immich_album_watcher/README.md +++ b/immich_album_watcher/README.md @@ -26,6 +26,7 @@ A Home Assistant custom integration that monitors [Immich](https://immich.app/) - Filename - Creation date - Asset owner (who uploaded the asset) + - Asset description/caption - Public URL (if album has a shared link) - Detected people in the asset - **Services** - Custom service calls: @@ -132,6 +133,7 @@ Each item in the `added_assets` list contains the following fields: | `asset_created` | Date/time when the asset was originally created | | `asset_owner` | Display name of the user who owns the asset | | `asset_owner_id` | Unique ID of the user who owns the asset | +| `asset_description` | Description/caption of the asset (from EXIF data) | | `asset_url` | Public URL to view the asset (only present if album has a shared link) | | `people` | List of people detected in this specific asset | diff --git a/immich_album_watcher/const.py b/immich_album_watcher/const.py index 76c2576..989fede 100644 --- a/immich_album_watcher/const.py +++ b/immich_album_watcher/const.py @@ -47,6 +47,7 @@ ATTR_ASSET_CREATED: Final = "asset_created" ATTR_ASSET_OWNER: Final = "asset_owner" ATTR_ASSET_OWNER_ID: Final = "asset_owner_id" ATTR_ASSET_URL: Final = "asset_url" +ATTR_ASSET_DESCRIPTION: Final = "asset_description" # Asset types ASSET_TYPE_IMAGE: Final = "IMAGE" diff --git a/immich_album_watcher/coordinator.py b/immich_album_watcher/coordinator.py index 7ab6a8c..5b298d0 100644 --- a/immich_album_watcher/coordinator.py +++ b/immich_album_watcher/coordinator.py @@ -22,6 +22,7 @@ from .const import ( ATTR_ALBUM_NAME, ATTR_ALBUM_URL, ATTR_ASSET_CREATED, + ATTR_ASSET_DESCRIPTION, ATTR_ASSET_FILENAME, ATTR_ASSET_OWNER, ATTR_ASSET_OWNER_ID, @@ -98,6 +99,7 @@ class AssetInfo: created_at: str owner_id: str = "" owner_name: str = "" + description: str = "" people: list[str] = field(default_factory=list) @classmethod @@ -114,6 +116,12 @@ class AssetInfo: if users_cache and owner_id: owner_name = users_cache.get(owner_id, "") + # Get description from exifInfo if available + description = "" + exif_info = data.get("exifInfo") + if exif_info: + description = exif_info.get("description", "") or "" + return cls( id=data["id"], type=data.get("type", ASSET_TYPE_IMAGE), @@ -121,6 +129,7 @@ class AssetInfo: created_at=data.get("fileCreatedAt", ""), owner_id=owner_id, owner_name=owner_name, + description=description, people=people, ) @@ -264,6 +273,7 @@ class ImmichAlbumWatcherCoordinator(DataUpdateCoordinator[dict[str, AlbumData]]) "type": asset.type, "filename": asset.filename, "created_at": asset.created_at, + "description": asset.description, "people": asset.people, "thumbnail_url": f"{self._url}/api/assets/{asset.id}/thumbnail", } @@ -554,6 +564,7 @@ class ImmichAlbumWatcherCoordinator(DataUpdateCoordinator[dict[str, AlbumData]]) ATTR_ASSET_CREATED: asset.created_at, ATTR_ASSET_OWNER: asset.owner_name, ATTR_ASSET_OWNER_ID: asset.owner_id, + ATTR_ASSET_DESCRIPTION: asset.description, ATTR_PEOPLE: asset.people, } # Add public URL if album has a shared link