Основная цель:
Автоматизированно собирать данные о PackageID через библиотеку SteamKit (
, используя асинхронные запросы, прокси и последующую запись информации в базу данных.
Основные требования к реализации:
* Получение ключевых полей:
* AppID (числовое значение)
* Название (name)
* Тип (type)
* allow_gifting (bool)
* Список ограниченных стран (purchaserestrictedcountries)
* Работа с библиотекой SteamKit для реализации взаимодействия со Steam API.
* Возможность легко расширить или изменить перечень извлекаемых полей при необходимости.
Пример для тестирования:
Извлекаемая информация (в формате JSON) должна содержать поля:
* appid: 2322010
* name: God of War Ragnarök
* type: game
* allow_gifting: True
* purchaserestrictedcountries: Список стран в виде строки (например, "AF AX AL DZ ...")
Обеспечение асинхронного режима и пакетной обработки с использованием прокси
* Запросы к Steam API должны отправляться асинхронно.
* Предусмотреть механизм ограничения количества одновременных запросов (например по 200 запросов за раз).
* Эффективное использование прокси (например каждый запрос использует рандомный прокси из списка)
* Устойчивость к большому объёму обрабатываемых PackageID: приложение не должно “падать” или замедляться при значительном количестве ID.
* Логирование неудачных запросов и попыток переподключения с новым прокси
Обработка ошибок
* Предусмотреть лог ошибок: недоступность Steam API, неправильные ответы, отсутствие packageid, время ожидания (timeout) и другие, в случае возникновения.
* Реализовать повторные попытки/ретраи при неудачных запросах (например, несколько раз по 1 секунде, если так и не получили ответа, то возвращать пустые ответы).
Взаимодействие с базой данных
* Получение списка packageID, которые необходимо обработать.
* Сохранение результатов парсинга в БД на SQL.
Тестирование
Проверить стабильность работы скрипта на 1000+ PackageID в БД
Доп. инфо:
(не проверялся, возможно готовый шаблон для парсинга, может упростить задачу)