diff options
author | Parker M <contact@pkrm.dev> | 2023-09-17 19:20:26 -0500 |
---|---|---|
committer | Parker M <contact@pkrm.dev> | 2023-09-17 19:20:26 -0500 |
commit | 49a493fd32b545cece7b72b2af94d5f1b6d7765f (patch) | |
tree | 3408388561295a2ff46df1e675c1a9caa2e34bfe /app | |
parent | 04a21c4f0876115acce1c6e25ab20e98d4bd8a2a (diff) |
config changes
Diffstat (limited to 'app')
-rw-r--r-- | app/create_message.py | 7 | ||||
-rw-r--r-- | app/db_removal.py | 4 | ||||
-rw-r--r-- | app/initialize_variables.py | 83 | ||||
-rw-r--r-- | app/messagearr.py | 31 |
4 files changed, 71 insertions, 54 deletions
diff --git a/app/create_message.py b/app/create_message.py index 2e23c14..56989e9 100644 --- a/app/create_message.py +++ b/app/create_message.py @@ -1,11 +1,12 @@ import telnyx -from initialize_variables import sms_service, sms_api_key, api_number + +from initialize_variables import * def create_message(number, message): if sms_service == 'telnyx': - telnyx.api_key = sms_api_key + telnyx.api_key = telnyx_api_key telnyx.Message.create( from_=api_number, to=number, text=message - )
\ No newline at end of file + ) diff --git a/app/db_removal.py b/app/db_removal.py index e03ea2a..1c49dd5 100644 --- a/app/db_removal.py +++ b/app/db_removal.py @@ -2,7 +2,7 @@ from apscheduler.schedulers.background import BackgroundScheduler import sqlite3 import requests -from initialize_variables import radarr_host, headers +from initialize_variables import radarr_host_url, headers # Remove all entries from the database of movies that have already finished downloading # This helps to stop from entries building up in the database and slowing down everything @@ -17,7 +17,7 @@ def clear_database(): ''') movie_ids = cursor.fetchall() # Get all of the movie_ids that are currently downloading/queued and/or missing - response = requests.get(f'{radarr_host}/api/v3/queue/', headers=headers) + response = requests.get(f'{radarr_host_url}/api/v3/queue/', headers=headers) current_movie_ids = [] for movie in response.json()['records']: current_movie_ids.append(str(movie['movieId'])) diff --git a/app/initialize_variables.py b/app/initialize_variables.py index 6da1c34..4832b9d 100644 --- a/app/initialize_variables.py +++ b/app/initialize_variables.py @@ -4,55 +4,70 @@ import requests supported_sms_services = ['telnyx'] - -radarr_host = os.environ['RADARR_HOST'] -radarr_api_key = os.environ['RADARR_API_KEY'] -try: - home_domain = os.environ['HOME_DOMAIN'] -except: - home_domain = None -api_number = os.environ['API_NUMBER'] -val_nums = os.environ['VALID_SENDERS'] -root_folder_path = os.environ['ROOT_FOLDER_PATH'] -sms_service = os.environ['SMS_SERVICE'] -if sms_service not in supported_sms_services: - print(f'{sms_service} is not a supported SMS service. Please choose from the supported list: {supported_sms_services}') - exit() -sms_api_key = os.environ['SMS_API_KEY'] +sms_service = str(os.environ['SMS_SERVICE']).lower() +radarr_host_url = str(os.environ['RADARR_HOST_URL']) +radarr_api_key = str(os.environ['RADARR_API_KEY']) headers = { 'Content-Type': 'application/json', 'X-Api-Key': radarr_api_key } -numbers_responses = { - '1': 1, 'one': 1, '1.': 1, - '2': 2, 'two': 2, '2.': 2, - '3': 3, 'three': 3, '3.': 3 -} - -# Open the quality_profile_id.yaml file and see if the quality_profile_id is set +# Open the config.yaml file and see if the config is set try: - with open('/data/quality_profile_id.yaml', 'r') as f: + with open('/data/config.yaml', 'r') as f: file = yaml.load(f, Loader=yaml.FullLoader) try: quality_profile_id = int(file['quality_profile_id']) + + if str(file['home_domain']) != 'null': + home_domain = str(file['home_domain']) + + api_number = str(file['api_number']) + val_nums = str(file['valid_senders']) + root_folder_path = str(file['root_folder_path']) + if sms_service not in supported_sms_services: + print(f'{sms_service} is not a supported SMS service. Please choose from the supported list: {supported_sms_services}') + exit() + + if sms_service == 'telnyx': + telnyx_api_key = str(file['telnyx_api_key']) + + value_not_set = False except: - print('quality_profile_id is not set or is invalid. Please edit the quality_profile_id.yaml file and add the quality_profile_id from one of the integer values listed within the file') + print('One or more values are not set or not set correctly within the config.yaml file. Please edit the file or refer to the docs for more information.') exit() + except FileNotFoundError: - # Create the quality_profile_id.yaml file - with open('/data/quality_profile_id.yaml', 'w') as f: - quality_profile_id = None - -if not quality_profile_id: - print('No quality_profile_id found. Please edit the quality_profile_id.yaml file and add the quality_profile_id from one of the integer values listed within the file') - data = requests.get(f'{radarr_host}/api/v3/qualityprofile', headers=headers).json() - # Open quality_profile_id.yaml and write each profile as a comment to the file - with open('/data/quality_profile_id.yaml', 'w') as f: + # Create the config.yaml file + with open('/data/config.yaml', 'w') as f: + value_not_set = True + +if value_not_set: + print('One or more values are not set or not set correctly within the config.yaml file. Please edit the file or refer to the docs for more information.') + data = requests.get(f'{radarr_host_url}/api/v3/qualityprofile', headers=headers).json() + # Open config.yaml and write each profile as a comment to the file + with open('/data/config.yaml', 'w') as f: f.write('# Quality Profile ID\'s\n') for entry in data: f.write(f'# {entry["id"]} - {entry["name"]}\n') f.write("quality_profile_id: ") - exit()
\ No newline at end of file + f.write("\n") + f.write("home_domain: null # Optional: 404/405 errors redirect to this domain, leaving as\n# null means the webserver will just return the error to the browser\n") + f.write("api_number: # International format\n") + f.write("valid_senders: # International format, comma-space separated (eg. +18005263256, +18005428741\n") + f.write("root_folder_path: # Path to the root folder where movies are downloaded to\n") + if sms_service not in supported_sms_services: + print(f'{sms_service} is not a supported SMS service. Please choose from the supported list: {supported_sms_services}') + exit() + + if sms_service == 'telnyx': + f.write("telnyx_api_key: \n") + exit() + +numbers_responses = { + '1': 1, 'one': 1, '1.': 1, + '2': 2, 'two': 2, '2.': 2, + '3': 3, 'three': 3, '3.': 3 +}
\ No newline at end of file diff --git a/app/messagearr.py b/app/messagearr.py index f927c16..107c12d 100644 --- a/app/messagearr.py +++ b/app/messagearr.py @@ -48,7 +48,10 @@ and then run the command if it is valid. def incoming(): # Get the data and define the from_number (number that sent the message) data = flask.request.get_json() - from_number = data['data']['payload']['from']['phone_number'] + + if sms_service == 'telnyx': + from_number = data['data']['payload']['from']['phone_number'] + # Make sure the number is a valid_sender, this stops random people from # adding movies to the library if from_number not in valid_senders: @@ -69,7 +72,7 @@ def incoming(): incoming_message = str(data['data']['payload']['text']).split(' ', 1)[1] movie_request = incoming_message.replace(' ', '%20') # Send a request to the radarr API to get the movie info - response = requests.get(f'{radarr_host}/api/v3/movie/lookup?term={movie_request}', headers=headers) + response = requests.get(f'{radarr_host_url}/api/v3/movie/lookup?term={movie_request}', headers=headers) # If there are no results, alert the user if len(response.json()) == 0: create_message(from_number, "There were no results for that movie. Please make sure you typed the title correctly.") @@ -121,7 +124,7 @@ def incoming(): del temp_movie_ids[from_number] return 'OK' - data = requests.get(f'{radarr_host}/api/v3/movie/lookup/tmdb?tmdbId={tmdb_id}', headers=headers) + data = requests.get(f'{radarr_host_url}/api/v3/movie/lookup/tmdb?tmdbId={tmdb_id}', headers=headers) data = data.json() movie_title = data['title'] @@ -130,14 +133,14 @@ def incoming(): data['monitored'] = True data['rootFolderPath'] = root_folder_path # Pass this data into a pass request to the radarr API, this will add the movie to the library - response = requests.post(f'{radarr_host}/api/v3/movie', headers=headers, json=data) + response = requests.post(f'{radarr_host_url}/api/v3/movie', headers=headers, json=data) data = response.json() movie_id = data['id'] # Send message to user alerting them that the movie was added to the library create_message(from_number, f"🎉 {data['title']} has been added to the library!\n\nTo check up on the status of your movie(s) send /status - please wait at least 5 minutes before running this command in order to get an accurate time.") # Finally, as to not slow up the sending of the message, send this request # Send a POST request to the radarr API to search for the movie in the indexers - requests.post(f'{radarr_host}/api/v3/command', headers=headers, json={'name': 'MoviesSearch', 'movieIds': [int(movie_id)]}) + requests.post(f'{radarr_host_url}/api/v3/command', headers=headers, json={'name': 'MoviesSearch', 'movieIds': [int(movie_id)]}) # Add the movie_id to the database so that users can check up on the status of their movie db = sqlite3.connect('/data/movies.db') @@ -156,7 +159,7 @@ def incoming(): elif str(data['data']['payload']['text']).strip() == '/status': # This returns a list of ALL movies being downloaded, but not all of them were # requested by the user, so we need to filter out the ones that were not requested - response = requests.get(f'{radarr_host}/api/v3/queue/', headers=headers) + response = requests.get(f'{radarr_host_url}/api/v3/queue/', headers=headers) # Get all the movie_ids that were requested by the user db = sqlite3.connect('/data/movies.db') cursor = db.cursor() @@ -197,7 +200,7 @@ def incoming(): if message == "": # For all movie IDs within the database for movie_id in movies.keys(): - response = requests.get(f'{radarr_host}/api/v3/movie/{movie_id}', headers=headers) + response = requests.get(f'{radarr_host_url}/api/v3/movie/{movie_id}', headers=headers) # This means that there is no current download, and no file has been found # MOST likely means a download just wasn't found, so alert the user data = response.json() @@ -224,14 +227,12 @@ def incoming(): # Handle 405 errors - when a user attempts a GET request on a POST only route @app.errorhandler(405) def method_not_allowed(e): - if home_domain: - return flask.redirect(home_domain, code=302) - else: - return 'Method not allowed', 405 + if home_domain != 'None': + return flask.redirect(home_domain) + return 'Method Not Allowed' @app.errorhandler(404) def page_not_found(e): - if home_domain: - return flask.redirect(home_domain, code=302) - else: - return 'Page not found', 404
\ No newline at end of file + if home_domain != 'None': + return flask.redirect(home_domain) + return 'Page Not Found' |