From 38be6c13f76e893cf47636257071b440dec0c5b2 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Sun, 7 Sep 2025 17:32:13 +0200 Subject: initial commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Robert Günzler --- bundles/immich/files/immich-api-tool | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100755 bundles/immich/files/immich-api-tool (limited to 'bundles/immich/files/immich-api-tool') diff --git a/bundles/immich/files/immich-api-tool b/bundles/immich/files/immich-api-tool new file mode 100755 index 0000000..d0a1a41 --- /dev/null +++ b/bundles/immich/files/immich-api-tool @@ -0,0 +1,49 @@ +#!/bin/sh +set -eu + +API_URL=https://photos.gzr.im/api +API_KEY=zaJUJGHpFqY9OA6kAhuauTj9tC1YVfA8umtZc6ls8U + +request() { + ENDPOINT=${1:?} + shift 1 + + curl -sSfL "${API_URL}${ENDPOINT}" \ + -H "x-api-key: $API_KEY" \ + -H 'Content-Type: application/json' \ + "$@" +} + +validateAccessToken() { + request '/auth/validateToken' -X POST >/dev/null +} + +# returns full json response +searchFavorites() { + request '/search/metadata' \ + -H 'Accept: application/json' \ + -d '{"isFavorite": true}' +} + +# requires '{"assetIds":["list","of","ids",...]}' on stdin +# downloads to PWD +downloadArchive() { + request '/download/archive' \ + -H 'Accept: application/octet-stream' \ + -d @- \ + -o "archive.zip" \ + --no-silent +} + +main() { + validateAccessToken || exit 1 + + # download favorites as archive + searchFavorites | + jq '[.assets.items[].id] | {assetIds:.}' -rc | + downloadArchive +} + +test -n "${DEBUG:-}" && set -x +main +exit 0 -- cgit 1.4.1