All checks were successful
Validate / Hassfest (push) Successful in 3s
Implement caching for Telegram file_ids to avoid re-uploading the same media. Cached IDs are reused for subsequent sends, improving performance significantly. Added configurable cache TTL option (1-168 hours, default 48). Also added city, state, and country fields from Immich reverse geocoding to asset data in events and get_assets service. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
232 lines
9.1 KiB
JSON
232 lines
9.1 KiB
JSON
{
|
|
"entity": {
|
|
"sensor": {
|
|
"album_id": {
|
|
"name": "Album ID"
|
|
},
|
|
"album_asset_count": {
|
|
"name": "Asset Count"
|
|
},
|
|
"album_photo_count": {
|
|
"name": "Photo Count"
|
|
},
|
|
"album_video_count": {
|
|
"name": "Video Count"
|
|
},
|
|
"album_last_updated": {
|
|
"name": "Last Updated"
|
|
},
|
|
"album_created": {
|
|
"name": "Created"
|
|
},
|
|
"album_public_url": {
|
|
"name": "Public URL"
|
|
},
|
|
"album_protected_url": {
|
|
"name": "Protected URL"
|
|
},
|
|
"album_protected_password": {
|
|
"name": "Protected Password"
|
|
}
|
|
},
|
|
"binary_sensor": {
|
|
"album_new_assets": {
|
|
"name": "New Assets"
|
|
}
|
|
},
|
|
"camera": {
|
|
"album_thumbnail": {
|
|
"name": "Thumbnail"
|
|
}
|
|
},
|
|
"text": {
|
|
"album_protected_password_edit": {
|
|
"name": "Share Password"
|
|
}
|
|
},
|
|
"button": {
|
|
"create_share_link": {
|
|
"name": "Create Share Link"
|
|
},
|
|
"delete_share_link": {
|
|
"name": "Delete Share Link"
|
|
},
|
|
"create_protected_link": {
|
|
"name": "Create Protected Link"
|
|
},
|
|
"delete_protected_link": {
|
|
"name": "Delete Protected Link"
|
|
}
|
|
}
|
|
},
|
|
"config": {
|
|
"step": {
|
|
"user": {
|
|
"title": "Connect to Immich",
|
|
"description": "Enter your Immich server details. You can get an API key from Immich → User Settings → API Keys.",
|
|
"data": {
|
|
"hub_name": "Hub Name",
|
|
"immich_url": "Immich URL",
|
|
"api_key": "API Key"
|
|
},
|
|
"data_description": {
|
|
"hub_name": "A name for this Immich server (used in entity IDs)",
|
|
"immich_url": "The URL of your Immich server (e.g., http://192.168.1.100:2283)",
|
|
"api_key": "Your Immich API key"
|
|
}
|
|
}
|
|
},
|
|
"error": {
|
|
"cannot_connect": "Failed to connect to Immich server",
|
|
"invalid_auth": "Invalid API key",
|
|
"no_albums": "No albums found on the server",
|
|
"unknown": "Unexpected error occurred"
|
|
},
|
|
"abort": {
|
|
"already_configured": "This Immich server is already configured"
|
|
}
|
|
},
|
|
"config_subentries": {
|
|
"album": {
|
|
"initiate_flow": {
|
|
"user": "Add Album"
|
|
},
|
|
"entry_type": "Album",
|
|
"step": {
|
|
"user": {
|
|
"title": "Add Album to Watch",
|
|
"description": "Select an album from your Immich server to monitor for changes.",
|
|
"data": {
|
|
"album_id": "Album"
|
|
}
|
|
}
|
|
},
|
|
"error": {
|
|
"cannot_connect": "Failed to connect to Immich server"
|
|
},
|
|
"abort": {
|
|
"parent_not_found": "Hub configuration not found",
|
|
"no_albums": "No albums found on the server",
|
|
"all_albums_configured": "All albums are already configured",
|
|
"album_already_configured": "This album is already being watched"
|
|
}
|
|
}
|
|
},
|
|
"options": {
|
|
"step": {
|
|
"init": {
|
|
"title": "Immich Album Watcher Options",
|
|
"description": "Configure the polling interval and Telegram settings for all albums.",
|
|
"data": {
|
|
"scan_interval": "Scan interval (seconds)",
|
|
"telegram_bot_token": "Telegram Bot Token",
|
|
"telegram_cache_ttl": "Telegram Cache TTL (hours)"
|
|
},
|
|
"data_description": {
|
|
"scan_interval": "How often to check for album changes (10-3600 seconds)",
|
|
"telegram_bot_token": "Bot token for sending notifications to Telegram",
|
|
"telegram_cache_ttl": "How long to cache uploaded file IDs to avoid re-uploading (1-168 hours, default: 48)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"services": {
|
|
"refresh": {
|
|
"name": "Refresh",
|
|
"description": "Force an immediate refresh of album data from Immich."
|
|
},
|
|
"get_assets": {
|
|
"name": "Get Assets",
|
|
"description": "Get assets from the targeted album with optional filtering and ordering.",
|
|
"fields": {
|
|
"limit": {
|
|
"name": "Limit",
|
|
"description": "Maximum number of assets to return (1-100)."
|
|
},
|
|
"favorite_only": {
|
|
"name": "Favorite Only",
|
|
"description": "Filter to show only favorite assets."
|
|
},
|
|
"filter_min_rating": {
|
|
"name": "Minimum Rating",
|
|
"description": "Minimum rating for assets (1-5)."
|
|
},
|
|
"order_by": {
|
|
"name": "Order By",
|
|
"description": "Field to sort assets by (date, rating, name, or random)."
|
|
},
|
|
"order": {
|
|
"name": "Order",
|
|
"description": "Sort direction (ascending or descending)."
|
|
},
|
|
"asset_type": {
|
|
"name": "Asset Type",
|
|
"description": "Filter assets by type (all, photo, or video)."
|
|
},
|
|
"min_date": {
|
|
"name": "Minimum Date",
|
|
"description": "Filter assets created on or after this date (ISO 8601 format)."
|
|
},
|
|
"max_date": {
|
|
"name": "Maximum Date",
|
|
"description": "Filter assets created on or before this date (ISO 8601 format)."
|
|
}
|
|
}
|
|
},
|
|
"send_telegram_notification": {
|
|
"name": "Send Telegram Notification",
|
|
"description": "Send a notification to Telegram (text, photo, video, or media group).",
|
|
"fields": {
|
|
"bot_token": {
|
|
"name": "Bot Token",
|
|
"description": "Telegram bot token (optional if configured in integration options)."
|
|
},
|
|
"chat_id": {
|
|
"name": "Chat ID",
|
|
"description": "Telegram chat ID to send to."
|
|
},
|
|
"urls": {
|
|
"name": "URLs",
|
|
"description": "List of media URLs with type (photo/video). If empty, sends a text message. Large lists are automatically split into multiple media groups."
|
|
},
|
|
"caption": {
|
|
"name": "Caption",
|
|
"description": "Caption text. For media, applied to first item. For empty URLs, this is the message text."
|
|
},
|
|
"reply_to_message_id": {
|
|
"name": "Reply To",
|
|
"description": "Optional message ID to reply to."
|
|
},
|
|
"disable_web_page_preview": {
|
|
"name": "Disable Web Page Preview",
|
|
"description": "Disable link previews in text messages."
|
|
},
|
|
"parse_mode": {
|
|
"name": "Parse Mode",
|
|
"description": "How to parse the caption/text. Options are HTML, Markdown, MarkdownV2, or empty string for plain text."
|
|
},
|
|
"max_group_size": {
|
|
"name": "Max Group Size",
|
|
"description": "Maximum number of media items per media group (2-10). Large lists will be split into multiple groups."
|
|
},
|
|
"chunk_delay": {
|
|
"name": "Chunk Delay",
|
|
"description": "Delay in milliseconds between sending multiple media groups (0-60000). Useful for rate limiting."
|
|
},
|
|
"wait_for_response": {
|
|
"name": "Wait For Response",
|
|
"description": "Wait for Telegram to finish processing before returning. Set to false for fire-and-forget (automation continues immediately)."
|
|
},
|
|
"max_asset_data_size": {
|
|
"name": "Max Asset Data Size",
|
|
"description": "Maximum asset size in bytes. Assets exceeding this limit will be skipped. Leave empty for no limit."
|
|
},
|
|
"send_large_photos_as_documents": {
|
|
"name": "Send Large Photos As Documents",
|
|
"description": "How to handle photos exceeding Telegram's limits (10MB or 10000px dimension sum). If true, send as documents. If false, downsize to fit limits."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|