aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorParker M <contact@pkrm.dev>2023-09-17 19:20:26 -0500
committerParker M <contact@pkrm.dev>2023-09-17 19:20:26 -0500
commit49a493fd32b545cece7b72b2af94d5f1b6d7765f (patch)
tree3408388561295a2ff46df1e675c1a9caa2e34bfe /app
parent04a21c4f0876115acce1c6e25ab20e98d4bd8a2a (diff)
config changes
Diffstat (limited to 'app')
-rw-r--r--app/create_message.py7
-rw-r--r--app/db_removal.py4
-rw-r--r--app/initialize_variables.py83
-rw-r--r--app/messagearr.py31
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'