From c770c90d76886854172d72c4bb2996a5e91ee3d8 Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 4 Jul 2015 14:37:30 +0200 Subject: [PATCH] Fix handling of clips in activity pane. Start standardising variable names in templates. --- data/interfaces/default/current_activity.html | 58 +++---- data/interfaces/default/home_stats.html | 6 +- data/interfaces/default/info.html | 44 ++--- .../interfaces/default/info_episode_list.html | 6 +- plexpy/helpers.py | 8 +- plexpy/plexwatch.py | 36 +++- plexpy/pmsconnect.py | 154 ++++++++++++------ 7 files changed, 188 insertions(+), 124 deletions(-) diff --git a/data/interfaces/default/current_activity.html b/data/interfaces/default/current_activity.html index 26b44c5f..73fd99d8 100644 --- a/data/interfaces/default/current_activity.html +++ b/data/interfaces/default/current_activity.html @@ -15,8 +15,8 @@ data['sessions'] Returns an array containing session data data[sessions] :: Usable parameters == Global keys == -sessionKey Returns a unique session id for the active stream -ratingKey Returns the unique identifier for the media item. +session_key Returns a unique session id for the active stream +rating_key Returns the unique identifier for the media item. type Returns the type of session. Either 'track', 'episode' or 'movie'. thumb Returns the location of the item's thumbnail. Use with pms_image_proxy. art Returns the location of the item's artwork @@ -26,15 +26,13 @@ friendly_name Returns the friendlly name of the user owning the sessio state Returns the state of the current session. Either 'playing', 'paused' or 'buffering'. title Returns the name of the episode, movie or music track. player Returns the name of the platform used to play the stream. -audioDecision Returns the audio transcode decision. Either 'transcode', 'copy' or 'direct play'. -audioCodec Returns the name of the audio codec. -audioChannels Returns the number of audio channels. -grandparentTitle Returns the title of the item's grandparent. -parentTitle Returns the title of the item's parent. - -== Only if 'type' is 'episode' or 'movie' == -videoDecision Returns the video transcode decision. Either 'transcode', 'copy' or 'direct play'. -videoCodec Returns the name of the video codec. +audio_decision Returns the audio transcode decision. Either 'transcode', 'copy' or 'direct play'. +audio_codec Returns the name of the audio codec. +audio_channels Returns the number of audio channels. +grandparent_title Returns the title of the item's grandparent. +parent_title Returns the title of the item's parent. +video_decision Returns the video transcode decision. Either 'transcode', 'copy' or 'direct play'. +video_codec Returns the name of the video codec. height Returns the value of the video height. width Returns the value of the video width. indexes Returns true if the media has media indexes and are enabled @@ -45,7 +43,7 @@ DOCUMENTATION :: END % if data is not None: % if data['stream_count'] != '0': % for a in data['sessions']: -
+
% if a['type'] == 'movie' and not a['indexes']:
@@ -64,33 +62,35 @@ DOCUMENTATION :: END
- -
+
% if a['type'] == 'track': - Artist: ${a['grandparentTitle']} + Artist: ${a['grandparent_title']}
- Album: ${a['parentTitle']} + Album: ${a['parent_title']}
% endif % if a['state'] == 'playing': @@ -102,24 +102,24 @@ DOCUMENTATION :: END % endif
% if a['type'] == 'track': - % if a['audioDecision'] == 'direct play': + % if a['audio_decision'] == 'direct play': Stream: Direct Play % else: Stream: Transcoding % endif
- Audio: ${a['audioCodec']} (${a['audioChannels']}ch) - % elif a['type'] == 'episode' or a['type'] == 'movie': - % if a['videoDecision'] == 'direct play': + Audio: ${a['audio_codec']} (${a['audio_channels']}ch) + % elif a['type'] == 'episode' or a['type'] == 'movie' or a['type'] == 'clip': + % if a['video_decision'] == 'direct play': Stream: Direct Play % else: Stream: Transcoding % endif
- Video: ${a['videoDecision']} (${a['videoCodec']}) + Video: ${a['video_decision']} (${a['video_codec']}) (${a['width']}x${a['height']})
- Audio: ${a['audioDecision']} (${a['audioCodec']}) (${a['audioChannels']}ch) + Audio: ${a['audio_decision']} (${a['audio_codec']}) (${a['audio_channels']}ch) % endif
@@ -128,13 +128,13 @@ DOCUMENTATION :: END
-
% endfor diff --git a/data/interfaces/default/home_stats.html b/data/interfaces/default/home_stats.html index ab0d33e5..310e5883 100644 --- a/data/interfaces/default/home_stats.html +++ b/data/interfaces/default/home_stats.html @@ -17,7 +17,7 @@ data[array_index]['rows'] :: Usable parameters == Only if 'stat_id' is 'top_tv' or 'popular_tv' == grandparent_thumb Returns location of the item's thumbnail. Use with pms_image_proxy. rating_key Returns the unique identifier for the media item. -orig_title Returns the title for the associated stat. +title Returns the title for the associated stat. == Only if 'stat_id' is 'top_tv' or 'top_user' or 'top_platform' == total_plays Returns the count for the associated stat. @@ -58,7 +58,7 @@ DOCUMENTATION :: END
@@ -85,7 +85,7 @@ DOCUMENTATION :: END
diff --git a/data/interfaces/default/info.html b/data/interfaces/default/info.html index fa9deb97..486fc2fb 100644 --- a/data/interfaces/default/info.html +++ b/data/interfaces/default/info.html @@ -7,42 +7,28 @@ Filename: info.html Version: 0.1 Variable names: data [list] -data :: Usable parameters +data :: Usable parameters (if not applicable for media type, blank value will be returned) == Global keys == -ratingKey Returns the unique identifier for the media item. +rating_key Returns the unique identifier for the media item. type Returns the type of media. Either 'movie', 'episode' or 'show' or 'season'. art Returns the location of the item's artwork title Returns the name of the episode, show, season or movie. duration Returns the standard runtime of the media. -contentRating Returns the age rating for the media. +content_rating Returns the age rating for the media. summary Returns a brief description of the media plot. - -== Only if 'type' is 'episode' == -grandparentTitle Returns the name of the TV show. -parentIndex Returns the season number of the TV show. +grandparent_title Returns the name of the TV show. +parent_index Returns the season number of the TV show. index Returns the episode number. -parentThumb Returns the location of the item's thumbnail. Use with pms_image_proxy. +parent_thumb Returns the location of the item's thumbnail. Use with pms_image_proxy. writers Returns an array of writers. - -== Only if 'type' is 'movie' or 'season' or 'show' == thumb Returns the location of the item's thumbnail. Use with pms_image_proxy. - -== Only if 'type' is 'season' == -parentTitle Returns the name of the TV show. - -== Only if 'type' is 'movie' == +parent_title Returns the name of the TV show. rating Returns the 5 star rating value for the movie. Between 1 and 5. year Returns the release year of the movie. - -== Only if 'type' is 'movie' or 'show' == genres Returns an array of genres. actors Returns an array of actors. - -== Only if 'type' is 'episode' or 'movie' == directors Returns an array of directors. - -== Only if 'type' is 'show' or 'season' == studio Returns the name of the studio. DOCUMENTATION :: END @@ -72,7 +58,7 @@ from plexpy import helpers
% if data['type'] == 'episode': - + % else: % endif @@ -82,9 +68,9 @@ from plexpy import helpers % if data['type'] == 'movie':

