# -*- coding: utf-8 -*- """ p2p-streams (c) 2015 enen92 This file contains all the function the addon uses in the section "Advanced tools". Functions: Advancedsettings.xml related functions are below. Advancedsettings.xml are not automatically imported since they are advanced configurations the user should have control of. advanced_menu() -> Main menu import_advancedxml() -> Import recommended advancedsettings.xml backup_advancedxml() -> When importing an advancedsettings.xml file, if a previous file exists on the same directory the addon will automatically make a backup of the file renaming it to advancedsettingsbackup.xml. This is what this function does recoverbackup_advancedxml() -> Recover an advancedsettings.xml file resulting from a previous backup delete_advancedxml() -> Delete the advancedsettings.xml file Acestream related functions: set_engine_setting(file) -> Set an acestreamengine setting to a given value. This is used in macosx and linux arm since the acestreamengine is not officially provided by acestream.org and the user doesn't have any other way to change them. remove_lock() -> function to remove .lock files created during the acestream loop. set_acestream_engine_cache_folder(url) -> Change acestreamengine cache folder set_linux_engine_setting(url) -> change acestreamengine settings from gui for linux/android clear_cache(url) -> Clear the contents of the acestream cache folder shutdown_hooks() -> Function to set a costum shutdown hook to the used skin and costum stop shortcuts set_android_port() -> Import sessionconfig.pickle for android set_android_cache_aloc() -> Set android cache allocation for the internal engine """ import xbmc,xbmcgui,xbmcplugin,xbmcvfs,sys,os,re from plexusutils.pluginxbmc import * from plexusutils.directoryhandle import addLink,addDir from plexusutils.iofile import * from plexusutils.webutils import download_tools from plexusutils.utilities import getDirectorySize def advanced_menu(): addLink('[COLOR orange]Advancedsettings.xml:[/COLOR]','',addonpath + art + 'settings_menu.png') lock_file = xbmc.translatePath('special://temp/'+ 'ts.lock') if xbmcvfs.exists(lock_file): addDir(translate(40068),MainURL,306,'',2,False) userdatapath = xbmc.translatePath(os.path.join('special://home/userdata'.decode('utf-8'),''.decode('utf-8'))) advancedsettings_var = os.path.join(userdatapath,'advancedsettings.xml') advancedsettingsbackup_var = os.path.join(userdatapath,'advancedsettingsbackup.xml') addDir(translate(40058),MainURL,301,'p2p',2,False) if xbmcvfs.exists(advancedsettings_var): addDir(translate(40063),MainURL,303,'p2p',2,False) addDir(translate(40065),MainURL,304,'p2p',2,False) if xbmcvfs.exists(advancedsettingsbackup_var): addDir(translate(40061),MainURL,302,'p2p',2,False) addLink('','','p2p') if xbmcvfs.exists(advancedsettings_var): content = readfile(advancedsettings_var) match = re.compile('<cachemembuffersize>(.+?)</cachemembuffersize>').findall(content) if match: if match[0] != '252420': valuebuff = '[COLOR red]' + match[0] + '[/COLOR]' else : valuebuff = '[COLOR green]' + match[0] + '[/COLOR]' addLink(translate(40067) +valuebuff+']','','p2p') addLink('','','p2p') #Apply shutdown hooks addLink('[COLOR orange]'+translate(70025)+'[/COLOR]','',addonpath + art + 'settings_menu.png') addDir(translate(70026),MainURL,310,'p2p',2,False) #Change engine settings from xbmc menus eligible = False if xbmc.getCondVisibility('system.platform.linux') and settings.getSetting('force_android') != "true": if os.uname()[4] == "armv6l" or os.uname()[4] == "armv7l": eligible = True elif xbmc.getCondVisibility('system.platform.OSX'): eligible = False elif settings.getSetting('openeleci386') == "true": eligible = False elif settings.getSetting('force_android') == "true": eligible = False else: eligible = False if eligible and os.path.exists(os.path.join(pastaperfil,'acestream','ace','ACEStream','values')): addLink('[COLOR orange]Acestream engine settings:[/COLOR]','',addonpath + art + 'settings_menu.png') acestream_cachefolder = os.path.join(os.getenv("HOME"),'.ACEStream','cache') acestream_cache_size = str(int(getDirectorySize(acestream_cachefolder))/(1024*1024)) addDir(translate(70003) + '[COLOR orange] [' + acestream_cache_size + ' MB][/COLOR]',acestream_cachefolder,307,'p2p',1,False) try: porta = readfile(os.path.join(pastaperfil,"acestream","ace","ACEStream","values","port.txt")) except: porta = "N/A" try: acestream_settings_file = os.path.join(os.getenv("HOME"),'.ACEStream','sessconfig.pickle') sessconfig = readfile(acestream_settings_file) portvector = re.compile("S'minport'\np(\d+)\nI(\d+)\n").findall(sessconfig) maxport = re.compile("S'maxport'\np(\d+)\nI(\d+)\n").findall(sessconfig) except: portvector = [];maxport=[] addDir(translate(600015) +"[COLOR orange][ " + str(int(porta))+ " ][/COLOR]",os.path.join(pastaperfil,"acestream","ace","ACEStream","values","port.txt") + '|' + str(portvector)+'|'+str(maxport),305,'p2p',2,False) try: vodbuffer = readfile(os.path.join(pastaperfil,"acestream","ace","ACEStream","values","vodbuffer.txt")) except: vodbuffer = "N/A" addDir(translate(600016) + "[COLOR orange][ " + str(int(vodbuffer))+ " ][/COLOR]",os.path.join(pastaperfil,"acestream","ace","ACEStream","values","vodbuffer.txt"),305,'p2p',2,False) try: livebuffer = readfile(os.path.join(pastaperfil,"acestream","ace","ACEStream","values","livebuffer.txt")) except: livebuffer = "N/A" addDir(translate(600017)+"[COLOR orange][ " + str(int(livebuffer))+ " ][/COLOR]",os.path.join(pastaperfil,"acestream","ace","ACEStream","values","livebuffer.txt"),305,'p2p',2,False) try: downloadlimit = readfile(os.path.join(pastaperfil,"acestream","ace","ACEStream","values","downloadlimit.txt")) except: downloadlimit = "N/A" addDir(translate(600018) +"[COLOR orange][ " + str(int(downloadlimit))+ " ][/COLOR]",os.path.join(pastaperfil,"acestream","ace","ACEStream","values","downloadlimit.txt"),305,'p2p',2,False) try: uploadlimit = readfile(os.path.join(pastaperfil,"acestream","ace","ACEStream","values","uploadlimit.txt")) except: uploadlimit = "N/A" addDir(translate(600019)+"[COLOR orange][ " + str(int(uploadlimit))+ " ][/COLOR]",os.path.join(pastaperfil,"acestream","ace","ACEStream","values","uploadlimit.txt"),305,'p2p',2,False) try: maxconnections = readfile(os.path.join(pastaperfil,"acestream","ace","ACEStream","values","maxconnections.txt")) except: maxconnections = "N/A" addDir(translate(600020)+"[COLOR orange][ " + str(int(maxconnections))+ " ][/COLOR]",os.path.join(pastaperfil,"acestream","ace","ACEStream","values","maxconnections.txt"),305,'p2p',2,False) try: maxconnectionsstream = readfile(os.path.join(pastaperfil,"acestream","ace","ACEStream","values","maxconnectionsstream.txt")) except: maxconnectionsstream = "N/A" addDir(translate(600021)+"[COLOR orange][ " + str(int(maxconnectionsstream))+ " ][/COLOR]",os.path.join(pastaperfil,"acestream","ace","ACEStream","values","maxconnectionsstream.txt"),305,'',2,False) elif eligible and not os.path.exists(os.path.join(pastaperfil,'acestream','ace','ACEStream','values')): addLink("[COLOR red][B]"+translate(600027)+"[/COLOR][/B]","",addonpath + art + 'processwarning.png') else: pass if (not eligible and xbmc.getCondVisibility('system.platform.linux') and settings.getSetting('ace_cmd') == "0") or (not eligible and xbmc.getCondVisibility('system.platform.windows')) or (not eligible and xbmc.getCondVisibility('system.platform.Android') and settings.getSetting('engine_app') == "0") or (settings.getSetting('force_android') == "true" and settings.getSetting('engine_app') == "0"): if xbmc.getCondVisibility('system.platform.linux') and not xbmc.getCondVisibility('system.platform.Android'): default_acefolder = os.path.join(os.getenv("HOME"),'.ACEStream') default_cachefolder = os.path.join(os.getenv("HOME"),'.ACEStream','cache','.acestream_cache') pickle_repo = 'http://p2p-strm.googlecode.com/svn/trunk/Modules/Linux/playerconf.pickle' if settings.getSetting('acestream_cachefolder') == '': acestream_cachefolder = os.path.join(os.getenv("HOME"),'.ACEStream','cache','.acestream_cache') else: acestream_cachefolder = settings.getSetting('acestream_cachefolder') acestream_settings_file = os.path.join(os.getenv("HOME"),'.ACEStream','playerconf.pickle') elif xbmc.getCondVisibility('system.platform.Android'): default_acefolder = os.path.join('/sdcard','.ACEStream') default_cachefolder = os.path.join('/sdcard','.ACEStream','.acestream_cache') pickle_repo = 'http://p2p-strm.googlecode.com/svn/trunk/Modules/Android/playerconf.pickle' if settings.getSetting('acestream_cachefolder') == '': acestream_cachefolder = os.path.join('/sdcard','.ACEStream','.acestream_cache') else: acestream_cachefolder = os.path.join(settings.getSetting('acestream_cachefolder'),'.acestream_cache') if not os.path.exists(acestream_cachefolder):xbmcvfs.mkdir(acestream_cachefolder) acestream_settings_file = os.path.join('/sdcard','.ACEStream','playerconf.pickle') elif xbmc.getCondVisibility('system.platform.windows'): default_acefolder = os.path.join(os.getenv("APPDATA"),".ACEStream") pickle_repo = 'http://p2p-strm.googlecode.com/svn/trunk/Modules/Windows/playerconf.pickle' default_cachefolder = os.path.join(os.getenv("SystemDrive"),'\_acestream_cache_') acestream_cachefolder = default_cachefolder acestream_settings_file = os.path.join(os.getenv("APPDATA"),".ACEStream","playerconf.pickle") #workaround to keep settings file in place if they get deleted if not os.path.exists(default_acefolder): xbmcvfs.mkdir(default_acefolder) if not os.path.exists(default_cachefolder): xbmcvfs.mkdir(default_cachefolder) if not os.path.exists(acestream_settings_file): local_file = os.path.join(default_acefolder,pickle_repo.split("/")[-1]) download_tools().Downloader(pickle_repo,local_file,'',translate(40000)) xbmc.sleep(200) if xbmcvfs.exists(acestream_settings_file): settings_text = readfile(acestream_settings_file) save(acestream_settings_file,settings_text.replace('my_cache_folder',default_cachefolder)) if xbmcvfs.exists(acestream_settings_file) and os.path.exists(acestream_cachefolder): addLink('[COLOR orange]Acestream engine settings:[/COLOR]','',addonpath + art + 'settings_menu.png') xbmc.sleep(200) #Change default port for Android if xbmc.getCondVisibility('system.platform.Android'): android_port = settings.getSetting('android_port') addDir(translate(600015) +"[COLOR orange] [ " + android_port + " ][/COLOR]",'p2p',311,'p2p',2,False) # acestream_cache_size = str(int(getDirectorySize(acestream_cachefolder))/(1024*1024)) addDir(translate(70003) + '[COLOR orange] [' + acestream_cache_size + ' MB][/COLOR]',acestream_cachefolder,307,'p2p',1,False) settings_content = readfile(acestream_settings_file) number_of_settings = re.compile('p(\d+)\n').findall(settings_content) cachefoldersetting = re.compile("'download_dir'\np\d+\n.+?/(.+?)\n").findall(settings_content) if not cachefoldersetting: if xbmc.getCondVisibility('system.platform.linux') and not xbmc.getCondVisibility('system.platform.Android'): if not 'arm' in os.uname()[4]: cachefoldersetting = os.path.join(os.getenv("HOME"),'.ACEStream','cache','.acestream_cache') settings.setSetting('acestream_cachefolder',cachefoldersetting) else: cachefoldersetting = os.path.join('/sdcard','.ACEStream','cache') settings.setSetting('acestream_cachefolder',cachefoldersetting) elif xbmc.getCondVisibility('system.platform.windows'): cachefoldersetting = os.path.join(os.getenv("SystemDrive"),'_acestream_cache_') settings.setSetting('acestream_cachefolder',cachefoldersetting) else: cachefoldersetting = os.path.join('/sdcard','.ACEStream','cache') settings.setSetting('acestream_cachefolder',cachefoldersetting) else: if xbmc.getCondVisibility('system.platform.linux') and not xbmc.getCondVisibility('system.platform.Android'): if not 'arm' in os.uname()[4]: cachefoldersetting = os.path.join('/',cachefoldersetting[0].replace("'",""),'.acestream_cache') settings.setSetting('acestream_cachefolder',cachefoldersetting) else: cachefoldersetting = cachefoldersetting[0] if cachefoldersetting: addDir(translate(70013)+"[COLOR orange][ " + cachefoldersetting + " ][/COLOR]",str(cachefoldersetting),309,'p2p',2,False) else: addDir(translate(70013)+"[COLOR orange][" + cachefoldersetting + "][/COLOR]",cachefoldersetting,309,'p2p',2,False) buffer_type = re.compile("S'live_cache_type'\np(\d+)\nS(.*)").findall(settings_content) if xbmc.getCondVisibility('system.platform.Android'): if buffer_type: if 'memory' in buffer_type[0][1]: addDir(translate(70041)+"[COLOR orange] [ Memory ][/COLOR]",'p2p',312,'p2p',2,False) elif 'disk' in buffer_type[0][1]: addDir(translate(70041)+"[COLOR orange] [ Disk ][/COLOR]",'p2p',312,'p2p',2,False) else: pass livebuffervalue = re.compile("S'live_buffer_time'\np(\d+)\nI(\d+)").findall(settings_content) if livebuffervalue: addDir(translate(600017)+"[COLOR orange][ " + livebuffervalue[0][1] + " ][/COLOR]",'live_buffer_time|' + str(livebuffervalue)+'|'+str(len(number_of_settings)),308,'p2p',2,False) else: addDir(translate(600017)+"[COLOR orange][3][/COLOR]",'live_buffer_time|'+str(len(number_of_settings)),308,'p2p',2,False) vodbuffervalue = re.compile("S'player_buffer_time'\np(\d+)\nI(\d+)").findall(settings_content) if vodbuffervalue: addDir(translate(600016)+"[COLOR orange][ " + vodbuffervalue[0][1] + " ][/COLOR]",'player_buffer_time|'+str(vodbuffervalue)+'|'+str(len(number_of_settings)),308,'p2p',2,False) else: addDir(translate(600016)+"[COLOR orange][10][/COLOR]",'player_buffer_time|'+str(len(number_of_settings)),308,'p2p',2,False) downloadlimit = re.compile("S'total_max_download_rate'\np(\d+)\nI(\d+)").findall(settings_content) if downloadlimit: addDir(translate(600018)+"[COLOR orange][ " + downloadlimit[0][1] + " ][/COLOR]",'total_max_download_rate|'+str(downloadlimit)+'|'+str(len(number_of_settings)),308,'p2p',2,False) else: addDir(translate(600018)+"[COLOR orange][0][/COLOR]",'total_max_download_rate|'+str(len(number_of_settings)),308,'p2p',2,False) uploadlimit = re.compile("S'total_max_upload_rate'\np(\d+)\nI(\d+)").findall(settings_content) if uploadlimit: addDir(translate(600019)+"[COLOR orange][ " + uploadlimit[0][1] + " ][/COLOR]",'total_max_upload_rate|'+str(uploadlimit)+'|'+str(len(number_of_settings)),308,'p2p',2,False) else: addDir(translate(600019)+"[COLOR orange][0][/COLOR]",'total_max_upload_rate|'+str(len(number_of_settings)),308,'p2p',2,False) maxconnection_per_stream = re.compile("S'max_peers'\np(\d+)\nI(\d+)").findall(settings_content) if maxconnection_per_stream: addDir(translate(600021)+"[COLOR orange][ " + maxconnection_per_stream[0][1] + " ][/COLOR]",'max_peers|'+str(maxconnection_per_stream)+'|'+str(len(number_of_settings)),308,'p2p',2,False) else: addDir(translate(600021)+"[COLOR orange][50][/COLOR]",'max_peers|'+str(len(number_of_settings)),308,'p2p',2,False) """ AdvancedSettings.xml Related functions """ def import_advancedxml(): userdatapath = xbmc.translatePath(os.path.join('special://home/userdata'.decode('utf-8'),''.decode('utf-8'))) advancedsettings_var = os.path.join(userdatapath,'advancedsettings.xml') advancedsettingsbackup_var = os.path.join(userdatapath,'advancedsettingsbackup.xml') if xbmcvfs.exists(advancedsettings_var): print("An advanced settings XML file already exists") if xbmcvfs.exists(advancedsettingsbackup_var): print("An advanced settings backup already exists") xbmcvfs.delete(advancedsettingsbackup_var) xbmcvfs.rename(advancedsettings_var,advancedsettingsbackup_var) advancedname = ["Cachemembuffer=252420","freememorycachepercent=5"] advancedurl = ["http://p2p-strm.googlecode.com/svn/trunk/Advancedsettings/advancedsettings.xml","http://p2p-strm.googlecode.com/svn/trunk/Advancedsettings/advancedsettingstonicillo.xml"] index = xbmcgui.Dialog().select(translate(40185), advancedname) if index > -1: download_tools().Downloader(advancedurl[index],advancedsettings_var,translate(40059),translate(40000)) mensagemok(translate(40000),translate(40060)) else: xbmcvfs.rename(advancedsettings_var,advancedsettingsbackup_var) advancedname = ["Cachemembuffer=252420","freememorycachepercent=5"] advancedurl = ["http://p2p-strm.googlecode.com/svn/trunk/Advancedsettings/advancedsettings.xml","http://p2p-strm.googlecode.com/svn/trunk/Advancedsettings/advancedsettingstonicillo.xml"] index = xbmcgui.Dialog().select(translate(40185), advancedname) if index > -1: download_tools().Downloader(advancedurl[index],advancedsettings_var,translate(40059),translate(40000)) mensagemok(translate(40000),translate(40060)) else: print("No advancedsettings.xml in the system yet") advancedname = ["Cachemembuffer=252420","freememorycachepercent=5"] advancedurl = ["http://p2p-strm.googlecode.com/svn/trunk/Advancedsettings/advancedsettings.xml","http://p2p-strm.googlecode.com/svn/trunk/Advancedsettings/advancedsettingstonicillo.xml"] index = xbmcgui.Dialog().select(translate(40185), advancedname) if index > -1: download_tools().Downloader(advancedurl[index],advancedsettings_var,translate(40059),translate(40000)) mensagemok(translate(40000),translate(40060)) xbmc.executebuiltin("Container.Refresh") def backup_advancedxml(): userdatapath = xbmc.translatePath(os.path.join('special://home/userdata'.decode('utf-8'),''.decode('utf-8'))) advancedsettings_var = os.path.join(userdatapath,'advancedsettings.xml') advancedsettingsbackup_var = os.path.join(userdatapath,'advancedsettingsbackup.xml') if xbmcvfs.exists(advancedsettingsbackup_var): xbmcvfs.delete(advancedsettingsbackup_var) xbmcvfs.copy(advancedsettings_var,advancedsettingsbackup_var) mensagemok(translate(40000),translate(40064)) xbmc.executebuiltin("Container.Refresh") def recoverbackup_advancedxml(): userdatapath = xbmc.translatePath(os.path.join('special://home/userdata'.decode('utf-8'),''.decode('utf-8'))) advancedsettings_var = os.path.join(userdatapath,'advancedsettings.xml') advancedsettingsbackup_var = os.path.join(userdatapath,'advancedsettingsbackup.xml') xbmcvfs.delete(advancedsettings_var) xbmcvfs.rename(advancedsettingsbackup_var,advancedsettings_var) mensagemok(translate(40000),translate(40062)) xbmc.executebuiltin("Container.Refresh") def delete_advancedxml(): userdatapath = xbmc.translatePath(os.path.join('special://home/userdata'.decode('utf-8'),''.decode('utf-8'))) advancedsettings_var = os.path.join(userdatapath,'advancedsettings.xml') advancedsettingsbackup_var = os.path.join(userdatapath,'advancedsettingsbackup.xml') xbmcvfs.delete(advancedsettings_var) mensagemok(translate(40000),translate(40066)) xbmc.executebuiltin("Container.Refresh") """ Acestream/Sopcast Engine Related functions """ def set_engine_setting(file): if 'port.txt' in file: ficheiro = file.split('|')[0] else: ficheiro = file acestream_settings_file = os.path.join(os.getenv("HOME"),'.ACEStream','sessconfig.pickle') value = readfile(ficheiro) keyb = xbmc.Keyboard(str(int(value)), translate(600024)) keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() try: int(search) integer = True except: integer = False if integer == True: save(ficheiro, search) if 'port.txt' in file: try: text = readfile(acestream_settings_file) minport = eval(file.split('|')[1]) maxport = eval(file.split('|')[2]) text = text.replace("S'minport'\np" + minport[0][0] +"\nI" + minport[0][1] +"\n","S'minport'\np" + minport[0][0] +"\nI" + search +"\n").replace("S'maxport'\np" + maxport[0][0] +"\nI" + maxport[0][1] +"\n","S'maxport'\np" + maxport[0][0] +"\nI" + search +"\n") save(acestream_settings_file,text) except: pass xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(40000), translate(600026), 1,os.path.join(addonpath,"icon.png"))) xbmc.executebuiltin("Container.Refresh") else: mensagemok(translate(40000),translate(600025)) sys.exit(0) def remove_lock(): lock_file = xbmc.translatePath('special://temp/'+ 'ts.lock') xbmcvfs.delete(lock_file) mensagemok(translate(40000),translate(40069)) xbmc.executebuiltin("Container.Refresh") def clear_cache(url): dirs, files = xbmcvfs.listdir(url) for fich in files: xbmcvfs.delete(os.path.join(url,fich)) if files: xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(40000), translate(40161), 1,addonpath+"/icon.png")) xbmc.executebuiltin("Container.Refresh") def set_linux_engine_setting(url): if xbmc.getCondVisibility('system.platform.linux') and not xbmc.getCondVisibility('system.platform.Android'): acestream_settings_file = os.path.join(os.getenv("HOME"),'.ACEStream','playerconf.pickle') elif xbmc.getCondVisibility('system.platform.Android'): acestream_settings_file = os.path.join('/sdcard','.ACEStream','playerconf.pickle') elif xbmc.getCondVisibility('system.platform.windows'): acestream_settings_file = os.path.join(os.getenv("APPDATA"),".ACEStream","playerconf.pickle") settings_content = readfile(acestream_settings_file) keyb = xbmc.Keyboard('',translate(600024)) keyb.doModal() if (keyb.isConfirmed()): search = keyb.getText() try: int(search) integer = True except: integer = False if integer == True: if len(url.split('|')) == 3: settings_content = settings_content.replace('p'+str(eval(url.split('|')[1])[0][0])+'\nI'+str(eval(url.split('|')[1])[0][1]),'p'+str(eval(url.split('|')[1])[0][0])+'\nI'+search) save(acestream_settings_file, settings_content) xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(40000), translate(600026), 1,addonpath+"/icon.png")) xbmc.executebuiltin("Container.Refresh") else: settings_content = settings_content.replace('s.',"sS'"+url.split('|')[0]+"'\np"+url.split('|')[1]+"\nI"+search+"\ns.") save(acestream_settings_file, settings_content) xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(40000), translate(600026), 1,addonpath+"/icon.png")) xbmc.executebuiltin("Container.Refresh") if 'total_max_download_rate' in url: settings.setSetting('total_max_download_rate',value=search) if 'total_max_upload_rate' in url: settings.setSetting('total_max_upload_rate',value=search) else: mensagemok(translate(40000),translate(600025)) sys.exit(0) def set_android_port(): ports = ['8621','8622','8623'] ports_pickle = ['http://p2p-strm.googlecode.com/svn/trunk/Modules/Android/sessconf/8621/sessconfig.pickle','http://p2p-strm.googlecode.com/svn/trunk/Modules/Android/sessconf/8622/sessconfig.pickle','http://p2p-strm.googlecode.com/svn/trunk/Modules/Android/sessconf/8623/sessconfig.pickle'] choose=xbmcgui.Dialog().select(translate(600015),ports) if choose > -1: escolha = ports_pickle[choose] session_pickle_android = os.path.join('/sdcard','.ACEStream','sessconfig.pickle') download_tools().Downloader(escolha,session_pickle_android,'',translate(40000)) settings.setSetting('android_port',ports[choose]) xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(40000), translate(600026), 1,addonpath+"/icon.png")) xbmc.executebuiltin("Container.Refresh") def set_android_cache_aloc(): acestream_settings_file = os.path.join('/sdcard','.ACEStream','playerconf.pickle') settings_content = readfile(acestream_settings_file) types = ['Memory','Disk'] choose=xbmcgui.Dialog().select(translate(70041),types) if choose > -1: escolha = types[choose] if escolha == 'Memory': settings_content = settings_content.replace("S'disk'","S'memory'") elif escolha == 'Disk': settings_content = settings_content.replace("S'memory'","S'disk'") else:pass save(acestream_settings_file, settings_content) xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(40000), translate(600026), 1,addonpath+"/icon.png")) xbmc.executebuiltin("Container.Refresh") def set_acestream_engine_cache_folder(url): if not xbmc.getCondVisibility('system.platform.windows'): opcao= xbmcgui.Dialog().yesno(translate(40000), translate(70011)) else: opcao = '' if opcao: if not xbmc.getCondVisibility('system.platform.Android'): acestream_settings_file = os.path.join(os.getenv("HOME"),'.ACEStream','playerconf.pickle') else: acestream_settings_file = os.path.join('/sdcard','.ACEStream','playerconf.pickle') settings_content = readfile(acestream_settings_file) cachefolder = xbmcgui.Dialog().browse(3, translate(70012) , 'myprograms','') if cachefolder: settings_content = settings_content.replace(url,cachefolder) save(acestream_settings_file, settings_content) settings.setSetting('acestream_cachefolder',cachefolder) xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(40000), translate(600026), 1,addonpath+"/icon.png")) xbmc.executebuiltin("Container.Refresh") def shutdown_hooks(): opcao= xbmcgui.Dialog().yesno(translate(40000), translate(70027),translate(70028) + str(xbmc.getSkinDir()) ) if opcao: mensagemok(translate(40000),translate(70029),translate(70030)) mensagemok(translate(40000),translate(70031)) opcao= xbmcgui.Dialog().yesno(translate(40000), translate(70032) ) if opcao: import xml.etree.ElementTree as ET skin_path = xbmc.translatePath("special://skin/") tree = ET.parse(os.path.join(skin_path, "addon.xml")) try: res = tree.findall("./res")[0] except: res = tree.findall("./extension/res")[0] xml_specific_folder = str(res.attrib["folder"]) xml_video_osd = os.path.join(xbmc.translatePath("special://skin/"),xml_specific_folder,"VideoOSD.xml") xml_content = readfile(xml_video_osd).replace('PlayerControl(Stop)','RunPlugin(plugin://plugin.video.p2p-streams/?mode=7)') try: save(xml_video_osd,xml_content) xbmc.executebuiltin("Notification(%s,%s,%i,%s)" % (translate(40000), translate(600026), 1,addonpath+"/icon.png")) except: mensagemok(translate(40000),'No permissions.') opcao= xbmcgui.Dialog().yesno(translate(40000), translate(70033) ) if opcao: from peertopeerutils.keymapeditor import * run()