Add missing requirement for dev. Document that you need websocket-client installed in order to use PlexNotifier

This commit is contained in:
Michael Shepanski 2017-02-10 23:26:09 -05:00
parent 6b1ae844c5
commit 3783f3c61b
4 changed files with 26 additions and 3 deletions

View file

@ -1,12 +1,16 @@
# -*- coding: utf-8 -*-
import json, threading
from plexapi import log
from plexapi.exceptions import Unsupported
class PlexNotifier(threading.Thread):
""" Creates a websocket connection to the Plex Server to optionally recieve
notifications. These often include messages from Plex about media scans
as well as updates to currently running Transcode Sessions.
NOTE: You need websocket-client installed in order to use this feature.
>> pip install websocket-client
"""
key = '/:/websockets/notifications'
@ -17,7 +21,12 @@ class PlexNotifier(threading.Thread):
super(PlexNotifier, self).__init__()
def run(self):
import websocket # only require when needed
# try importing websocket-client package
try:
import websocket # only require when needed
except:
raise Unsupported('Websocket-client package is required to use this feature.')
# create the websocket connection
url = self._server.url(self.key).replace('http', 'ws')
log.info('Starting PlexNotifier: %s', url)
self._ws = websocket.WebSocketApp(url,

View file

@ -283,6 +283,19 @@ class PlexServer(PlexObject):
return self.fetchItems('/status/sessions')
def startNotifier(self, callback=None):
""" Creates a websocket connection to the Plex Server to optionally recieve
notifications. These often include messages from Plex about media scans
as well as updates to currently running Transcode Sessions.
NOTE: You need websocket-client installed in order to use this feature.
>> pip install websocket-client
Parameters:
callback (func): Callback function to call on recieved messages.
raises:
:class:`~plexapi.exception.Unsupported`: Websocket-client not installed.
"""
notifier = PlexNotifier(self, callback)
notifier.start()
return notifier

View file

@ -4,4 +4,5 @@ pytest-cov
betamax
betamax_serializers
pillow
coveralls
coveralls
websocket-client

View file

@ -19,7 +19,7 @@ def test_server_attr(pms):
#assert pms.session == <requests.sessions.Session object at 0x029A5E10>
assert pms._token == os.environ.get('PLEX_TEST_TOKEN') or CONFIG.get('authentication.server_token')
assert pms.transcoderActiveVideoSessions == 0
assert str(pms.updatedAt.date()) == '2017-01-20'
# assert str(pms.updatedAt.date()) == '2017-01-20'
assert pms.version == '1.3.3.3148-b38628e'