import json import os import sys import urllib.parse import requests def get_vpn_servers(): # Забираем ссылку из переменных окружения (туда её подставит Gitea) sub_url = os.getenv("VPN_SUB_URL") if not sub_url: print("Ошибка: Переменная окружения VPN_SUB_URL не задана!") sys.exit(1) parsed_url = urllib.parse.urlparse(sub_url) base_url = f"{parsed_url.scheme}://{parsed_url.netloc}" query_params = urllib.parse.parse_qs(parsed_url.query) token = query_params.get("token", [""]) if not token or not token[0]: print("Ошибка: В ссылке не найден token!") sys.exit(1) api_url = f"{base_url}/api/v1/client/appConfig?token={token[0]}" headers = { "User-Agent": "Happ/2.1.0 (iPhone; iOS 15.5; Scale/3.00)", "Accept": "*/*", "Accept-Language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7", } try: response = requests.get(api_url, headers=headers, timeout=10) if response.status_code != 200: print(f"Ошибка сервера: Статус {response.status_code}") sys.exit(1) data = response.json() servers = data.get("data", {}).get("server_user", []) if not servers: print("Серверы не найдены в ответе API. Сохраняем сырой ответ для отладки.") servers = data # Записываем результат в файл with open("servers.json", "w", encoding="utf-8") as f: json.dump(servers, f, indent=2, ensure_ascii=False) print(f"Успешно обновлено! Найдено серверов: {len(servers)}") except Exception as e: print(f"Произошла ошибка: {e}") sys.exit(1) if __name__ == "__main__": get_vpn_servers()