Об этом проекте
Jellycat Watch — это управляемая автоматизация для уведомления iPhone о возвращении в продажу отслеживаемых плюшевых драконов Jellycat. Она объединяет Python-скрипт проверки наличия, GitHub Actions для выполнения, cron-job.org для запланированных запусков и ntfy для push-уведомлений.
Конфигурация может отслеживать отдельные URL-адреса товаров и автоматически обнаруживать товары из категории «Драконы и динозавры», если их URL-адрес заканчивается на -dragon. Это позволяет отслеживать новые выпуски драконов без редактирования конфигурации. Явно указанные снятые с производства товары остаются под наблюдением и могут вызвать оповещение, если кнопка покупки снова станет доступной. Двухсловные названия драконов требуют ручного добавления.
Наличие классифицируется консервативно: текст или структурированные данные о том, что товара нет в наличии, помечают его как недоступный, а активная кнопка «Добавить в корзину» — как доступный. Скрытые метаданные InStock сами по себе не считаются достаточным доказательством. Уведомления отправляются только при переходе товара из статуса «нет в наличии» в «в наличии»; состояние хранится в state.json, чтобы избежать повторных оповещений.
Проект предназначен для развертывания без написания кода. Проверка выполняется через публичный репозиторий GitHub и рабочий процесс Actions, а внешний планировщик запускает её примерно каждые три минуты. Требуется персональный токен доступа GitHub с разрешением на запись Actions, который необходимо обновлять после истечения срока действия. Тема ntfy должна точно соответствовать секрету GitHub; любой, кто знает тему, может отправлять уведомления, поэтому её следует держать в секрете.
Необязательная панель управления GitHub Pages может отображать текущий отслеживаемый статус на домашнем экране iPhone. Система не отключает беззвучный режим iOS или ограничения Focus, а ntfy не предоставляет критические оповещения. Описанная настройка полагается на бесплатные GitHub Actions, cron-job.org и сервисы ntfy.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.