diff --git a/mpdpcontrol.py b/mpdpcontrol.py new file mode 100644 index 0000000..6a65538 --- /dev/null +++ b/mpdpcontrol.py @@ -0,0 +1,119 @@ +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.")