From 7e51eea222ddef90c529815e1aadd6b222057011 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Sat, 28 Jan 2017 23:27:19 +0100 Subject: [PATCH] Added plexpy directory and plex watching script --- v1/plexPy/plexPlaying.xml | 0 v1/plex_watching.py | 55 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 v1/plexPy/plexPlaying.xml create mode 100755 v1/plex_watching.py diff --git a/v1/plexPy/plexPlaying.xml b/v1/plexPy/plexPlaying.xml new file mode 100644 index 0000000..e69de29 diff --git a/v1/plex_watching.py b/v1/plex_watching.py new file mode 100755 index 0000000..ad22c21 --- /dev/null +++ b/v1/plex_watching.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# @Author: KevinMidboe +# @Date: 2017-01-28 23:21:22 +# @Last Modified by: KevinMidboe +# @Last Modified time: 2017-01-28 23:23:01 + +from os import system +import xml.etree.ElementTree as ET + +def plex_watching(): + # Every call saves the info of session.xml to a file named plexPlaying + system('curl --silent 10.0.0.41:32400/status/sessions > ~/plexPy/plexPlaying.xml') + + # XML parsing, creates a tree and saves the root node as root + tree = ET.parse('plexPy/plexPlaying.xml') + root = tree.getroot() + + # The root node named MediaContainer has a size variable that holds number of active processes. + # If this is '0' then there are none playing, no need to compute. + if (root.get('size') != '0'): + + # Get load of CPU and I/O + return_text = '\n\t' + str(os.popen('cat /proc/loadavg').read()) + return_text += '\tCur: \t' + str(root.get('size')) + '\n' + + # Goes through all the 'video' elements in MediaContainer + for video in root.findall('Video'): + if (video.get('type') == 'movie'): + name = video.get('title') + return_text += '\n\tTitle: \t' + name + + elif (video.get('type') == 'episode'): + parentName = video.get('grandparentTitle') + name = video.get('title') + return_text += '\n\tTitle: \t' + name + \ + '\n\tSeries: ' + parentName + + progress = "{0:0.1f}".format(float(video.find('TranscodeSession').get('progress'))) + state = video.find('Player').get('state') + player = video.find('Player').get('platform') + user = video.find('User').get('title') + + return_text += str('\n\tProg : \t' + str(progress) + '\n\tPlayer: ' + player + \ + '\n\tState: \t' + state + '\n\tUser: \t' + user + '\n') + + try: + return normalize('NFKD', return_text).encode('ascii', 'ignore') + except TypeError: + return return_text + else: + return 'Null playing' + +if __name__ == '__main__': + plex_watching() \ No newline at end of file