В очередной раз, когда я бессмысленно бродил по Steam, меня посетила идея - сделать (в первую очередь для себя) паблик, который периодически будет выбирать случайную игру и постить в ВК пост с кратким описанием, рейтингом, скриншотами и трейлерами. Таким образом, можно не отрываясь от обычного браузинга соц.сетей получать идеи "на поиграть", да и в целом подтянуть свою эрудицию в мире игр.
И так. Идея есть, а как реализовать? Первое, что приходит на ум - взять Steam API и с помощью него получать списки "Лидеров продаж", "Новинок" и всей библиотеки Steam, затем случайно выбирать игру из этих списков и постить.
Получение информации от Steam
Уже на этапе изучения API возникли сложности:
Steam умеет отдавать только список всех игр в магазине
Нельзя получить рейтинг игры
Нельзя получить теги игры
Ну что ж. В целом выглядит неприятно, но вполне решаемо. У Steam есть отдельные страницы для "Лидеров продаж" и "Новинок", что позволяет парсингом страницы получить все ссылки на игры с этих страниц. Так решаем первую проблему.
Вторая и треться проблема решаются аналогично, но ищем уже рейтинг и теги непостредственно на странице интересующей нас игры.
Хотелось бы ещё получать информацию о совместимости со Steam Deck, но они не дают эту информацию ни в API ни на странице игры. Очень странно.
Как же выбирать игру из списка? Если мы будем роллить рандомно игры (особенно из всей библиотеки), то будет попадаться один шлак. Поэтому надо задать какие-то рамки, но и сильно зарезать выбор не хотелось. Поэтому фильтров для выбора всего 3:
У игры есть отзывы
Эти отзывы положительные
Игра не была ещё опубликована в паблике
Т.к. в первую очередь паблик делал для себя, то тут должен быть элемент неожиданности "А что же запоститься в этот раз??". Поэтому вариант запуска скрипта руками отпадает.
СОбственно был арендован дешёвый VPS, на котором по таймеру запускается скрипт.
Ну и раз уже всё сделано для ВК, то и Telegram грех не добавить. Тем более из-за того, что это родственные продукты,то и API у них схожие и особых проблем добавление кросспостинга не создаёт.
Немного технических подробностей
Для написания скрипта использовал Python с голыми requests, Beautiful Soap для парсинга страниц и wget для скачивания скриншотов и трейлеров. На сервере скрипт запускается по времени через Crontab.
Спасибо за внимание. Если тема паблика/канала вам показалась интересной - добро пожаловать!