Last active
April 21, 2023 12:47
-
-
Save TheMeanCanEHdian/4daaa6b653862673e24f12f6231afa26 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
from pushover import Client | |
# Settings | |
# URL example: "https://sonarr.domain.com" or "192.168.1.1:8989" | |
sonarr_url = "" | |
sonarr_api = "" | |
radarr_url = "" | |
radarr_api = "" | |
pushover_user_key = "" | |
pushover_api_key = "" | |
# End of settings | |
def call_api_queue(program, params=None): | |
if program == "radarr": | |
headers = {'X-Api-Key': radarr_api} | |
r = requests.get(radarr_url + '/api/v3/queue', headers=headers, params=params) | |
elif program == "sonarr": | |
headers = {'X-Api-Key': sonarr_api} | |
r = requests.get(sonarr_url + '/api/v3/queue', headers=headers, params=params) | |
else: | |
print ("API Error") | |
return False | |
return r.json() | |
def send_pushover_message(message, title, html=1, timestamp=True, user_key=pushover_user_key, api_key=pushover_api_key): | |
if user_key and api_key: | |
payload = {"message": message, "user": user_key, "token": api_key, "title": title } | |
r = requests.post('https://api.pushover.net/1/messages.json', data=payload, headers={'User-Agent': 'Python'}, params={"html": 1}) | |
return r | |
# Radarr | |
radarr_errors = [] | |
radarr_failed = False | |
try: | |
if radarr_url and radarr_api: | |
queue = call_api_queue('radarr', params={'includeUnknownMovieItems': True}) | |
for movie in queue['records']: | |
try: | |
if movie['trackedDownloadStatus'] == 'warning': | |
radarr_errors.append({ | |
'title' : movie['title'], | |
'reason' : movie['statusMessages'][0]['messages'][0] | |
}) | |
print (f"Title: {movie['title']}") | |
print (f"Reason: {movie['statusMessages'][0]['messages'][0]}\n") | |
except KeyError: | |
pass | |
except: | |
radarr_failed = True | |
send_pushover_message(message='Failed to check Radarr Queue', title="Radarr Queue Alert") | |
# Sonarr | |
sonarr_errors = [] | |
sonarr_failed = False | |
try: | |
if sonarr_url and sonarr_api: | |
queue = call_api_queue('sonarr') | |
for episode in queue['records']: | |
try: | |
if episode['trackedDownloadStatus'] == 'warning': | |
sonarr_errors.append({ | |
'title' : episode['title'], | |
# 'title_episode' : episode['episode']['title'], | |
'reason' : episode['statusMessages'][0]['title'] | |
}) | |
print (f"Title: {episode['title']}") | |
print (f"Reason: {episode['statusMessages'][0]['title']}\n") | |
except KeyError: | |
pass | |
except: | |
sonarr_failed = True | |
send_pushover_message(message='Failed to check Sonarr Queue', title="Sonarr Queue Alert") | |
# Send Pushover messages | |
if not sonarr_failed: | |
if sonarr_errors: | |
sonarr_message = "" | |
for item in sonarr_errors: | |
sonarr_message+=f"<b>Title:</b> {item['title']}\n<b>Reason:</b> {item['reason']}\n\n" | |
send_pushover_message(message=sonarr_message, title="Sonarr Queue Alert") | |
else: | |
print ("No Sonarr errors") | |
else: | |
print ("Failed to check Sonarr queue") | |
if not radarr_failed: | |
if radarr_errors: | |
radarr_message = "" | |
for item in radarr_errors: | |
radarr_message+=f"<b>Title:</b> {item['title']}\n<b>Reason:</b> {item['reason']}\n\n" | |
send_pushover_message(message=radarr_message, title="Radarr Queue Alert") | |
else: | |
print ("No Radarr errors") | |
else: | |
print ("Failed to check Radarr queue") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment