diff --git a/resources/lib/PlayUtils.py b/resources/lib/PlayUtils.py index c87c1077..6ef9da23 100644 --- a/resources/lib/PlayUtils.py +++ b/resources/lib/PlayUtils.py @@ -22,6 +22,7 @@ class PlayUtils(): addonName = clientInfo.getAddonName() addon = xbmcaddon.Addon() + WINDOW = xbmcgui.Window(10000) audioPref = addon.getSetting('Audiopref') subsPref = addon.getSetting('Subspref') @@ -36,7 +37,7 @@ class PlayUtils(): def getPlayUrl(self, server, id, result): - WINDOW = xbmcgui.Window(10000) + WINDOW = self.WINDOW username = WINDOW.getProperty('currUser') server = WINDOW.getProperty('server%s' % username) @@ -47,18 +48,22 @@ class PlayUtils(): self.logMsg("File is direct playing.", 1) WINDOW.setProperty("%splaymethod" % playurl.encode('utf-8'), "DirectPlay") - elif self.isDirectStream(result): + elif self.isDirectStream(result) and WINDOW.getProperty('playurlFalse') != "true": # Try direct stream playurl = self.directStream(result, server, id) if playurl: self.logMsg("File is direct streaming.", 1) WINDOW.setProperty("%splaymethod" % playurl, "DirectStream") - else:# Try transcoding + elif self.isTranscoding(result) and WINDOW.getProperty('playurlFalse') != "true": + # Try transcoding playurl = self.transcoding(result, server, id) if playurl: self.logMsg("File is transcoding.", 1) WINDOW.setProperty("%splaymethod" % playurl, "Transcode") + else: + # Error or User cancelled HTTP dialog. + return False return playurl.encode('utf-8') @@ -86,16 +91,18 @@ class PlayUtils(): if self.fileExists(result): return True else: - self.logMsg("Can't direct play: Unable to locate the content.", 1) + self.logMsg("Unable to direct play. Verify the following path is accessible by the device: %s. You might also need to add SMB credentials in the addon settings." % result[u'MediaSources'][0][u'Path']) if dialog: # Let user know that direct play failed resp = xbmcgui.Dialog().select('Warning: Unable to direct play.', ['Play from HTTP', 'Play from HTTP and remember next time.']) if resp == 1: # Remember next time self.addon.setSetting('playFromStream', "true") - else: + elif resp < 0: # User decided not to proceed. - self.logMsg("Unable to direct play. Verify the following path is accessible by the device: %s. You might also need to add SMB credentials in the addon settings." % result[u'MediaSources'][0][u'Path']) + self.logMsg("User cancelled HTTP selection dialog.", 1) + self.WINDOW.setProperty("playurlFalse", "true") + return False