${data['title']} (${data['year']})

% elif data['type'] == 'season': -

${data['parentTitle']} (${data['title']})

+

${data['parent_title']} (${data['title']})

% elif data['type'] == 'episode': -

${data['grandparentTitle']} (Season ${data['parentIndex']}, Episode +

${data['grandparent_title']} (Season ${data['parent_index']}, Episode ${data['index']}) "${data['title']}"

% else:

${data['title']}

@@ -110,7 +96,7 @@ from plexpy import helpers Runtime ${data['duration']} mins
- Rated ${data['contentRating']} + Rated ${data['content_rating']}
@@ -198,7 +184,7 @@ from plexpy import helpers Stopped Duration Completed - RatingKey + rating_key @@ -258,7 +244,7 @@ from plexpy import helpers history_table_options.ajax = { "url": "get_history", "data": function(d) { - d.rating_key = ${data['ratingKey']}; + d.rating_key = ${data['rating_key']}; } } @@ -276,7 +262,7 @@ from plexpy import helpers history_table_options.ajax = { "url": "get_history", "data": function(d) { - d.grandparent_rating_key = ${data['ratingKey']}; + d.grandparent_rating_key = ${data['rating_key']}; } } @@ -292,7 +278,7 @@ from plexpy import helpers url: 'get_children', type: "GET", async: true, - data: { rating_key : ${data['ratingKey']} }, + data: { rating_key : ${data['rating_key']} }, complete: function(xhr, status) { $("#episode-list").html(xhr.responseText); } diff --git a/data/interfaces/default/info_episode_list.html b/data/interfaces/default/info_episode_list.html index 7089b311..06363043 100644 --- a/data/interfaces/default/info_episode_list.html +++ b/data/interfaces/default/info_episode_list.html @@ -16,7 +16,7 @@ episode_list Returns an array of episodes. data['episode_list'] :: Usable paramaters == Global keys == -ratingKey Returns the unique identifier for the media item. +rating_key Returns the unique identifier for the media item. thumb Returns the location of the item's thumbnail. Use with pms_image_proxy. title Returns the name of the episode. index Returns the episode number. @@ -32,7 +32,7 @@ DOCUMENTATION :: END
  • - + @@ -45,7 +45,7 @@ DOCUMENTATION :: END
    diff --git a/plexpy/helpers.py b/plexpy/helpers.py index 8d402e49..b59223a0 100644 --- a/plexpy/helpers.py +++ b/plexpy/helpers.py @@ -347,8 +347,12 @@ def convert_xml_to_dict(xml): def get_percent(value1, value2): - value1 = cast_to_float(value1) - value2 = cast_to_float(value2) + + if value1.isdigit() and value2.isdigit(): + value1 = cast_to_float(value1) + value2 = cast_to_float(value2) + else: + return 0 if value1 != 0 and value2 != 0: percent = (value1 / value2) * 100 diff --git a/plexpy/plexwatch.py b/plexpy/plexwatch.py index 69659e31..92acb393 100644 --- a/plexpy/plexwatch.py +++ b/plexpy/plexwatch.py @@ -634,11 +634,17 @@ class PlexWatch(object): for a in xml_head: grandparent_thumb = self.get_xml_attr(a, 'grandparentThumb') - row = {'orig_title': item[0], + row = {'title': item[0], 'total_plays': item[1], + 'users_watched': '', 'rating_key': item[2], 'last_play': item[3], - 'grandparent_thumb': grandparent_thumb + 'grandparent_thumb': grandparent_thumb, + 'thumb': '', + 'user': '', + 'friendly_name': '', + 'platform_type': '', + 'platform': '' } top_tv.append(row) @@ -679,12 +685,17 @@ class PlexWatch(object): for a in xml_head: grandparent_thumb = self.get_xml_attr(a, 'grandparentThumb') - row = {'orig_title': item[0], + row = {'title': item[0], 'users_watched': item[1], 'rating_key': item[2], 'last_play': item[3], 'total_plays': item[5], - 'grandparent_thumb': grandparent_thumb + 'grandparent_thumb': grandparent_thumb, + 'thumb': '', + 'user': '', + 'friendly_name': '', + 'platform_type': '', + 'platform': '' } popular_tv.append(row) @@ -720,7 +731,13 @@ class PlexWatch(object): 'friendly_name': item[1], 'total_plays': item[2], 'last_play': item[3], - 'thumb': user_thumb + 'thumb': user_thumb, + 'grandparent_thumb': '', + 'users_watched': '', + 'rating_key': '', + 'title': '', + 'platform_type': '', + 'platform': '' } top_users.append(row) @@ -762,7 +779,14 @@ class PlexWatch(object): row = {'platform': item[0], 'total_plays': item[1], 'last_play': item[2], - 'platform_type': platform_type + 'platform_type': platform_type, + 'title': '', + 'thumb': '', + 'grandparent_thumb': '', + 'users_watched': '', + 'rating_key': '', + 'user': '', + 'friendly_name': '' } top_platform.append(row) diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index 31b7fae4..b0b6bef8 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -409,17 +409,22 @@ class PmsConnect(object): if metadata_type == 'show': metadata = {'type': metadata_type, - 'ratingKey': self.get_xml_attr(metadata_main, 'ratingKey'), + 'rating_key': self.get_xml_attr(metadata_main, 'ratingKey'), + 'grandparent_title': self.get_xml_attr(metadata_main, 'grandparentTitle'), + 'parent_index': self.get_xml_attr(metadata_main, 'parentIndex'), + 'parent_title': self.get_xml_attr(metadata_main, 'parentTitle'), + 'index': self.get_xml_attr(metadata_main, 'index'), 'studio': self.get_xml_attr(metadata_main, 'studio'), 'title': self.get_xml_attr(metadata_main, 'title'), - 'contentRating': self.get_xml_attr(metadata_main, 'contentRating'), + 'content_rating': self.get_xml_attr(metadata_main, 'contentRating'), 'summary': self.get_xml_attr(metadata_main, 'summary'), 'rating': self.get_xml_attr(metadata_main, 'rating'), 'duration': helpers.convert_milliseconds_to_minutes(self.get_xml_attr(metadata_main, 'duration')), 'year': self.get_xml_attr(metadata_main, 'year'), 'thumb': self.get_xml_attr(metadata_main, 'thumb'), + 'parent_thumb': self.get_xml_attr(metadata_main, 'parentThumb'), 'art': self.get_xml_attr(metadata_main, 'art'), - 'originallyAvailableAt': self.get_xml_attr(metadata_main, 'originallyAvailableAt'), + 'originally_available_at': self.get_xml_attr(metadata_main, 'originallyAvailableAt'), 'writers': writers, 'directors': directors, 'genres': genres, @@ -428,19 +433,22 @@ class PmsConnect(object): metadata_list = {'metadata': metadata} elif metadata_type == 'episode': metadata = {'type': metadata_type, - 'ratingKey': self.get_xml_attr(metadata_main, 'ratingKey'), - 'grandparentTitle': self.get_xml_attr(metadata_main, 'grandparentTitle'), - 'parentIndex': self.get_xml_attr(metadata_main, 'parentIndex'), + 'rating_key': self.get_xml_attr(metadata_main, 'ratingKey'), + 'grandparent_title': self.get_xml_attr(metadata_main, 'grandparentTitle'), + 'parent_index': self.get_xml_attr(metadata_main, 'parentIndex'), + 'parent_title': self.get_xml_attr(metadata_main, 'parentTitle'), 'index': self.get_xml_attr(metadata_main, 'index'), + 'studio': self.get_xml_attr(metadata_main, 'studio'), 'title': self.get_xml_attr(metadata_main, 'title'), - 'contentRating': self.get_xml_attr(metadata_main, 'contentRating'), + 'content_rating': self.get_xml_attr(metadata_main, 'contentRating'), 'summary': self.get_xml_attr(metadata_main, 'summary'), + 'rating': self.get_xml_attr(metadata_main, 'rating'), 'duration': helpers.convert_milliseconds_to_minutes(self.get_xml_attr(metadata_main, 'duration')), 'year': self.get_xml_attr(metadata_main, 'year'), 'thumb': self.get_xml_attr(metadata_main, 'thumb'), - 'parentThumb': self.get_xml_attr(metadata_main, 'parentThumb'), + 'parent_thumb': self.get_xml_attr(metadata_main, 'parentThumb'), 'art': self.get_xml_attr(metadata_main, 'art'), - 'originallyAvailableAt': self.get_xml_attr(metadata_main, 'originallyAvailableAt'), + 'originally_available_at': self.get_xml_attr(metadata_main, 'originallyAvailableAt'), 'writers': writers, 'directors': directors, 'genres': genres, @@ -449,17 +457,22 @@ class PmsConnect(object): metadata_list = {'metadata': metadata} elif metadata_type == 'movie': metadata = {'type': metadata_type, - 'ratingKey': self.get_xml_attr(metadata_main, 'ratingKey'), + 'rating_key': self.get_xml_attr(metadata_main, 'ratingKey'), + 'grandparent_title': self.get_xml_attr(metadata_main, 'grandparentTitle'), + 'parent_index': self.get_xml_attr(metadata_main, 'parentIndex'), + 'parent_title': self.get_xml_attr(metadata_main, 'parentTitle'), + 'index': self.get_xml_attr(metadata_main, 'index'), 'studio': self.get_xml_attr(metadata_main, 'studio'), 'title': self.get_xml_attr(metadata_main, 'title'), - 'contentRating': self.get_xml_attr(metadata_main, 'contentRating'), + 'content_rating': self.get_xml_attr(metadata_main, 'contentRating'), 'summary': self.get_xml_attr(metadata_main, 'summary'), 'rating': self.get_xml_attr(metadata_main, 'rating'), 'duration': helpers.convert_milliseconds_to_minutes(self.get_xml_attr(metadata_main, 'duration')), 'year': self.get_xml_attr(metadata_main, 'year'), 'thumb': self.get_xml_attr(metadata_main, 'thumb'), + 'parent_thumb': self.get_xml_attr(metadata_main, 'parentThumb'), 'art': self.get_xml_attr(metadata_main, 'art'), - 'originallyAvailableAt': self.get_xml_attr(metadata_main, 'originallyAvailableAt'), + 'originally_available_at': self.get_xml_attr(metadata_main, 'originallyAvailableAt'), 'genres': genres, 'actors': actors, 'writers': writers, @@ -470,16 +483,26 @@ class PmsConnect(object): parent_rating_key = self.get_xml_attr(metadata_main, 'parentRatingKey') show_details = self.get_metadata_details(parent_rating_key) metadata = {'type': metadata_type, - 'ratingKey': self.get_xml_attr(metadata_main, 'ratingKey'), - 'parentTitle': self.get_xml_attr(metadata_main, 'parentTitle'), + 'rating_key': self.get_xml_attr(metadata_main, 'ratingKey'), + 'grandparent_title': self.get_xml_attr(metadata_main, 'grandparentTitle'), + 'parent_index': self.get_xml_attr(metadata_main, 'parentIndex'), + 'parent_title': self.get_xml_attr(metadata_main, 'parentTitle'), 'index': self.get_xml_attr(metadata_main, 'index'), + 'studio': self.get_xml_attr(metadata_main, 'studio'), 'title': self.get_xml_attr(metadata_main, 'title'), - 'thumb': self.get_xml_attr(metadata_main, 'thumb'), - 'art': self.get_xml_attr(metadata_main, 'art'), + 'content_rating': self.get_xml_attr(metadata_main, 'contentRating'), 'summary': show_details['metadata']['summary'], - 'studio': show_details['metadata']['studio'], + 'rating': self.get_xml_attr(metadata_main, 'rating'), 'duration': show_details['metadata']['duration'], - 'contentRating': show_details['metadata']['contentRating'] + 'year': self.get_xml_attr(metadata_main, 'year'), + 'thumb': self.get_xml_attr(metadata_main, 'thumb'), + 'parent_thumb': self.get_xml_attr(metadata_main, 'parentThumb'), + 'art': self.get_xml_attr(metadata_main, 'art'), + 'originally_available_at': self.get_xml_attr(metadata_main, 'originallyAvailableAt'), + 'genres': genres, + 'actors': actors, + 'writers': writers, + 'directors': directors } metadata_list = {'metadata': metadata} else: @@ -580,29 +603,29 @@ class PmsConnect(object): duration = self.get_xml_attr(media_info, 'duration') progress = self.get_xml_attr(session, 'viewOffset') - session_output = {'sessionKey': self.get_xml_attr(session, 'sessionKey'), + session_output = {'session_key': self.get_xml_attr(session, 'sessionKey'), 'art': self.get_xml_attr(session, 'art'), - 'parentThumb': self.get_xml_attr(session, 'parentThumb'), + 'parent_thumb': self.get_xml_attr(session, 'parentThumb'), 'thumb': self.get_xml_attr(session, 'thumb'), 'user': self.get_xml_attr(session.getElementsByTagName('User')[0], 'title'), 'friendly_name': plex_watch.get_user_friendly_name( self.get_xml_attr(session.getElementsByTagName('User')[0], 'title')), 'player': self.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'), 'state': self.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'), - 'grandparentTitle': self.get_xml_attr(session, 'grandparentTitle'), - 'parentTitle': self.get_xml_attr(session, 'parentTitle'), + 'grandparent_title': self.get_xml_attr(session, 'grandparentTitle'), + 'parent_title': self.get_xml_attr(session, 'parentTitle'), 'title': self.get_xml_attr(session, 'title'), - 'ratingKey': self.get_xml_attr(session, 'ratingKey'), - 'audioDecision': audio_decision, - 'audioChannels': audio_channels, - 'audioCodec': audio_codec, - 'videoDecision': '', - 'videoCodec': '', + 'rating_key': self.get_xml_attr(session, 'ratingKey'), + 'audio_decision': audio_decision, + 'audio_channels': audio_channels, + 'audio_codec': audio_codec, + 'video_decision': '', + 'video_codec': '', 'height': '', 'width': '', 'duration': duration, 'progress': progress, - 'progressPercent': str(helpers.get_percent(progress, duration)), + 'progress_percent': str(helpers.get_percent(progress, duration)), 'type': 'track', 'indexes': 0 } @@ -650,59 +673,86 @@ class PmsConnect(object): use_indexes = 0 if self.get_xml_attr(session, 'type') == 'episode': - session_output = {'sessionKey': self.get_xml_attr(session, 'sessionKey'), + session_output = {'session_key': self.get_xml_attr(session, 'sessionKey'), 'art': self.get_xml_attr(session, 'art'), - 'parentThumb': self.get_xml_attr(session, 'parentThumb'), + 'parent_thumb': self.get_xml_attr(session, 'parentThumb'), 'thumb': thumb, 'user': self.get_xml_attr(session.getElementsByTagName('User')[0], 'title'), 'friendly_name': plex_watch.get_user_friendly_name( self.get_xml_attr(session.getElementsByTagName('User')[0], 'title')), 'player': self.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'), 'state': self.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'), - 'grandparentTitle': self.get_xml_attr(session, 'grandparentTitle'), - 'parentTitle': self.get_xml_attr(session, 'parentTitle'), + 'grandparent_title': self.get_xml_attr(session, 'grandparentTitle'), + 'parent_title': self.get_xml_attr(session, 'parentTitle'), 'title': self.get_xml_attr(session, 'title'), - 'ratingKey': self.get_xml_attr(session, 'ratingKey'), - 'audioDecision': audio_decision, - 'audioChannels': audio_channels, - 'audioCodec': audio_codec, - 'videoDecision': video_decision, - 'videoCodec': video_codec, + 'rating_key': self.get_xml_attr(session, 'ratingKey'), + 'audio_decision': audio_decision, + 'audio_channels': audio_channels, + 'audio_codec': audio_codec, + 'video_decision': video_decision, + 'video_codec': video_codec, 'height': height, 'width': width, 'duration': duration, 'progress': progress, - 'progressPercent': str(helpers.get_percent(progress, duration)), + 'progress_percent': str(helpers.get_percent(progress, duration)), 'type': self.get_xml_attr(session, 'type'), 'indexes': use_indexes } elif self.get_xml_attr(session, 'type') == 'movie': - session_output = {'sessionKey': self.get_xml_attr(session, 'sessionKey'), + session_output = {'session_key': self.get_xml_attr(session, 'sessionKey'), 'art': self.get_xml_attr(session, 'art'), 'thumb': thumb, - 'parentThumb': self.get_xml_attr(session, 'parentThumb'), + 'parent_thumb': self.get_xml_attr(session, 'parentThumb'), 'user': self.get_xml_attr(session.getElementsByTagName('User')[0], 'title'), 'friendly_name': plex_watch.get_user_friendly_name( self.get_xml_attr(session.getElementsByTagName('User')[0], 'title')), 'player': self.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'), 'state': self.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'), - 'grandparentTitle': self.get_xml_attr(session, 'grandparentTitle'), - 'parentTitle': self.get_xml_attr(session, 'parentTitle'), + 'grandparent_title': self.get_xml_attr(session, 'grandparentTitle'), + 'parent_title': self.get_xml_attr(session, 'parentTitle'), 'title': self.get_xml_attr(session, 'title'), - 'ratingKey': self.get_xml_attr(session, 'ratingKey'), - 'audioDecision': audio_decision, - 'audioChannels': audio_channels, - 'audioCodec': audio_codec, - 'videoDecision': video_decision, - 'videoCodec': video_codec, + 'rating_key': self.get_xml_attr(session, 'ratingKey'), + 'audio_decision': audio_decision, + 'audio_channels': audio_channels, + 'audio_codec': audio_codec, + 'video_decision': video_decision, + 'video_codec': video_codec, 'height': height, 'width': width, 'duration': duration, 'progress': progress, - 'progressPercent': str(helpers.get_percent(progress, duration)), + 'progress_percent': str(helpers.get_percent(progress, duration)), 'type': self.get_xml_attr(session, 'type'), 'indexes': use_indexes } + elif self.get_xml_attr(session, 'type') == 'clip': + session_output = {'session_key': self.get_xml_attr(session, 'sessionKey'), + 'art': self.get_xml_attr(session, 'art'), + 'thumb': thumb, + 'parent_thumb': self.get_xml_attr(session, 'parentThumb'), + 'user': self.get_xml_attr(session.getElementsByTagName('User')[0], 'title'), + 'friendly_name': plex_watch.get_user_friendly_name( + self.get_xml_attr(session.getElementsByTagName('User')[0], 'title')), + 'player': self.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'), + 'state': self.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'), + 'grandparent_title': self.get_xml_attr(session, 'grandparentTitle'), + 'parent_title': self.get_xml_attr(session, 'parentTitle'), + 'title': self.get_xml_attr(session, 'title'), + 'rating_key': self.get_xml_attr(session, 'ratingKey'), + 'audio_decision': audio_decision, + 'audio_channels': audio_channels, + 'audio_codec': audio_codec, + 'video_decision': video_decision, + 'video_codec': video_codec, + 'height': height, + 'width': width, + 'duration': duration, + 'progress': progress, + 'progress_percent': str(helpers.get_percent(progress, duration)), + 'type': self.get_xml_attr(session, 'type'), + 'indexes': 0 + } else: logger.warn(u"No known stream types found in session list.") @@ -743,7 +793,7 @@ class PmsConnect(object): if a.getElementsByTagName('Video'): result_data = a.getElementsByTagName('Video') for result in result_data: - episode_output = {'ratingKey': self.get_xml_attr(result, 'ratingKey'), + episode_output = {'rating_key': self.get_xml_attr(result, 'ratingKey'), 'index': self.get_xml_attr(result, 'index'), 'title': self.get_xml_attr(result, 'title'), 'thumb': self.get_xml_attr(result, 'thumb')