diff --git a/check_play.py b/check_play.py new file mode 100644 index 0000000..f9bab6c --- /dev/null +++ b/check_play.py @@ -0,0 +1,87 @@ +# 1. Install the requests module for python. +# pip install requests +# 2. Add script arguments in PlexPy. +# {user} {title} +# Add to Playback Resume + +import requests +import sys + +user = sys.argv[1] +title = sys.argv[2] + +## EDIT THESE SETTINGS ## +PLEXPY_APIKEY = 'XXXXXXXXXX' # Your PlexPy API key +PLEXPY_URL = 'http://localhost:8181/' # Your PlexPy URL +AGENT_ID = 10 # The notification agent ID for PlexPy + +SUBJECT_TEXT = "PlexPy Notification" +BODY_TEXT = """\ + + + +

Hi!
+
User %s has attempted to watch %s more than 3 times unsuccessfully.
+

+ + +""" %(user, title) + + +class UserHIS(object): + def __init__(self, data=None): + data = data or {} + self.watched = [d['watched_status'] for d in data] + +def get_get_history(): + # Get the user IP list from PlexPy + payload = {'apikey': PLEXPY_APIKEY, + 'cmd': 'get_history', + 'user': user, + 'search': title} + + try: + r = requests.get(PLEXPY_URL.rstrip('/') + '/api/v2', params=payload) + response = r.json() + if response['response']['data']['recordsFiltered'] > 2: + res_data = response['response']['data']['data'] + return UserHIS(data=res_data) + + except Exception as e: + sys.stderr.write("PlexPy API 'get_get_history' request failed: {0}.".format(e)) + + +def send_notification(): + # Format notification text + try: + subject = SUBJECT_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, + 'cmd': 'notify', + 'agent_id': AGENT_ID, + 'subject': subject, + 'body': body} + + try: + r = requests.post(PLEXPY_URL.rstrip('/') + '/api/v2', params=payload) + response = r.json() + + if response['response']['result'] == 'success': + sys.stdout.write("Successfully sent PlexPy notification.") + else: + raise Exception(response['response']['message']) + except Exception as e: + sys.stderr.write("PlexPy API 'notify' request failed: {0}.".format(e)) + return None + + +if __name__ == '__main__': + hisy = get_get_history() + + if sum(hisy.watched) == 0: + sys.stdout.write(user + ' has attempted to watch ' + title + ' more than 3 times unsuccessfully.') + send_notification()