Иногда желания совпадают с реализацией полезных вещей. Получилось посмотреть API Telegram и создать тематические каналы «ZX Spectrum Art Daily» и «Commodore 64 Art Daily» со своими ботами.
В Telegram каналах «ZX Spectrum Art Daily» и «Commodore 64 Art Daily» ежедневно публикуются случайные работы Pixel Art графики по расписанию. Все работы отбираются автоматически и случайно из ресурсов, посвященных своим ретро платформам компьютеров с богатыми базами данных.
Архитектура для серверной части приложения на PHP была простой и монолитной. Но при дальнейшей эксплуатации возникли проблемы. Так как работы публикуются случайно, иногда выпадали частые повторы постов. Для решения проблемы, логика приложения была расширена и переписана.
Добавился контроль публикаций через базу данных. При каждой выборке проверяется дата последней публикации конкретной работы. Если она была уже опубликована и время с последней публикации меньше, чем задано в переменной плеча времени (сейчас это 256 дней), то происходит обновление выборки. Таким образом избегаются частые повторы.
Для канала «ZX Spectrum Art Daily» использовался понятный API с ресурса zxart.ee от автора Дмитрия Пономарёва. При запросах к ресурсу все основные данные отдаются в формате json, которые можно обрабатывать и формировать в вёрстку сообщения для бота уже через Telegram API. Бот добавлен к каналу с нужными правами и может создавать публикации в нём.
Для канала «Commodore 64 Art Daily» источником данных послужил ресурс csdb.dk, но к сожалению его API оказался ограниченным. Нет возможности получать списки работ. Для случайной выборки из списка - пришлось парсить html страницы выдачи с запросом по фильтру. Из полученного списка можно отбирать случайную работу и по id уже пользоваться внутренним API для конкретной записи. Данные в этом случае отдаются в формате xml.