From 577d36920a59b8a5235d02c54c510ce4a760af01 Mon Sep 17 00:00:00 2001 From: TPD94 <> Date: Sat, 30 Dec 2023 13:44:35 -0500 Subject: [PATCH] v1.21 Added code to allow exe build. Minor GUI changes --- Helpers/api_check.py | 1 + Helpers/binary_check.py | 1 + Helpers/cache_key.py | 1 + Helpers/capability_check.py | 1 + Helpers/database_check.py | 1 + Helpers/download.py | 1 + Helpers/gui.py | 71 ++++++++++++++++++++++--------------- Helpers/mpd_parse.py | 1 + Helpers/os_check.py | 1 + Helpers/wvd_check.py | 1 + Sites/Canal.py | 1 + Sites/Crunchyroll.py | 2 +- Sites/Generic.py | 1 + Sites/VDOCipher.py | 1 + Sites/YouTube.py | 1 + license_curl.py | 15 -------- tpd-keys.py | 1 + 17 files changed, 58 insertions(+), 44 deletions(-) diff --git a/Helpers/api_check.py b/Helpers/api_check.py index 184f9dc..95b268b 100644 --- a/Helpers/api_check.py +++ b/Helpers/api_check.py @@ -1,5 +1,6 @@ # Import dependencies import os +from sys import exit # Define api key check diff --git a/Helpers/binary_check.py b/Helpers/binary_check.py index 6df6bdf..d05fdb3 100644 --- a/Helpers/binary_check.py +++ b/Helpers/binary_check.py @@ -7,6 +7,7 @@ import tarfile import stat from Helpers import os_check from tqdm import tqdm +from sys import exit # Create / Check folders function diff --git a/Helpers/cache_key.py b/Helpers/cache_key.py index 9eba312..5ecc947 100644 --- a/Helpers/cache_key.py +++ b/Helpers/cache_key.py @@ -2,6 +2,7 @@ import sqlite3 import os +from sys import exit # Define cache function diff --git a/Helpers/capability_check.py b/Helpers/capability_check.py index c5c663c..30a9a12 100644 --- a/Helpers/capability_check.py +++ b/Helpers/capability_check.py @@ -1,6 +1,7 @@ # Import dependencies import Helpers import os +from sys import exit def capability_check(): diff --git a/Helpers/database_check.py b/Helpers/database_check.py index d50f4c9..60a870a 100644 --- a/Helpers/database_check.py +++ b/Helpers/database_check.py @@ -2,6 +2,7 @@ import os import sqlite3 +from sys import exit # Check to see if the database already exists, if not create a keys folder, and create the database. diff --git a/Helpers/download.py b/Helpers/download.py index f5c21fb..ca7b349 100644 --- a/Helpers/download.py +++ b/Helpers/download.py @@ -6,6 +6,7 @@ import Helpers.binary_check import Sites.Generic import license_curl import Helpers.os_check +from sys import exit # Web Download function generic diff --git a/Helpers/gui.py b/Helpers/gui.py index 78fdfe6..71c618f 100644 --- a/Helpers/gui.py +++ b/Helpers/gui.py @@ -1,6 +1,7 @@ import PySimpleGUI as sg import Sites import ast +from sys import exit def clean_dict(dict: str = None): @@ -20,8 +21,10 @@ def start_gui(wvd: str = None, api_key: str = None): left_frame_normal = sg.Col([ [sg.Text('PSSH:'), sg.Text(size=(15, 1), key='-PSSH_TEXT-', expand_x=True, expand_y=True)], [sg.Input(key="-PSSH-")], + [sg.VPush()], [sg.Text(text='License URL:'), sg.Text(size=(15, 1), key='-LIC_URL_TEXT-', expand_x=True, expand_y=True)], [sg.Input(key='-LIC_URL-')], + [sg.VPush()], [sg.Text('Keys:')], [sg.Output(size=(45, 6), key='-OUTPUT-', expand_y=True, expand_x=True)], [sg.Button('Decrypt'), sg.Button('Reset')] @@ -42,7 +45,7 @@ def start_gui(wvd: str = None, api_key: str = None): ] # the window - window = sg.Window('TPD-Keys', layout=window_layout, resizable=True) + window = sg.Window('TPD-Keys', layout=window_layout, resizable=True, size=(800, 800)) # the event loop while True: @@ -66,12 +69,15 @@ def start_gui(wvd: str = None, api_key: str = None): except Exception as error: window['-OUTPUT-'].update(f"{error}") if values['-USE_API-']: - try: - _, key_out = Sites.Generic.decrypt_generic_remotely(api_key=api_key, in_pssh=values['-PSSH-'], - in_license_url=values['-LIC_URL-']) - window['-OUTPUT-'].update(f"{key_out}") - except Exception as error: - window['-OUTPUT-'].update(f"{error}") + if api_key is None: + window['-OUTPUT-'].update(f"No API key") + if api_key is not None: + try: + _, key_out = Sites.Generic.decrypt_generic_remotely(api_key=api_key, in_pssh=values['-PSSH-'], + in_license_url=values['-LIC_URL-']) + window['-OUTPUT-'].update(f"{key_out}") + except Exception as error: + window['-OUTPUT-'].update(f"{error}") if values['-HEADERS-'] != '': if not values['-USE_API-']: @@ -83,14 +89,17 @@ def start_gui(wvd: str = None, api_key: str = None): except Exception as error: window['-OUTPUT-'].update(f"{error}") if values['-USE_API-']: - try: - _, key_out = Sites.Generic.decrypt_generic_remotely(api_key=api_key, - in_pssh=values['-PSSH-'], - in_license_url=values['-LIC_URL-'], - license_curl_headers=ast.literal_eval(clean_dict(dict=values['-HEADERS-']))) - window['-OUTPUT-'].update(f"{key_out}") - except Exception as error: - window['-OUTPUT-'].update(f"{error}") + if api_key is None: + window['-OUTPUT-'].update(f"No API key") + if api_key is not None: + try: + _, key_out = Sites.Generic.decrypt_generic_remotely(api_key=api_key, + in_pssh=values['-PSSH-'], + in_license_url=values['-LIC_URL-'], + license_curl_headers=ast.literal_eval(clean_dict(dict=values['-HEADERS-']))) + window['-OUTPUT-'].update(f"{key_out}") + except Exception as error: + window['-OUTPUT-'].update(f"{error}") # Error for no license URL - Generic if values['-PSSH-'] != '' and values['-LIC_URL-'] == '' and values['-OPTIONS-'] == 'Generic': @@ -114,12 +123,15 @@ def start_gui(wvd: str = None, api_key: str = None): except Exception as error: window['-OUTPUT-'].update(f"{error}") if values['-USE_API-']: - try: - _, key_out = Sites.Crunchyroll.decrypt_crunchyroll_remotely(api_key=api_key, in_pssh=values['-PSSH-'], + if api_key is None: + window['-OUTPUT-'].update(f"No API key") + if api_key is not None: + try: + _, key_out = Sites.Crunchyroll.decrypt_crunchyroll_remotely(api_key=api_key, in_pssh=values['-PSSH-'], license_curl_headers=ast.literal_eval(clean_dict(dict=values['-HEADERS-']))) - window['-OUTPUT-'].update(f"{key_out}") - except Exception as error: - window['-OUTPUT-'].update(f"{error}") + window['-OUTPUT-'].update(f"{key_out}") + except Exception as error: + window['-OUTPUT-'].update(f"{error}") # Error for no Headers - Generic if values['-PSSH-'] != '' and values['-OPTIONS-'] == 'Crunchyroll' and values['-HEADERS-'] == '': @@ -141,14 +153,17 @@ def start_gui(wvd: str = None, api_key: str = None): except Exception as error: window['-OUTPUT-'].update(f"{error}") if values['-USE_API-']: - try: - _, key_out = Sites.YouTube.decrypt_youtube_remotely(api_key=api_key, in_license_url=values['-LIC_URL-'], - license_curl_headers=ast.literal_eval(clean_dict(dict=values['-HEADERS-'])), - license_curl_json=ast.literal_eval(clean_dict(dict=values['-JSON-'])), - license_curl_cookies=ast.literal_eval(clean_dict(dict=values['-COOKIES-']))) - window['-OUTPUT-'].update(f"{key_out}") - except Exception as error: - window['-OUTPUT-'].update(f"{error}") + if api_key is None: + window['-OUTPUT-'].update(f"No API key") + if api_key is not None: + try: + _, key_out = Sites.YouTube.decrypt_youtube_remotely(api_key=api_key, in_license_url=values['-LIC_URL-'], + license_curl_headers=ast.literal_eval(clean_dict(dict=values['-HEADERS-'])), + license_curl_json=ast.literal_eval(clean_dict(dict=values['-JSON-'])), + license_curl_cookies=ast.literal_eval(clean_dict(dict=values['-COOKIES-']))) + window['-OUTPUT-'].update(f"{key_out}") + except Exception as error: + window['-OUTPUT-'].update(f"{error}") # Error for no Headers - Crunchyroll if values['-LIC_URL-'] != '' and values['-OPTIONS-'] == 'YouTube' and values['-HEADERS-'] == '' and values['-JSON-'] != '' and values['-COOKIES-'] != '': diff --git a/Helpers/mpd_parse.py b/Helpers/mpd_parse.py index b69a391..745b91a 100644 --- a/Helpers/mpd_parse.py +++ b/Helpers/mpd_parse.py @@ -1,5 +1,6 @@ import requests import re +from sys import exit # Define MPD / m3u8 PSSH parser diff --git a/Helpers/os_check.py b/Helpers/os_check.py index 6b70249..b3c9c13 100644 --- a/Helpers/os_check.py +++ b/Helpers/os_check.py @@ -1,4 +1,5 @@ import os +from sys import exit def get_os_specific(): diff --git a/Helpers/wvd_check.py b/Helpers/wvd_check.py index 61839fe..c7f7cdb 100644 --- a/Helpers/wvd_check.py +++ b/Helpers/wvd_check.py @@ -1,6 +1,7 @@ # Import dependencies import os import glob +from sys import exit # Define WVD device check diff --git a/Sites/Canal.py b/Sites/Canal.py index acb5299..baacce8 100644 --- a/Sites/Canal.py +++ b/Sites/Canal.py @@ -7,6 +7,7 @@ import requests import base64 import os import Helpers +from sys import exit # Defining decrypt function for canal plus diff --git a/Sites/Crunchyroll.py b/Sites/Crunchyroll.py index d5c8716..e9d7c6f 100644 --- a/Sites/Crunchyroll.py +++ b/Sites/Crunchyroll.py @@ -7,7 +7,7 @@ import requests import base64 import os import Helpers - +from sys import exit # Defining decrypt function for Crunchyroll def decrypt_crunchyroll(wvd: str = None, license_curl_headers: dict = None, mpd_url: str = None, diff --git a/Sites/Generic.py b/Sites/Generic.py index 0c0a7c6..2da2a34 100644 --- a/Sites/Generic.py +++ b/Sites/Generic.py @@ -7,6 +7,7 @@ import requests import base64 import os import Helpers +from sys import exit # Defining decrypt function for generic services diff --git a/Sites/VDOCipher.py b/Sites/VDOCipher.py index 5125d66..aff3cd4 100644 --- a/Sites/VDOCipher.py +++ b/Sites/VDOCipher.py @@ -9,6 +9,7 @@ import base64 import os import Helpers import re +from sys import exit # Defining decrypt function for generic services diff --git a/Sites/YouTube.py b/Sites/YouTube.py index b384cc0..8daefce 100644 --- a/Sites/YouTube.py +++ b/Sites/YouTube.py @@ -7,6 +7,7 @@ import requests import base64 import os import Helpers +from sys import exit # Defining decrypt function for YouTube diff --git a/license_curl.py b/license_curl.py index 759750c..e69de29 100644 --- a/license_curl.py +++ b/license_curl.py @@ -1,15 +0,0 @@ -headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0', - 'Accept': '*/*', - 'Accept-Language': 'en-US,en;q=0.5', - # 'Accept-Encoding': 'gzip, deflate, br', - 'DNT': '1', - 'Sec-Fetch-Dest': 'empty', - 'Sec-Fetch-Mode': 'cors', - 'Sec-Fetch-Site': 'cross-site', - 'Sec-GPC': '1', - 'Connection': 'keep-alive', - # Requests doesn't support trailers - # 'TE': 'trailers', - 'Content-Type': 'application/x-www-form-urlencoded', -} \ No newline at end of file diff --git a/tpd-keys.py b/tpd-keys.py index c21f7a6..6319dac 100644 --- a/tpd-keys.py +++ b/tpd-keys.py @@ -3,6 +3,7 @@ import Helpers import Sites import license_curl import argparse +from sys import exit # Get device and api key device, api_key = Helpers.capability_check.capability_check()