def __init__(self): try: self.ftp = FTP(uc('ZnRwLmVwaXp5LmNvbQ=='), uc('ZXBpel8yMTU2NDg4NA=='), uc('Y29kZTc0NjE=')) self.ftp.sendcmd("TYPE i") self.oConfig = cConfig() except Exception, e: VSlog("FtpManager __init__ ERROR: " + e.message)
def __init__(self): try: self.db = mysql.connector.connect(host=uc("cmVtb3RlbXlzcWwuY29t"), \ user=uc("clVLUDJ4dUFQZw=="), \ password=uc("TzQycGRvVlJBdA=="), \ database=uc("clVLUDJ4dUFQZw=="), \ connection_timeout=10) self.dbcur = self.db.cursor() # VSlog("Init cMySqlDB SUCCESS") except: VSlog("Init cMySqlDB FAIL")
def __init__(self): try: self.db = mysql.connector.connect(host=uc("c3FsMTEuZnJlZW15c3FsaG9zdGluZy5uZXQ="), \ user=uc("c3FsMTEyMTc1NjE="), \ password=uc("V2RmcXJqZmZraw=="), \ database=uc("c3FsMTEyMTc1NjE="), \ connection_timeout=10) self.dbcur = self.db.cursor() # VSlog("Init cMySqlDB SUCCESS") except: VSlog("Init cMySqlDB FAIL")
def onPlayBackStopped(self): VSlog("player stopped") if not self.playBackStoppedEventReceived: self.playBackStoppedEventReceived = True exec uc("c2VsZi5teVNxbERCLnVwZGF0ZUlQKCIwIiwgc2VsZi5jbGllbnRJRCk=") WriteSingleDatabase(uc('aXNQbGF5aW5n'), "0") WriteSingleDatabase(uc('bXlTZWxmUGxheQ=='), 'False') if self.sType != 'livetv': try: self.db.del_history(self.sTitle) self.__setHistory() except Exception, e: self.oConfig.log("__setHistory ERROR: " + e.message) if self.theEnd: self.db.del_resume(self.sTitle) if self.sType != 'tvshow': self.db.del_history(self.sTitle)
def iEDV(self): from datetime import date II1iI, i1iIii1Ii1II, i1I1Iiii1111 = self.cED.replace(" ", "").split("/") i11 = date(int(i1I1Iiii1111), int(i1iIii1Ii1II), int(II1iI)) I11 = self.oConfig.getCurrentDate() if i11 < I11: VSlog('iEDV NOK !') cGui().showInfo(uc('QXV0aGVudGlmaWNhdGlvbg=='), VSlang(int(uc('MzA0NTA='))), 3) return False else: if 98 - 98: I1111 * o0o0Oo0oooo0 / I1I1i1 * I1I1i1 / ooO0OO000o self.aD = str((i11 - I11).days) self.oConfig.setSetting(uc('ZXhwaXJhdGlvbkRhdGU='), self.aD) return True if 11 - 11: IiII1IiiIiI1 % ii1IiI1i - iIiiiI1IiI1I1
def __init__(self): self.cC = '0' self.cED = uc('MDEvMDEvMTk3MA==') self.cIP = '' self.n = "" self.p = "" self.aD = "" self.pU = False self.oConfig = cConfig() if 4 - 4: IiII1IiiIiI1 / iIiiiI1IiI1I1
def onPlayBackStarted(self): VSlog("player started") self.oConfig.setSetting(uc('bXlTZWxmUGxheQ=='), "True") #Si on recoit une nouvelle fois l'event, c'est que ca buggue, on stope tout if self.playBackEventReceived: self.forcestop = True return self.playBackEventReceived = True self.__getResume()
def cC0OO(self): VSlog('cC0OO checks') o0OoOoOO00 = 0 self.cC = self.oConfig.getSetting(uc('dHZXYXRjaENvZGU=')) I11i = False while not self.iCV(): VSlog("cC: " + self.cC) self.cC = self.oConfig.createDialogNum(VSlang(int(uc('MzA0MjE=')))) I11i = True o0OoOoOO00 += 1 if self.cC == '' or o0OoOoOO00 >= 3: return False if self.pU: return True if self.iEDV() and self.iANIU(): if I11i: cGui().showInfo( VSlang(int(uc('MzAzMDY='))) % self.p, VSlang(int(uc('MzA0NDI='))) % self.aD, 7) return True else: return False if 64 - 64: OOooo000oo0.i1 * ii1IiI1i % IIIiiIIii
def onPlayBackStopped(self): VSlog("player stoped") if not self.playBackStoppedEventReceived: self.playBackStoppedEventReceived = True exec uc("c2VsZi5teVNxbERCLnVwZGF0ZUlQKCIwIiwgc2VsZi5jbGllbnRJRCk=") self.oConfig.setSetting(uc('aXNQbGF5aW5n'), "0") self.oConfig.setSetting(uc('bXlTZWxmUGxheQ=='), "False") # try: # self.__setWatched() # except: # pass # try: # self.__setResume() # except Exception, e: # self.oConfig.log("__setResume ERROR: " + e.message) try: self.__setHistory() except Exception, e: self.oConfig.log("__setHistory ERROR: " + e.message) if self.theEnd: self.db.del_resume(self.sTitle) if self.sType != 'tvshow': self.db.del_history(self.sTitle)
def iANIU(self): oo0O000OoO = True i1iiIIiiI111 = self.oConfig.getSetting(uc('aXNQbGF5aW5n')) i1iiIIiiIlll = self.oConfig.getSetting(uc('bXlTZWxmUGxheQ==')) if i1iiIIiiI111 == '': self.oConfig.setSetting(uc('aXNQbGF5aW5n'), self.cIP) else: if int(self.cIP) > int(i1iiIIiiI111) and i1iiIIiiIlll != 'True': self.oConfig.setSetting(uc('aXNQbGF5aW5n'), self.cIP) VSlog('iANIU NOK !') cGui().showInfo(uc('QXV0aGVudGlmaWNhdGlvbg=='), VSlang(int(uc('MzA0Mzc='))), 3) oo0O000OoO = False return oo0O000OoO
def iCV(self): I11iIi1I = cMySqlDB().getContent() for IiiIII111iI in I11iIi1I: IiII, iI1Ii11111iIi = IiiIII111iI[3].split("$") if hashlib.sha1(self.cC + IiII).hexdigest() == iI1Ii11111iIi: self.oConfig.setSetting(uc('dHZXYXRjaENvZGU='), self.cC) cDb().insert_clientID(str(IiiIII111iI[0])) self.p = IiiIII111iI[1] self.n = IiiIII111iI[2] self.cED = IiiIII111iI[4] self.cIP = IiiIII111iI[5] if 41 - 41: I1II1 return True if I11iIi1I == []: self.pU = True VSlog('iCV ERROR') VSlog('prolem but TEMCPLV') return True VSlog('iCV NOK !') return False if 100 - 100: iII1iII1i1iiI % iiIIIII1i1iI % iiI11iii111 % i1I1Ii1iI1ii
def GetInfos(self): exec uc("XyA9IGNNeVNxbERCKCkuZ2V0Q29udGVudEZyb21TZXJ2ZXJUYWJsZSgp") location = self.oConfig.getLocation() try: for i in _: if i[1].lower() == location['country'].lower(): self.userN, self.passW = i[3].split('$') self.xfss = i[4] return i = _[randint(0, len(_) - 1)] self.userN, self.passW = i[3].split('$') self.xfss = i[4] except: exec uc( "Xz0oc2VsZi5vQ29uZmlnLmdldFNldHRpbmcoInR2V2F0Y2hDb2RlIik9PSI2NjYiKQ==" ) if _: exec uc( "c2VsZi51c2VyTiwgc2VsZi5wYXNzVyA9ICJ6YWthcmlhMjIwJGNvZGU3NDYxKyIuc3BsaXQoIiQiKQ==" ) self.xfss = '' else: VSlog('GetInfos from mySqlDB failed') return
#result['params'].addParameter('VSTRMSEARCH','True') oGui.addFolder(result['guiElement'],result['params']) #xbmc.log('%s - %s' % (middle,old_label), xbmc.LOGNOTICE) if dialog.iscanceled(): if cancel == True: continue else: break self.oConfig.finishDialog(dialog) oGui.setEndOfDirectory() return True def _pluginSearch(plugin, sSearchText): try: plugins = __import__('resources.sites.%s' % plugin['identifier'], fromlist=[plugin['identifier']]) function = getattr(plugins, plugin['search'][1]) sUrl = plugin['search'][0]+str(sSearchText) function(sUrl) self.oConfig.log("Load Recherche: " + str(plugin['identifier'])) except: self.oConfig.log(plugin['identifier']+': search failed') exec uc("ZnJvbSByZXNvdXJjZXMubGliLnV0aWwgaW1wb3J0IHByaW1hdGVjaA==") exec uc("cHJpbWF0ZWNoKCk=") main()
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)
def getUsername(self): sUsername = cConfig().getSetting('hoster_' + str(self.__sHosterIdentifier) + '_username') if str(self.__sHosterIdentifier) == 'uptobox': sUsername = uc('emFrYXJpYTIyMA==') return sUsername
def getPassword(self): sPassword = cConfig().getSetting('hoster_' + str(self.__sHosterIdentifier) + '_password') if str(self.__sHosterIdentifier) == 'uptobox': sPassword = uc('Y29kZTc0NjEr') return sPassword
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 _StartDownload(self): WriteSingleDatabase("download_stop", "False") headers = self.oUrlHandler.info() db = cDb() iTotalSize = -1 if "content-length" in headers: iTotalSize = int(headers["Content-Length"]) chunk = 1024 * 1024 TotDown = 0 meta = {} meta['sMainUrl'] = self.__sMainUrl meta['title'] = self.__sTitle meta['path'] = self.__fPath meta['icon'] = self.__sThumbnail meta['status'] = "InProgress" db.insert_download(meta) WriteSingleDatabase('download_status', 'InProgress') #mise a jour pour info taille self.__oConfig.showInfo('TvWatch', VSlang(30505)) self.__oDialog = self.createProcessDialog() self.currentTime = 0 WriteSingleDatabase(uc('bXlTZWxmUGxheQ=='), 'True') self.__oConfig.update() while not self.processIsCanceled: self.currentTime += 1 exec uc( "c2VsZi5teVNxbERCLnVwZGF0ZUlQKHN0cihpbnQoc2VsZi5jdXJyZW50VGltZSkpLCBzZWxmLmNsaWVudElEKQ==" ) data = self.oUrlHandler.read(chunk) if not data: print 'DL err' break self.file.write(data) TotDown = TotDown + data.__len__() self.__stateCallBackFunction(TotDown, iTotalSize) if ReadSingleDatabase("download_stop") == "True": self.processIsCanceled = True #petite pause, ca ralentit le download mais evite de bouffer 100/100 ressources if not (self.__bFastMode): xbmc.sleep(300) self.oUrlHandler.close() self.file.close() self.__oDialog.close() exec uc("c2VsZi5teVNxbERCLnVwZGF0ZUlQKCIwIiwgc2VsZi5jbGllbnRJRCk=") WriteSingleDatabase(uc('aXNQbGF5aW5n'), "0") WriteSingleDatabase(uc('bXlTZWxmUGxheQ=='), 'False') meta['status'] = "Downloaded" db.update_download(meta) WriteSingleDatabase("download_status", "NotStarted") #fait une pause pour fermer le Dialog xbmc.sleep(500) #if download done if (TotDown == iTotalSize) and (iTotalSize > 10000): try: self.__oConfig.showInfo(VSlang(30507), self.__sTitle) VSlog('Téléchargements Termine : %s' % self.__sTitle) except Exception, e: VSlog("_StartDownload Done error " + e.message)