120 lines
3.9 KiB
Python
120 lines
3.9 KiB
Python
|
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.")
|