def __init__(self): if not (util.isKrypton() == True): self.__sDisplayName = '(Windows\Android Nécessite Kodi17)' + ' ' + 'Vidlox' else: self.__sDisplayName = 'cloudup' self.__sFileName = self.__sDisplayName self.__sHD = ''
def showHoster(self, oGui, oHoster, sMediaUrl, sThumbnail, bGetRedirectUrl = False): oInputParameterHandler = cInputParameterHandler() sMovieTitle = oInputParameterHandler.getValue('title') oGuiElement = cGuiElement() oGuiElement.setSiteName(self.SITE_NAME) #oGuiElement.setFunction('showHosterMenu') oGuiElement.setFunction('play') oGuiElement.setTitle(oHoster.getDisplayName()) #oGuiElement.setThumbnail(sThumbnail) # if (oInputParameterHandler.exist('sMeta')): # sMeta = oInputParameterHandler.getValue('sMeta') # oGuiElement.setMeta(int(sMeta)) oGuiElement.setFileName(oHoster.getFileName()) oGuiElement.getInfoLabel() oGuiElement.setCat(4) #oGuiElement.setThumbnail(xbmc.getInfoLabel('ListItem.Art(thumb)')) if sThumbnail: oGuiElement.setThumbnail(sThumbnail) #oGuiElement.setMeta(1) oGuiElement.setIcon('host.png') oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('sMediaUrl', sMediaUrl) #oOutputParameterHandler.addParameter('sThumbnail', oGuiElement.getThumbnail()) oOutputParameterHandler.addParameter('sHosterIdentifier', oHoster.getPluginIdentifier()) oOutputParameterHandler.addParameter('bGetRedirectUrl', bGetRedirectUrl) oOutputParameterHandler.addParameter('sFileName', oHoster.getFileName()) oOutputParameterHandler.addParameter('sTitle', oHoster.getDisplayName()) oOutputParameterHandler.addParameter('sId', 'cHosterGui') oOutputParameterHandler.addParameter('siteUrl', sMediaUrl) #oOutputParameterHandler.addParameter('sFav', 'play') #oOutputParameterHandler.addParameter('sCat', '4') #existe dans le menu krypton 17 if not util.isKrypton(): oGui.createContexMenuWatch(oGuiElement, oOutputParameterHandler) #context playlit menu oContext = cContextElement() oContext.setFile('cHosterGui') oContext.setSiteName(self.SITE_NAME) oContext.setFunction('addToPlaylist') oContext.setTitle(util.VSlang(30201)) oContext.setOutputParameterHandler(oOutputParameterHandler) oGuiElement.addContextItem(oContext) #Download menu if (oHoster.isDownloadable() == True): oContext = cContextElement() oContext.setFile('cDownload') oContext.setSiteName('cDownload') oContext.setFunction('AddtoDownloadList') oContext.setTitle(util.VSlang(30202)) oContext.setOutputParameterHandler(oOutputParameterHandler) oGuiElement.addContextItem(oContext) if (oHoster.isDownloadable() == True): #Beta context download and view menu oContext = cContextElement() oContext.setFile('cDownload') oContext.setSiteName('cDownload') oContext.setFunction('AddtoDownloadListandview') oContext.setTitle(util.VSlang(30326)) oContext.setOutputParameterHandler(oOutputParameterHandler) oGuiElement.addContextItem(oContext) #Upload menu if cInputParameterHandler().getValue('site') != 'siteuptobox' and cConfig().getSetting('hoster_uptobox_premium') == 'true' and oHoster.getPluginIdentifier() == 'uptobox' or oHoster.getPluginIdentifier() == 'uptostream': oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, 'siteuptobox', 'siteuptobox', 'AddmyAccount', util.VSlang(30325)) #Upload url vers upto if cConfig().getSetting('hoster_uptobox_premium') == 'true' and oHoster.getPluginIdentifier() == 'onefichier' or oHoster.getPluginIdentifier() == 'uplea': oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, 'siteuptobox', 'siteuptobox', 'UptomyAccount', util.VSlang(30325)) #context FAV menu oGui.createContexMenuFav(oGuiElement, oOutputParameterHandler) #context Library menu oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, 'cLibrary', 'cLibrary', 'setLibrary', util.VSlang(30324)) #bug oGui.addHost(oGuiElement, oOutputParameterHandler)
def run(self, playParams): self.totalTime = 0 self.currentTime = 0 self.timeCast = 0 self.theEnd = False self.sTitle = playParams['title'] self.Thumbnail = playParams['sThumbnail'] self.sItemUrl = playParams['sItemUrl'] self.mainUrl = playParams['sMainUrl'] self.clientID = self.oConfig.getSetting('clientID') self.mySqlDB = cMySqlDB() self.sQual = playParams['sQual'] self.isCasting = (self.oConfig.getSetting('castPlay') == "1") self.playParams = None if "Episode" in playParams['title']: self.sType = 'tvshow' elif (playParams['tv'] == "True"): self.sType = 'livetv' else: self.sType = 'movie' title = self.sTitle if "- Saison" in title: title = title[:title.find("- Saison")] elif "Saison" in title: title = title[:title.find("Saison")] sPluginHandle = cPluginHandler().getPluginHandle() oGui = cGui() item = oGui.createListItem(playParams['guiElement']) item.setPath(playParams['guiElement'].getMediaUrl()) if not cCast().checkLocalCast(): return False # meta = {'label': playParams['guiElement'].getTitle(), 'playParams['title']': playParams['guiElement'].getTitle()} # item = xbmcgui.ListItem(path=playParams['sUrlToPlay'], iconImage="DefaultVideo.png", thumbnailImage=self.sThumbnail) # item.setInfo( type="Video", infoLabels= meta ) #Sous titres if (self.Subtitles_file): try: item.setSubtitles(self.Subtitles_file) VSlog("Load SubTitle :" + str(self.Subtitles_file)) self.SubtitleActive = True except: VSlog("Can't load subtitle :" + str(self.Subtitles_file)) player_conf = self.oConfig.getSetting("playerPlay") player_conf = '0' VSlog('Run player. Version: ' + self.oConfig.getAddonVersion()) VSlog('Title: ' + self.sTitle) VSlog('Item URL: ' + self.sItemUrl) VSlog('Main URL: ' + self.mainUrl) #Si lien dash, methode prioritaire if playParams['sUrlToPlay'].endswith('.mpd'): if isKrypton() == True: self.enable_addon("inputstream.adaptive") item.setProperty('inputstreamaddon', 'inputstream.adaptive') item.setProperty('inputstream.adaptive.manifest_type', 'mpd') xbmcplugin.setResolvedUrl(sPluginHandle, True, listitem=item) VSlog('Player use inputstream addon') else: VSerror('Nécessite kodi 17 minimum') return #1 er mode de lecture elif (player_conf == '0'): windowed = False startPos = -1 self.play(playParams['sUrlToPlay'], item, windowed, startPos) VSlog('Player use Play() method') #2 eme mode non utilise elif (player_conf == 'neverused'): xbmc.executebuiltin("PlayMedia(" + playParams['sUrlToPlay'] + ")") VSlog('Player use PlayMedia() method') #3 eme mode (defaut) else: VSlog('sPluginHandle ' + str(sPluginHandle)) VSlog('item ' + str(item)) xbmcplugin.setResolvedUrl(sPluginHandle, True, item) #self.play(playParams['sUrlToPlay'],item) VSlog('Player use setResolvedUrl() method') #Attend que le lecteur demarre, avec un max de 20s # attempt = 0 # while not self.playBackEventReceived or attempt >= 20: # attempt += 1 # xbmc.sleep(1000) attempt = 0 while not self.playBackEventReceived: xbmc.sleep(1000) if attempt < 30: attempt += 1 else: cGui().showError("TvWatch", "Playback ERROR") return False exec uc("Xz0oc2VsZi5vQ29uZmlnLmdldFNldHRpbmcoImNsaWVudElEIikhPSIzNSIp") #active/desactive les sous titres suivant l'option choisie dans la config # if (self.SubtitleActive): # if (self.oConfig.getSetting("srt-view") == 'true'): # self.showSubtitles(True) # cGui().showInfo("Sous titre charges", "Sous-Titres", 5) # else: # self.showSubtitles(False) # cGui().showInfo("Sous titre charges, Vous pouvez les activer", "Sous-Titres", 15) # Add Movie to DB meta = {} meta['title'] = self.sTitle if self.db.get_resume(meta) == []: self.__setResume() seek = True stop = False while self.isPlaying() and not self.forcestop: tt = self.__getTotalTime() ct = self.__getTime() if self.totalTime != tt: self.totalTime = tt if self.currentTime != ct: self.currentTime = ct try: if seek: seekTime = self.__getResume() self.seekTime(seekTime) # Remove buffering dialog ! VS_hide_busy_dialog() seek = False if (self.currentTime > 3) and _: exec uc( "c2VsZi5teVNxbERCLnVwZGF0ZUlQKHN0cihpbnQoc2VsZi5jdXJyZW50VGltZSkpLCBzZWxmLmNsaWVudElEKQ==" ) WriteSingleDatabase(uc('bXlTZWxmUGxheQ=='), 'True') self.__setResume(update=True) if self.sType != 'livetv': if ((self.totalTime - self.currentTime < 60) or \ (self.isCasting and self.currentTime > 60)) and \ self.totalTime != 0.0 and \ not stop: if self.sType == 'tvshow': from resources.sites.server import prepareNextEpisode # cGui().showInfo("TvWatch", "Preparing next episode") self.playParams = prepareNextEpisode( self.sTitle, self.sQual, self.sType) stop = True if (self.totalTime - self.currentTime < 20) and \ not self.theEnd and \ self.totalTime != 0.0 and \ not self.isCasting: if self.sType == 'tvshow' and self.playParams != None: cGui().showInfo(title, VSlang(30439), 5) self.theEnd = True except Exception, e: self.oConfig.log('Run player ERROR: ' + e.message) xbmc.sleep(1000)
def run(self, oGuiElement, sTitle, sUrl): self.totalTime = 0 self.currentTime = 0 sPluginHandle = cPluginHandler().getPluginHandle() oGui = cGui() item = oGui.createListItem(oGuiElement) item.setPath(oGuiElement.getMediaUrl()) #meta = {'label': oGuiElement.getTitle(), 'title': oGuiElement.getTitle()} #item = xbmcgui.ListItem(path=sUrl, iconImage="DefaultVideo.png", thumbnailImage=self.sThumbnail) #item.setInfo( type="Video", infoLabels= meta ) #Sous titres if (self.Subtitles_file): try: item.setSubtitles(self.Subtitles_file) VSlog("Load SubTitle :" + str(self.Subtitles_file)) self.SubtitleActive = True except: VSlog("Can't load subtitle :" + str(self.Subtitles_file)) player_conf = cConfig().getSetting("playerPlay") #Si lien dash, methode prioritaire if sUrl.endswith('.mpd'): if isKrypton() == True: self.enable_addon("inputstream.adaptive") item.setProperty('inputstreamaddon', 'inputstream.adaptive') item.setProperty('inputstream.adaptive.manifest_type', 'mpd') xbmcplugin.setResolvedUrl(sPluginHandle, True, listitem=item) VSlog('Player use inputstream addon') else: VSerror('Nécessite kodi 17 minimum') return #1 er mode de lecture elif (player_conf == '0'): self.play(sUrl, item) VSlog('Player use Play() method') #2 eme mode non utilise elif (player_conf == 'neverused'): xbmc.executebuiltin("PlayMedia(" + sUrl + ")") VSlog('Player use PlayMedia() method') #3 eme mode (defaut) else: xbmcplugin.setResolvedUrl(sPluginHandle, True, item) VSlog('Player use setResolvedUrl() method') #Attend que le lecteur demarre, avec un max de 20s for _ in xrange(20): if self.playBackEventReceived: break xbmc.sleep(1000) #active/desactive les sous titres suivant l'option choisie dans la config if (self.SubtitleActive): if (cConfig().getSetting("srt-view") == 'true'): self.showSubtitles(True) cGui().showInfo("Sous titre charges", "Sous-Titres", 5) else: self.showSubtitles(False) cGui().showInfo("Sous titre charges, Vous pouvez les activer", "Sous-Titres", 15) while self.isPlaying() and not self.forcestop: #while not xbmc.abortRequested: try: self.currentTime = self.getTime() self.totalTime = self.getTotalTime() #xbmc.log(str(self.currentTime)) except: pass #break xbmc.sleep(1000) if not self.playBackStoppedEventReceived: self.onPlayBackStopped() #Uniquement avec la lecture avec play() if (player_conf == '0'): r = xbmcplugin.addDirectoryItem(handle=sPluginHandle, url=sUrl, listitem=item, isFolder=False) #xbmcplugin.endOfDirectory(sPluginHandle, True, False, False) return r VSlog('Closing player')
def run(self, oGuiElement, title, sUrl, protectedLink='', quality=''): self.totalTime = 0 self.currentTime = 0 self.timeCast = 0 self.theEnd = False self.sTitle = title self.Thumbnail = oGuiElement.getThumbnail() self.protectedLink = protectedLink self.clientID = self.db.get_clientID() self.mySqlDB = cMySqlDB() self.sQual = quality self.isCasting = (self.oConfig.getSetting('castPlay') == "1") self.playParams = None if "Episode" in title: self.sType = 'tvshow' else: self.sType = 'movie' sPluginHandle = cPluginHandler().getPluginHandle() oGui = cGui() item = oGui.createListItem(oGuiElement) item.setPath(oGuiElement.getMediaUrl()) if not cCast().checkLocalCast(): return False # meta = {'label': oGuiElement.getTitle(), 'title': oGuiElement.getTitle()} # item = xbmcgui.ListItem(path=sUrl, iconImage="DefaultVideo.png", thumbnailImage=self.sThumbnail) # item.setInfo( type="Video", infoLabels= meta ) #Sous titres if (self.Subtitles_file): try: item.setSubtitles(self.Subtitles_file) VSlog("Load SubTitle :" + str(self.Subtitles_file)) self.SubtitleActive = True except: VSlog("Can't load subtitle :" + str(self.Subtitles_file)) player_conf = self.oConfig.getSetting("playerPlay") player_conf = '0' #Si lien dash, methode prioritaire if sUrl.endswith('.mpd'): if isKrypton() == True: self.enable_addon("inputstream.adaptive") item.setProperty('inputstreamaddon', 'inputstream.adaptive') item.setProperty('inputstream.adaptive.manifest_type', 'mpd') xbmcplugin.setResolvedUrl(sPluginHandle, True, listitem=item) VSlog('Player use inputstream addon') else: VSerror('Nécessite kodi 17 minimum') return #1 er mode de lecture elif (player_conf == '0'): self.play(sUrl, item) VSlog('Player use Play() method') #2 eme mode non utilise elif (player_conf == 'neverused'): xbmc.executebuiltin("PlayMedia(" + sUrl + ")") VSlog('Player use PlayMedia() method') #3 eme mode (defaut) else: VSlog('sPluginHandle ' + str(sPluginHandle)) VSlog('item ' + str(item)) xbmcplugin.setResolvedUrl(sPluginHandle, True, item) #self.play(sUrl,item) VSlog('Player use setResolvedUrl() method') #Attend que le lecteur demarre, avec un max de 20s # attempt = 0 # while not self.playBackEventReceived or attempt >= 20: # attempt += 1 # xbmc.sleep(1000) attempt = 0 while not self.playBackEventReceived: xbmc.sleep(1000) if attempt < 20: attempt += 1 else: cGui().showError("TvWatch", "Playback ERROR") return False #active/desactive les sous titres suivant l'option choisie dans la config # if (self.SubtitleActive): # if (self.oConfig.getSetting("srt-view") == 'true'): # self.showSubtitles(True) # cGui().showInfo("Sous titre charges", "Sous-Titres", 5) # else: # self.showSubtitles(False) # cGui().showInfo("Sous titre charges, Vous pouvez les activer", "Sous-Titres", 15) # Remove buffering dialog ! self.oConfig.hide_busy_dialog() self.__setResume() stop = False while self.isPlaying() and not self.forcestop: tt = self.__getTotalTime() ct = self.__getTime() if self.totalTime != tt: self.totalTime = tt if self.currentTime != ct: self.currentTime = ct try: if self.currentTime > 3: exec uc( "c2VsZi5teVNxbERCLnVwZGF0ZUlQKHN0cihpbnQoc2VsZi5jdXJyZW50VGltZSkpLCBzZWxmLmNsaWVudElEKQ==" ) self.__setResume(update=True) if ((self.totalTime - self.currentTime < 60) or (self.isCasting and self.currentTime > 60)) and not stop: if self.sType == 'tvshow': from resources.sites.server import prepareNextEpisode # cGui().showInfo("TvWatch", "Preparing next episode") self.playParams = prepareNextEpisode( self.sTitle, self.sQual, self.sType) stop = True if (self.totalTime - self.currentTime < 20) and not self.theEnd and not self.isCasting: if self.sType == 'tvshow': cGui().showInfo("TvWatch", VSlang(30439), 5) self.theEnd = True except Exception, e: self.oConfig.log('Run player ERROR: ' + e.message) xbmc.sleep(1000)