MESSAGE_TYPE = 'type'
TYPE_SHOWDETAILS = 'SHOWDETAILS'
TYPE_LOAD = 'LOAD'
class MyPlexController(PlexController):
def __init__(self):
super().__init__()
def receive_message(self, message, data):
logging.info('PlexController: I received this message: {}'.format(data))
return True # indicate you handled this message
def send_message(self, data, inc_session_id=False, callback_function=None):
logging.info('PlexController: I send this message: {}'.format(data))
super().send_message(data, inc_session_id, callback_function)
def show_details(self, key, content_data, server_data, user_data, access_token):
key = "/library/metadata/105"
server_data = {"machineIdentifier":"9a35df949e05bc86d0aa792c56e3db68c0c36250","transcoderVideo":True,"transcoderVideoRemuxOnly":False,"transcoderAudio":True,"version":"1.1.4.2757","myPlexSubscription":True,"isVerifiedHostname":False,"protocol":"http","address":"10.1.3.200","port":"32400"}
user_data = {"username":"XXXXXX"}
content_data = {"streamType":"BUFFERED","contentType":"video"}
msg = {MESSAGE_TYPE:TYPE_SHOWDETAILS}
msg['media'] = {'contentId':key}
msg['media'].update(content_data)
msg['media']['customData'] = {}
msg['media']['customData']['server'] = server_data.copy()
msg['media']['customData']['server']['accessToken'] = access_token
msg['media']['customData']['user'] = user_data.copy()
self.send_message(msg)
# {"type":"SHOWDETAILS","media":
# {"contentId":"/library/metadata/105","streamType":"BUFFERED","contentType":"video","customData":
# {"server":
# {"machineIdentifier":"9a35df949e05bc86d0aa792c56e3db68c0c36250","transcoderVideo":true,"transcoderVideoRemuxOnly":false,"transcoderAudio":true,"version":"1.1.4.2757","myPlexSubscription":true,"isVerifiedHostname":false,"protocol":"http","address":"10.1.3.200","port":"32400","accessToken":"transient-73832b14-e2bf-4943-b97d-468b9ae85a34"},
# "user": {"username":"XXXXXX"}
# }
# }
# }
def play_item(self, key, content_data, play_data, server_data, user_data, access_token, play_queue_id):
key = "/library/metadata/105"
requestId = self._socket_client._request_id
sessionId = self._socket_client.session_id
play_data = {"offset":0,"directPlay":True,"directStream":True,"subtitleSize":100,"audioBoost":100}
server_data = {"machineIdentifier":"9a35df949e05bc86d0aa792c56e3db68c0c36250","transcoderVideo":True,"transcoderVideoRemuxOnly":False,"transcoderAudio":True,"version":"1.1.4.2757","myPlexSubscription":True,"isVerifiedHostname":False,"protocol":"http","address":"10.1.3.200","port":"32400"}
user_data = {"username":"XXXXXX"}
content_data = {"streamType":"BUFFERED","contentType":"video"}
msg = {MESSAGE_TYPE:TYPE_LOAD,'requestId':requestId,'sessionId':sessionId}
msg['media'] = {'contentId':key}
msg['media'].update(content_data)
msg['media']['customData'] = play_data.copy()
msg['media']['customData']['server'] = server_data.copy()
msg['media']['customData']['server']['accessToken'] = access_token
msg['media']['customData']['user'] = user_data.copy()
msg['media']['customData']['containerKey'] = '/playQueues/%s?own=1&window=200' % play_queue_id
msg.update({'autoplay':True, 'currentTime':0})
self.namespace = 'urn:x-cast:com.google.cast.media'
self.send_message(msg)
self.namesapce = 'urn:x-cast:plex'
# {"type":"LOAD","requestId":481982064,"sessionId":"81c3b38d-b2f4-4c33-929a-5365af184d70","media":
# {"contentId":"/library/metadata/105","streamType":"BUFFERED","contentType":"video","customData":
# {"offset":0,"directPlay":true,"directStream":true,"subtitleSize":100,"audioBoost":100,"server":
# {
# "machineIdentifier":"9a35df949e05bc86d0aa792c56e3db68c0c36250","transcoderVideo":true,"transcoderVideoRemuxOnly":false,"transcoderAudio":true,"version":"1.1.4.2757","myPlexSubscription":true,"isVerifiedHostname":false,"protocol":"http","address":"10.1.3.200","port":"32400","accessToken":"transient-74cce00a-4048-4fcc-a571-38f2fd9a2acf"
# },
# "user":{"username":"XXXXXX"},
# "containerKey":"/playQueues/1635?own=1&window=200"
# }
# },
# "autoplay":true,"currentTime":0
# }