From 32ab780b461c1c2b5e3e34c35b5902ed7006b95e Mon Sep 17 00:00:00 2001 From: Parker Date: Sat, 18 May 2024 20:06:51 -0500 Subject: [PATCH] Create CordArr --- .gitignore | 4 + README.md | 60 +++++++++++++- code/bot.py | 51 ++++++++++++ code/cogs/error.py | 27 +++++++ code/cogs/newaccount.py | 59 ++++++++++++++ code/cogs/request.py | 56 +++++++++++++ code/cogs/status.py | 111 ++++++++++++++++++++++++++ code/cogs/tree_sync.py | 33 ++++++++ code/func/jellyfin.py | 64 +++++++++++++++ code/func/radarr.py | 163 ++++++++++++++++++++++++++++++++++++++ code/global_variables.py | 72 +++++++++++++++++ code/validate_config.py | 164 +++++++++++++++++++++++++++++++++++++++ cordarr.png | Bin 0 -> 143382 bytes requirements.txt | 4 + 14 files changed, 866 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 code/bot.py create mode 100644 code/cogs/error.py create mode 100644 code/cogs/newaccount.py create mode 100644 code/cogs/request.py create mode 100644 code/cogs/status.py create mode 100644 code/cogs/tree_sync.py create mode 100644 code/func/jellyfin.py create mode 100644 code/func/radarr.py create mode 100644 code/global_variables.py create mode 100644 code/validate_config.py create mode 100644 cordarr.png create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1ad0889 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +__pycache__ +config.ini +cordarr.db +.DS_Store \ No newline at end of file diff --git a/README.md b/README.md index 4e34e18..cfd1fbe 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,58 @@ -# CordArr - Request new movies to Radarr and create temporary Jellyfin account through Discord commands. +

+
+ Guava Image +
+ CordArr
+

+ +

+ Control your Radarr/Sonarr library and create Jellyfin accounts in Discord +

+ +

+ + discord.py + + + Code Style: Black + + + + +

