Реализация
В чате пользователя отображатеся календарь, на котором можно выбрать доступные даты и временные периоды видеозаписей. По отсутствующим периодам не отображаются даты/периоды. Навигация по календарю осуществляется в рамках одного изменяемого сообщения, что исключает "засорение" истории чата. Публикуемые в адрес пользователя видеозаписи также имеют ограниченный срок "жизни".
Стоп-кадры - фотография с веб-камеры, сохраняемая сторонним приложением каждые 30 секунд в aws совместимом хранилище объектов (minio). Индекс изображений хранится в mysql базе.
При получении задания на подготовку видео создается горутина для запуска ffmpeg, которой в потоке передаются изображения и принимается видео, направляемое в телеграм сервер. Количество одновременно функционирующих с ffmpeg горутин регулируется установленной квотой (через размер буфера канала с пустой структурой).
-
Особенности реализации:
- Логирование средствами glg (github.com/kpango/glg).
- Управляемое закрытие критичных горутин по нажатию Ctrl-C (bool канал и sync.WaitGroup).
- Хранение текстов диалогов бота централизовано.