GrifoNer

GrifoNer

На Пикабу
в топе авторов на 344 месте
100 рейтинг 0 подписчиков 0 подписок 1 пост 0 в горячем

Собрал автономного бота для игровых новостей и скидок Steam

Пару месяцев назад мне надоело каждое утро вручную листать DTF, реддит и Steam в поисках нормальных новостей и скидок. Подумал: я же учусь программировать, почему бы не автоматизировать это раз и навсегда? В итоге получился бот, который работает 24/7 на VPS и сам наполняет ленту, пока я на парах.

Начал с простого: скормил скрипту RSS с r/Games. И тут же получил первый сюрприз - лента мгновенно забилась "Daily Discussion" и "Weekly Megathread". Оказалось, Reddit отдаёт их в топе почти каждый день. Пришлось писать фильтр, который проверяет заголовки топ-10 постов на стоп-слова и пропускает весь этот мусор, забирая первую нормальную новость. Звучит элементарно, но я потратил на это целый вечер.

Со скидками Steam история была ещё интереснее. Их API стабильно подсовывает одни и те же игры в топе, и через пару дней лента превращалась в день сурка. В итоге завёл файл published_discounts.json - бот сверяет топ-20 скидок с историей и берёт только то, чего ещё не было. А когда история заканчивается, запускает циклическую ротацию с самых старых записей. Повторов больше нет.

Отдельная боль - картинки. В какой-то момент бот начал падать посреди дня из-за битых ссылок и защиты от хотлинкинга на DTF. Теперь функция загрузки делает три попытки с таймаутом и подставляет заголовки вроде Referer: dtf. Если картинка всё равно не грузится, пост выходит просто текстом. Стабильность важнее идеальной вёрстки.

Тексты прогоняю через YandexGPT, чтобы посты звучали живо, а не как сухая сводка. Расписание получилось такое: в 12:00 - топ DTF, в 14:00 - Reddit, по будням в 15:00 - мемы через meme-api, в 19:00 - скидка Steam. Ещё добавил мониторинг DTF каждые полчаса на ключевые слова вроде "анонс", "релиз", "раздача", чтобы срочные новости не пропускать.

Всё это крутится через systemd и вываливается в мой пет-проект @grifonerloot - использую его как песочницу, чтобы смотреть, как контент выглядит в реальном Telegram, и собирать первые метрики. Раз в неделю бот присылает мне отчёт с приростом аудитории, что удобно.

Собственно, пишу сюда за советом. Сейчас история скидок и новостей хранится в обычных JSON-файлах, и я понимаю, что со временем они раздуются. Как вы решаете эту проблему на маленьких проектах, чтобы не поднимать полноценную базу данных, но и не тонуть в гигабайтных JSON? Буду рад любым мыслям.

Показать полностью 2
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества