diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4737bb73..a6a227a7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## v1.4.16 (2016-11-25)
+
+* Fix: Websocket for new json response on PMS 1.3.0.
+* Fix: Update stream and transcoder tooltip percent.
+* Fix: Typo in the edit user modal.
+
+
## v1.4.15 (2016-11-11)
* New: Add stream and transcoder progress percent to the current activity tooltip.
diff --git a/data/interfaces/default/edit_user.html b/data/interfaces/default/edit_user.html
index d912a788..859a21b1 100644
--- a/data/interfaces/default/edit_user.html
+++ b/data/interfaces/default/edit_user.html
@@ -45,7 +45,7 @@ DOCUMENTATION :: END
-
Replace all occurances of the username with this name.
+ Replace all occurrences of the username with this name.
diff --git a/data/interfaces/default/index.html b/data/interfaces/default/index.html
index 914e1412..33573eab 100644
--- a/data/interfaces/default/index.html
+++ b/data/interfaces/default/index.html
@@ -221,8 +221,11 @@
// update the progress bars
// percent - 3 because of 3px padding-right
- $('#bufferbar-' + key).width(parseInt(s.transcode_progress) - 3 + '%').html(s.transcode_progress + '%');
- $('#bar-' + key).width(parseInt(s.progress_percent) - 3 + '%').html(s.progress_percent + '%');
+ $('#bufferbar-' + key).width(parseInt(s.transcode_progress) - 3 + '%').html(s.transcode_progress + '%')
+ .attr('data-original-title', 'Transcoder Progress ' + s.transcode_progress + '%');
+ $('#bar-' + key).width(parseInt(s.progress_percent) - 3 + '%').html(s.progress_percent + '%')
+ .attr('data-original-title', 'Stream Progress ' + s.progress_percent + '%');
+
// add temporary class so we know which instances are still active
instance.addClass('updated-temp');
diff --git a/plexpy/version.py b/plexpy/version.py
index 46bfabca..56ca293d 100644
--- a/plexpy/version.py
+++ b/plexpy/version.py
@@ -1,2 +1,2 @@
PLEXPY_BRANCH = "master"
-PLEXPY_RELEASE_VERSION = "1.4.15"
+PLEXPY_RELEASE_VERSION = "1.4.16"
diff --git a/plexpy/web_socket.py b/plexpy/web_socket.py
index be6a41d4..ce20b707 100644
--- a/plexpy/web_socket.py
+++ b/plexpy/web_socket.py
@@ -166,11 +166,12 @@ def process(opcode, data):
try:
info = json.loads(data)
- except Exception as ex:
- logger.warn(u"PlexPy WebSocket :: Error decoding message from websocket: %s" % ex)
+ except Exception as e:
+ logger.warn(u"PlexPy WebSocket :: Error decoding message from websocket: %s" % e)
logger.debug(data)
return False
+ info = info.get('NotificationContainer', info)
type = info.get('type')
if not type:
@@ -178,13 +179,13 @@ def process(opcode, data):
if type == 'playing':
# logger.debug('%s.playing %s' % (name, info))
- try:
- children = info.get('_children')
- except:
+ time_line = info.get('PlaySessionStateNotification', info.get('_children'))
+
+ if not time_line:
logger.debug(u"PlexPy WebSocket :: Session found but unable to get timeline data.")
return False
- activity = activity_handler.ActivityHandler(timeline=children[0])
+ activity = activity_handler.ActivityHandler(timeline=time_line[0])
activity.process()
if type == 'timeline':