def _wait_for_media_to_end(self, session):
address = self._url(self.port, 'playback-info')
play_state = const.PLAY_STATE_LOADING
while True:
info = None
try:
info = yield from session.get(address)
data = yield from info.content.read()
parsed = plistlib.loads(data)
if play_state == const.PLAY_STATE_LOADING:
if 'duration' in parsed:
play_state = const.PLAY_STATE_PLAYING
elif 'readyToPlay' not in parsed:
play_state = const.PLAY_STATE_NO_MEDIA
break
elif play_state == const.PLAY_STATE_PLAYING:
if 'duration' not in parsed:
play_state = const.PLAY_STATE_NO_MEDIA
break
finally:
if info is not None:
info.close()
yield from asyncio.sleep(1, loop=self.loop)
评论列表
文章目录