def PatchAdvanced(name, url, description): if base_info.workingURL(url) == False: return False path = xbmc.translatePath(os.path.join('special://home/addons', 'packages')) if not os.path.exists(path): os.makedirs(path) patchname = name dp = xbmcgui.DialogProgress() dp.create(ADDONTITLE, "", "", "[B]Advanced Settings: [/B]" + patchname) patchname = "advsettings" lib = os.path.join(path, patchname + '.zip') try: os.remove(lib) except: pass dialog = xbmcgui.Dialog() downloader.download(url, lib, dp) addonfolder = xbmc.translatePath(os.path.join('special://', 'home')) time.sleep(2) dp.update(0, "Extracting Zip Please Wait", "", " ") extract.all(lib, addonfolder, dp) time.sleep(1) try: os.remove(lib) except: pass xbmc.executebuiltin("Container.Refresh") dialog.ok( ADDONTITLE, "[COLOR snow]Advanced Settings installed![/COLOR]", "[COLOR white]You should now see an imporvment in buffering[/COLOR]")
def install_addon(addon_id,url): if xbmcgui.Dialog().yesno(addonname, 'Deseja Instalar %s?'%addon_id): addons = xbmcvfs.translatePath('special://home/addons') packages = xbmcvfs.translatePath('special://home/addons/packages') try: import ntpath try: os.mkdir(packages) except: pass filename = ntpath.basename(url) dest=os.path.join(packages, filename) try: downloader.download(url, addon_id, dest) except: print('Wizard Builds: Falha ao baixar, link invalido ou download cancelado') raise Exception try: extract.extract_zip(dest,addons) except: print('Wizard Builds: Falha ao extrair arquivos.') raise Exception xbmc.sleep(1000) database.enable_addon(addon_id) xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','APERTE OK PARA FECHAR O KODI E ABRA NOVAMENTE!') xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Application.Quit","id":1}') except: notify('Falha ao Instalar Addon!')
def install_build(name,url,skin): if xbmcgui.Dialog().yesno(addonname, 'Deseja Instalar %s?\nA Configuração atual do kodi será modificada'%name): kodi = xbmcvfs.translatePath('special://home') addons = xbmcvfs.translatePath('special://home/addons') packages = xbmcvfs.translatePath('special://home/addons/packages') media_kodi = xbmcvfs.translatePath('special://home/media') userdata_kodi = xbmcvfs.translatePath('special://home/userdata') download_file = resolve(url) try: if download_file.endswith(".zip"): # limpando kodi #try: # clear.reset(addons) #except: # pass #try: # clear.reset(userdata_kodi) #except: # pass #try: # clear.reset(media_kodi) #except: # pass import ntpath try: os.mkdir(packages) except: pass filename = ntpath.basename(download_file) dest=os.path.join(packages, filename) try: os.remove(lib) except: pass try: downloader.download(download_file, name, dest) except: print('Wizard Builds: Falha ao baixar, link invalido ou download cancelado') raise Exception try: extract.extract_zip(dest,kodi) except: print('Wizard Builds: Falha ao extrair arquivos.') raise Exception xbmc.sleep(1000) try: os.remove(dest) except: pass skin_folder = os.path.join(addons, skin) if os.path.isdir(skin_folder): setskin(skin) xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','APERTE OK PARA FECHAR O KODI E ABRA NOVAMENTE!') xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Application.Quit","id":1}') else: print('Wizard Builds: Arquivo não é zip ou não foi encontrado um link') raise Exception except: notify('Falha ao Instalar Build!')
def wizard(name, url, description): ################## New code ################################### zipname = name.replace('\\', '').replace('/', '').replace(':', '').replace( '*', '').replace('?', '').replace('"', '').replace('<', '').replace('>', '').replace('|', '') if not os.path.exists(PACKAGES): os.makedirs(PACKAGES) DP.create(ADDONTITLE, '[B]Đang Tải:[/B] %s' % (name), '', 'Chờ Chút Nhé...') lib = os.path.join(PACKAGES, '%s.zip' % zipname) try: os.remove(lib) except: pass downloader.download(url, lib, DP) xbmc.sleep(500) title = '[B]Đang cài đặt:[/B] %s' % (name) DP.update(0, title, '', 'Chờ Chút Nhé...') percent, errors, error = extract.all(lib, HOME, DP, title=title) if int(float(percent)) > 0: wiz.log('INSTALLED %s: [ERRORS:%s]' % (percent, errors)) try: os.remove(lib) except: pass if int(float(errors)) > 0: yes = DIALOG.yesno( ADDONTITLE, '[COLOR %s][COLOR %s]%s[/COLOR]' % (COLOR2, COLOR1, name), 'Đã hoàn thành: [COLOR %s]%s%s[/COLOR] [Lỗi:[COLOR %s]%s[/COLOR]]' % (COLOR1, percent, '%', COLOR1, errors), 'Bạn có muốn xem thống kê lỗi?[/COLOR]', nolabel='[B][COLOR red]Không cần[/COLOR][/B]', yeslabel='[B][COLOR green]Xem ngay[/COLOR][/B]') if yes: if isinstance(errors, unicode): error = error.encode('utf-8') wiz.TextBox(ADDONTITLE, error) DP.close()
match = re.compile('<addon.+?id="%s".+?ersion="(.+?)".+?>' % REPOID).findall(link) if len(match) == 0: wiz.log("Invalid URL for Repo Zip", xbmc.LOGERROR) else: installzip = '%s-%s.zip' % (REPOID, match[0]) workingrepo = wiz.workingURL(REPOZIPURL + installzip) if workingrepo == True: DP.create(ADDONTITLE, 'Downloading Repo...', '', 'Please Wait') if not os.path.exists(PACKAGES): os.makedirs(PACKAGES) lib = os.path.join(PACKAGES, installzip) try: os.remove(lib) except: pass downloader.download(REPOZIPURL + installzip, lib, DP) extract.all(lib, ADDONS, DP) f = open(os.path.join(ADDONS, REPOID, 'addon.xml'), mode='r').read() match = re.compile('<addon.+?id="%s".+?ame="(.+?)".+?>' % REPOID).findall(f) wiz.LogNotify("[COLOR %s]%s[/COLOR]" % (COLOR1, match[0]), "[COLOR %s]Add-on updated[/COLOR]" % COLOR2, icon=os.path.join(ADDONS, REPOID, 'icon.png')) DP.close() xbmc.sleep(500) wiz.forceUpdate(True) wiz.log("[Auto Install Repo] Successfully Installed", xbmc.LOGNOTICE) else: wiz.LogNotify(
else: wiz.log('[AUTO CLEAN UP][Packages: off]') else: wiz.log('[AUTO CLEAN UP: off]') if AUTOINSTALL == 'Yes' and not os.path.exists(os.path.join(ADDONS, REPOID)): workingxml = wiz.workingURL(REPOADDONXML) if workingxml == True: link = wiz.openURL(REPOADDONXML).replace('\n','').replace('\r','').replace('\t','') match = re.compile('<addon.+?id="%s".+?ersion="(.+?)".+?>' % REPOID).findall(link) installzip = '%s-%s.zip' % (REPOID, match[0]) workingrepo = wiz.workingURL(REPOZIPURL+installzip) if workingrepo == True: if not os.path.exists(PACKAGES): os.makedirs(PACKAGES) lib=os.path.join(PACKAGES, installzip) try: os.remove(lib) except: pass downloader.download(REPOZIPURL+installzip,lib) extract.all(lib, ADDONS) f = open(os.path.join(ADDONS, REPOID, 'addon.xml'), mode='r').read() match = re.compile('<addon.+?id="%s".+?ame="(.+?)".+?>' % REPOID).findall(f) wiz.LogNotify(match[0], "Add-on updated", icon=os.path.join(ADDONS, REPOID, 'icon.png')) xbmc.sleep(1000) xbmc.executebuiltin('UpdateAddonRepos()') xbmc.executebuiltin('UpdateLocalAddons()') xbmc.sleep(1000) else: wiz.LogNotify("Repo Install Error", "Invalid url for zip!") wiz.log("Error: Was unable to create a working url for repository.") else: wiz.LogNotify("Repo Install Error", "Invalid addon.xml file!") wiz.log("Error: Unable to read the addon.xml file.")
def SDFix(): SPORTS_DEVIL_FOLDER = xbmc.translatePath( os.path.join('special://home/addons', 'plugin.video.SportsDevil')) SPORTS_DEVIL_DATA = xbmc.translatePath( 'special://userdata/addon_data/plugin.video.SportsDevil') path = xbmc.translatePath(os.path.join('special://home/addons', 'packages')) choice = xbmcgui.Dialog().yesno( ADDONTITLE, 'This option will remove all traces of Sports Devil (If Installed) and install a clean version.', 'Would you like to continue?', yeslabel='[B][COLOR springgreen]YES[/COLOR][/B]', nolabel='[B][COLOR snow]NO[/COLOR][/B]') if choice == 0: sys.exit(1) dialog = xbmcgui.Dialog() if os.path.exists(SPORTS_DEVIL_FOLDER): try: shutil.rmtree(SPORTS_DEVIL_FOLDER) except: pass if os.path.exists(SPORTS_DEVIL_DATA): try: shutil.rmtree(SPORTS_DEVIL_DATA) except: pass purgePath = xbmc.translatePath('special://home/addons/packages') for root, dirs, files in os.walk(purgePath): file_count = 0 file_count += len(files) for root, dirs, files in os.walk(purgePath): file_count = 0 file_count += len(files) if file_count > 0: for f in files: os.unlink(os.path.join(root, f)) for d in dirs: shutil.rmtree(os.path.join(root, d)) if not os.path.exists(path): os.makedirs(path) url = ('http://repo.tantrumtv.com/dm/patches/plugin.video.SportsDevil.zip') dp = xbmcgui.DialogProgress() dp.create(ADDONTITLE, "", "", "Installing Sports Devil") lib = os.path.join(path, 'addon.zip') try: os.remove(lib) except: pass downloader.download(url, lib, dp) addonfolder = xbmc.translatePath(os.path.join('special://home', 'addons')) time.sleep(2) dp.update(0, "", "Extracting Zip Please Wait", "") extract.all(lib, addonfolder, dp) try: os.remove(lib) except: pass xbmc.executebuiltin("ActivateWindow(busydialog)") xbmc.executebuiltin("UpdateAddonRepos") xbmc.executebuiltin("UpdateLocalAddons") xbmc.executebuiltin("Dialog.Close(busydialog)") dialog.ok( ADDONTITLE, "[COLOR snow]The Sports Devil plugin should now be fixed and working correctly. If you have any issues please turn AUTO UPDATE OFF on Sports Devil and run this fix again.[/COLOR]" ) quit()