Обновление проги мониторинга ковров Artisan. Практически 2.0

Ссылка на первую часть:

Переписал своего бота мониторинга ковров практически с нуля.

Если раньше это была обычная программа, которую раз в полчаса запускал планировщик, то теперь это служба, которая работает круглосуточно, мониторит ковры нонстоп, а также отвечает на команды подписчиков в телеге.

Новые функции:

- Команды телеграм-бота. То есть они в принципе появились и ими можно пользоваться.

- Команда /get. Основное нововведение. Если вам не нужно постоянно получать уведомления о том какие ковры появились, а какие закончились, можно отписаться от уведомлений через /stop, но при этом по команде /get получать все доступные на данный момент ковры или только интересные вам.

То есть "/get 99" вернёт только ковры у которых в коде продукта есть 99, а "/get 99 xxl" - только те у которых в коде есть и 99 и xxl.

Кстати, сегодня вышел новый ковёр (キ83) . На сайте появился, а больше нигде никаких анонсов пока нет.<br />
Кстати, сегодня вышел новый ковёр (キ83) . На сайте появился, а больше нигде никаких анонсов пока нет.

- Индивидуальные фильтры уведомлений. Если лично вам не нужны уведомления о том, что в продаже появились классические ковры размера S - это можно организовать. Пока фильтр настраивается только с моей стороны.

из переписки с пользователем бота<br />
из переписки с пользователем бота

Немного технической информации для любителей программирования:

- Это всё ещё приложение на NET8
- Пишу и собираю всё в линуксе в VS Code
- Для основы сервиса использовал шаблон Worker, но так как кода не особо много и он не сложный, дополнительно на микросервисы внутри ихней HostedService инфраструктуры не стал дробить. Просто в пределах одного воркера на функциональные классы поделил и всё.
- Конфиги и данные храню в JSON. Сериализую периодически в файл встроенным сериализатором (System.Text.Json.JsonSerializer)

Прочая обвязка

- Для телеграм-бота использую `Telegram.Bot`
- Для логгирования `log4net`
- Для прикручивания к линуксовому диспетчеру служб Systemd - `Microsoft.Extensions.Hosting.Systemd`
- Для отображения таблички у себя на сайте использую `DataTables` (офигенная штука). И снова планировщик cron, который с бэкенда во фронтенд копирует периодически файлик с данными.
- Для персональных фильтров изпользовал `Dynamic.Linq` - тоже классная вещь, не надо самому мутить свой контракт и парсер для него.

Вроде всё... Программа простая, но так приятно смотреть как оно всё само работает)

11
4 комментария

чего-чего она делает?

Парсит кривой японский сайт и собирает данные в удобную таблицу. А ещё шлёт уведомления в телеграм, когда товар завезли/разобрали.

1

А в чем прикол этих ковров что их даже отслеживать нужно?

Я сам хз. Пользуюсь ковром из днса за 300 рублей. Но прогеймеры всего мира уважают эти ковры. Как-то они позволяют мышкой шевелить точнее.