Some checks failed
Validate / Hassfest (push) Has been cancelled
- Asset cache now validates entries by comparing stored thumbhash with current Immich thumbhash instead of using TTL expiration. This makes cache invalidation precise (only when content actually changes) and eliminates unnecessary re-uploads. URL-based cache retains TTL for non-Immich URLs. - Add TELEGRAM_MAX_VIDEO_SIZE (50 MB) check to skip oversized videos in both single-video and media-group paths, preventing entire groups from failing. - Split media groups into sub-groups by cumulative upload size to ensure each sendMediaGroup request stays under Telegram's 50 MB upload limit. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
256 lines
10 KiB
JSON
256 lines
10 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)."
|
|
},
|
|
"offset": {
|
|
"name": "Offset",
|
|
"description": "Number of assets to skip (for pagination)."
|
|
},
|
|
"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)."
|
|
},
|
|
"memory_date": {
|
|
"name": "Memory Date",
|
|
"description": "Filter assets by matching month and day, excluding the same year (memories filter)."
|
|
},
|
|
"city": {
|
|
"name": "City",
|
|
"description": "Filter assets by city name (case-insensitive)."
|
|
},
|
|
"state": {
|
|
"name": "State",
|
|
"description": "Filter assets by state/region name (case-insensitive)."
|
|
},
|
|
"country": {
|
|
"name": "Country",
|
|
"description": "Filter assets by country name (case-insensitive)."
|
|
}
|
|
}
|
|
},
|
|
"send_telegram_notification": {
|
|
"name": "Send Telegram Notification",
|
|
"description": "Send a notification to Telegram (text, photo, video, document, 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."
|
|
},
|
|
"assets": {
|
|
"name": "Assets",
|
|
"description": "List of media assets with 'url', optional 'type' (document/photo/video, default: document), optional 'content_type' (MIME type), and optional 'cache_key' (custom key for caching instead of URL). If empty, sends a text message. Photos and videos can be grouped; documents are sent separately."
|
|
},
|
|
"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."
|
|
},
|
|
"chat_action": {
|
|
"name": "Chat Action",
|
|
"description": "Chat action to display while processing (typing, upload_photo, upload_video, upload_document). Set to empty to disable."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|