# Import dependencies import os import interactions from helper_scripts import TPD_Keys from helper_scripts import DB_Cache from helper_scripts import anime_api from interactions import * # Get current working directory main_directory = os.getcwd() # Define bot bot = Client(intents=Intents.DEFAULT) # Check if discord bot token file exists, if not create file if not os.path.isfile(f"{main_directory}/discord/bot-token.txt"): with open(f'{main_directory}/discord/bot-token.txt', 'w') as discord_bot_token: print("Please put your bot token in /discord/bot-token.txt") discord_bot_token.write("Delete this and place your bot token on this line") exit() # Check if bot token exists and if it has been changed with open(f'{main_directory}/discord/bot-token.txt') as discord_bot_token: bot_token = discord_bot_token.readline() if bot_token == "Delete this and place your bot token on this line": print("Please put your bot token in /discord/bot-token.txt") exit() # Place your discord bot token here. discord_bot_token = bot_token # Check / Create keys database if it doesn't exist DB_Cache.create_database.create_database() # Defining decrypt command @slash_command( name="decrypt", description="Decrypt widevine protected content" ) # PSSH slash option @slash_option( name="pssh", description="Protection Scheme Specific Header", required=True, opt_type=OptionType.STRING, ) @slash_option( name="license_url", description="License URL", required=True, opt_type=OptionType.STRING, ) @slash_option( name="auth_bearer", description="Authorization: Bearer token", required=False, opt_type=OptionType.STRING, ) @slash_option( name="x_dt_auth", description="X-DT-Auth token", required=False, opt_type=OptionType.STRING, ) async def decrypt(ctx: SlashContext, pssh: str, license_url: str, auth_bearer: str = None, x_dt_auth: str = None): keys = TPD_Keys.decrypt_content(pssh=pssh, license_url=license_url, auth_token=auth_bearer, xdt_auth_token=x_dt_auth) if keys != "Unable to retrieve service certificate" and keys != "Could not complete license challenge" and keys != "Invalid PSSH": try: DB_Cache.cache_key.cache_keys(pssh=pssh, keys=keys) embed = interactions.Embed(title="uWu") embed.set_image(url=f"{anime_api.waifu_pics.get_image()}") await ctx.send(f"Keys:\n\n```{keys}```", embed=embed) except: await ctx.send(f"An error occurred `{keys}`!") else: await ctx.send(f"An error occurred `{keys}`!") # Defining search database command @slash_command( name="search_database", description="Search CDRM-Bot's database" ) @slash_option( name="pssh", description="Protection Scheme Specific Header", required=True, opt_type=OptionType.STRING, ) async def search_database(ctx: SlashContext, pssh: str): keys = DB_Cache.check_database.check_database(pssh=pssh) if keys != "Not found": await ctx.send(f"Found key for PSSH `{pssh}` :\n\n```{keys}```") else: await ctx.send(f"No keys found for `{pssh}`\n\n Why not use `/decrypt` and add it?") # Defining key count command @slash_command( name="key_count", description="Check how many keys I have!" ) async def key_count(ctx: SlashContext): await ctx.send(f"I have {DB_Cache.key_count.key_count()} keys in my vault!") # Defining upload database command @slash_command( name="upload_database", description="Upload my database to fileditch" ) async def upload_database(ctx: SlashContext): message = await ctx.send("Uploading...") db_url = DB_Cache.upload_database.upload_database() embed = interactions.Embed( title="CDRM-Bot key database", description=f"{db_url}" ) embed.set_footer(text="Brought to you by TPD94") await message.edit(content="Finished!", embeds=embed) bot.start(token=discord_bot_token)