diff --git a/resources/lib/PlayUtils.py b/resources/lib/PlayUtils.py index c87c1077..8267d33c 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) @@ -54,11 +55,15 @@ class PlayUtils(): self.logMsg("File is direct streaming.", 1) WINDOW.setProperty("%splaymethod" % playurl, "DirectStream") - else:# Try transcoding + elif self.isTranscoding(result): + # Try transcoding playurl = self.transcoding(result, server, id) if playurl: self.logMsg("File is transcoding.", 1) WINDOW.setProperty("%splaymethod" % playurl, "Transcode") + else: + # Error + return False return playurl.encode('utf-8') @@ -86,16 +91,19 @@ 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.']) + dialog = xbmcgui.Dialog() + resp = 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 diff --git a/resources/lib/PlaybackUtils.py b/resources/lib/PlaybackUtils.py index 6a96ab75..7940f39f 100644 --- a/resources/lib/PlaybackUtils.py +++ b/resources/lib/PlaybackUtils.py @@ -31,6 +31,8 @@ class PlaybackUtils(): language = addon.getLocalizedString logLevel = 0 downloadUtils = DownloadUtils() + + WINDOW.clearProperty('playurlFalse') def __init__(self, *args): pass @@ -90,8 +92,8 @@ class PlaybackUtils(): return self.AddToPlaylist(itemsToPlay) playurl = PlayUtils().getPlayUrl(server, id, result) - if playurl == False: - #xbmcgui.Dialog().ok('Warning', 'Failed to launch playback.') + if playurl == False or WINDOW.getProperty('playurlFalse') == "true": + WINDOW.clearProperty('playurlFalse') xbmc.log("Failed to retrieve the playback path/url.") return