All checks were successful
Validate / Hassfest (push) Successful in 2s
Renamed send_telegram_media_group to send_telegram_notification with expanded capabilities: - Text messages (when urls is empty) - Single photo/video (uses sendPhoto/sendVideo APIs) - Media groups (uses sendMediaGroup API) - Automatic chunking for unlimited media URLs - Smart optimization: single-item chunks use appropriate single-item APIs New parameters: - max_group_size (2-10, default 10): control items per media group - chunk_delay (0-60000ms, default 0): delay between chunks for rate limiting - disable_web_page_preview: disable link previews in text messages The service now intelligently selects the most efficient Telegram API endpoint based on content type and chunk size, with comprehensive error handling and logging. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
"""Constants for the Immich Album Watcher integration."""
|
|
|
|
from datetime import timedelta
|
|
from typing import Final
|
|
|
|
DOMAIN: Final = "immich_album_watcher"
|
|
|
|
# Configuration keys
|
|
CONF_HUB_NAME: Final = "hub_name"
|
|
CONF_IMMICH_URL: Final = "immich_url"
|
|
CONF_API_KEY: Final = "api_key"
|
|
CONF_ALBUMS: Final = "albums"
|
|
CONF_ALBUM_ID: Final = "album_id"
|
|
CONF_ALBUM_NAME: Final = "album_name"
|
|
CONF_SCAN_INTERVAL: Final = "scan_interval"
|
|
CONF_TELEGRAM_BOT_TOKEN: Final = "telegram_bot_token"
|
|
|
|
# Subentry type
|
|
SUBENTRY_TYPE_ALBUM: Final = "album"
|
|
|
|
# Defaults
|
|
DEFAULT_SCAN_INTERVAL: Final = 60 # seconds
|
|
NEW_ASSETS_RESET_DELAY: Final = 300 # 5 minutes
|
|
DEFAULT_SHARE_PASSWORD: Final = "immich123"
|
|
|
|
# Events
|
|
EVENT_ALBUM_CHANGED: Final = f"{DOMAIN}_album_changed"
|
|
EVENT_ASSETS_ADDED: Final = f"{DOMAIN}_assets_added"
|
|
EVENT_ASSETS_REMOVED: Final = f"{DOMAIN}_assets_removed"
|
|
|
|
# Attributes
|
|
ATTR_HUB_NAME: Final = "hub_name"
|
|
ATTR_ALBUM_ID: Final = "album_id"
|
|
ATTR_ALBUM_NAME: Final = "album_name"
|
|
ATTR_ALBUM_URL: Final = "album_url"
|
|
ATTR_ALBUM_URLS: Final = "album_urls"
|
|
ATTR_ALBUM_PROTECTED_URL: Final = "album_protected_url"
|
|
ATTR_ALBUM_PROTECTED_PASSWORD: Final = "album_protected_password"
|
|
ATTR_ASSET_COUNT: Final = "asset_count"
|
|
ATTR_PHOTO_COUNT: Final = "photo_count"
|
|
ATTR_VIDEO_COUNT: Final = "video_count"
|
|
ATTR_ADDED_COUNT: Final = "added_count"
|
|
ATTR_REMOVED_COUNT: Final = "removed_count"
|
|
ATTR_ADDED_ASSETS: Final = "added_assets"
|
|
ATTR_REMOVED_ASSETS: Final = "removed_assets"
|
|
ATTR_CHANGE_TYPE: Final = "change_type"
|
|
ATTR_LAST_UPDATED: Final = "last_updated"
|
|
ATTR_CREATED_AT: Final = "created_at"
|
|
ATTR_THUMBNAIL_URL: Final = "thumbnail_url"
|
|
ATTR_SHARED: Final = "shared"
|
|
ATTR_OWNER: Final = "owner"
|
|
ATTR_PEOPLE: Final = "people"
|
|
ATTR_ASSET_TYPE: Final = "asset_type"
|
|
ATTR_ASSET_FILENAME: Final = "asset_filename"
|
|
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_DOWNLOAD_URL: Final = "asset_download_url"
|
|
ATTR_ASSET_PLAYBACK_URL: Final = "asset_playback_url"
|
|
ATTR_ASSET_DESCRIPTION: Final = "asset_description"
|
|
|
|
# Asset types
|
|
ASSET_TYPE_IMAGE: Final = "IMAGE"
|
|
ASSET_TYPE_VIDEO: Final = "VIDEO"
|
|
|
|
# Platforms
|
|
PLATFORMS: Final = ["sensor", "binary_sensor", "camera", "text", "button"]
|
|
|
|
# Services
|
|
SERVICE_REFRESH: Final = "refresh"
|
|
SERVICE_GET_RECENT_ASSETS: Final = "get_recent_assets"
|
|
SERVICE_SEND_TELEGRAM_NOTIFICATION: Final = "send_telegram_notification"
|