+ +# Overview + +CordArr is a self-hosted Discord bot that allows you to add new movies or shows to your Radarr/Sonarr libraries, and allow users to create temporary Jellyfin accounts on your server. + +# Instructions + +CordArr is built on Python and requires you to install all of the dependencies in the `requirements.txt` file. To do this, you can run the pip install command like `pip install -r requirements.txt` + +On first run you will likely get a critical warning in your console, don't worry, this is expected. It will automatically create a `config.ini` file for you in the root of the directory with all of the necessary configuration options. + +Fill out the configuration options, then re-run the bot, and everything *should* just work. For information on each configuration option, look below. + +Field | Description +--- | --- +BOT_TOKEN | The token for your bot. Create a bot at [discord.com/developers](https://discord.com/developers) +RADARR_HOST_URL | URL for your Radarr instance (e.g. http://localhost:7878) +RADARR_API_KEY | API key for Radarr, found in `Settings > General > API Key` +ROOT_FOLDER_PATH | Path for media root folder, found at the bottom of the page in `Settings > Media Management` +QUALITY_PROFILE_ID | ID for the quality profile on Radarr (in order to get a list of your quality profiles and their IDs, set the other fields first, then re-run CordArr, the config.ini file will update with this information) +ENABLE_JELLYFIN_TEMP_ACCOUNT | `true/false` : Whether or not to enable the `/newaccount` command allowing users to create temporary Jellyfin accounts + +
+ +If you choose to enable the Jellyfin temp accounts features, these fields will also be required + +Field | Description +--- | --- +JELLYFIN_URL | URL for your Jellyfin server (e.g. http://localhost:8096) +JELLYFIN_API_KEY | API key for Jellyfin - can be created in `Dashboard > API Keys` +ACCOUNT_TIME | Amount of time, in hours, that temporary Jellyfin accounts should exist before being deleted + +
+
+ +If you have any questions, feel free to email at [contact@pkrm.dev](mailto:contact@pkrm.dev). Thank you for checking out Guava, and happy coding. \ No newline at end of file diff --git a/code/bot.py b/code/bot.py new file mode 100644 index 0000000..4b3d96d --- /dev/null +++ b/code/bot.py @@ -0,0 +1,51 @@ +import discord +from discord.ext import commands +from discord.ext import tasks +import datetime +import sqlite3 +import os + +from validate_config import create_config +from global_variables import LOG, BOT_TOKEN + + +class MyBot(commands.Bot): + def __init__(self): + super().__init__( + command_prefix="#", + intents=discord.Intents.default(), + ) + + async def setup_hook(self): + create_config() + delete_old_temp_accounts.start() + for ext in os.listdir("./code/cogs"): + if ext.endswith(".py"): + await self.load_extension(f"cogs.{ext[:-3]}") + + +bot = MyBot() +bot.remove_command("help") + + +@bot.event +async def on_ready(): + LOG.info(f"{bot.user} has connected to Discord.") + + +@tasks.loop(seconds=60) +async def delete_old_temp_accounts(): + # Delete all of the temporary Jellyfin accounts that have passed + # their expiration time + db = sqlite3.connect("cordarr.db") + cursor = db.cursor() + cursor.execute( + "DELETE FROM jellyfin_accounts WHERE deletion_time < ?", + (datetime.datetime.now(),), + ) + db.commit() + db.close() + + +if __name__ == "__main__": + bot.run(BOT_TOKEN) diff --git a/code/cogs/error.py b/code/cogs/error.py new file mode 100644 index 0000000..2752400 --- /dev/null +++ b/code/cogs/error.py @@ -0,0 +1,27 @@ +import discord +from discord.ext import commands +from discord import app_commands + + +class slash_handlers(commands.Cog): + def __init__(self, bot): + self.bot = bot + bot.tree.on_error = self.on_error + + async def on_error(self, interaction: discord.Interaction, error): + if ( + isinstance(error, app_commands.CheckFailure) + and interaction.command.name == "newaccount" + ): + embed = discord.Embed( + title="Jellyfin Account Creation Disabled", + description=f"The owner of {self.bot.user.mention} has disabled the ability to create temporary Jellyfin accounts. Contact an administrator for more information.", + color=0xD01B86 + ) + await interaction.response.send_message(embed=embed, ephemeral=True) + else: + raise error + + +async def setup(bot: commands.Bot): + await bot.add_cog(slash_handlers(bot)) diff --git a/code/cogs/newaccount.py b/code/cogs/newaccount.py new file mode 100644 index 0000000..db5abd0 --- /dev/null +++ b/code/cogs/newaccount.py @@ -0,0 +1,59 @@ +import discord +from discord import app_commands +from discord.ext import commands +import sqlite3 + +from func.jellyfin import create_jellyfin_account +from global_variables import JELLYFIN_URL, ENABLE_JELLYFIN_TEMP_ACCOUNTS, ACCOUNT_TIME + + +class NewAccount(commands.Cog): + def __init__(self, bot): + self.bot = bot + + @app_commands.command() + @app_commands.check(lambda inter: ENABLE_JELLYFIN_TEMP_ACCOUNTS) + async def newaccount(self, interaction: discord.Interaction): + "Create a new temporary Jellyfin account" + # Make sure the user doesn't already have an account + db = sqlite3.connect("cordarr.db") + cursor = db.cursor() + cursor.execute( + "SELECT * FROM jellyfin_accounts WHERE user_id = ?", (interaction.user.id,) + ) + if cursor.fetchone(): + embed = discord.Embed( + title="Account Already Exists", + description="Look at your previous DMs with me to find your account information. You will be permitted to create a new account after your current one expires.", + color=0xD01B86 + ) + return await interaction.response.send_message(embed=embed, ephemeral=True) + + # Create a new Jellyfin account for the user + response = create_jellyfin_account(interaction.user.id) + if response: + embed = discord.Embed( + title="Account Created", + description="Your account has been successfully created. Check your DMs for your account information.", + color=0xD01B86 + ) + await interaction.response.send_message(embed=embed, ephemeral=True) + + # Send the user their account information + embed = discord.Embed( + title="Jellyfin Account Information", + description=f"Here is your temporary account information. You will need this to access the Jellyfin server.\n\n**Server URL:** `{JELLYFIN_URL}`\n**Username:** `{response[0]}`\n**Password:** `{response[1]}`\n\nYour account will be automatically deleted in {ACCOUNT_TIME} hours.", + color=0xD01B86 + ) + await interaction.user.send(embed=embed) + else: + embed = discord.Embed( + title="Unknown Error Occured", + description="Error creating Jellyfin account. Please try again. If the error persists, contact an administrator.", + color=0xD01B86 + ) + return await interaction.response.send_message(embed=embed, ephemeral=True) + + +async def setup(bot): + await bot.add_cog(NewAccount(bot)) diff --git a/code/cogs/request.py b/code/cogs/request.py new file mode 100644 index 0000000..efd6c9d --- /dev/null +++ b/code/cogs/request.py @@ -0,0 +1,56 @@ +import discord +from discord import app_commands +from discord.ext import commands + +from func.radarr import get_movies, AddMovieView + + +class Request(commands.GroupCog, name="request"): + def __init__(self, bot): + self.bot = bot + + @app_commands.command(name="movie") + @app_commands.describe(name="Name of the movie to add") + async def request_movie(self, interaction: discord.Interaction, name: str): + "Request a movie to be added to the Radarr library" + get_movies_response = get_movies(name) + if get_movies_response == "NO RESULTS": + embed = discord.Embed( + title="No Results", + description="No results were found for the given movie name. If you are unable to find the movie, contact an administrator to have it added manually.", + color=0xD01B86 + ) + return await interaction.response.send_message(embed=embed, ephemeral=True) + + if get_movies_response == "ALREADY ADDED": + embed = discord.Embed( + title="Already Added", + description="The movie you are trying to add has already been added to the Radarr library.\n\nYou can check the download status of your requests movies by running the `/status` command.", + color=0xD01B86 + ) + return await interaction.response.send_message(embed=embed, ephemeral=True) + + movies, tmdb_ids = get_movies_response + + embed = discord.Embed( + title="Results Found", + description="Please select the movie you would like to add from the dropdown below.", + color=0xD01B86 + ) + view = AddMovieView(movies, tmdb_ids) + await interaction.response.send_message(embed=embed, view=view, ephemeral=True) + + @app_commands.command(name="show") + @app_commands.describe(name="Name of the show/series to add") + async def request_show(self, interaction: discord.Interaction, name: str): + "Request a show/series to be added to the Sonarr library" + embed = discord.Embed( + title="Coming Soon", + description="This feature is not yet implemented. Check back later.", + color=0xD01B86 + ) + await interaction.response.send_message(embed=embed, ephemeral=True) + + +async def setup(bot): + await bot.add_cog(Request(bot)) diff --git a/code/cogs/status.py b/code/cogs/status.py new file mode 100644 index 0000000..7b6b463 --- /dev/null +++ b/code/cogs/status.py @@ -0,0 +1,111 @@ +import discord +from discord import app_commands +from discord.ext import commands +import requests +import sqlite3 +import datetime +import humanize + +from global_variables import RADARR_HOST_URL, RADARR_HEADERS + + +class Status(commands.Cog): + def __init__(self, bot): + self.bot = bot + + @app_commands.command() + async def status(self, interaction: discord.Interaction): + "Get the status of the movies you have requested" + # Get all the movie_ids that were requested by the user + db = sqlite3.connect("cordarr.db") + cursor = db.cursor() + cursor.execute( + "SELECT movie_id, movie_title FROM movies WHERE user_id = ?", + (interaction.user.id,), + ) + requested_movies = cursor.fetchall() + + users_movies = {} # Dictionary to store the movies that the user has requested + for movie_id, movie_title in requested_movies: + users_movies[movie_id] = movie_title + # If theres no movies, return a message saying so + if not users_movies: + embed = discord.Embed( + title="No Movies Requested", + description="You have no movies being downloaded at the moment. If you previously added a movie, it is likely that it has finished downloading. If you believe this is an error, please contact an administrator.", + color=0xD01B86 + ) + return await interaction.response.send_message(embed=embed, ephemeral=True) + # Otherwise, create the default embed to display the movies being downloaded + embed = discord.Embed( + title="Movies Requested", + description="Here are the movies you have requested that are currently being downloaded:\n", + color=0xD01B86 + ) + + # Now, we get the download status of all movies from the Radarr queue + response = requests.get( + f"{RADARR_HOST_URL}/api/v3/queue/", headers=RADARR_HEADERS + ).json() + + count = 0 + added_movie_ids = [] + for movie in response["records"]: + movie_id = movie["movieId"] + # If the movie is user requested and is being downloaded + if movie_id in users_movies.keys(): + count += 1 + added_movie_ids.append(movie_id) + if movie["status"] == "downloading": + # Humanize the download time left, or result to 'Unknown + try: + time_left = humanize.precisedelta( + datetime.datetime.strptime(movie["timeleft"], "%H:%M:%S") + - datetime.datetime.strptime("00:00:00", "%H:%M:%S"), + minimum_unit="seconds", + ) + except ValueError: + # Sometimes movies will download extremely show and therefore might + # show 'days' in the time left, so strptime appropriately + time_left = humanize.precisedelta( + datetime.datetime.strptime(movie["timeleft"], "%d.%H:%M:%S") + - datetime.datetime.strptime("00:00:00", "%H:%M:%S"), + minimum_unit="seconds", + ) + except KeyError or ValueError: + time_left = "Unknown" + + # Add all the information + embed.description += f"\n{count}. **{users_movies[movie_id]}** - Time Left: ` {time_left} `" + else: + embed.description += f"\n{count}. **{users_movies[movie_id]}** - Status: `{str(movie['status']).upper()}`" + + # If a movie wasn't found in the Radarr queue, then it has either finished downloading + # or the movie was never found for download + if len(added_movie_ids) != len(users_movies.keys()): + # Grab all of the "missing" movies to see if a movie is missing or finished downloading + response = requests.get( + f"{RADARR_HOST_URL}/api/v3/wanted/missing", headers=RADARR_HEADERS + ).json() + for movie in response["records"]: + movie_id = movie["id"] + if movie_id in users_movies.keys() and movie_id not in added_movie_ids: + count += 1 + added_movie_ids.append(movie_id) + embed.description += f"\n{count}. **{users_movies[movie_id]}** - Status: ` NOT FOUND `" + # If there are still movies that haven't been added to the embed, then they + # have finished downloading and can be removed from the database + for movie_id in users_movies.keys(): + if movie_id not in added_movie_ids: + cursor.execute( + "DELETE FROM movies WHERE user_id = ? AND movie_id = ?", + (interaction.user.id, movie_id), + ) + db.commit() + db.close() + + await interaction.response.send_message(embed=embed, ephemeral=True) + + +async def setup(bot): + await bot.add_cog(Status(bot)) diff --git a/code/cogs/tree_sync.py b/code/cogs/tree_sync.py new file mode 100644 index 0000000..5050730 --- /dev/null +++ b/code/cogs/tree_sync.py @@ -0,0 +1,33 @@ +from discord.ext import commands +from discord import Object + + +class TreeSync(commands.Cog): + def __init__(self, bot): + self.bot = bot + + @commands.command() + @commands.dm_only() + @commands.is_owner() + async def sync(self, ctx: commands.Context, *, guild: Object = None) -> None: + if not guild or guild == None: + await self.bot.tree.sync() + await ctx.author.send("Synced commands globally") + return + + elif guild != None: + self.bot.tree.copy_global_to(guild=guild) + await self.bot.tree.sync(guild=guild) + + await ctx.author.send(f"Synced the tree to 1 test guild.") + + @sync.error + async def error_sync(self, ctx, error): + if isinstance(error, commands.errors.PrivateMessageOnly): + pass + else: + await ctx.author.send("That is not a valid guild ID") + + +async def setup(bot): + await bot.add_cog(TreeSync(bot)) diff --git a/code/func/jellyfin.py b/code/func/jellyfin.py new file mode 100644 index 0000000..d434c17 --- /dev/null +++ b/code/func/jellyfin.py @@ -0,0 +1,64 @@ +import datetime +import requests +import random +import string +import sqlite3 + +from global_variables import JELLYFIN_URL, JELLYFIN_HEADERS, ACCOUNT_TIME + +""" +Create a new Jellyfin account for the user and return the username and password +""" + + +def create_jellyfin_account(user_id): + username = "".join(random.choices(string.ascii_lowercase + string.digits, k=5)) + password = "".join(random.choices(string.ascii_lowercase + string.digits, k=15)) + + deletion_time = datetime.datetime.now() + datetime.timedelta(hours=ACCOUNT_TIME) + # Create the new Jellyfin account + request_1 = requests.post( + f"{JELLYFIN_URL}/Users/New", + headers=JELLYFIN_HEADERS, + json={"Name": username, "Password": password}, + ) + if request_1.status_code != 200: + return False + + # Get the user ID of the new account + jellyfin_user_id = request_1.json()["Id"] + # Get the account policy and make edits + request_2 = requests.get( + f"{JELLYFIN_URL}/Users/{jellyfin_user_id}", headers=JELLYFIN_HEADERS + ) + if request_2.status_code != 200: + return False + + account_policy = request_2.json() + account_policy["Policy"]["SyncPlayAccess"] = "JoinGroups" + account_policy["Policy"]["EnableContentDownloading"] = False + account_policy["Policy"]["InvalidLoginAttemptCount"] = 3 + account_policy["Policy"]["MaxActiveSessions"] = 1 + # Update the user with the newly edited policy + request_3 = requests.post( + f"{JELLYFIN_URL}/Users?userId={jellyfin_user_id}", + headers=JELLYFIN_HEADERS, + json=account_policy, + ) + if request_3.status_code != 204: + print(request_3.json()) + print(request_3.status_code) + print("BROKEN AT REQUEST 3") + return False + + # Add the information to the database + db = sqlite3.connect("cordarr.db") + cursor = db.cursor() + cursor.execute( + "INSERT INTO jellyfin_accounts (user_id, jellyfin_user_id, deletion_time) VALUES (?, ?, ?)", + (user_id, jellyfin_user_id, deletion_time), + ) + db.commit() + db.close() + + return username, password diff --git a/code/func/radarr.py b/code/func/radarr.py new file mode 100644 index 0000000..463266c --- /dev/null +++ b/code/func/radarr.py @@ -0,0 +1,163 @@ +import requests +import sqlite3 +import discord + +from global_variables import ( + RADARR_HOST_URL, + RADARR_HEADERS, + ROOT_FOLDER_PATH, + QUALITY_PROFILE_ID, +) + +""" +Add a specific movie to the Radarr library +""" + + +def get_movies(name: str): + # Remove leading/trailing whitespace and replace spaces with URL encoding + name = name.strip().replace(" ", "%20") + + # Send a request to the Radarr API to search for the movie + response = requests.get( + f"{RADARR_HOST_URL}/api/v3/movie/lookup?term={name}", headers=RADARR_HEADERS + ).json() + + if len(response) == 0: + return "NO RESULTS" + # If the movie has alreadt been added, then the added date will be + # something other than 0001-01-01T05:51:00Z + if response[0]["added"] != "0001-01-01T05:51:00Z": + return "ALREADY ADDED" + + # Add the top 5 movies and their years to a list of dictionaries and their respective tmdbIds + movies = [ + {"title": response[i]["title"], "year": response[i]["year"]} + for i in range(min(5, len(response))) + ] + tmdb_ids = {} + for i in range(min(5, len(response))): + tmdb_ids[response[i]["tmdbId"]] = {"description": response[i]["overview"]} + # Try to choose from one of the usual 2 poster images available, + # if not, then just set the "poster" to None + try: + try: + tmdb_ids[response[i]["tmdbId"]]["remotePoster"] = response[i]["images"][0]["remoteUrl"] + except IndexError: + tmdb_ids[response[i]["tmdbId"]]["remotePoster"] = response[i]["images"][1]["remoteUrl"] + except IndexError: + tmdb_ids[response[i]["tmdbId"]]["remotePoster"] = None + + return movies, tmdb_ids + + +""" +Send a request to the Radarr API to add the movie +""" + + +def add_movie(tmdb_id: int): + # Get the necessary data for the movie + data = requests.get( + f"{RADARR_HOST_URL}/api/v3/movie/lookup/tmdb?tmdbId={tmdb_id}", + headers=RADARR_HEADERS, + ).json() + + movie_title = data["title"] + # Change the qualityProfileId, monitored, and rootFolderPath values + data["qualityProfileId"] = QUALITY_PROFILE_ID + data["monitored"] = True + data["rootFolderPath"] = ROOT_FOLDER_PATH + # Send the request to add the movie + response = requests.post( + f"{RADARR_HOST_URL}/api/v3/movie", headers=RADARR_HEADERS, json=data + ).json() + movie_id = response["id"] + + # Return the movie_title, movie_id + return movie_title, movie_id + + +class AddMovieView(discord.ui.View): + def __init__(self, movies: list, tmdb_ids: dict, *, timeout=180.0): + super().__init__(timeout=timeout) + self.add_item(AddMovieDropdown(movies, tmdb_ids)) + + +class AddMovieDropdown(discord.ui.Select): + def __init__(self, movies: list, tmdb_ids: dict, *, timeout=180.0): + self.movies = movies + self.tmdb_ids = tmdb_ids + super().__init__( + placeholder="Select from the dropdown", + options=[ + discord.SelectOption(label=f"{movie['title']} ({movie['year']})") + for movie in movies + ], + ) + + async def callback(self, interaction: discord.Interaction): + # Convert the options to a list of strings and get the index of the selected option + string_options = [option.label for option in self.options] + index = string_options.index(interaction.data["values"][0]) + # Convert the tmdbIds dictionary to a list and get the tmdbId of the selected movie + tmdb_id_list = list(self.tmdb_ids.keys()) + tmdb_id = tmdb_id_list[index] + tmdbFull = self.tmdb_ids[tmdb_id] + + embed = discord.Embed( + title="Is this the movie you want to add?", + description=f"**{self.movies[index]['title']}**\n\n{tmdbFull['description']}", + color=0xD01B86 + ) + embed.set_image(url=tmdbFull["remotePoster"]) + view = RequestButtonView(tmdb_id) + await interaction.response.edit_message(embed=embed, view=view) + + +class RequestButtonView(discord.ui.View): + def __init__(self, tmdb_id: int, *, timeout=180.0): + super().__init__(timeout=timeout) + self.tmdb_id = tmdb_id + + @discord.ui.button(label="Request", style=discord.ButtonStyle.success) + async def request_button( + self, interaction: discord.Interaction, button: discord.ui.Button + ): + # Add the movie to the Radarr library + movie_title, movie_id = add_movie(self.tmdb_id) + + # Alert the user that the movie has been added + embed = discord.Embed( + title="Movie Requested", + description=f"**{movie_title}** has been requested and will be added to the Radarr library. You can check the download status of your requested movies by running the `/status` command. Please wait ~5 minutes for Radarr to find a download for the movie.", + color=0xD01B86 + ) + await interaction.response.edit_message(embed=embed, view=None) + # # Add the movie to the Radarr library + # requests.post( + # f"{RADARR_HOST_URL}/api/v3/command", + # headers=RADARR_HEADERS, + # json={"name": "MoviesSearch", "movieIds": movie_id}, + # ) + + # Keep track of the movie for the `/status` command + db = sqlite3.connect("cordarr.db") + cursor = db.cursor() + cursor.execute( + "INSERT INTO movies VALUES (?, ?, ?)", + (interaction.user.id, movie_id, movie_title), + ) + db.commit() + db.close() + + @discord.ui.button(label="Don't Request", style=discord.ButtonStyle.danger) + async def dont_request_button( + self, interaction: discord.Interaction, button: discord.ui.Button + ): + embed = discord.Embed( + title="Request Cancelled", + description="Request has been cancelled. If you would like to request a different movie, run the `/request movie` command again.", + color=0xD01B86 + ) + await interaction.response.edit_message(embed=embed, view=None) diff --git a/code/global_variables.py b/code/global_variables.py new file mode 100644 index 0000000..bdc5860 --- /dev/null +++ b/code/global_variables.py @@ -0,0 +1,72 @@ +import configparser +import logging +from colorlog import ColoredFormatter + +log_level = logging.DEBUG +log_format = ( + " %(log_color)s%(levelname)-8s%(reset)s | %(log_color)s%(message)s%(reset)s" +) + +logging.root.setLevel(log_level) +formatter = ColoredFormatter(log_format) + +stream = logging.StreamHandler() +stream.setLevel(log_level) +stream.setFormatter(formatter) + +LOG = logging.getLogger("pythonConfig") +LOG.setLevel(log_level) +LOG.addHandler(stream) + +YES_VALUES = ["yes", "y", "true", "t", "1"] +NO_VALUES = ["no", "n", "false", "f", "0"] + +try: + with open("config.ini", "r") as f: + file_contents = f.read() +except FileNotFoundError: + config = configparser.ConfigParser() + config["REQUIRED"] = { + "BOT_TOKEN": "", + "RADARR_HOST_URL": "http://", + "RADARR_API_KEY": "", + "ROOT_FOLDER_PATH": "", + "QUALITY_PROFILE_ID": "", + "ENABLE_JELLYFIN_TEMP_ACCOUNTS": "", + } + + config["JELLYFIN_ACCOUNTS"] = {"JELLYFIN_URL": "", "JELLYFIN_API_KEY": ""} + + with open("config.ini", "w") as configfile: + config.write(configfile) + + LOG.error("Configuration file `config.ini` has been generated. Please fill out all of the necessary information. Refer to the docs for information on what a specific configuration option is.") + exit() + +config = configparser.ConfigParser() +config.read_string(file_contents) + +BOT_TOKEN = config["REQUIRED"]["BOT_TOKEN"] +RADARR_HOST_URL = config["REQUIRED"]["RADARR_HOST_URL"] +RADARR_API_KEY = config["REQUIRED"]["RADARR_API_KEY"] +ROOT_FOLDER_PATH = config["REQUIRED"]["ROOT_FOLDER_PATH"] +QUALITY_PROFILE_ID = config["REQUIRED"]["QUALITY_PROFILE_ID"] + +if config["REQUIRED"]["ENABLE_JELLYFIN_TEMP_ACCOUNTS"].lower() in YES_VALUES: + ENABLE_JELLYFIN_TEMP_ACCOUNTS = True +else: + ENABLE_JELLYFIN_TEMP_ACCOUNTS = False + +JELLYFIN_URL = config["JELLYFIN_ACCOUNTS"]["JELLYFIN_URL"] +JELLYFIN_API_KEY = config["JELLYFIN_ACCOUNTS"]["JELLYFIN_API_KEY"] +ACCOUNT_TIME = int(config["JELLYFIN_ACCOUNTS"]["ACCOUNT_TIME"]) + +RADARR_HEADERS = { + "Content-Type": "application/json", + "X-Api-Key": RADARR_API_KEY +} + +JELLYFIN_HEADERS = { + "Content-Type": "application/json", + "X-Emby-Token": JELLYFIN_API_KEY, +} diff --git a/code/validate_config.py b/code/validate_config.py new file mode 100644 index 0000000..191cb03 --- /dev/null +++ b/code/validate_config.py @@ -0,0 +1,164 @@ +import configparser +import sqlite3 +import requests +from global_variables import LOG, YES_VALUES, NO_VALUES + +""" +Validate all of the options passed into the config.ini file +""" + + +def validate_config(file_contents): + config = configparser.ConfigParser() + config.read_string(file_contents) + + errors = 0 + + try: + # Validate BOT_TOKEN + if not config["REQUIRED"]["BOT_TOKEN"]: + LOG.error("BOT_TOKEN has not been set.") + errors += 1 + + # Validate RADARR_HOST_URL + if not config["REQUIRED"]["RADARR_HOST_URL"]: + LOG.error("RADARR_HOST_URL has not been set.") + errors += 1 + + # Validate RADARR_API_KEY + if not config["REQUIRED"]["RADARR_API_KEY"]: + LOG.error("RADARR_API_KEY has not been set.") + errors += 1 + + radarr_headers = { + "Content-Type": "application/json", + "X-Api-Key": config["REQUIRED"]["RADARR_API_KEY"], + } + + # Make sure connection to Radarr API can be established + try: + requests.get(config["REQUIRED"]["RADARR_HOST_URL"], headers=radarr_headers) + except requests.exceptions.ConnectionError: + LOG.error("Could not connect to Radarr API. Please check your RADARR_HOST_URL and RADARR_API_KEY") + errors += 1 + + # Validate ROOT_FOLDER_PATH + if not config["REQUIRED"]["ROOT_FOLDER_PATH"]: + LOG.error("ROOT_FOLDER_PATH has not been set.") + errors += 1 + + # Validate QUALITY_PROFILE_ID + data = requests.get( + f'{config["REQUIRED"]["RADARR_HOST_URL"]}/api/v3/qualityprofile', + headers=radarr_headers, + ).json() + all_ids = [] + for entry in data: + all_ids.append(str(entry["id"])) + + if ( + not config["REQUIRED"]["QUALITY_PROFILE_ID"] + or config["REQUIRED"]["QUALITY_PROFILE_ID"] not in all_ids + ): + config["AVAILABLE_QUALITY_IDS"] = {} + for entry in data: + config["AVAILABLE_QUALITY_IDS"][str(entry["id"])] = entry["name"] + + LOG.error("Empty or invalid QUALITY_PROFILE_ID passed. Pass one of the valid IDs which are now listed within the config.ini file.") + errors += 1 + + # Validate ENABLE_JELLYFIN_TEMP_ACCOUNTS + if not config["REQUIRED"]["ENABLE_JELLYFIN_TEMP_ACCOUNTS"]: + LOG.error("ENABLE_JELLYFIN_TEMP_ACCOUNTS has not been set.") + errors += 1 + + else: + # Validate the value of ENABLE_JELLYFIN_TEMP_ACCOUNTS + if (config["REQUIRED"]["ENABLE_JELLYFIN_TEMP_ACCOUNTS"].lower() not in YES_VALUES + NO_VALUES): + LOG.error("Invalid value passed to ENABLE_JELLYFIN_TEMP_ACCOUNTS. Pass a true/false value.") + errors += 1 + + if (config["REQUIRED"]["ENABLE_JELLYFIN_TEMP_ACCOUNTS"].lower() in YES_VALUES): + # Validate JELLYFIN_URL + if not config["JELLYFIN_ACCOUNTS"]["JELLYFIN_URL"]: + LOG.error("Empty URL passed to JELLYFIN_URL. Pass a valid URL (e.g. http://localhost:8096)") + errors += 1 + # Validate JELLYFIN_API_KEY + if not config["JELLYFIN_ACCOUNTS"]["JELLYFIN_API_KEY"]: + LOG.error("Empty JELLYFIN_API_KEY passed. Create a Jellyfin API key in your Jellyfin dashboard and pass it here.") + errors += 1 + # Validate ACCOUNT_TIME + if not config["JELLYFIN_ACCOUNTS"]["ACCOUNT_TIME"]: + LOG.error("Empty ACCOUNT_TIME passed. Pass a valid time in the format of HH:MM:SS (e.g. 00:30:00)") + errors += 1 + try: + time = int(config["JELLYFIN_ACCOUNTS"]["ACCOUNT_TIME"]) + except ValueError: + LOG.error("Invalid value passed to ACCOUNT_TIME. Pass a valid integer value (e.g. 24)") + errors += 1 + + # Make sure connection to Jellyfin API can be established + jellyfin_headers = { + "Content-Type": "application/json", + "Authorization": f"MediaBrowser Client=\"other\", device=\"CordArr\", DeviceId=\"cordarr-device-id\", Version=\"0.0.0\", Token=\"{config['JELLYFIN_ACCOUNTS']['JELLYFIN_API_KEY']}\"", + } + + response = requests.get( + f"{config['JELLYFIN_ACCOUNTS']['JELLYFIN_URL']}/Users", + headers=jellyfin_headers, + ) + if response.status_code != 200: + LOG.error("Could not connect to Jellyfin API. Please check your JELLYFIN_URL and JELLYFIN_API_KEY") + errors += 1 + + if errors > 0: + LOG.info(f"Found {errors} error(s) in the configuration file. Please fix them before restarting the application.") + exit() + + except KeyError: + LOG.critical("You are missing at least one of the configuration options in your config.ini file. In order to regenerate all options, delete the config.ini file and restart the application.") + exit() + + +""" +This method is called before starting the application - to make and validate the configuration +""" + + +def create_config(): + # While here, we can begin by making the database + db = sqlite3.connect("cordarr.db") + cursor = db.cursor() + cursor.execute("CREATE TABLE IF NOT EXISTS movies (user_id, movie_id, movie_title)") + cursor.execute("CREATE TABLE IF NOT EXISTS jellyfin_accounts (user_id, jellyfin_user_id, deletion_time, PRIMARY KEY (user_id))") + db.commit() + db.close() + + # Attempt to open and validate the configuration file + try: + with open("config.ini", "r") as config: + file_contents = config.read() + validate_config(file_contents) + + except FileNotFoundError: + try: + with open("/data/config.ini", "r") as config: + file_contents = config.read() + validate_config(file_contents) + + except FileNotFoundError: + # Create the config.ini file + config = configparser.ConfigParser() + config["REQUIRED"] = { + "BOT_TOKEN": "", + "RADARR_HOST_URL": "http://", + "RADARR_API_KEY": "", + "ROOT_FOLDER_PATH": "", + "QUALITY_PROFILE_ID": "", + "ENABLE_JELLYFIN_TEMP_ACCOUNTS": "", + } + + config["JELLYFIN_ACCOUNTS"] = { + "JELLYFIN_URL": "", + "JELLYFIN_API_KEY": "" + } diff --git a/cordarr.png b/cordarr.png new file mode 100644 index 0000000000000000000000000000000000000000..0022e37f255b09a443d4b8fc69b1e1367382117f GIT binary patch literal 143382 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≫565&o^3vxBl`% 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 z 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 literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a63db88 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +colorlog==6.8.2 +discord.py==2.3.2 +requests==2.28.2 +humanize==4.9.0 \ No newline at end of file