def get_token(self): try: url = oauth_base_url + 'token' postData = {'client_id': self.client_ID, 'client_secret': self.secret, 'code': self.device_code, 'grant_type': 'http://oauth.net/grant_type/device/1.0'} response = requests.post(url, data=postData) # log_utils.log('Authorizing Real Debrid Result: | %s |' % response, level=log_utils.LOGDEBUG) if '[204]' in str(response): return False, str(response) if 'Temporarily Down For Maintenance' in response.text: if self.server_notifications: control.notification(message='Real-Debrid Temporarily Down For Maintenance', icon=rd_icon) log_utils.log('Real-Debrid Temporarily Down For Maintenance', level=log_utils.LOGWARNING) return False, response.text else: response = response.json() if 'error' in response: message = response.get('error') if self.server_notifications: control.notification(message=message, icon=rd_icon) log_utils.log('Real-Debrid Error: %s' % message, level=log_utils.LOGWARNING) return False, response self.token = response['access_token'] control.sleep(500) account_info = self.account_info() username = account_info['username'] control.setSetting('realdebrid.username', username) control.setSetting('realdebrid.client_id', self.client_ID) control.setSetting('realdebrid.secret', self.secret,) control.setSetting('realdebrid.token', self.token) control.addon('script.module.myaccounts').setSetting('realdebrid.token', self.token) control.setSetting('realdebrid.refresh', response['refresh_token']) return True, None except: log_utils.error('Real Debrid Authorization Failed : ') return False, None
def refresh_token(self): try: self.client_ID = control.addon( 'script.module.resolveurl').getSetting( 'RealDebridResolver_client_id') self.secret = control.addon('script.module.resolveurl').getSetting( 'RealDebridResolver_client_secret') self.device_code = control.addon( 'script.module.resolveurl').getSetting( 'RealDebridResolver_refresh') log_utils.log( 'Refreshing Expired Real Debrid Token: |%s|%s|' % (self.client_ID, self.device_code), __name__, log_utils.LOGDEBUG) if not self.get_token(): # empty all auth settings to force a re-auth on next use self.reset_authorization() log_utils.log('Unable to Refresh Real Debrid Token', __name__, log_utils.LOGDEBUG) else: log_utils.log('Real Debrid Token Successfully Refreshed', __name__, log_utils.LOGDEBUG) return True except: return False
def get_token(self): try: url = oauth_base_url + 'token' postData = { 'client_id': self.client_ID, 'client_secret': self.secret, 'code': self.device_code, 'grant_type': 'http://oauth.net/grant_type/device/1.0' } response = requests.post(url, data=postData).json() # log_utils.log('Authorizing Real Debrid Result: |%s|' % response, __name__, log_utils.LOGDEBUG) self.token = response['access_token'] control.sleep(1500) account_info = self.account_info() username = account_info['username'] control.setSetting('realdebrid.username', username) control.setSetting('realdebrid.client_id', self.client_ID) control.setSetting( 'realdebrid.secret', self.secret, ) control.setSetting('realdebrid.token', self.token) control.addon('script.module.myaccounts').setSetting( 'realdebrid.token', self.token) control.setSetting('realdebrid.refresh', response['refresh_token']) return True except Exception as e: log_utils.log('Real Debrid Authorization Failed: %s' % e, __name__, log_utils.LOGDEBUG) return False
def addView(content): try: skin = control.skin record = (skin, content, str(control.getCurrentViewId())) control.makeFile(control.dataPath) dbcon = database.connect(control.viewsFile) dbcur = dbcon.cursor() dbcur.execute("CREATE TABLE IF NOT EXISTS views (" "skin TEXT, " "view_type TEXT, " "view_id TEXT, " "UNIQUE(skin, view_type)" ");") dbcur.execute( "DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" % (record[0], record[1])) dbcur.execute("INSERT INTO views Values (?, ?, ?)", record) dbcon.commit() viewName = control.infoLabel('Container.Viewmode') skinName = control.addon(skin).getAddonInfo('name') skinIcon = control.addon(skin).getAddonInfo('icon') control.infoDialog(viewName, heading=skinName, sound=True, icon=skinIcon) except: return
def addView(content): try: skin = control.skin record = (skin, content, str(control.getCurrentViewId())) control.makeFile(control.dataPath) dbcon = database.connect(control.viewsFile) dbcur = dbcon.cursor() dbcur.execute("CREATE TABLE IF NOT EXISTS views (" "skin TEXT, " "view_type TEXT, " "view_id TEXT, " "UNIQUE(skin, view_type)" ");") dbcur.execute( "DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" % (record[0], record[1])) dbcur.execute("INSERT INTO views Values (?, ?, ?)", record) dbcur.connection.commit() dbcon.close() viewName = control.infoLabel('Container.Viewmode') skinName = control.addon(skin).getAddonInfo('name') skinIcon = control.addon(skin).getAddonInfo('icon') control.notification( title=skinName, message=viewName, icon=skinIcon, sound=(control.setting('notification.sound') == 'true')) except: log_utils.error() return
def UpdateDomain(): try: response = requests.get("https://raw.githubusercontent.com/Apollo2000/Repo/master/domain.txt", verify=False) data = json.loads(response.text) control.addon().setSetting('apollo.domain', data['result']) except: control.addon().setSetting('apollo.domain', "apollogroup.tv") pass
def get(self, name): if name == None: response = get(control.apollo_static_link + "list/livetv/menu.json", verify=False) data = json.loads(response.text) for cat in data['result']: try: self.list.append({ 'id': str(cat['id']), 'name': str(cat['name']), 'url': str(cat['id']) }) except: print "####### ERROR Getting List from Server: %s" % cat pass elif name > 0: if name == "69": if not control.addon().getSetting( 'apollo.adult') <> "true" or not control.addon( ).getSetting('apollo.adultshow') <> "true": return self.list response = get(control.apollo_static_link + "list/livetv/%s.json" % name, verify=False) data = json.loads(response.text) for channel in data['result']: try: self.list.append({ 'id': str(channel['id']), 'name': str(channel['name'].encode('utf-8')), 'title': '', 'hd': str(channel['hd']), 'url': 'plugin://' + control.addon().getAddonInfo('id') + '/?action=apollo&imdb=9999&season=%s&title=%s' % (channel['id'], channel['id']), 'poster': str(channel['logo']) }) except: print "####### ERROR Getting List from Server: %s %s" % ( str(channel['id']), channel) pass try: self.list = sorted(self.list, key=lambda k: k['name']) except: pass self.channelDirectory(self.list, name) return self.list
def getTraktAddonEpisodeInfo(): try: scrobble = control.addon('script.trakt').getSetting('scrobble_episode') except: scrobble = '' try: ExcludeHTTP = control.addon('script.trakt').getSetting('ExcludeHTTP') except: ExcludeHTTP = '' try: authorization = control.addon('script.trakt').getSetting('authorization') except: authorization = '' if scrobble == 'true' and ExcludeHTTP == 'false' and not authorization == '': return True else: return False
def cleanCache(self): i = xbmcgui.Dialog().yesno(control.addon().getAddonInfo('name'), "Are you sure you want to delete", "all your addon setting ?") if not i == 0: try: rmtree(control.dataPath) xbmcgui.Dialog().ok(control.addon().getAddonInfo('name'), "Addon setting deleted") except: pass
def clearViews(): try: skin = control.skin control.idle() yes = control.yesnoDialog(control.lang(32056).encode('utf-8'), '', '') if not yes: return control.makeFile(control.dataPath) dbcon = database.connect(control.viewsFile) dbcur = dbcon.cursor() for t in ['views']: try: dbcur.execute("DROP TABLE IF EXISTS %s" % t) dbcur.execute("VACUUM") dbcur.execute("CREATE TABLE IF NOT EXISTS views (" "skin TEXT, " "view_type TEXT, " "view_id TEXT, " "UNIQUE(skin, view_type)" ");") dbcur.connection.commit() dbcon.close() except: pass try: kodiDB = xbmc.translatePath('special://home/userdata/Database') kodiViewsDB = os.path.join(kodiDB, 'ViewModes6.db') dbcon = database.connect(kodiViewsDB) dbcur = dbcon.cursor() dbcur.execute( "DELETE FROM view WHERE path LIKE 'plugin://plugin.video.venom/%'" ) dbcur.connection.commit() dbcon.close() except: pass skinName = control.addon(skin).getAddonInfo('name') skinIcon = control.addon(skin).getAddonInfo('icon') control.notification(title=skinName, message='View Types Successfully Cleared!', icon=skinIcon, sound=notificationSound) except: import traceback traceback.print_exc() pass
def addView(content): try: skin = control.skin skinPath = control.skinPath xml = os.path.join(skinPath, 'addon.xml') file = control.openFile(xml) read = file.read().replace('\n', '') file.close() try: src = re.compile('defaultresolution="(.+?)"').findall(read)[0] except: src = re.compile('<res.+?folder="(.+?)"').findall(read)[0] src = os.path.join(skinPath, src) src = os.path.join(src, 'MyVideoNav.xml') file = control.openFile(src) read = file.read().replace('\n', '') file.close() views = re.compile('<views>(.+?)</views>').findall(read)[0] views = [int(x) for x in views.split(',')] import xbmc xbmc.log("views :" + repr(views), xbmc.LOGNOTICE) for view in views: label = control.infoLabel('Control.GetLabel(%s)' % (view)) xbmc.log("label :" + repr(label), xbmc.LOGNOTICE) if not (label == '' or label == None): break record = (skin, content, str(view)) control.makeFile(control.dataPath) dbcon = database.connect(control.viewsFile) dbcur = dbcon.cursor() dbcur.execute("CREATE TABLE IF NOT EXISTS views (" "skin TEXT, " "view_type TEXT, " "view_id TEXT, " "UNIQUE(skin, view_type)" ");") dbcur.execute( "DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" % (record[0], record[1])) dbcur.execute("INSERT INTO views Values (?, ?, ?)", record) dbcon.commit() viewName = control.infoLabel('Container.Viewmode') skinName = control.addon(skin).getAddonInfo('name') skinIcon = control.addon(skin).getAddonInfo('icon') control.infoDialog(viewName, heading=skinName, sound=True, icon=skinIcon) except: return
def setAdvanceBuffer(self): AdvFile = xbmc.translatePath( os.path.join('special://profile', 'advancedsettings.xml')) if os.path.exists(AdvFile): i = xbmcgui.Dialog().yesno( control.addon().getAddonInfo('name'), "Setting advance buffer setting", "will remove current advancedsettings.xml. Continue?") else: i = 1 if not i == 0: try: KodiVer = int(xbmc.getInfoLabel("System.BuildVersion")[:2]) xml = [] xml.append("<advancedsettings>\n") if KodiVer > 16: xml.append('\t<cache>\n') xml.append('\t\t<buffermode>1</buffermode>\n') xml.append('\t\t<memorysize>139460608</memorysize>\n') xml.append('\t\t<readfactor>20</readfactor>\n') xml.append('\t</cache>\n') xml.append('\t<network>\n') xml.append( '\t\t<curlclienttimeout>10</curlclienttimeout>\n') xml.append( '\t\t<curllowspeedtime>30</curllowspeedtime> \n') xml.append('\t\t<curlretries>2</curlretries>\n') xml.append('\t</network>\n') else: xml.append('\t<network>\n') xml.append('\t\t<buffermode>1</buffermode>\n') xml.append( '\t\t<cachemembuffersize>139460608</cachemembuffersize>\n' ) xml.append('\t\t<readbufferfactor>20</readbufferfactor>\n') xml.append( '\t\t<curlclienttimeout>10</curlclienttimeout>\n') xml.append('\t\t<curllowspeedtime>30</curllowspeedtime>\n') xml.append('\t\t<curlretries>2</curlretries>\n') xml.append('\t</network>\n') xml.append("</advancedsettings>") outF = open(AdvFile, 'wb') outF.write("".join(xml)) outF.close() xbmcgui.Dialog().ok(control.addon().getAddonInfo('name'), "Buffer advance setting approve", "Reset kodi to take change take effect") except: pass
def playlogin(self): if len(control.addon().getSetting('apollo.token')) > 10: response = get(control.apollo_link + 'token/?token=' + control.addon().getSetting('apollo.token'), verify=False) data = json.loads(response.text) if not "error" in data: return #REFRESH mac = GetMacAddress() login_link = control.apollo_link + 'login/?' if mac: login_link += '&mac=' + mac response = get(login_link + '&email=' + control.addon().getSetting('apollo.email') + '&password='******'apollo.password'), verify=False) data = json.loads(response.text) if not "error" in data and "token" in data: control.addon().setSetting('apollo.token', data["token"]) return free_link = control.apollo_link + 'free/?' if mac: free_link += '&mac=' + mac response = get(free_link, verify=False) data = json.loads(response.text) data = json.loads(response.text) control.addon().setSetting('apollo.token', data["token"])
def GetMedia(self, imdb, season, episode): try: self.playlogin() play_link = control.apollo_link + 'play/?' mac = GetMacAddress() if mac: play_link = play_link + '&mac=' + mac if imdb == "9999": if control.addon().getSetting( 'apollo.liveformat') == "MPEG-TS": format = "ts" else: format = "hls" play_link = play_link + '&channel=%s&format=%s&token=%s' % ( season, format, control.addon().getSetting('apollo.token')) else: play_link = play_link + '&token=%s&imdb=%s&season=%s&episode=%s' % ( control.addon().getSetting('apollo.token'), imdb, season, episode) response = get(play_link, verify=False) data = json.loads(response.text) except: if control.addon().getAddonInfo('id') == "program.apollo": control.infoDialog( "Our Servers are down for maintenance, for more info visit FB @ApolloGroupTV", icon='WARNING', time=20000) return 0 pass if 'error' in data: control.infoDialog(data['error'], icon='WARNING', time=20000) print "**** Apollo ERROR: {0}".format(data['error']) if not 'link' in data: return 0 if 'msg' in data: xbmcgui.Dialog().ok(control.addon().getAddonInfo('name'), data["msg"]) xbmc.sleep(5000) if 'link' in data: url = data["link"] + '|' + urllib.urlencode( { 'Keep-Alive': 'True', 'Connection': 'keep-alive' }) return url return 0
def addView(content): try: skin = control.skin() skinPath = control.kodiSkinPath xml = os.path.join(skinPath, 'addon.xml') file = control.openFile(xml) read = file.read().replace('\n', '') file.close() try: src = re.compile('defaultresolution="(.+?)"').findall(read)[0] except: src = re.compile('<res.+?folder="(.+?)"').findall(read)[0] src = os.path.join(skinPath, src) src = os.path.join(src, 'MyVideoNav.xml') file = control.openFile(src) read = file.read().replace('\n', '') file.close() views = re.compile('<views>(.+?)</views>').findall(read)[0] views = [int(x) for x in views.split(',')] for view in views: label = control.infoLabel('Control.GetLabel(%s)' % (view)) if not (label == '' or label == None): break record = (skin, content, str(view)) control.makeFile(control.dataPath) dbcon = database.connect(control.viewsFile) dbcur = dbcon.cursor() dbcur.execute("CREATE TABLE IF NOT EXISTS views (" "skin TEXT, " "view_type TEXT, " "view_id TEXT, " "UNIQUE(skin, view_type)" ");") dbcur.execute( "DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" % (record[0], record[1])) dbcur.execute("INSERT INTO views Values (?, ?, ?)", record) dbcon.commit() viewName = control.infoLabel('Container.Viewmode') skinName = control.addon(skin).getAddonInfo('name') skinIcon = control.addon(skin).getAddonInfo('icon') interface.Dialog.notification( title=33586, message=interface.Translation.string(33587) + ': ' + str(viewName), icon=interface.Dialog.IconSuccess) except: return
def search(self, query=None): if control.infoLabel('Container.PluginName') == '': return control.dialog.ok('Exodus', control.lang(30518).encode('utf-8'), '', '') if not control.infoLabel('ListItem.Title') == '': self.query = control.window.getProperty('%s.channel.search' % control.addonInfo('id')) elif query == None: t = control.lang(30201).encode('utf-8') k = control.keyboard('', t) k.doModal() self.query = k.getText() if k.isConfirmed() else None else: self.query = query if (self.query == None or self.query == ''): return control.window.setProperty( '%s.channel.search' % control.addonInfo('id'), self.query) response = get( control.apollo_static_link + 'search.php?type=livetv&search=%s' % urllib.quote_plus(self.query), verify=False) data = json.loads(response.text) for channel in data['result']: try: self.list.append({ 'id': str(channel['id']), 'name': str(channel['name'].encode('utf-8')), 'title': '', 'hd': str(channel['hd']), 'url': 'plugin://' + control.addon().getAddonInfo('id') + '/?action=apollo&imdb=9999&season=%s&title=%s' % (channel['id'], channel['id']), 'poster': str(channel['logo']) }) except: print "####### ERROR Getting List from Server: %s %s" % (str( channel['id']), channel) pass try: self.list = sorted(self.list, key=lambda k: k['name']) except: pass self.channelDirectory(self.list, 99) return self.list
def _find_cache_version(): import os versionFile = os.path.join(control.dataPath, 'cache.v') try: if not os.path.exists(versionFile): f = open(versionFile, 'w') f.close() except Exception: import xbmc print 'Venom Addon Data Path Does not Exist. Creating Folder....' ad_folder = xbmc.translatePath( 'special://home/userdata/addon_data/plugin.video.venom') os.makedirs(ad_folder) try: with open(versionFile, 'rb') as fh: oldVersion = fh.read() except: oldVersion = '0' try: curVersion = control.addon('plugin.video.venom').getAddonInfo( 'version') if oldVersion != curVersion: with open(versionFile, 'wb') as fh: fh.write(curVersion) return True else: return False except: return False
def _find_cache_version(): versionFile = control.joinPath(control.dataPath, 'cache.v') try: if not control.existsPath(versionFile): f = open(versionFile, 'w') f.close() except: log_utils.log( 'Venom Addon Data Path Does not Exist. Creating Folder....', __name__, log_utils.LOGDEBUG) ad_folder = control.transPath( 'special://profile/addon_data/plugin.video.venom') control.makeDirs(ad_folder) try: with open(versionFile, 'rb') as fh: oldVersion = fh.read() except: oldVersion = '0' try: curVersion = control.addon('plugin.video.venom').getAddonInfo( 'version') if oldVersion != curVersion: with open(versionFile, 'wb') as fh: fh.write(curVersion) return True else: return False except: log_utils.error() return False
def auth_loop(self): control.sleep(5000) response = requests.get(self.check_url, timeout=self.timeout).json() response = response['data'] if 'error' in response: self.token = 'failed' return control.notification(title='default', message=40021, icon='default') if response['activated']: try: control.progressDialog.close() self.token = str(response['apikey']) control.addon('script.module.resolveurl').setSetting('AllDebridResolver_token', self.token) except: self.token = 'failed' return control.notification(title='default', message=40021, icon='default') return
def update_cache_version(): versionFile = control.joinPath(control.dataPath, 'cache.v') try: if not control.existsPath(versionFile): f = open(versionFile, 'w') f.close() except: from resources.lib.modules import log_utils log_utils.log('dg Addon Data Path Does not Exist. Creating Folder....', __name__, log_utils.LOGDEBUG) ad_folder = control.transPath( 'special://profile/addon_data/plugin.video.dg') control.makeDirs(ad_folder) try: with open(versionFile, 'r') as fh: oldVersion = fh.read() except: oldVersion = '0' try: curVersion = control.addon('plugin.video.dg').getAddonInfo('version') if oldVersion != curVersion: with open(versionFile, 'w') as fh: fh.write(curVersion) return oldVersion, True else: return oldVersion, False except: from resources.lib.modules import log_utils log_utils.error() return oldVersion, False
def __init__(self): self.hosters = None self.hosts = None self.cache_check_results = {} self.token = control.addon('script.module.resolveurl').getSetting( 'RealDebridResolver_token') self.headers = {'Authorization': 'Bearer %s' % self.token} self.client_ID = control.addon('script.module.resolveurl').getSetting( 'RealDebridResolver_client_id') if self.client_ID == '': self.client_ID = 'X245A4XAIBGVM' self.secret = control.addon('script.module.resolveurl').getSetting( 'RealDebridResolver_client_secret') self.device_code = '' self.auth_timeout = 0 self.auth_step = 0
def get_media_url(self, host, media_id, cached_only=False): torrent = False cached = self.check_cache_item(media_id) media_id_lc = media_id.lower() if cached: log_utils.log( 'Premiumize.me: %s is readily available to stream' % media_id, __name__, log_utils.LOGDEBUG) if media_id_lc.endswith('.torrent') or media_id_lc.startswith( 'magnet:'): torrent = True elif media_id_lc.endswith('.torrent') or media_id_lc.startswith( 'magnet:'): if control.addon('script.module.resolveurl').getSetting( 'PremiumizeMeResolver_cached_only') or cached_only: raise Exception( 'Premiumize.me: Cached torrents only allowed to be initiated' ) torrent = True log_utils.log( 'Premiumize.me: initiating transfer to cloud for %s' % media_id, __name__, log_utils.LOGDEBUG) self.create_transfer(media_id) link = self.__direct_dl(media_id, torrent=torrent) if link: log_utils.log('Premiumize.me: Resolved to %s' % link, __name__, log_utils.LOGDEBUG) return link + self.append_headers(self.headers) raise ResolverError('Link Not Found')
def _find_cache_version(): versionFile = os.path.join(control.dataPath, 'cache.v') try: if six.PY2: with open(versionFile, 'rb') as fh: oldVersion = fh.read() elif six.PY3: with open(versionFile, 'r') as fh: oldVersion = fh.read() except: oldVersion = '0' try: curVersion = control.addon('plugin.video.theoath').getAddonInfo( 'version') if oldVersion != curVersion: if six.PY2: with open(versionFile, 'wb') as fh: fh.write(curVersion) elif six.PY3: with open(versionFile, 'w') as fh: fh.write(curVersion) return True else: return False except: return False
def reset_authorization(self): control.addon('script.module.resolveurl').setSetting( 'RealDebridResolver_client_id', '') control.addon('script.module.resolveurl').setSetting( 'RealDebridResolver_client_secret', '') control.addon('script.module.resolveurl').setSetting( 'RealDebridResolver_token', '') control.addon('script.module.resolveurl').setSetting( 'RealDebridResolver_refresh', '')
def alldebrid_service(self): ad_token = control.addon('script.module.resolveurl').getSetting('AllDebridResolver_token') if ad_token: self.addDirectoryItem('All-Debrid: Cloud Storage', 'ad_CloudStorage', 'alldebrid.png', 'DefaultAddonService.png') self.addDirectoryItem('All-Debrid: Transfers', 'ad_Transfers', 'alldebrid.png', 'DefaultAddonService.png') self.addDirectoryItem('All-Debrid: Account Info', 'ad_AccountInfo', 'alldebrid.png', 'DefaultAddonService.png', isFolder=False) self.addDirectoryItem('All-Debrid: (Re)Authorize', 'ad_Authorize', 'alldebrid.png', 'DefaultAddonService.png', isFolder=False) self.endDirectory()
def realdebrid_service(self): rd_token = control.addon('script.module.resolveurl').getSetting('RealDebridResolver_token') if rd_token: self.addDirectoryItem('Real-Debrid: Torrent Transfers', 'rd_UserTorrentsToListItem', 'realdebrid.png', 'DefaultAddonService.png') self.addDirectoryItem('Real-Debrid: My Downloads', 'rd_MyDownloads&query=1', 'realdebrid.png', 'DefaultAddonService.png') self.addDirectoryItem('Real-Debrid: Account Info', 'rd_AccountInfo', 'realdebrid.png', 'DefaultAddonService.png',isFolder=False ) self.addDirectoryItem('Real-Debrid: (Re)Authorize', 'rd_Authorize', 'realdebrid.png', 'DefaultAddonService.png',isFolder=False ) self.endDirectory()
def news(self): AddonVersion = control.addon('plugin.video.grumpybear').getAddonInfo( 'version') r = open(self.LOCALNEWS) compfile = r.read() self.showText( '[B][COLOR springgreen]Infos und Updates[/COLOR][/B]' + ' ' + '---' + ' ' + '(Version: ' + AddonVersion + ')', compfile)
def premiumize_service(self): pm_token = control.addon('script.module.resolveurl').getSetting('PremiumizeMeResolver_token') if pm_token: self.addDirectoryItem('Premiumize: My Files', 'pm_MyFiles', 'premiumize.png', 'DefaultAddonService.png') self.addDirectoryItem('Premiumize: Transfers', 'pm_Transfers', 'premiumize.png', 'DefaultAddonService.png') self.addDirectoryItem('Premiumize: Account Info', 'pm_AccountInfo', 'premiumize.png', 'DefaultAddonService.png', isFolder=False) self.addDirectoryItem('Premiumize: (Re)Authorize', 'pm_Authorize&opensettings=false', 'premiumize.png', 'DefaultAddonService.png', isFolder=False) self.endDirectory()
def SetFirstPVR(): i = xbmcgui.Dialog().yesno(control.addon().getAddonInfo('name'),"Use TV Guide ?") if i == 0: control.addon().setSetting('apollo.pvr', "false") else: control.addon().setSetting('apollo.pvr', "true") control.addon().setSetting('apollo.first', "true")
def pluginVideoLastship(): name = 'plugin.video.lastship' path = control.addon(name).getAddonInfo('Path') commitXML = _getXmlString(REMOTE_PLUGIN_COMMITS) if commitXML: commitUpdate(commitXML, LOCAL_PLUGIN_VERSION, REMOTE_PLUGIN_DOWNLOADS, path, "Updating " + name, LOCAL_FILE_NAME_PLUGIN) xbmcgui.Dialog().ok('LastShip', name+ "-Update Erfolgreich.") else: xbmcgui.Dialog().ok('LastShip', 'Fehler beim ' + name+ "-Update.")
def addView(content): try: skin = control.skin record = (skin, content, str(control.getCurrentViewId())) control.makeFile(control.dataPath) dbcon = database.connect(control.viewsFile) dbcur = dbcon.cursor() dbcur.execute("CREATE TABLE IF NOT EXISTS views (""skin TEXT, ""view_type TEXT, ""view_id TEXT, ""UNIQUE(skin, view_type)"");") dbcur.execute("DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" % (record[0], record[1])) dbcur.execute("INSERT INTO views Values (?, ?, ?)", record) dbcon.commit() viewName = control.infoLabel('Container.Viewmode') skinName = control.addon(skin).getAddonInfo('name') skinIcon = control.addon(skin).getAddonInfo('icon') control.infoDialog(viewName, heading=skinName, sound=True, icon=skinIcon) except: return
def _find_cache_version(): import os versionFile = os.path.join(control.dataPath, 'cache.v') try: with open(versionFile, 'rb') as fh: oldVersion = fh.read() except: oldVersion = '0' try: curVersion = control.addon('script.module.exodus').getAddonInfo('version') if oldVersion != curVersion: with open(versionFile, 'wb') as fh: fh.write(curVersion) return True else: return False except: return False
def addView(content): try: skin = control.skin skinPath = control.kodiSkinPath xml = os.path.join(skinPath,'addon.xml') file = control.openFile(xml) read = file.read().replace('\n','') file.close() try: src = re.compile('defaultresolution="(.+?)"').findall(read)[0] except: src = re.compile('<res.+?folder="(.+?)"').findall(read)[0] src = os.path.join(skinPath, src) src = os.path.join(src, 'MyVideoNav.xml') file = control.openFile(src) read = file.read().replace('\n','') file.close() views = re.compile('<views>(.+?)</views>').findall(read)[0] views = [int(x) for x in views.split(',')] for view in views: label = control.infoLabel('Control.GetLabel(%s)' % (view)) if not (label == '' or label == None): break record = (skin, content, str(view)) control.makeFile(control.dataPath) dbcon = database.connect(control.viewsFile) dbcur = dbcon.cursor() dbcur.execute("CREATE TABLE IF NOT EXISTS views (""skin TEXT, ""view_type TEXT, ""view_id TEXT, ""UNIQUE(skin, view_type)"");") dbcur.execute("DELETE FROM views WHERE skin = '%s' AND view_type = '%s'" % (record[0], record[1])) dbcur.execute("INSERT INTO views Values (?, ?, ?)", record) dbcon.commit() viewName = control.infoLabel('Container.Viewmode') skinName = control.addon(skin).getAddonInfo('name') skinIcon = control.addon(skin).getAddonInfo('icon') interface.Dialog.notification(title = 33586, message = interface.Translation.string(33587) + ': ' + str(viewName), icon = interface.Dialog.IconSuccess) except: return
def _find_cache_version(): import os versionFile = os.path.join(control.dataPath, 'cache.v') try: if not os.path.exists(versionFile): f = open(versionFile, 'w'); f.close() except Exception as e: import xbmc print 'Placenta Addon Data Path Does not Exist. Creating Folder....' ad_folder = xbmc.translatePath('special://home/userdata/addon_data/plugin.video.placenta') os.makedirs(ad_folder) try: with open(versionFile, 'rb') as fh: oldVersion = fh.read() except: oldVersion = '0' try: curVersion = control.addon('script.module.placenta').getAddonInfo('version') if oldVersion != curVersion: with open(versionFile, 'wb') as fh: fh.write(curVersion) return True else: return False except: return False
# @tantrumdev wrote this file. As long as you retain this notice you # can do whatever you want with this stuff. If we meet some day, and you think # this stuff is worth it, you can buy me a beer in return. - Muad'Dib # ---------------------------------------------------------------------------- ####################################################################### # Addon Name: Placenta # Addon id: plugin.video.placenta # Addon Provider: MuadDib from resources.lib.modules import log_utils from resources.lib.modules import control control.execute('RunPlugin(plugin://%s)' % control.get_plugin_url({'action': 'service'})) try: ModuleVersion = control.addon('script.module.placenta').getAddonInfo('version') AddonVersion = control.addon('plugin.video.placenta').getAddonInfo('version') RepoVersion = control.addon('repository.blamo').getAddonInfo('version') log_utils.log('######################### PLACENTA ############################', log_utils.LOGNOTICE) log_utils.log('####### CURRENT PLACENTA VERSIONS REPORT ######################', log_utils.LOGNOTICE) log_utils.log('### PLACENTA PLUGIN VERSION: %s ###' % str(AddonVersion), log_utils.LOGNOTICE) log_utils.log('### PLACENTA SCRIPT VERSION: %s ###' % str(ModuleVersion), log_utils.LOGNOTICE) log_utils.log('### TEAM REBIRTH REPOSITORY VERSION: %s ###' % str(RepoVersion), log_utils.LOGNOTICE) log_utils.log('###############################################################', log_utils.LOGNOTICE) except: log_utils.log('######################### PLACENTA ############################', log_utils.LOGNOTICE) log_utils.log('####### CURRENT PLACENTA VERSIONS REPORT ######################', log_utils.LOGNOTICE) log_utils.log('### ERROR GETTING PLACENTA VERSIONS - NO HELP WILL BE GIVEN AS YOU ARE EATING OUR AFTERBIRTH BITCHES. ###', log_utils.LOGNOTICE) log_utils.log('###############################################################', log_utils.LOGNOTICE)
along with this program. If not, see <http://www.gnu.org/licenses/>. """ from resources.lib.modules import log_utils from resources.lib.modules import control import threading control.execute('RunPlugin(plugin://%s)' % control.get_plugin_url({'action': 'service'})) def syncTraktLibrary(): control.execute( 'RunPlugin(plugin://%s)' % 'plugin.video.magicality/?action=tvshowsToLibrarySilent&url=traktcollection') control.execute( 'RunPlugin(plugin://%s)' % 'plugin.video.magicality/?action=moviesToLibrarySilent&url=traktcollection') try: ModuleVersion = control.addon('script.module.magicality').getAddonInfo('version') AddonVersion = control.addon('plugin.video.magicality').getAddonInfo('version') #RepoVersion = control.addon('repository.colossus').getAddonInfo('version') log_utils.log('######################### resistance ############################', log_utils.LOGNOTICE) log_utils.log('####### CURRENT resistance VERSIONS REPORT ######################', log_utils.LOGNOTICE) log_utils.log('### resistance PLUGIN VERSION: %s ###' % str(AddonVersion), log_utils.LOGNOTICE) log_utils.log('### resistance SCRIPT VERSION: %s ###' % str(ModuleVersion), log_utils.LOGNOTICE) #log_utils.log('### resistance REPOSITORY VERSION: %s ###' % str(RepoVersion), log_utils.LOGNOTICE) log_utils.log('###############################################################', log_utils.LOGNOTICE) except: log_utils.log('######################### resistance ############################', log_utils.LOGNOTICE) log_utils.log('####### CURRENT resistance VERSIONS REPORT ######################', log_utils.LOGNOTICE) log_utils.log('### ERROR GETTING resistance VERSIONS - NO HELP WILL BE GIVEN AS THIS IS NOT AN OFFICIAL resistance INSTALL. ###', log_utils.LOGNOTICE) log_utils.log('###############################################################', log_utils.LOGNOTICE)
along with this program. If not, see <http://www.gnu.org/licenses/>. """ from resources.lib.modules import log_utils from resources.lib.modules import control import threading control.execute('RunPlugin(plugin://%s)' % control.get_plugin_url({'action': 'service'})) def syncTraktLibrary(): control.execute( 'RunPlugin(plugin://%s)' % 'plugin.video.exodus/?action=tvshowsToLibrarySilent&url=traktcollection') control.execute( 'RunPlugin(plugin://%s)' % 'plugin.video.exodus/?action=moviesToLibrarySilent&url=traktcollection') try: ModuleVersion = control.addon('script.module.exodus').getAddonInfo('version') AddonVersion = control.addon('plugin.video.exodus').getAddonInfo('version') log_utils.log('######################### EXODUS ############################', log_utils.LOGNOTICE) log_utils.log('####### CURRENT EXODUS VERSIONS REPORT ######################', log_utils.LOGNOTICE) log_utils.log('### EXODUS PLUGIN VERSION: %s ###' % str(AddonVersion), log_utils.LOGNOTICE) log_utils.log('### EXODUS SCRIPT VERSION: %s ###' % str(ModuleVersion), log_utils.LOGNOTICE) #log_utils.log('### EXODUS REPOSITORY VERSION: %s ###' % str(RepoVersion), log_utils.LOGNOTICE) log_utils.log('###############################################################', log_utils.LOGNOTICE) except: log_utils.log('######################### EXODUS ############################', log_utils.LOGNOTICE) log_utils.log('####### CURRENT EXODUS VERSIONS REPORT ######################', log_utils.LOGNOTICE) log_utils.log('### ERROR GETTING EXODUS VERSIONS - NO HELP WILL BE GIVEN AS THIS IS NOT AN OFFICIAL EXODUS INSTALL. ###', log_utils.LOGNOTICE) log_utils.log('###############################################################', log_utils.LOGNOTICE) if control.setting('autoTraktOnStart') == 'true':