From 3266f88ed499f2e33f95890be695e3ba7c624dc7 Mon Sep 17 00:00:00 2001
From: Blacktwin
Date: Fri, 16 Mar 2018 16:12:35 -0400
Subject: [PATCH] updated naming and pep8
---
notify/find_unwatched_notify.py | 145 ++++++++++++++++----------------
1 file changed, 74 insertions(+), 71 deletions(-)
diff --git a/notify/find_unwatched_notify.py b/notify/find_unwatched_notify.py
index cef3f99..9b107d7 100644
--- a/notify/find_unwatched_notify.py
+++ b/notify/find_unwatched_notify.py
@@ -1,6 +1,6 @@
"""
-Find what was added TFRAME ago and not watched and notify admin using PlexPy.
+Find what was added TFRAME ago and not watched and notify admin using Tautulli.
"""
@@ -8,16 +8,15 @@ import requests
import sys
import time
-TFRAME = 1.577e+7 # ~ 6 months in seconds
+TFRAME = 1.577e+7 # ~ 6 months in seconds
TODAY = time.time()
-
## EDIT THESE SETTINGS ##
-PLEXPY_APIKEY = 'XXXXXXX' # Your PlexPy API key
-PLEXPY_URL = 'http://localhost:8181/' # Your PlexPy URL
-LIBRARY_NAMES = ['My Movies', 'My TV Shows'] # Name of libraries you want to check.
-SUBJECT_TEXT = "PlexPy Notification"
-AGENT_ID = 10 # The email notification agent ID for PlexPy
+TAUTULLI_APIKEY = '' # Your Tautulli API key
+TAUTULLI_URL = 'http://localhost:8183/' # Your Tautulli URL
+LIBRARY_NAMES = ['Movies', 'TV Shows'] # Name of libraries you want to check.
+SUBJECT_TEXT = "Tautulli Notification"
+NOTIFIER_ID = 12 # The email notification agent ID for Tautulli
class LIBINFO(object):
@@ -44,15 +43,15 @@ class METAINFO(object):
self.file = d['file']
-def get_get_new_rating_keys(rating_key, media_type):
+def get_new_rating_keys(rating_key, media_type):
# Get a list of new rating keys for the PMS of all of the item's parent/children.
- payload = {'apikey': PLEXPY_APIKEY,
+ payload = {'apikey': TAUTULLI_APIKEY,
'cmd': 'get_new_rating_keys',
'rating_key': rating_key,
'media_type': media_type}
try:
- r = requests.get(PLEXPY_URL.rstrip('/') + '/api/v2', params=payload)
+ r = requests.get(TAUTULLI_URL.rstrip('/') + '/api/v2', params=payload)
response = r.json()
res_data = response['response']['data']
@@ -63,139 +62,143 @@ def get_get_new_rating_keys(rating_key, media_type):
return episode_lst
except Exception as e:
- sys.stderr.write("PlexPy API 'get_new_rating_keys' request failed: {0}.".format(e))
+ sys.stderr.write("Tautulli API 'get_new_rating_keys' request failed: {0}.".format(e))
-def get_get_metadata(rating_key):
+def get_metadata(rating_key):
# Get the metadata for a media item.
- payload = {'apikey': PLEXPY_APIKEY,
+ payload = {'apikey': TAUTULLI_APIKEY,
'rating_key': rating_key,
'cmd': 'get_metadata',
'media_info': True}
try:
- r = requests.get(PLEXPY_URL.rstrip('/') + '/api/v2', params=payload)
+ r = requests.get(TAUTULLI_URL.rstrip('/') + '/api/v2', params=payload)
response = r.json()
-
- res_data = response['response']['data']['metadata']
+ res_data = response['response']['data']
return METAINFO(data=res_data)
except Exception as e:
- # sys.stderr.write("PlexPy API 'get_get_metadata' request failed: {0}.".format(e))
+ sys.stderr.write("Tautulli API 'get_metadata' request failed: {0}.".format(e))
pass
-def get_get_library_media_info(section_id):
- # Get the data on the PlexPy media info tables.
- payload = {'apikey': PLEXPY_APIKEY,
+def get_library_media_info(section_id):
+ # Get the data on the Tautulli media info tables.
+ payload = {'apikey': TAUTULLI_APIKEY,
'section_id': section_id,
- 'cmd': 'get_library_media_info',
- 'length': 10000}
+ 'cmd': 'get_library_media_info'}
try:
- r = requests.get(PLEXPY_URL.rstrip('/') + '/api/v2', params=payload)
+ r = requests.get(TAUTULLI_URL.rstrip('/') + '/api/v2', params=payload)
response = r.json()
-
- res_data = response['response']['data']['data']
+ print(response)
+ res_data = response['response']['data']
return [LIBINFO(data=d) for d in res_data if d['play_count'] is None and (TODAY - int(d['added_at'])) > TFRAME]
except Exception as e:
- sys.stderr.write("PlexPy API 'get_library_media_info' request failed: {0}.".format(e))
+ sys.stderr.write("Tautulli API 'get_library_media_info' request failed: {0}.".format(e))
-def get_get_libraries_table():
- # Get the data on the PlexPy libraries table.
- payload = {'apikey': PLEXPY_APIKEY,
+
+def get_libraries_table():
+ # Get the data on the Tautulli libraries table.
+ payload = {'apikey': TAUTULLI_APIKEY,
'cmd': 'get_libraries_table'}
try:
- r = requests.get(PLEXPY_URL.rstrip('/') + '/api/v2', params=payload)
+ r = requests.get(TAUTULLI_URL.rstrip('/') + '/api/v2', params=payload)
response = r.json()
res_data = response['response']['data']['data']
return [d['section_id'] for d in res_data if d['section_name'] in LIBRARY_NAMES]
except Exception as e:
- sys.stderr.write("PlexPy API 'get_libraries_table' request failed: {0}.".format(e))
+ sys.stderr.write("Tautulli API 'get_libraries_table' request failed: {0}.".format(e))
-def send_notification(BODY_TEXT):
+
+def send_notification(body_text):
# Format notification text
try:
subject = SUBJECT_TEXT
- body = BODY_TEXT
+ body = body_text
except LookupError as e:
sys.stderr.write("Unable to substitute '{0}' in the notification subject or body".format(e))
return None
- # Send the notification through PlexPy
- payload = {'apikey': PLEXPY_APIKEY,
+ # Send the notification through Tautulli
+ payload = {'apikey': TAUTULLI_APIKEY,
'cmd': 'notify',
- 'agent_id': AGENT_ID,
+ 'notifier_id': NOTIFIER_ID,
'subject': subject,
'body': body}
try:
- r = requests.post(PLEXPY_URL.rstrip('/') + '/api/v2', params=payload)
+ r = requests.post(TAUTULLI_URL.rstrip('/') + '/api/v2', params=payload)
response = r.json()
if response['response']['result'] == 'success':
- sys.stdout.write("Successfully sent PlexPy notification.")
+ sys.stdout.write("Successfully sent Tautulli notification.")
else:
raise Exception(response['response']['message'])
except Exception as e:
- sys.stderr.write("PlexPy API 'notify' request failed: {0}.".format(e))
+ sys.stderr.write("Tautulli API 'notify' request failed: {0}.".format(e))
return None
show_lst = []
notify_lst = []
-glt = [lib for lib in get_get_libraries_table()]
+libraries = [lib for lib in get_libraries_table()]
-for i in glt:
+for library in libraries:
+ print(library, type(library))
try:
- gglm = get_get_library_media_info(i)
- for x in gglm:
+ library_media_info = get_library_media_info(library)
+ for lib in library_media_info:
try:
- if x.media_type in ['show', 'episode']:
+ if lib.media_type in ['show', 'episode']:
# Need to find TV shows rating_key for episode.
- show_lst += get_get_new_rating_keys(x.rating_key, x.media_type)
+ show_lst += get_new_rating_keys(lib.rating_key, lib.media_type)
else:
# Find movie rating_key.
- show_lst += [int(x.rating_key)]
+ show_lst += [int(lib.rating_key)]
except Exception as e:
- print("Rating_key failed: {e}").format(e=e)
+ print "Rating_key failed: {e}".format(e=e)
except Exception as e:
- print("Library media info failed: {e}").format(e=e)
+ print "Library media info failed: {e}".format(e=e)
-for i in show_lst:
+for show in show_lst:
try:
- x = get_get_metadata(str(i))
- added = time.ctime(float(x.added_at))
- if x.grandparent_title == '' or x.media_type == 'movie':
+ meta = get_metadata(str(show))
+ added = time.ctime(float(meta.added_at))
+ if meta.grandparent_title == '' or meta.media_type == 'movie':
# Movies
notify_lst += [u"{x.title} ({x.rating_key}) was added {when} and has not been"
- u" watched. File location: {x.file}
".format(x=x, when=added)]
+ u" watched. File location: {x.file}
".format(x=meta, when=added)]
else:
# Shows
notify_lst += [u"{x.grandparent_title}: {x.title} ({x.rating_key}) was added {when} and has"
- u" not been watched. File location: {x.file}
".format(x=x, when=added)]
+ u" not been watched. File location: {x.file}
".format(x=meta, when=added)]
except Exception as e:
- print("Metadata failed. Likely end of range: {e}").format(e=e)
+ print "Metadata failed. Likely end of range: {e}".format(e=e)
+if notify_lst:
+ BODY_TEXT = """\
+
+
+
+ Hi!
+
Below is the list of {LIBRARY_NAMES} that have not been watched.
+
+ {notify_lst}
+
+
+
+
+ """.format(notify_lst="\n".join(notify_lst).encode("utf-8"), LIBRARY_NAMES=" & ".join(LIBRARY_NAMES))
-BODY_TEXT = """\
-
-
-
- Hi!
-
Below is the list of {LIBRARY_NAMES} that have not been watched.
-
- {notify_lst}
-
-
-
-
-""".format(notify_lst="\n".join(notify_lst).encode("utf-8"),LIBRARY_NAMES=" & ".join(LIBRARY_NAMES))
-
-send_notification(BODY_TEXT)
+ print(BODY_TEXT)
+ send_notification(BODY_TEXT)
+else:
+ exit()