import requests import getpass print(""" \033[38;5;15m __ ______ ___ ___ _____ __ __ / |/ / _ \/ _ \/ _ \ / ___/__ ___ / /________ / / / /|_/ / ___/ // / ___/ / /__/ _ \/ _ \/ __/ __/ _ \/ / /_/ /_/_/ /____/_/ \___/\___/_//_/\__/_/ \___/_/ Created by Phantom Version: 1.0 Telegram: https://t.me/PHMSupport Special for: DRMStuff.com \033[0m \n\n\n\n""") def fetch_data(URL, USER, PASSWORD, operationName, variables, query, format_data): headers = { "Content-Type": "application/json", "Accept": "application/json", "Connection": "keep-alive", "DNT": "1", "Origin": f"{URL}/ui", } login_data = { "operationName": "login", "variables": {"login": USER, "password": PASSWORD}, "query": "mutation login($login: String!, $password: String!) {\n login(login: $login, password: $password)\n}", } response = requests.post(f"{URL}/api/graphql", headers=headers, json=login_data) if response.status_code != 200: print("Failed to login") return token = response.json()["data"]["login"] headers["Authorization"] = f"Bearer {token}" data = { "operationName": operationName, "variables": variables, "query": query, } response = requests.post(f"{URL}/api/graphql", headers=headers, json=data) if response.status_code == 200: format_data(response.json()) else: print("Failed to fetch data") def print_menu(): print("\033[96m1. Fetch Channels\033[0m") print("\033[96m2. Fetch Providers\033[0m") print("\033[96m3. Fetch Categories\033[0m") print("\033[96m4. Exit\033[0m") def format_channels(data): channels = data["data"]["channels"]["channels"] for channel in channels: print(f"Channel ID: {channel['id']}") print(f"Channel Name: {channel['name']}") print(f"Channel Language: {channel['lang']}") print(f"Channel URL: {channel['url']}") print("-----------------------------------") def format_providers(data): providers = data["data"]["providers"] for provider in providers: print(f"Provider ID: {provider['id']}") print(f"Provider Name: {provider['name']}") print(f"Engine: {provider['engine']}") print(f"Proxy: {provider['proxy']}") print(f"Format: {provider['format']}") print("-----------------------------------") def format_categories(data): categories = data["data"]["categories"] for category in categories: print(f"Category ID: {category['id']}") print(f"Category Label: {category['label']}") print("-----------------------------------") server_address = input("Enter server address (including port):") URL = f"http://{server_address}" USER = input("Enter username: ") PASSWORD = getpass.getpass("Enter password: ") while True: print_menu() choice = input("Enter your choice: ") if choice == '1': fetch_data(URL, USER, PASSWORD, "channels", {"limit": 50, "offset": 0, "model": {"lang": "", "provider": "", "searchString": ""}}, "query channels($limit: Int!, $offset: Long!, $model: ChannelFilterModel!) {\n channels(limit: $limit, offset: $offset, model: $model) {\n channels {\n id\n name\n lang\n url\n }\n hasMore\n }\n}", format_channels) elif choice == '2': fetch_data(URL, USER, PASSWORD, "providers", {}, "query providers {\n providers {\n id\n name\n engine\n proxy\n format\n }\n}", format_providers) elif choice == '3': fetch_data(URL, USER, PASSWORD, "categories", {}, "query categories {\n categories {\n id\n label\n }\n}", format_categories) elif choice == '4': break else: print("Invalid choice. Please try again.")