Detect playback from playlist more reliable for add-on paths
This commit is contained in:
parent
a36307e0aa
commit
c03b7c52c4
3 changed files with 25 additions and 24 deletions
|
@ -216,18 +216,6 @@ class KodiMonitor(xbmc.Monitor):
|
||||||
}
|
}
|
||||||
Will NOT be called if playback initiated by Kodi widgets
|
Will NOT be called if playback initiated by Kodi widgets
|
||||||
"""
|
"""
|
||||||
if data['item'] == {'type': 'unknown'}:
|
|
||||||
# Kodi will return something like this if user started a PLAYLIST
|
|
||||||
# from add-on paths:
|
|
||||||
# {u'item': {u'type': u'unknown'},
|
|
||||||
# u'playlistid': 0,
|
|
||||||
# u'position': 4}
|
|
||||||
if not state.PLAYLIST_PLAY:
|
|
||||||
LOG.debug('Detected playback from a playlist')
|
|
||||||
state.PLAYLIST_PLAY = True
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
state.PLAYLIST_PLAY = False
|
|
||||||
if 'id' not in data['item']:
|
if 'id' not in data['item']:
|
||||||
return
|
return
|
||||||
old = state.OLD_PLAYER_STATES[data['playlistid']]
|
old = state.OLD_PLAYER_STATES[data['playlistid']]
|
||||||
|
|
|
@ -60,21 +60,36 @@ def playback_triage(plex_id=None, plex_type=None, path=None, resolve=True):
|
||||||
dialog('notification', lang(29999), lang(30017))
|
dialog('notification', lang(29999), lang(30017))
|
||||||
_ensure_resolve(abort=True)
|
_ensure_resolve(abort=True)
|
||||||
return
|
return
|
||||||
if state.PLAYLIST_PLAY:
|
|
||||||
LOG.debug('Kodi playlist play detected')
|
|
||||||
state.PLAYLIST_PLAY = False
|
|
||||||
_playlist_playback(plex_id, plex_type)
|
|
||||||
return
|
|
||||||
playqueue = PQ.get_playqueue_from_type(
|
playqueue = PQ.get_playqueue_from_type(
|
||||||
v.KODI_PLAYLIST_TYPE_FROM_PLEX_TYPE[plex_type])
|
v.KODI_PLAYLIST_TYPE_FROM_PLEX_TYPE[plex_type])
|
||||||
try:
|
try:
|
||||||
pos = js.get_position(playqueue.playlistid)
|
pos = js.get_position(playqueue.playlistid)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
LOG.error('No position returned from Kodi player!')
|
# Kodi bug - Playlist plays (not Playqueue) will ALWAYS be audio for
|
||||||
# "Play error"
|
# add-on paths
|
||||||
dialog('notification', lang(29999), lang(30128), icon='{error}')
|
LOG.info('No position returned from Kodi player! Assuming playlist')
|
||||||
_ensure_resolve(abort=True)
|
playqueue = PQ.get_playqueue_from_type(v.KODI_PLAYLIST_TYPE_AUDIO)
|
||||||
return
|
try:
|
||||||
|
pos = js.get_position(playqueue.playlistid)
|
||||||
|
except KeyError:
|
||||||
|
LOG.error('Still no position - abort')
|
||||||
|
# "Play error"
|
||||||
|
dialog('notification', lang(29999), lang(30128), icon='{error}')
|
||||||
|
_ensure_resolve(abort=True)
|
||||||
|
return
|
||||||
|
# HACK to detect playback of playlists for add-on paths
|
||||||
|
items = js.playlist_get_items(playqueue.playlistid)
|
||||||
|
try:
|
||||||
|
item = items[pos]
|
||||||
|
except IndexError:
|
||||||
|
LOG.info('Could not apply playlist hack! Probably Widget playback')
|
||||||
|
else:
|
||||||
|
if ('id' not in item and
|
||||||
|
item.get('type') == 'unknown' and item.get('title') == ''):
|
||||||
|
LOG.info('Kodi playlist play detected')
|
||||||
|
_playlist_playback(plex_id, plex_type)
|
||||||
|
return
|
||||||
|
|
||||||
# Can return -1 (as in "no playlist")
|
# Can return -1 (as in "no playlist")
|
||||||
pos = pos if pos != -1 else 0
|
pos = pos if pos != -1 else 0
|
||||||
LOG.debug('playQueue position %s for %s', pos, playqueue)
|
LOG.debug('playQueue position %s for %s', pos, playqueue)
|
||||||
|
|
|
@ -160,8 +160,6 @@ RESUME_PLAYBACK = False
|
||||||
CONTEXT_MENU_PLAY = False
|
CONTEXT_MENU_PLAY = False
|
||||||
# Set by context menu - shall we force-transcode the next playing item?
|
# Set by context menu - shall we force-transcode the next playing item?
|
||||||
FORCE_TRANSCODE = False
|
FORCE_TRANSCODE = False
|
||||||
# Flag if user started playback of a PLAYLIST (not playqueue) for add-on paths
|
|
||||||
PLAYLIST_PLAY = False
|
|
||||||
|
|
||||||
# Kodi webserver details
|
# Kodi webserver details
|
||||||
WEBSERVER_PORT = 8080
|
WEBSERVER_PORT = 8080
|
||||||
|
|
Loading…
Reference in a new issue