def msg(self, players): msg = getXMLHeader() self.updatePlayerState() msg += '<MediaContainer commandID="INSERTCOMMANDID"' if players: self.getVolume() maintype = "music" for p in players.values(): maintype = p.get("type") self.mainlocation = "fullScreen" + maintype[0:1].upper() + maintype[1:].lower() else: self.mainlocation = "navigation" msg += ' location="%s">' % self.mainlocation msg += "<Timeline seekRange='0-0' state='stopped' time='0' type='music'></Timeline>" msg += "<Timeline seekRange='0-0' state='stopped' time='0' type='photo'></Timeline>" msg += self.getTimelineXML(self.getVideoPlayerId(players), "video") msg += "\r\n</MediaContainer>" return msg
def msg(self, players): msg = getXMLHeader() self.updatePlayerState() msg += '<MediaContainer commandID="INSERTCOMMANDID"' if players: self.getVolume() maintype = "music" for p in players.values(): maintype = p.get('type') self.mainlocation = "fullScreen" + maintype[0:1].upper( ) + maintype[1:].lower() else: self.mainlocation = "navigation" msg += ' location="%s">' % self.mainlocation msg += "<Timeline seekRange='0-0' state='stopped' time='0' type='music'></Timeline>" msg += "<Timeline seekRange='0-0' state='stopped' time='0' type='photo'></Timeline>" msg += self.getTimelineXML(self.getVideoPlayerId(players), "video") msg += "\r\n</MediaContainer>" return msg
def answer_request(self): printl("", self, "S") try: request_path=self.path[1:] request_path=re.sub(r"\?.*","",request_path) printl("request path is: [%s]" % request_path, self, "D") # first we get all params form url params = self.getParams() data = {"command": "updateCommandId", "uuid": self.headers.get('X-Plex-Client-Identifier', self.client_address[0]), "commandID": params.get('commandID', False)} self.playerCallback(data) self.resetCallback() if request_path == "player/timeline/subscribe": self.response(getOKMsg(), getPlexHeaders()) protocol = params.get('protocol', False) host = self.client_address[0] port = params.get('port', False) uuid = self.headers.get('X-Plex-Client-Identifier', "") commandID = params.get('commandID', 0) printl("host: " + str(host), self, "D") printl("protocol: " + str(protocol), self, "D") printl("port: " + str(port), self, "D") printl("uuid: " + str(uuid), self, "D") printl("commandID: " + str(commandID), self, "D") data = {"command": "addSubscriber", "protocol": protocol, "host": host, "port": port, "uuid": uuid, "commandID": commandID} #subMgr.addSubscriber(protocol, host, port, uuid, commandID) self.playerCallback(data) self.resetCallback() elif "player/timeline/unsubscribe" in request_path: self.response(getOKMsg(), getPlexHeaders()) uuid = self.headers.get('X-Plex-Client-Identifier', False) or self.client_address[0] data = {"command": "removeSubscriber", "uuid": uuid} #subMgr.removeSubscriber(uuid) self.playerCallback(data) self.resetCallback() elif request_path == "resources": responseContent = getXMLHeader() responseContent += str(self.getResourceXml()) self.response(responseContent, getPlexHeaders()) elif request_path == "player/timeline/poll": commandID = params.get('commandID', 0) self.subMgr = SubscriptionManager() try: e2params = self.session.current_dialog.getPlayerState() if e2params: self.subMgr.progressFromEnigma2 = e2params['progress'] self.subMgr.playerStateFromEnigma2 = e2params["state"] self.subMgr.durationFromEnigma2 = e2params["duration"] self.subMgr.lastkey = e2params["lastKey"] self.answerPoll(commandID) sleep(1) except: print "no params" self.answerPoll(commandID) sleep(1) elif request_path == "player/playback/setParameters": volume = params["volume"] data = {"command": "setVolume", "volume": volume} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/pause": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "pause"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/play": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "play"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/stop": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "stop"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/skipNext": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "skipNext"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/skipPrevious": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "skipPrevious"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/stepForward": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "stepForward"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/stepBack": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "stepBack"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/seekTo": self.response(getOKMsg(), getPlexHeaders()) offset = params["offset"] data = {"command": "seekTo", "offset": offset} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/playMedia": self.response(getOKMsg(), getPlexHeaders()) self.currentAddress = params.get('address', self.client_address[0]) self.currentKey = params['key'] self.currentPort = params['port'] self.currentProtocol = params.get('protocol', "http") self.currentCompleteAddress = self.currentAddress + ":" + self.currentPort if "offset" in params: offset = int(params["offset"]) else: offset = 0 machineIdentifier = params["machineIdentifier"] printl("target machineIdentifier: " + str(machineIdentifier), self, "D") for serverConfig in config.plugins.dreamplex.Entries: printl("current machineIdentifier: " + str(serverConfig.machineIdentifier.value), self, "D") if machineIdentifier in serverConfig.machineIdentifier.value: printl("we have a match ...", self, "D") self.g_serverConfig = serverConfig self.plexInstance = Singleton().getPlexInstance(PlexLibrary(self.session, self.g_serverConfig, self.currentCompleteAddress, machineIdentifier)) listViewList, mediaContainer = self.plexInstance.getMixedContentFromSection(self.currentProtocol + "://" + self.currentAddress + ":" + self.currentPort + self.currentKey, fromRemotePlayer=True) autoPlayMode = False if offset > 0: forceResume = True else: forceResume = False resumeMode = False # this is always false because the ios and android app ask itself if we want to resume :-) no need to ask second time playbackMode = self.g_serverConfig.playbackType.value currentIndex = 0 libraryName = "Mixed" splittedData = self.currentKey.split("/") subtitleData = self.plexInstance.getSelectedSubtitleDataById(self.currentCompleteAddress, splittedData[-1]) data = {"command": "playMedia", "currentKey": self.currentKey, "listViewList": listViewList, "mediaContainer": mediaContainer, "autoPlayMode": autoPlayMode, "forceResume": forceResume, "resumeMode": resumeMode, "playbackMode": playbackMode, "currentIndex": currentIndex, "libraryName": libraryName, "subtitleData": subtitleData } self.playerCallback(data) self.resetCallback() else: printl("no match ...", self, "D") else: self.response(getOKMsg(), getPlexHeaders()) except: traceback.print_exc() self.wfile.close() printl("", self, "C") return try: self.wfile.close() except: pass printl("", self, "C")
def answer_request(self): printl("", self, "S") try: request_path = self.path[1:] request_path = re.sub(r"\?.*", "", request_path) printl("request path is: [%s]" % request_path, self, "D") # first we get all params form url params = self.getParams() data = { "command": "updateCommandId", "uuid": self.headers.get('X-Plex-Client-Identifier', self.client_address[0]), "commandID": params.get('commandID', False) } self.playerCallback(data) self.resetCallback() if request_path == "player/timeline/subscribe": self.response(getOKMsg(), getPlexHeaders()) protocol = params.get('protocol', False) host = self.client_address[0] port = params.get('port', False) uuid = self.headers.get('X-Plex-Client-Identifier', "") commandID = params.get('commandID', 0) printl("host: " + str(host), self, "D") printl("protocol: " + str(protocol), self, "D") printl("port: " + str(port), self, "D") printl("uuid: " + str(uuid), self, "D") printl("commandID: " + str(commandID), self, "D") data = { "command": "addSubscriber", "protocol": protocol, "host": host, "port": port, "uuid": uuid, "commandID": commandID } #subMgr.addSubscriber(protocol, host, port, uuid, commandID) self.playerCallback(data) self.resetCallback() elif "player/timeline/unsubscribe" in request_path: self.response(getOKMsg(), getPlexHeaders()) uuid = self.headers.get('X-Plex-Client-Identifier', False) or self.client_address[0] data = {"command": "removeSubscriber", "uuid": uuid} #subMgr.removeSubscriber(uuid) self.playerCallback(data) self.resetCallback() elif request_path == "resources": responseContent = getXMLHeader() responseContent += str(self.getResourceXml()) self.response(responseContent, getPlexHeaders()) elif request_path == "player/timeline/poll": commandID = params.get('commandID', 0) self.subMgr = SubscriptionManager() try: e2params = self.session.current_dialog.getPlayerState() if e2params: self.subMgr.progressFromEnigma2 = e2params['progress'] self.subMgr.playerStateFromEnigma2 = e2params["state"] self.subMgr.durationFromEnigma2 = e2params["duration"] self.subMgr.lastkey = e2params["lastKey"] self.answerPoll(commandID) sleep(1) except: print "no params" self.answerPoll(commandID) sleep(1) elif request_path == "player/playback/setParameters": volume = params["volume"] data = {"command": "setVolume", "volume": volume} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/pause": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "pause"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/play": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "play"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/stop": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "stop"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/skipNext": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "skipNext"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/skipPrevious": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "skipPrevious"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/stepForward": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "stepForward"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/stepBack": self.response(getOKMsg(), getPlexHeaders()) data = {"command": "stepBack"} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/seekTo": self.response(getOKMsg(), getPlexHeaders()) offset = params["offset"] data = {"command": "seekTo", "offset": offset} self.playerCallback(data) self.resetCallback() elif request_path == "player/playback/playMedia": self.response(getOKMsg(), getPlexHeaders()) self.currentAddress = params.get('address', self.client_address[0]) self.currentKey = params['key'] self.currentPort = params['port'] self.currentProtocol = params.get('protocol', "http") self.currentCompleteAddress = self.currentAddress + ":" + self.currentPort if "offset" in params: offset = int(params["offset"]) else: offset = 0 machineIdentifier = params["machineIdentifier"] printl("target machineIdentifier: " + str(machineIdentifier), self, "D") for serverConfig in config.plugins.dreamplex.Entries: printl( "current machineIdentifier: " + str(serverConfig.machineIdentifier.value), self, "D") if machineIdentifier in serverConfig.machineIdentifier.value: printl("we have a match ...", self, "D") self.g_serverConfig = serverConfig self.plexInstance = Singleton().getPlexInstance( PlexLibrary(self.session, self.g_serverConfig, self.currentCompleteAddress, machineIdentifier)) listViewList, mediaContainer = self.plexInstance.getMixedContentFromSection( self.currentProtocol + "://" + self.currentAddress + ":" + self.currentPort + self.currentKey, fromRemotePlayer=True) autoPlayMode = False if offset > 0: forceResume = True else: forceResume = False resumeMode = False # this is always false because the ios and android app ask itself if we want to resume :-) no need to ask second time playbackMode = self.g_serverConfig.playbackType.value currentIndex = 0 libraryName = "Mixed" splittedData = self.currentKey.split("/") subtitleData = self.plexInstance.getSelectedSubtitleDataById( self.currentCompleteAddress, splittedData[-1]) data = { "command": "playMedia", "currentKey": self.currentKey, "listViewList": listViewList, "mediaContainer": mediaContainer, "autoPlayMode": autoPlayMode, "forceResume": forceResume, "resumeMode": resumeMode, "playbackMode": playbackMode, "currentIndex": currentIndex, "libraryName": libraryName, "subtitleData": subtitleData } self.playerCallback(data) self.resetCallback() else: printl("no match ...", self, "D") else: self.response(getOKMsg(), getPlexHeaders()) except: traceback.print_exc() self.wfile.close() printl("", self, "C") return try: self.wfile.close() except: pass printl("", self, "C")