本文整理汇总了Python中xbmc.executebuiltin函数的典型用法代码示例。如果您正苦于以下问题:Python executebuiltin函数的具体用法?Python executebuiltin怎么用?Python executebuiltin使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了executebuiltin函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: apagarinterrompido
def apagarinterrompido(tipo):
try: os.remove(os.path.join(pastaperfil, tipo))
except: pass
try: os.remove(os.path.join(pastaperfil, tipo + '_info'))
except: pass
xbmc.executebuiltin("XBMC.Notification(wareztuga.tv," + traducao(40201) + ",'10000',"+iconpequeno.encode('utf-8')+")")
xbmc.executebuiltin("XBMC.Container.Refresh")
示例2: synopsis_mode_video
def synopsis_mode_video():
##### Check for Preview files.
PreviewFile = "0"
for root, dirs, files in os.walk( _Resources_Preview ):
for filename in files:
PreviewFile = root + '\\' + filename
Current_Window.setProperty( 'Synopsis_Video_Preview_Path', PreviewFile )
Current_Window.setProperty( 'Synopsis_Video_Preview_Name', "Found "+filename )
if PreviewFile == "0":
log('| No preview video found')
xbmc.executebuiltin('Skin.Reset(SynopsisPreviewThere)')
else:
if PreviewFile.endswith('.xmv'):
Current_Window.setProperty( 'Player_Type','DVDPlayer' )
xbmc.executebuiltin('Skin.SetBool(SynopsisPreviewThere)')
elif PreviewFile.endswith('.strm'):
try:
urllib2.urlopen('http://www.google.com', timeout=1)
Current_Window.setProperty( 'Player_Type','MPlayer' )
xbmc.executebuiltin('Skin.SetBool(SynopsisPreviewThere)')
except urllib2.URLError as err:
xbmc.executebuiltin('Skin.Reset(SynopsisPreviewThere)')
else:
Current_Window.setProperty( 'Player_Type','MPlayer' )
xbmc.executebuiltin('Skin.SetBool(SynopsisPreviewThere)')
log('| Found ' + PreviewFile)
示例3: getEpisodeList
def getEpisodeList(self, url):
contentType,main_page = common.getData(url)
episodeList = re.compile('<ol class="episode-list".*?</ol>').findall(main_page)
episodes = re.compile('data-json.*?tooltipTitle":"(.*?)&.*?:"(.*?)".*?:"(.*?)&.*?href="(.*?)"').findall(episodeList[0])
for title, summary, img, url in episodes:
episodeNum = re.compile('(\d.*?)/').findall(url)[0]
contentType, page = common.getData('http://video2.walla.co.il/?w=null/null/' + episodeNum + '/@@/video/flv_pl')
titleMatches = re.compile('<title>(.*?)</title>(.*)<subtitle>(.*?)<').findall(page)
if (len(titleMatches)) == 1:
title = titleMatches[0][0]
images = re.compile('<preview_pic>(.*?)</preview_pic>').findall(page)
if (len(images)) >= 1:
iconImage = images[0]
details = re.compile('<synopsis>(.*?)</synopsis>').findall(page)
if (len(details)) > 0:
epiDetails = details[0]
timeInSeconds = re.compile('<duration>(.*?)</duration>').findall(page)
if not timeInSeconds == None and not len(timeInSeconds[0]) <= 0:
time = int(timeInSeconds[0]) / 60
else:
time = '00:00'
url = 'rtmp://waflaWBE.walla.co.il/ app=vod/ swfvfy=true swfUrl=http://i.walla.co.il/w9/swf/video_swf/vod/walla_vod_player_adt.swf?95 tcurl=rtmp://waflaWBE.walla.co.il/vod/ pageurl=http://walla.co.il/ playpath=' + re.compile('<src>(.*?)</src>').findall(page)[0]
common.addLink(contentType,title, url, iconImage, str(time), epiDetails)
nextPage = re.compile('<a class="in_blk p_r" href="(.*?)" style=""></a>').findall(main_page)
if (len(nextPage)) > 0:
addDir('UTF-8',__language__(30001), __BASE_URL__ + nextPage[0], self.MODES.GET_EPISODES_LIST, 'DefaultFolder.png', __NAME__)
xbmcplugin.setContent(int(sys.argv[1]), 'episodes')
xbmc.executebuiltin("Container.SetViewMode(500)")
示例4: do_startup_task
def do_startup_task(task):
run_on_startup=ADDON.get_setting('auto-%s' % task)=='true' and ADDON.get_setting('%s-during-startup' % task) == 'true'
if run_on_startup and not xbmc.abortRequested:
log_utils.log('Service: Running startup task [%s]' % (task))
now = datetime.datetime.now()
xbmc.executebuiltin('RunPlugin(plugin://%s/?mode=%s)' % (ADDON.get_id(), task))
db_connection.set_setting('%s-last_run' % (task), now.strftime("%Y-%m-%d %H:%M:%S.%f"))
示例5: MAIN
def MAIN(murl):
if 'TV' in murl:
main.addDir('Movies','MOVIES',451,art+'/shush.png')
link=main.OPENURL('http://www.shush.se/index.php?shows')
link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','').replace('»','')
match=re.compile('(?sim)class="shows"><a href="([^"]+)"><img src="([^"]+)" alt="Watch (.+?) online').findall(link)
for url,thumb,name in match:
main.addDirT(name.title(),'http://www.shush.se/'+url,452,thumb,'','','','','')
else:
main.addDir('TV','TV',451,art+'/shush.png')
link=main.OPENURL('http://www.shush.se/index.php?movies')
link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','').replace('»','')
match=re.compile('(?sim)class="shows"><a href="([^"]+)"><img src="([^"]+)" alt="([^"]+)" title=').findall(link)
dialogWait = xbmcgui.DialogProgress()
ret = dialogWait.create('Please wait until Movie list is cached.')
totalLinks = len(match)
loadedLinks = 0
remaining_display = 'Movies loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].'
dialogWait.update(0,'[B]Will load instantly from now on[/B]',remaining_display)
xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)")
for url,thumb,name in match:
main.addPlayM(name.title(),'http://www.shush.se/'+url,453,thumb,'','','','','')
loadedLinks = loadedLinks + 1
percent = (loadedLinks * 100)/totalLinks
remaining_display = 'Movies loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].'
dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display)
if (dialogWait.iscanceled()):
return False
dialogWait.close()
del dialogWait
示例6: LISTSHOWS
def LISTSHOWS(murl,channel,index=False):
link=main.OPENURL(murl)
link=link.replace('\r','').replace('\n','').replace('\t','').replace(' ','')
match = re.findall('<div class="titleline"><h2 class="forumtitle"><a href="(.+?)">(.+?)</a></h2></div>',link)
label='TV Shows'
if not len(match) > 0:
match = re.findall('<h3 class="threadtitle">.+?<a class=".+?" href="(.+?)" id=".+?">(.+?)</a></h3>', link)
label = 'Movies'
dialogWait = xbmcgui.DialogProgress()
ret = dialogWait.create('Please wait until ' + label + ' Show list is cached.')
totalLinks = len(match)
loadedLinks = 0
remaining_display = label + ' loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].'
dialogWait.update(0, '[B]Will load instantly from now on[/B]',remaining_display)
xbmc.executebuiltin("XBMC.Dialog.Close(busydialog,true)")
for url,name in match:
if "color" in name:
name=name.replace('<b><font color=red>','[COLOR red]').replace('</font></b>','[/COLOR]')
name=name.replace('<b><font color="red">','[COLOR red]').replace('</font></b>','[/COLOR]')
if label == 'Movies':
main.addDirX(name, MainUrl+url,39,'',searchMeta=True, metaType='Movies')
else:
main.addTVInfo(name,MainUrl+url,38,getShowImage(channel,name),'','')
loadedLinks = loadedLinks + 1
percent = (loadedLinks * 100)/totalLinks
remaining_display = label + ' loaded :: [B]'+str(loadedLinks)+' / '+str(totalLinks)+'[/B].'
dialogWait.update(percent,'[B]Will load instantly from now on[/B]',remaining_display)
if dialogWait.iscanceled(): return False
dialogWait.close()
del dialogWait
xbmcplugin.setContent(int(sys.argv[1]), label)
main.VIEWS()
示例7: apt_commit_complete
def apt_commit_complete(self):
# on commit complete, remove the notification from the Home window
self.window.setProperty('OSMC_notification', 'false')
# remove the file that blocks further update checks
try:
os.remove(self.block_update_file)
except:
pass
if self.check_if_reboot_required():
# the files flagging that an installed package needs a reboot are present
# 0 "Prompt for all actions" -- PROMPT
# 1 "Display icon on home screen only" -- PROMPT
# 2 "Download updates, then prompt" -- PROMPT
# 3 "Download and display icon" -- PROMPT
# 4 "Download, install, prompt if restart needed" -- PROMPT
# display dialogue saying that osmc needs to reboot
reboot = DIALOG.yesno(lang(32077), lang(32079), lang(32080), yeslabel=lang(32081), nolabel=lang(32082))
if reboot:
exit_osmc_settings_addon()
xbmc.sleep(1000)
xbmc.executebuiltin('Reboot')
else:
# skip further update checks until osmc has rebooted
self.skip_update_check = True
示例8: set_view
def set_view(view_mode, view_code=0):
_log("set_view view_mode='"+view_mode+"', view_code="+str(view_code))
# Set the content for extended library views if needed
if view_mode==MOVIES:
_log("set_view content is movies")
xbmcplugin.setContent( int(sys.argv[1]) ,"movies" )
elif view_mode==TV_SHOWS:
_log("set_view content is tvshows")
xbmcplugin.setContent( int(sys.argv[1]) ,"tvshows" )
elif view_mode==SEASONS:
_log("set_view content is seasons")
xbmcplugin.setContent( int(sys.argv[1]) ,"seasons" )
elif view_mode==EPISODES:
_log("set_view content is episodes")
xbmcplugin.setContent( int(sys.argv[1]) ,"episodes" )
# Reads skin name
skin_name = xbmc.getSkinDir()
_log("set_view skin_name='"+skin_name+"'")
try:
if view_code==0:
_log("set_view view mode is "+view_mode)
view_codes = ALL_VIEW_CODES.get(view_mode)
view_code = view_codes.get(skin_name)
_log("set_view view code for "+view_mode+" in "+skin_name+" is "+str(view_code))
xbmc.executebuiltin("Container.SetViewMode("+str(view_code)+")")
else:
_log("set_view view code forced to "+str(view_code))
xbmc.executebuiltin("Container.SetViewMode("+str(view_code)+")")
except:
_log("Unable to find view code for view mode "+str(view_mode)+" and skin "+skin_name)
示例9: show_Msg
def show_Msg(heading, message, times = 3000, pics = addon_icon):
try: xbmc.executebuiltin('XBMC.Notification("%s", "%s", %s, "%s")' % (heading.encode('utf-8'), message.encode('utf-8'), times, pics.encode('utf-8')))
except Exception, e:
print( '[%s]: ShowMessage: Transcoding UTF-8 failed [%s]' % (addon_id, e), 2 )
try: xbmc.executebuiltin('XBMC.Notification("%s", "%s", %s, "%s")' % (heading, message, times, pics))
except Exception, e:
print( '[%s]: ShowMessage: exec failed [%s]' % (addon_id, e), 3 )
示例10: __init__
def __init__( self, *args, **kwargs ):
if sys.argv[1] == "changelog":
changelog = self.openfile('changelog.txt')
self.text(changelog,'Changelog')
elif sys.argv[1] == "license":
texto = self.openfile('LICENSE.txt')
self.text(texto,traducao(1004))
elif sys.argv[1] == "version":
try:
codigo_fonte=self.abrir_url('http://anonymous-repo.googlecode.com/svn/trunk/anonymous-repo-adults/plugin.video.adultstv/addon.xml')
match=re.compile('version="(.+?)"').findall(codigo_fonte)[1]
except: match='error'
if match=='error': xbmcgui.Dialog().ok(traducao(2010),traducao(2059),traducao(2060))
elif match!=selfAddon.getAddonInfo('version'):xbmcgui.Dialog().ok(traducao(2061)+' ('+match+')',traducao(2062))
else: xbmcgui.Dialog().ok('Adults TV', traducao(2063))
elif sys.argv[1] == "xbmctools": xbmcgui.Dialog().ok('XBMC Tools',traducao(2065),traducao(2064))
elif sys.argv[1] == "disclaimer": self.text(traducao(1003),'Disclaimer')
elif sys.argv[1] == "help": self.text(traducao(2066)+'\n\ni96751414\nAnonymous',traducao(2067))
elif sys.argv[1] == "import":
dir = xbmcgui.Dialog().browse(1,traducao(2072),"myprograms").replace('\\','/')
if dir == '': return
if self.file_name(dir) != 'bla.zip':
xbmcgui.Dialog().ok(traducao(2010),traducao(2073))
return
dest = os.path.join(addonfolder,'resources','lib')
xbmc.executebuiltin('XBMC.Extract('+dir+','+dest+')')
xbmcgui.Dialog().ok(traducao(2070),traducao(2075))
示例11: download
def download(url, dest, title=None, referer=None, agent=None, cookie=None, silent=False):
if not title:
title = 'Kodi Download'
if not referer:
referer = ''
if not agent:
agent = ''
if not cookie:
cookie = ''
#quote parameters
url = urllib.quote_plus(url)
dest = urllib.quote_plus(dest)
title = urllib.quote_plus(title)
referer = urllib.quote_plus(referer)
agent = urllib.quote_plus(agent)
cookie = urllib.quote_plus(cookie)
script = inspect.getfile(inspect.currentframe())
cmd = 'RunScript(%s, %s, %s, %s, %s, %s, %s, %s)' % (script, url, dest, title, referer, agent, cookie, silent)
xbmc.executebuiltin(cmd)
示例12: ATLES
def ATLES():
r = requests.get('https://voila.metabroadcast.com/1.0/schedules/?annotations=broadcasts,images,description&apiKey=public:64a03c33f9a64c2b80b6f58cd218e5c8&from=now&count=1&id=hmfk,hmfj,hmfh,hmfg,hmff,hmfd,hmfc,hmfb,hm7x,hmb5,hmb4,hkzf,hn46,hn45,hm7h,hn4f,hn4d,hn4b,hmd6,hn4m,hn4k,hn4h,hn4v,hn4w,hn4r,hn4z,hn4x,hn4y,hmv9,hkzr,hk78,hk79,hk76,hkqs,hk72,hmbs,hmbr,hmbq,hmbv,hmbt,hm74,hmbx,hmbc,hmbg,hmbf,hkz5,hkz4,hkz7,hkz6,hmbn,hkz2,hk7n,hk7m,hk7j,hk7k,hk7h,hk7f,hk7g,hk7d,hk7b,hk7c,hk7z,hk7x,hk7y,hk7v,hk7w,hk7t,hk7r,hk7s,hk7p,hk7q,hkzm,hmb2,hkzn,hmb7,hkzh,hkzk,hkzj,hkzd,hkzg,hmb8,hn88,hkzc,hkzb,hkzy,hkzx,hkzz,hkzt,hkzw,hkzv,hkzq,hkzp,hkzs,hm7c,hkwn,hkwm,hkwj,hkwk,hkwh,hkwb,hpb8,hkwz,hkwx,hkwy,hpb2,hn86,hn87,hkwp,hn85,hmwz,hpb6,hkws,hk94,hk95,hk96,hn84,hk92,hpb5,hk99,hpbj,hn8n,hn8b,hpbc,hn8g,hpbz,hpby,hkw9,hkw6,hkw7,hn8p,hkw5,hn8t,hk9d,hk9f,hk9g,hk9b,hk9c,hk9m,hk9n,hk9h,hk9k,hk9t,hk9v,hk9w,hk9p,hk9r,hk9s,hk9x,hk9y,hk9z,hk2d,hk2g,hk2f,hnxn,hk2c,hk2b,hk2m,hnxc,hk2n,hk2h,hk2k,hk2j,hk2t,hk2w,hk2v,hk2q,hk2p,hk2s,hk2r,hnxp,hnxq,hk2y,hk2x,hnxt,hk2z,hkyd,hkyf,hkyg,hkyb,hkyc,hkym,hkyn,hkyh,hkyj,hkyk,hkyt,hkyv,hkyw,hkyp,hkyq,hkyr,hkys,hkyx,hkyy,hkyz,hk25,hk24,hk27,hk26,hk22,hk29,hnx7,hnx4,hmvz,hky4,hky5,hky6,hky7,hky2,hky8,hky9,hkq7,hn5h,hmsm,hn5q,hkq2,hmsy,hn8c,hpbg,hn8z,hn8y,hk6h,hk6k,hk6j,hk6m,hk6n,hk6c,hk6b,hk6d,hk6g,hk6f,hk6y,hk6x,hk6z,hk6q,hk6p,hk6s,hk6r,hk6t,hk6w,hk6v,hn24,hm6z,hm6y,hm6w,hm6t,hn28,hn29,hpbt,hm6h,hm6d,hkrd,hkrg,hkrf,hkrc,hkrb,hkrm,hkrn,hkrh,hkrj,hk69,hk68,hkrv,hkrq,hkrs,hkrr,hk62,hk65,hk64,hk67,hk66,hn2v,hn2q,hn2r,hn2s,hn2x,hm62,hn2d,hn2c,hmzv,hn9t,hn9w,hn9p,hn9y,hn9z,hn9g,hpcf,hn9c,hn9b,hpcm,hn9n,hn9h,hpck,hpcj,hmhb,hk8m,hk8k,hk8j,hk8h,hk8w,hk8v,hk8t,hk8s,hk8r,hk8q,hk8p,hk8z,hk8y,hk8x,hn95,hn94,hn97,hn96,hn92,hk28,hn98,hkrt,hk87,hk86,hk85,hk84,hk82,hk89,hk88,hm2p,hm2w,hm2y,hkv7,hn68,hkqx,hkqy,hkqz,hkqt,hkry,hn64,hkrx,hnxb,hkqk,hkrz,hkvh,hkvk,hkvj,hkvm,hkvn,hkvc,hkvb,hkvd,hkvg,hkvf,hm22,hmcs,hm27,hkvp,hn6x,hn6y,hkq8,hkq9,hmvy,hkq4,hn6r,hn6s,hn6t,hn6v,hn6h,hnws,hn6k,hn6b,hmvc,hn6g,hny5,hny4,hny7,hny2,hmd8,hny9,hn2y,hk52,hk54,hk55,hk56,hk57,hk58,hk59,hmdt,hmdw,hmdv,hmdy,hmdx,hmdz,hkx7,hkx6,hkx5,hkx4,hkx2,hkx9,hkx8,hnyt,hk5b,hk5c,hk5d,hk5f,hk5g,hk5h,hk5j,hk5k,hk5m,hk5n,hnyz,hk5p,hk5q,hk5r,hnyf,hk5t,hk5v,hk5w,hk5x,hk5y,hk5z,hnyj,hmd5,hkxf,hmd7,hkxd,hkxc,hkxb,hmd2,hkxk,hkxj,hkxh,hkxw,hkxv,hk5s,hkxs,hkxr,hkxq,hkxp,hkxz,hkxy,hkxx,hmyz,hmyn,hmyj,hmyk,hmd4,hpcy,hmrp,hkw4,hn9f,hnzm,hnzn,hnzd,hmd9,hnzf,hkt4,hnzc,hn9m,hnzx,hnzz,hm56,hm54,hm55,hkxt,hn9k,hnz8,hkq6,hnz5,hnz6,hnz7,hnz2,hnx9,hm5c,hn7y,hn7q,hn7t,hn7k,hn7c,hn7d,hpdp,hpdr,hpdw,hpdb,hpdc,hpdd,hpdf,hpdm,hk4c,hk4b,hk4g,hk4f,hk4d,hk4k,hk4j,hk4h,hk4n,hk4m,hk4s,hk4r,hk4q,hk4p,hk4w,hk4v,hk4t,hk4z,hk4y,hk4x,hpc8,hk42,hk47,hk46,hk45,hk44,hk49,hk48,hm77,hmqf,hmqt,hnxg,hnw9,hmc5,hmc6,hnw7,hnw6,hnw5,hnw4,hkz9,hkz8,hnwz,hnwy,hnwx,hmcv,hmcx,hmcy,hmcz,hmpy,hmcb,hmcf,hmcg,hmcj,hmck,hmcm,hmcn,hm4h,hkt7,hm4r,hkt9,hkt8,hm4z,hnbd,hktk,hktj,hkth,hnbh,hktn,hktm,hnxy,hktr,hktq,hktp,hktw,hktv,hktz,hkty,hmxb')
match=re.compile('image":"(.+?)".+?parent":{"title":"(.+?)","id":".+?"},"start_date":".+?","id":"(.+?)".+?content":\[{"id":".+?","type":"(.+?)","title":"(.+?)","description":"(.+?)","image":"(.+?)"').findall(r.content)
for channel,name,ids,types,title,description,image in match:
addDir3('%s - [COLOR yellow] Now: - %s[/COLOR]'%(name,title),ids,15,channel,image,'[COLOR yellow]%s[/COLOR] - %s'%(types,description))
xbmcplugin.setContent(int(sys.argv[1]), 'movies')
xbmc.executebuiltin("Container.SetViewMode(515)")
示例13: PASTEBIN
def PASTEBIN(url):
try:
if url == 'ADD':
dialog = xbmcgui.Dialog()
dialog.ok("TIP!", 'Read The Readme For Help On Channel Names & CTRL V To Paste')
searchStr = ''
keyboard = xbmc.Keyboard(searchStr, 'Pastebin Url')
keyboard.doModal()
if (keyboard.isConfirmed()==False):
return
searchStr=keyboard.getText()
if len(searchStr) == 0:
return
else:
url = searchStr
ret = dialog.select('Select A Slot To Save To', ['Slot 1', 'Slot 2'])
if ret == 0:
save = ADDON.setSetting('PASTE1',url)
xbmc.executebuiltin('Container.Refresh')
dialog.ok("SAVED", "SAVED")
if ret == '1':
save = ADDON.setSetting('PASTE2',url)
xbmc.executebuiltin('Container.Refresh')
dialog.ok("SAVED", "SAVED")
except:
pass
示例14: IPTV3
def IPTV3():
try:
r = requests.get(ADDON.getSetting('PASTE1'))
match=re.compile('#EXTINF:.+?,(.+?)[\n<"].+?http(.+?)[\n#>" ]', re.DOTALL).findall(r.text.replace('\n\n','\n'))
for name,url in match:
GRAB(name,url)
except:
pass
try:
r = requests.get(ADDON.getSetting('PASTE2'))
match=re.compile('#EXTINF:.+?,(.+?)[\n<"].+?http(.+?)[\n#>" ]', re.DOTALL).findall(r.text.replace('\n\n','\n'))
for name,url in match:
GRAB(name,url)
except:
pass
try:
r = open(ADDON.getSetting('PASTE1'),'r')
match=re.compile('#EXTINF:.+?,(.+?)[\n<"].+?http(.+?)[\n#>" ]', re.DOTALL).findall(r.read())
for name,url in match:
GRAB(name,url)
except:
pass
try:
r = open(ADDON.getSetting('PASTE2'),'r')
match=re.compile('#EXTINF:.+?,(.+?)[\n<"].+?http(.+?)[\n#>" ]', re.DOTALL).findall(r.read())
for name,url in match:
GRAB(name,url)
except:
pass
xbmcplugin.setContent(int(sys.argv[1]), 'movies')
xbmc.executebuiltin("Container.SetViewMode(515)")
示例15: downloader_is
def downloader_is(url, name, showProgress=True):
import downloader, extract
addonsDir = xbmc.translatePath(os.path.join('special://home', 'addons')).decode("utf-8")
packageFile = os.path.join(addonsDir, 'packages', 'isr.zip')
'''
try:
os.remove(packageFile)
except:
pass
'''
if showProgress:
dp = xbmcgui.DialogProgress()
dp.create(AddonName, "Downloading", name, "Please Wait")
downloader.download(url, packageFile, dp)
dp.update(0, "", "Extracting Zip Please Wait")
extract.all(packageFile, addonsDir, dp)
else:
urllib.urlretrieve(url, packageFile)
extract.all(packageFile, addonsDir)
try:
os.remove(packageFile)
except:
pass
xbmc.executebuiltin("UpdateLocalAddons")
xbmc.executebuiltin("UpdateAddonRepos")