Adjust Plex Companion playQueues being passed to PlexKodiConnect to use playlist playall
This commit is contained in:
parent
531dba40bf
commit
ea63801a2b
5 changed files with 39 additions and 37 deletions
|
@ -132,7 +132,7 @@ def GetPlayQueue(playQueueID):
|
|||
"""
|
||||
Fetches the PMS playqueue with the playQueueID as an XML
|
||||
|
||||
Returns False if something went wrong
|
||||
Returns None if something went wrong
|
||||
"""
|
||||
url = "{server}/playQueues/%s" % playQueueID
|
||||
args = {'Accept': 'application/xml'}
|
||||
|
@ -140,7 +140,7 @@ def GetPlayQueue(playQueueID):
|
|||
try:
|
||||
xml.attrib['playQueueID']
|
||||
except (AttributeError, KeyError):
|
||||
return False
|
||||
return None
|
||||
return xml
|
||||
|
||||
|
||||
|
|
|
@ -23,8 +23,8 @@ import embydb_functions as embydb
|
|||
import playbackutils as pbutils
|
||||
import playutils
|
||||
import api
|
||||
import playlist
|
||||
|
||||
import PlexAPI
|
||||
import PlexFunctions
|
||||
|
||||
#################################################################################################
|
||||
|
@ -53,21 +53,23 @@ def plexCompanion(fullurl, params):
|
|||
params['containerKey'])
|
||||
# Construct a container key that works always (get rid of playlist args)
|
||||
utils.window('containerKey', '/'+library+'/'+key)
|
||||
# Assume it's video when something goes wrong
|
||||
playbackType = params.get('type', 'video')
|
||||
|
||||
if 'playQueues' in library:
|
||||
utils.logMsg(title, "Playing a playQueue. Query was: %s" % query, 1)
|
||||
# Playing a playlist that we need to fetch from PMS
|
||||
xml = PlexFunctions.GetPlayQueue(key)
|
||||
if not xml:
|
||||
if xml is None:
|
||||
utils.logMsg(
|
||||
title, "Error getting PMS playlist for key %s" % key, -1)
|
||||
return
|
||||
else:
|
||||
PassPlaylist(
|
||||
xml,
|
||||
resume=PlexFunctions.ConvertPlexToKodiTime(
|
||||
params.get('offset', 0)))
|
||||
resume = PlexFunctions.ConvertPlexToKodiTime(
|
||||
params.get('offset', 0))
|
||||
itemids = []
|
||||
for item in xml:
|
||||
itemids.append(item.get('ratingKey'))
|
||||
return playlist.Playlist().playAll(itemids, resume)
|
||||
|
||||
else:
|
||||
utils.logMsg(
|
||||
title, "Not knowing what to do for now - no playQueue sent", -1)
|
||||
|
@ -104,7 +106,7 @@ def doPlayback(itemid, dbid):
|
|||
item = PlexFunctions.GetPlexMetadata(itemid)
|
||||
if item is None:
|
||||
return False
|
||||
pbutils.PlaybackUtils(item).play(itemid, dbid)
|
||||
return pbutils.PlaybackUtils(item).play(itemid, dbid)
|
||||
|
||||
# utils.logMsg(title, "doPlayback called with itemid=%s, dbid=%s"
|
||||
# % (itemid, dbid), 1)
|
||||
|
|
|
@ -12,7 +12,6 @@ import xbmcplugin
|
|||
|
||||
import artwork
|
||||
import clientinfo
|
||||
import downloadutils
|
||||
import playutils as putils
|
||||
import playlist
|
||||
import read_embyserver as embyserver
|
||||
|
@ -117,7 +116,8 @@ class PlaybackUtils():
|
|||
|
||||
############### -- CHECK FOR INTROS ################
|
||||
|
||||
if utils.settings('enableCinema') == "true" and not seektime:
|
||||
if (utils.settings('enableCinema') == "true" and not seektime and
|
||||
not utils.window('emby_customPlaylist') == "true"):
|
||||
# if we have any play them when the movie/show is not being resumed
|
||||
xml = PF.GetPlexPlaylist(
|
||||
itemid,
|
||||
|
@ -143,6 +143,11 @@ class PlaybackUtils():
|
|||
if len(item[0][0]) > 1:
|
||||
# Only add to the playlist after intros have played
|
||||
for counter, part in enumerate(item[0][0]):
|
||||
# Playlist items don't fail on their first call - skip them
|
||||
# here, otherwise we'll get two 1st parts
|
||||
if (counter == 0 and
|
||||
utils.window('emby_customPlaylist') == "true"):
|
||||
continue
|
||||
# Set listitem and properties for each additional parts
|
||||
API.setPartNumber(counter)
|
||||
additionalListItem = xbmcgui.ListItem()
|
||||
|
|
|
@ -113,7 +113,7 @@ class Player(xbmc.Player):
|
|||
# Start at, when using custom playlist (play to Kodi from webclient)
|
||||
seektime = utils.window('emby_customPlaylist.seektime')
|
||||
self.logMsg("Seeking to: %s" % seektime, 1)
|
||||
xbmcplayer.seekTime(int(seektime)/10000000.0)
|
||||
xbmcplayer.seekTime(int(seektime)*1000.0)
|
||||
utils.window('emby_customPlaylist.seektime', clear=True)
|
||||
|
||||
seekTime = xbmcplayer.getTime()
|
||||
|
|
|
@ -26,11 +26,6 @@ class Playlist():
|
|||
self.emby = embyserver.Read_EmbyServer()
|
||||
|
||||
def playAll(self, itemids, startat):
|
||||
|
||||
embyconn = utils.kodiSQL('emby')
|
||||
embycursor = embyconn.cursor()
|
||||
emby_db = embydb.Embydb_Functions(embycursor)
|
||||
|
||||
player = xbmc.Player()
|
||||
playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
|
||||
playlist.clear()
|
||||
|
@ -45,28 +40,28 @@ class Playlist():
|
|||
# Seek to the starting position
|
||||
utils.window('emby_customplaylist.seektime', str(startat))
|
||||
|
||||
for itemid in itemids:
|
||||
embydb_item = emby_db.getItem_byId(itemid)
|
||||
try:
|
||||
dbid = embydb_item[0]
|
||||
mediatype = embydb_item[4]
|
||||
except TypeError:
|
||||
# Item is not found in our database, add item manually
|
||||
self.logMsg("Item was not found in the database, manually adding item.", 1)
|
||||
item = self.emby.getItem(itemid)
|
||||
self.addtoPlaylist_xbmc(playlist, item)
|
||||
else:
|
||||
# Add to playlist
|
||||
self.addtoPlaylist(dbid, mediatype)
|
||||
with embydb.GetEmbyDB() as emby_db:
|
||||
for itemid in itemids:
|
||||
embydb_item = emby_db.getItem_byId(itemid)
|
||||
try:
|
||||
dbid = embydb_item[0]
|
||||
mediatype = embydb_item[4]
|
||||
except TypeError:
|
||||
# Item is not found in our database, add item manually
|
||||
self.logMsg("Item was not found in the database, manually adding item.", 1)
|
||||
item = self.emby.getItem(itemid)
|
||||
self.addtoPlaylist_xbmc(playlist, item)
|
||||
else:
|
||||
# Add to playlist
|
||||
self.addtoPlaylist(dbid, mediatype)
|
||||
|
||||
self.logMsg("Adding %s to playlist." % itemid, 1)
|
||||
self.logMsg("Adding %s to playlist." % itemid, 1)
|
||||
|
||||
if not started:
|
||||
started = True
|
||||
player.play(playlist)
|
||||
if not started:
|
||||
started = True
|
||||
player.play(playlist)
|
||||
|
||||
self.verifyPlaylist()
|
||||
embycursor.close()
|
||||
|
||||
def modifyPlaylist(self, itemids):
|
||||
|
||||
|
|
Loading…
Reference in a new issue