def playQueueCallback(self, **kwargs):
plist = xbmc.PlayList(xbmc.PLAYLIST_MUSIC)
# plist.clear()
try:
citem = kodijsonrpc.rpc.Player.GetItem(playerid=0, properties=['comment'])['item']
plexID = citem['comment'].split(':', 1)[0]
except:
util.ERROR()
return
current = plist.getposition()
size = plist.size()
# Remove everything but the current track
for x in range(size - 1, current, -1): # First everything with a greater position
kodijsonrpc.rpc.Playlist.Remove(playlistid=xbmc.PLAYLIST_MUSIC, position=x)
for x in range(current): # Then anything with a lesser position
kodijsonrpc.rpc.Playlist.Remove(playlistid=xbmc.PLAYLIST_MUSIC, position=0)
swap = None
for idx, track in enumerate(self.playQueue.items()):
tid = 'PLEX-{0}'.format(track.ratingKey)
if tid == plexID:
# Save the position of the current track in the pq
swap = idx
url, li = self.player.createTrackListItem(track, index=idx + 1)
plist.add(url, li)
plist[0].setInfo('music', {
'playcount': swap + 1,
})
# Now swap the track to the correct position. This seems to be the only way to update the kodi playlist position to the current track's new position
if swap is not None:
kodijsonrpc.rpc.Playlist.Swap(playlistid=xbmc.PLAYLIST_MUSIC, position1=0, position2=swap + 1)
kodijsonrpc.rpc.Playlist.Remove(playlistid=xbmc.PLAYLIST_MUSIC, position=0)
self.player.trigger('playlist.changed')
评论列表
文章目录