feat(dev-scripts): add environment-based source toggling
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
@ -11,6 +11,11 @@ STEAM_KEY = os.environ.get('STEAM_KEY')
|
|||||||
LINUX_GAMING_API_KEY = os.environ.get('LINUX_GAMING_API_KEY')
|
LINUX_GAMING_API_KEY = os.environ.get('LINUX_GAMING_API_KEY')
|
||||||
LINUX_GAMING_API_USERNAME = os.environ.get('LINUX_GAMING_API_USERNAME')
|
LINUX_GAMING_API_USERNAME = os.environ.get('LINUX_GAMING_API_USERNAME')
|
||||||
|
|
||||||
|
# Флаги для включения/отключения источников
|
||||||
|
ENABLE_STEAM = os.environ.get('ENABLE_STEAM', 'true').lower() == 'true'
|
||||||
|
ENABLE_ANTICHEAT = os.environ.get('ENABLE_ANTICHEAT', 'true').lower() == 'true'
|
||||||
|
ENABLE_LINUX_GAMING = os.environ.get('ENABLE_LINUX_GAMING', 'true').lower() == 'true'
|
||||||
|
|
||||||
# Конфигурация API
|
# Конфигурация API
|
||||||
STEAM_BASE_URL = "https://api.steampowered.com/IStoreService/GetAppList/v1/?"
|
STEAM_BASE_URL = "https://api.steampowered.com/IStoreService/GetAppList/v1/?"
|
||||||
LINUX_GAMING_BASE_URL = "https://linux-gaming.ru"
|
LINUX_GAMING_BASE_URL = "https://linux-gaming.ru"
|
||||||
@ -122,6 +127,15 @@ async def request_data():
|
|||||||
Получает данные из Steam, AreWeAntiCheatYet и linux-gaming.ru,
|
Получает данные из Steam, AreWeAntiCheatYet и linux-gaming.ru,
|
||||||
обрабатывает их и сохраняет в JSON-файлы и tar.xz архивы.
|
обрабатывает их и сохраняет в JSON-файлы и tar.xz архивы.
|
||||||
"""
|
"""
|
||||||
|
output_json = []
|
||||||
|
total_parsed = 0
|
||||||
|
linux_gaming_topics = []
|
||||||
|
anticheat_games = []
|
||||||
|
|
||||||
|
try:
|
||||||
|
async with aiohttp.ClientSession() as session:
|
||||||
|
# Загружаем данные Steam
|
||||||
|
if ENABLE_STEAM:
|
||||||
# Параметры запроса для Steam
|
# Параметры запроса для Steam
|
||||||
game_param = "&include_games=true"
|
game_param = "&include_games=true"
|
||||||
dlc_param = "&include_dlc=false"
|
dlc_param = "&include_dlc=false"
|
||||||
@ -135,14 +149,6 @@ async def request_data():
|
|||||||
f"&max_results=50000"
|
f"&max_results=50000"
|
||||||
)
|
)
|
||||||
|
|
||||||
output_json = []
|
|
||||||
total_parsed = 0
|
|
||||||
linux_gaming_topics = []
|
|
||||||
anticheat_games = []
|
|
||||||
|
|
||||||
try:
|
|
||||||
async with aiohttp.ClientSession() as session:
|
|
||||||
# Загружаем данные Steam
|
|
||||||
have_more_results = True
|
have_more_results = True
|
||||||
last_appid_val = None
|
last_appid_val = None
|
||||||
while have_more_results:
|
while have_more_results:
|
||||||
@ -154,15 +160,23 @@ async def request_data():
|
|||||||
have_more_results = app_list['response'].get('have_more_results', False)
|
have_more_results = app_list['response'].get('have_more_results', False)
|
||||||
last_appid_val = app_list['response'].get('last_appid')
|
last_appid_val = app_list['response'].get('last_appid')
|
||||||
print(f"Обработано {len(apps)} игр Steam, всего: {total_parsed}.")
|
print(f"Обработано {len(apps)} игр Steam, всего: {total_parsed}.")
|
||||||
|
else:
|
||||||
|
print("Пропущена загрузка данных Steam (ENABLE_STEAM=false).")
|
||||||
|
|
||||||
# Загружаем данные AreWeAntiCheatYet
|
# Загружаем данные AreWeAntiCheatYet
|
||||||
|
if ENABLE_ANTICHEAT:
|
||||||
anticheat_games = await fetch_games_json(session)
|
anticheat_games = await fetch_games_json(session)
|
||||||
|
else:
|
||||||
|
print("Пропущена загрузка данных AreWeAntiCheatYet (ENABLE_ANTICHEAT=false).")
|
||||||
|
|
||||||
# Загружаем данные linux-gaming.ru
|
# Загружаем данные linux-gaming.ru
|
||||||
|
if ENABLE_LINUX_GAMING:
|
||||||
if LINUX_GAMING_API_KEY and LINUX_GAMING_API_USERNAME:
|
if LINUX_GAMING_API_KEY and LINUX_GAMING_API_USERNAME:
|
||||||
linux_gaming_topics = await get_linux_gaming_topics(session, CATEGORY_LINUX_GAMING)
|
linux_gaming_topics = await get_linux_gaming_topics(session, CATEGORY_LINUX_GAMING)
|
||||||
else:
|
else:
|
||||||
print("Предупреждение: LINUX_GAMING_API_KEY или LINUX_GAMING_API_USERNAME не установлены.")
|
print("Предупреждение: LINUX_GAMING_API_KEY или LINUX_GAMING_API_USERNAME не установлены.")
|
||||||
|
else:
|
||||||
|
print("Пропущена загрузка данных linux-gaming.ru (ENABLE_LINUX_GAMING=false).")
|
||||||
|
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
print(f"Ошибка получения данных: {error}")
|
print(f"Ошибка получения данных: {error}")
|
||||||
@ -173,6 +187,7 @@ async def request_data():
|
|||||||
os.makedirs(data_dir, exist_ok=True)
|
os.makedirs(data_dir, exist_ok=True)
|
||||||
|
|
||||||
# Сохранение данных Steam
|
# Сохранение данных Steam
|
||||||
|
if ENABLE_STEAM and output_json:
|
||||||
output_json_full = os.path.join(data_dir, f"{CATEGORY_STEAM}_appid.json")
|
output_json_full = os.path.join(data_dir, f"{CATEGORY_STEAM}_appid.json")
|
||||||
output_json_min = os.path.join(data_dir, f"{CATEGORY_STEAM}_appid_min.json")
|
output_json_min = os.path.join(data_dir, f"{CATEGORY_STEAM}_appid_min.json")
|
||||||
with open(output_json_full, "w", encoding="utf-8") as f:
|
with open(output_json_full, "w", encoding="utf-8") as f:
|
||||||
@ -180,25 +195,7 @@ async def request_data():
|
|||||||
with open(output_json_min, "w", encoding="utf-8") as f:
|
with open(output_json_min, "w", encoding="utf-8") as f:
|
||||||
json.dump(output_json, f, ensure_ascii=False, separators=(',',':'))
|
json.dump(output_json, f, ensure_ascii=False, separators=(',',':'))
|
||||||
|
|
||||||
# Сохранение данных AreWeAntiCheatYet
|
# Упаковка минифицированного JSON Steam в tar.xz архив
|
||||||
anticheat_json_full = os.path.join(data_dir, "anticheat_games.json")
|
|
||||||
anticheat_json_min = os.path.join(data_dir, "anticheat_games_min.json")
|
|
||||||
with open(anticheat_json_full, "w", encoding="utf-8") as f:
|
|
||||||
json.dump(anticheat_games, f, ensure_ascii=False, indent=2)
|
|
||||||
with open(anticheat_json_min, "w", encoding="utf-8") as f:
|
|
||||||
json.dump(anticheat_games, f, ensure_ascii=False, separators=(',',':'))
|
|
||||||
|
|
||||||
# Сохранение данных linux-gaming.ru
|
|
||||||
linux_gaming_json_full = os.path.join(data_dir, "linux_gaming_topics.json")
|
|
||||||
linux_gaming_json_min = os.path.join(data_dir, "linux_gaming_topics_min.json")
|
|
||||||
if linux_gaming_topics:
|
|
||||||
with open(linux_gaming_json_full, "w", encoding="utf-8") as f:
|
|
||||||
json.dump(linux_gaming_topics, f, ensure_ascii=False, indent=2)
|
|
||||||
with open(linux_gaming_json_min, "w", encoding="utf-8") as f:
|
|
||||||
json.dump(linux_gaming_topics, f, ensure_ascii=False, separators=(',',':'))
|
|
||||||
|
|
||||||
# Упаковка минифицированных JSON в tar.xz архивы
|
|
||||||
# Архив для Steam
|
|
||||||
steam_archive_path = os.path.join(data_dir, f"{CATEGORY_STEAM}_appid.tar.xz")
|
steam_archive_path = os.path.join(data_dir, f"{CATEGORY_STEAM}_appid.tar.xz")
|
||||||
try:
|
try:
|
||||||
with tarfile.open(steam_archive_path, "w:xz", preset=9) as tar:
|
with tarfile.open(steam_archive_path, "w:xz", preset=9) as tar:
|
||||||
@ -209,7 +206,16 @@ async def request_data():
|
|||||||
print(f"Ошибка при упаковке архива Steam: {e}")
|
print(f"Ошибка при упаковке архива Steam: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Архив для AreWeAntiCheatYet
|
# Сохранение данных AreWeAntiCheatYet
|
||||||
|
if ENABLE_ANTICHEAT and anticheat_games:
|
||||||
|
anticheat_json_full = os.path.join(data_dir, "anticheat_games.json")
|
||||||
|
anticheat_json_min = os.path.join(data_dir, "anticheat_games_min.json")
|
||||||
|
with open(anticheat_json_full, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(anticheat_games, f, ensure_ascii=False, indent=2)
|
||||||
|
with open(anticheat_json_min, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(anticheat_games, f, ensure_ascii=False, separators=(',',':'))
|
||||||
|
|
||||||
|
# Упаковка минифицированного JSON AreWeAntiCheatYet в tar.xz архив
|
||||||
anticheat_archive_path = os.path.join(data_dir, "anticheat_games.tar.xz")
|
anticheat_archive_path = os.path.join(data_dir, "anticheat_games.tar.xz")
|
||||||
try:
|
try:
|
||||||
with tarfile.open(anticheat_archive_path, "w:xz", preset=9) as tar:
|
with tarfile.open(anticheat_archive_path, "w:xz", preset=9) as tar:
|
||||||
@ -220,8 +226,16 @@ async def request_data():
|
|||||||
print(f"Ошибка при упаковке архива AreWeAntiCheatYet: {e}")
|
print(f"Ошибка при упаковке архива AreWeAntiCheatYet: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Архив для linux-gaming.ru
|
# Сохранение данных linux-gaming.ru
|
||||||
if linux_gaming_topics:
|
if ENABLE_LINUX_GAMING and linux_gaming_topics:
|
||||||
|
linux_gaming_json_full = os.path.join(data_dir, "linux_gaming_topics.json")
|
||||||
|
linux_gaming_json_min = os.path.join(data_dir, "linux_gaming_topics_min.json")
|
||||||
|
with open(linux_gaming_json_full, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(linux_gaming_topics, f, ensure_ascii=False, indent=2)
|
||||||
|
with open(linux_gaming_json_min, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(linux_gaming_topics, f, ensure_ascii=False, separators=(',',':'))
|
||||||
|
|
||||||
|
# Упаковка минифицированного JSON linux-gaming.ru в tar.xz архив
|
||||||
linux_gaming_archive_path = os.path.join(data_dir, "linux_gaming_topics.tar.xz")
|
linux_gaming_archive_path = os.path.join(data_dir, "linux_gaming_topics.tar.xz")
|
||||||
try:
|
try:
|
||||||
with tarfile.open(linux_gaming_archive_path, "w:xz", preset=9) as tar:
|
with tarfile.open(linux_gaming_archive_path, "w:xz", preset=9) as tar:
|
||||||
|
Reference in New Issue
Block a user