Always send a notification if an agent is specified

Whenever a stream is killed, send a notification for that stream if a 
notification agent has been specified. If no username is specified, 
simply list the session ID.
This commit is contained in:
Landon Abney 2018-06-16 23:15:59 -07:00
parent 2116082fd7
commit 4ebfaf17bd
No known key found for this signature in database
GPG Key ID: 15320D3C4A506996

View File

@ -50,7 +50,8 @@ TAUTULLI_URL = os.getenv('TAUTULLI_URL', TAUTULLI_URL)
TAUTULLI_APIKEY = os.getenv('TAUTULLI_APIKEY', TAUTULLI_APIKEY)
SUBJECT_TEXT = "Tautulli has killed a stream."
BODY_TEXT = "Killed {user}'s stream. Reason: {message}."
BODY_TEXT = "Killed session ID '{id}'. Reason: {message}"
BODY_TEXT_USER = "Killed {user}'s stream. Reason: {message}."
sess = requests.Session()
# Ignore verifying the SSL certificate
@ -142,7 +143,7 @@ def get_user_session_ids(user_id):
return user_streams
def terminate_session(session_id, message):
def terminate_session(session_id, message, notifier=None, username=None):
# Stop a streaming session.
payload = {'apikey': TAUTULLI_APIKEY,
'cmd': 'terminate_session',
@ -156,6 +157,12 @@ def terminate_session(session_id, message):
if response['response']['result'] == 'success':
sys.stdout.write(
"Successfully killed Plex session: {0}.".format(session_id))
if notifier:
if username:
body = BODY_TEXT.format(user=username, message=message)
else:
body = BODY_TEXT.format(id=session_id, message=message)
send_notification(SUBJECT_TEXT, body, notifier)
else:
raise Exception(response['response']['message'])
except Exception as e:
@ -189,12 +196,8 @@ if __name__ == "__main__":
message = ''
if opts.jbop == 'stream':
terminate_session(opts.sessionId, message)
terminate_session(opts.sessionId, message, opts.notify, opts.username)
elif opts.jbop == 'allStreams':
streams = get_user_session_ids(opts.userId)
for session_id in streams:
terminate_session(session_id, message)
if opts.notify:
BODY_TEXT = BODY_TEXT.format(user=opts.username, message=message)
send_notification(SUBJECT_TEXT, BODY_TEXT, opts.notify)
terminate_session(session_id, message, opts.notify, opts.username)