Add cookie support to all player modules.

This commit is contained in:
Peter Marheine 2015-10-15 20:11:54 -06:00
parent 5dc2ca0da8
commit 16d53345a9
5 changed files with 23 additions and 15 deletions

View File

@ -6,7 +6,7 @@ class BasePlayer(object):
execute updatePlayerStatus(paused, position) on client execute updatePlayerStatus(paused, position) on client
Given the arguments: boolean paused and float position in seconds Given the arguments: boolean paused and float position in seconds
''' '''
def askForStatus(self): def askForStatus(self, cookie=None):
raise NotImplementedError() raise NotImplementedError()
''' '''

View File

@ -420,20 +420,22 @@ class MPCHCAPIPlayer(BasePlayer):
return self._mpcApi.lastFilePosition return self._mpcApi.lastFilePosition
@retry(MpcHcApi.PlayerNotReadyException, constants.MPC_MAX_RETRIES, constants.MPC_RETRY_WAIT_TIME, 1) @retry(MpcHcApi.PlayerNotReadyException, constants.MPC_MAX_RETRIES, constants.MPC_RETRY_WAIT_TIME, 1)
def askForStatus(self): def askForStatus(self, cookie=None):
if self._mpcApi.filePlaying and self.__preventAsking.wait(0) and self.__fileUpdate.acquire(0): if self._mpcApi.filePlaying and self.__preventAsking.wait(0) and self.__fileUpdate.acquire(0):
self.__fileUpdate.release() self.__fileUpdate.release()
position = self.__getPosition() position = self.__getPosition()
paused = self._mpcApi.isPaused() paused = self._mpcApi.isPaused()
position = float(position) position = float(position)
if self.__preventAsking.wait(0) and self.__fileUpdate.acquire(0): if self.__preventAsking.wait(0) and self.__fileUpdate.acquire(0):
self.__client.updatePlayerStatus(paused, position) self.__client.updatePlayerStatus(paused, position, cookie=cookie)
self.__fileUpdate.release() self.__fileUpdate.release()
return return
self.__echoGlobalStatus() self.__echoGlobalStatus(cookie)
def __echoGlobalStatus(self): def __echoGlobalStatus(self, cookie):
self.__client.updatePlayerStatus(self.__client.getGlobalPaused(), self.__client.getGlobalPosition()) self.__client.updatePlayerStatus(self.__client.getGlobalPaused(),
self.__client.getGlobalPosition(),
cookie=cookie)
def __forcePause(self): def __forcePause(self):
for _ in xrange(constants.MPC_MAX_RETRIES): for _ in xrange(constants.MPC_MAX_RETRIES):

View File

@ -72,14 +72,14 @@ class MplayerPlayer(BasePlayer):
self.reactor.callLater(0, self._client.initPlayer, self) self.reactor.callLater(0, self._client.initPlayer, self)
self._onFileUpdate() self._onFileUpdate()
def askForStatus(self): def askForStatus(self, cookie=None):
self._positionAsk.clear() self._positionAsk.clear()
self._pausedAsk.clear() self._pausedAsk.clear()
self._getPaused() self._getPaused()
self._getPosition() self._getPosition()
self._positionAsk.wait() self._positionAsk.wait()
self._pausedAsk.wait() self._pausedAsk.wait()
self._client.updatePlayerStatus(self._paused, self._position) self._client.updatePlayerStatus(self._paused, self._position, cookie=cookie)
def _setProperty(self, property_, value): def _setProperty(self, property_, value):
self._listener.sendLine("set_property {} {}".format(property_, value)) self._listener.sendLine("set_property {} {}".format(property_, value))

View File

@ -154,14 +154,16 @@ class NewMpvPlayer(OldMpvPlayer):
else: else:
self._paused = self._client.getGlobalPaused() self._paused = self._client.getGlobalPaused()
def askForStatus(self): def askForStatus(self, cookie=None):
self._positionAsk.clear() self._positionAsk.clear()
self._pausedAsk.clear() self._pausedAsk.clear()
self._getPaused() self._getPaused()
self._getPosition() self._getPosition()
self._positionAsk.wait(constants.MPV_LOCK_WAIT_TIME) self._positionAsk.wait(constants.MPV_LOCK_WAIT_TIME)
self._pausedAsk.wait(constants.MPV_LOCK_WAIT_TIME) self._pausedAsk.wait(constants.MPV_LOCK_WAIT_TIME)
self._client.updatePlayerStatus(self._paused if self.fileLoaded else self._client.getGlobalPaused(), self.getCalculatedPosition()) self._client.updatePlayerStatus(self._paused if self.fileLoaded else self._client.getGlobalPaused(),
self.getCalculatedPosition(),
cookie=cookie)
def _preparePlayer(self): def _preparePlayer(self):
if self.delayedFilePath: if self.delayedFilePath:

View File

@ -84,16 +84,20 @@ class VlcPlayer(BasePlayer):
self.setPaused(self._client.getGlobalPaused()) self.setPaused(self._client.getGlobalPaused())
self.setPosition(self._client.getGlobalPosition()) self.setPosition(self._client.getGlobalPosition())
def askForStatus(self): def askForStatus(self, cookie=None):
self._filechanged = False self._filechanged = False
self._positionAsk.clear() self._positionAsk.clear()
self._pausedAsk.clear() self._pausedAsk.clear()
self._listener.sendLine(".") self._listener.sendLine(".")
if self._filename and not self._filechanged: if self._filename and not self._filechanged:
self._positionAsk.wait(constants.PLAYER_ASK_DELAY) self._positionAsk.wait(constants.PLAYER_ASK_DELAY)
self._client.updatePlayerStatus(self._paused, self.getCalculatedPosition()) self._client.updatePlayerStatus(self._paused,
self.getCalculatedPosition(),
cookie=cookie)
else: else:
self._client.updatePlayerStatus(self._client.getGlobalPaused(), self._client.getGlobalPosition()) self._client.updatePlayerStatus(self._client.getGlobalPaused(),
self._client.getGlobalPosition(),
cookie=cookie)
def getCalculatedPosition(self): def getCalculatedPosition(self):
if self._lastVLCPositionUpdate is None: if self._lastVLCPositionUpdate is None: