Add hub tracking logic
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s

This commit is contained in:
2026-01-30 02:50:28 +03:00
parent 332a47312f
commit 49eddd482c

View File

@@ -6,6 +6,7 @@
# Designed to be used in pair with `Immich Album Watcher` integration. # Designed to be used in pair with `Immich Album Watcher` integration.
# #
# Features: # Features:
# - Filter by hub/instance name (for multi-hub setups)
# - Monitor specific albums by name (whitelist) # - Monitor specific albums by name (whitelist)
# - Filter by asset type (track images only, videos only, or both) # - Filter by asset type (track images only, videos only, or both)
# - Send notifications to multiple targets simultaneously # - Send notifications to multiple targets simultaneously
@@ -16,6 +17,7 @@
# - Support for multiple change types (assets added, removed, changed) # - Support for multiple change types (assets added, removed, changed)
# #
# Event Data from Immich: # Event Data from Immich:
# - `hub_name`: Name of the Immich hub/instance that sent the event
# - `album_id`: Album ID # - `album_id`: Album ID
# - `album_name`: Album name # - `album_name`: Album name
# - `album_url`: Public URL to view the album (only if album has shared link) # - `album_url`: Public URL to view the album (only if album has shared link)
@@ -72,12 +74,23 @@ blueprint:
input: input:
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# Album Configuration # Hub & Album Configuration
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
albums_group: albums_group:
name: "Albums" name: "Hub & Albums"
collapsed: false collapsed: false
input: input:
hub_names:
name: Hub Names to Track
description: >
List of Immich hub/instance names to monitor.
Only events from matching hubs will trigger notifications.
Leave empty to track all hubs.
default: []
selector:
text:
multiple: true
album_names: album_names:
name: Album Names to Track name: Album Names to Track
description: > description: >
@@ -283,6 +296,7 @@ variables:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Input Variables # Input Variables
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
hub_names: !input hub_names
album_names: !input album_names album_names: !input album_names
notify_targets: !input notify_targets notify_targets: !input notify_targets
include_people: !input include_people include_people: !input include_people
@@ -308,6 +322,7 @@ variables:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Event Data # Event Data
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
event_hub_name: "{{ trigger.event.data.hub_name | default('') }}"
event_album_name: "{{ trigger.event.data.album_name | default('Unknown Album') }}" event_album_name: "{{ trigger.event.data.album_name | default('Unknown Album') }}"
event_album_id: "{{ trigger.event.data.album_id | default('') }}" event_album_id: "{{ trigger.event.data.album_id | default('') }}"
event_album_url: "{{ trigger.event.data.album_url | default('') }}" event_album_url: "{{ trigger.event.data.album_url | default('') }}"
@@ -320,6 +335,10 @@ variables:
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Computed Values # Computed Values
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Check if this hub should be tracked (empty list = track all)
is_hub_tracked: >
{{ hub_names | length == 0 or event_hub_name in hub_names }}
# Check if this album should be tracked (empty list = track all) # Check if this album should be tracked (empty list = track all)
is_album_tracked: > is_album_tracked: >
{{ album_names | length == 0 or event_album_name in album_names }} {{ album_names | length == 0 or event_album_name in album_names }}
@@ -396,6 +415,10 @@ variables:
# CONDITIONS # CONDITIONS
# ============================================================================= # =============================================================================
condition: condition:
# Only proceed if the hub is in our tracking list
- condition: template
value_template: "{{ is_hub_tracked }}"
# Only proceed if the album is in our tracking list # Only proceed if the album is in our tracking list
- condition: template - condition: template
value_template: "{{ is_album_tracked }}" value_template: "{{ is_album_tracked }}"
@@ -422,6 +445,7 @@ action:
title: "Immich Album Watcher Debug" title: "Immich Album Watcher Debug"
message: > message: >
Trigger ID: {{ trigger.id }} Trigger ID: {{ trigger.id }}
Hub: {{ event_hub_name }}
Album: {{ event_album_name }} Album: {{ event_album_name }}
Album ID: {{ event_album_id }} Album ID: {{ event_album_id }}
Album URL: {{ event_album_url }} Album URL: {{ event_album_url }}
@@ -431,7 +455,8 @@ action:
Removed Count: {{ event_removed_count }} Removed Count: {{ event_removed_count }}
Added Assets: {{ event_added_assets | length }} Added Assets: {{ event_added_assets | length }}
People: {{ event_people | join(', ') }} People: {{ event_people | join(', ') }}
Is Tracked: {{ is_album_tracked }} Is Hub Tracked: {{ is_hub_tracked }}
Is Album Tracked: {{ is_album_tracked }}
Should Notify: {{ should_notify }} Should Notify: {{ should_notify }}
Track Images: {{ track_images }} Track Images: {{ track_images }}
Track Videos: {{ track_videos }} Track Videos: {{ track_videos }}