# Import dependencies import Helpers import Sites import license_curl import argparse # Get device and api key device, api_key = Helpers.capability_check.capability_check() # Database check, if it doesn't exist, create it. Helpers.database_check.database_check() # Initialize argparse and set variable parser = argparse.ArgumentParser(description="Options for decryption") # Create mutually exclusive groups for switches services = parser.add_mutually_exclusive_group() # Add switches to the mutually exclusive groups services.add_argument('--crunchyroll', action='store_true', help="Decrypt Crunchyroll") services.add_argument('--crunchyroll-remote', action='store_true', help="Decrypt Crunchyroll remotely") services.add_argument('--generic', action='store_true', help="Decrypt generic services") services.add_argument('--generic-remote', action='store_true', help="Decrypt generic services remotely") services.add_argument('--pssh', action='store_true', help="Parse a PSSH from an MPD link.") services.add_argument('--rte', action='store_true', help="Decrypt RTE") services.add_argument('--rte-remote', action='store_true', help="Decrypt RTE remotely") services.add_argument('--udemy', action='store_true', help="Decrypt Udemy") services.add_argument('--udemy-remote', action='store_true', help="Decrypt Udemy remotely") services.add_argument('--youtube', action='store_true', help="Decrypt YouTube") services.add_argument('--youtube-remote', action='store_true', help="Decrypt YouTube remotely") # Add web download switch parser.add_argument('--web-dl', help="Web download", action='store_true') # Assign the switches a variable switches = parser.parse_args() if switches.crunchyroll: # Perform action for --crunchyroll if switches.web_dl: mpd = input("MPD URL: ") file = Helpers.download.web_dl_crunchyroll(mpd=mpd, device=device) print(f'Saved at {file[0]}') else: Sites.Crunchyroll.decrypt_crunchyroll(wvd=device, license_curl_headers=license_curl.headers) elif switches.crunchyroll_remote: # Perform action for --crunchyroll-remote if switches.web_dl: mpd = input("MPD URL: ") file = Helpers.download.web_dl_crunchyroll(mpd=mpd, api_key=api_key, remote=True) print(f'Saved at {file[0]}') else: Sites.Crunchyroll.decrypt_crunchyroll_remotely(api_key=api_key, license_curl_headers=license_curl.headers) elif switches.generic: # Perform action for --generic if switches.web_dl: mpd = input("MPD URL: ") file = Helpers.download.web_dl_generic(mpd=mpd, device=device) print(f'Saved at {file[0]}') else: Sites.Generic.decrypt_generic(wvd=device, license_curl_headers=license_curl.headers) elif switches.generic_remote: # Perform action for --generic-remote if switches.web_dl: mpd = input("MPD URL: ") file = Helpers.download.web_dl_generic(mpd=mpd, api_key=api_key, remote=True) print(f'Saved at {file[0]}') else: Sites.Generic.decrypt_generic_remotely(api_key=api_key, license_curl_headers=license_curl.headers) elif switches.pssh: # Perform action for --pssh mpd = input("MPD URL: ") print(f'PSSH: {Helpers.mpd_parse.parse_pssh(manifest_url=mpd)}') elif switches.rte: # Perform action for --rte if switches.web_dl: mpd = input("MPD URL: ") file = Helpers.download.web_dl_generic(mpd=mpd, device=device, site='rte') print(f'Saved at {file[0]}') else: Sites.RTE.decrypt_rte(wvd=device) elif switches.rte_remote: # Perform action for --rte-remote if switches.web_dl: mpd = input("MPD URL: ") file = Helpers.download.web_dl_generic(mpd=mpd, api_key=api_key, remote=True, site='rte') print(f'Saved at {file[0]}') else: Sites.RTE.decrypt_rte_remotely(api_key=api_key) elif switches.udemy: # Perform action for --udemy if switches.web_dl: mpd = input("MPD URL: ") file = Helpers.download.web_dl_generic(mpd=mpd, device=device, site='udemy') print(f'Saved at {file[0]}') else: Sites.Udemy.decrypt_udemy(wvd=device, license_curl_headers=license_curl.headers, license_curl_cookies=license_curl.cookies) elif switches.udemy_remote: # Perform action for --udemy-remote if switches.web_dl: mpd = input("MPD URL: ") file = Helpers.download.web_dl_generic(mpd=mpd, api_key=api_key, remote=True, site='udemy') print(f'Saved at {file[0]}') else: Sites.Udemy.decrypt_udemy_remotely(api_key=api_key, license_curl_headers=license_curl.headers, license_curl_cookies=license_curl.cookies) elif switches.youtube: # Perform action for --YouTube if switches.web_dl: url = input("YouTube URL: ") file = Helpers.download.youtube_dlp(url=url, device=device) print(f'Saved at {file}') else: Sites.YouTube.decrypt_youtube(wvd=device, license_curl_headers=license_curl.headers, license_curl_json=license_curl.json_data, license_curl_cookies=license_curl.cookies) elif switches.youtube_remote: # Perform action for --youtube-remote if switches.web_dl: url = input("YouTube URL: ") file = Helpers.download.youtube_dlp(url=url, api_key=api_key, remote=True) print(f'Saved at {file}') else: Sites.YouTube.decrypt_youtube_remotely(api_key=api_key, license_curl_headers=license_curl.headers, license_curl_json=license_curl.json_data, license_curl_cookies=license_curl.cookies) else: # Perform default action if no switch is provided Helpers.gui.start_gui(wvd=device, api_key=api_key)