import xbmc, xbmcaddon, xbmcgui, xbmcplugin,os,sys
import shutil
import urllib2,urllib
import re
import extract
import time
import downloader
import plugintools
import zipfile
import ntpath
USER_AGENT = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3'
base='kodi-forum.nl'
ADDON=xbmcaddon.Addon(id='plugin.video.eigenbuild')
dialog = xbmcgui.Dialog()
VERSION = "1.0.0"
PATH = "kodi-forum.nl"
def CATEGORIES():
addDir("Mijn eigen build","https://www.dropbox.com/s/anpr6vlk6w7bxen/sliknepflixbuild1.0.zip?dl=1",1,"https://kodi-forum.nl/images/og-logo.png","https://kodi-forum.nl/images/og-logo.png","Mijn eigen build")
setView('movies', 'MAIN')
def OPEN_URL(url):
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
response = urllib2.urlopen(req)
link=response.read()
response.close()
return link
def wizard(name,url,description):
path = xbmc.translatePath(os.path.join('special://home/addons','packages'))
dp = xbmcgui.DialogProgress()
dp.create("Eigen Build - www.kodi-forum.nl","Downloaden",'', 'Even Geduld A.U.B.')
lib=os.path.join(path, name+'.zip')
try:
os.remove(lib)
except:
pass
downloader.download(url, lib, dp)
addonfolder = xbmc.translatePath(os.path.join('special://','home'))
time.sleep(2)
dp.update(0,"", "Uitpakken")
print '======================================='
print addonfolder
print '======================================='
extract.all(lib,addonfolder,dp)
dialog = xbmcgui.Dialog()
dialog.ok("DOWNLOAD COMPLEET www.kodi-forum.nl", 'Je moet Kodi nu geforceerd sluiten. Klik nu op OK om Kodi nu te sluiten,', 'Sluit Kodi [COLOR=red][B]NIET[/COLOR][/B] in Kodi zelf., Als het om 1 of andere reden niet lukt om kodi af te sluiten haal dan even de stekker uit je device.')
killxbmc()
def killxbmc():
choice = xbmcgui.Dialog().yesno('Kodi geforceerd afsluiten - www.kodi-forum.nl', 'Je staat nu op het punt om Kodi af te sluiten', 'Wil je verder gaan?', nolabel='[COLOR=red][B]NEE[/COLOR][/B]',yeslabel='[COLOR=green][B]JA[/COLOR][/B]')
if choice == 0:
return
elif choice == 1:
pass
myplatform = platform()
print "Platform: " + str(myplatform)
if myplatform == 'osx': # OSX
print "############ try osx force close #################"
try: os.system('killall -9 XBMC')
except: pass
try: os.system('killall -9 Kodi')
except: pass
dialog.ok("[COLOR=red][B]WAARSCHUWING !!![/COLOR][/B]", "Als je deze waarschuwing ziet betekend het dat het geforceerd sluiten is mislukt. Sluit Kodi door de stekker uit je device te halen, [COLOR=lime]NIET[/COLOR] via Kodi zelf.",'')
elif myplatform == 'linux': #Linux
print "############ try linux force close #################"
try: os.system('killall XBMC')
except: pass
try: os.system('killall Kodi')
except: pass
try: os.system('killall -9 xbmc.bin')
except: pass
try: os.system('killall -9 kodi.bin')
except: pass
dialog.ok("[COLOR=red][B]WAARSCHUWING !!![/COLOR][/B]", "Als je deze waarschuwing ziet betekend het dat het geforceerd sluiten is mislukt. Sluit Kodi door de stekker uit je device te halen, [COLOR=lime]NIET[/COLOR] via Kodi zelf.",'')
elif myplatform == 'android': # Android
print "############ try android force close #################"
try: os.system('adb shell am force-stop org.xbmc.kodi')
except: pass
try: os.system('adb shell am force-stop org.kodi')
except: pass
try: os.system('adb shell am force-stop org.xbmc.xbmc')
except: pass
try: os.system('adb shell am force-stop org.xbmc')
except: pass
dialog.ok("[COLOR=red][B]WAARSCHUWING !!![/COLOR][/B]", "Je gebruikt nu een Android device, Je ", "[COLOR=yellow][B]MOET[/COLOR][/B] Kodi geforceerd sluiten. [COLOR=lime]NIET[/COLOR] via het Kodi menu.","Gebruik Taak Beheer of trek de stekker uit je device.")
elif myplatform == 'windows': # Windows
print "############ try windows force close #################"
try:
os.system('@ECHO off')
os.system('tskill XBMC.exe')
except: pass
try:
os.system('@ECHO off')
os.system('tskill Kodi.exe')
except: pass
try:
os.system('@ECHO off')
os.system('TASKKILL /im Kodi.exe /f')
except: pass
try:
os.system('@ECHO off')
os.system('TASKKILL /im XBMC.exe /f')
except: pass
dialog.ok("[COLOR=red][B]WAARSCHUWING !!![/COLOR][/B]", "Als je deze waarschuwing ziet betekend het dat het geforceerd sluiten is mislukt. Sluit Kodi door de pc opnieuw te starten, [COLOR=lime]NIET[/COLOR] via Kodi zelf.")
else: #ATV
print "############ try atv force close #################"
try: os.system('killall AppleTV')
except: pass
print "############ try raspbmc force close #################" #OSMC / Raspbmc
try: os.system('sudo initctl stop kodi')
except: pass
try: os.system('sudo initctl stop xbmc')
except: pass
dialog.ok("[COLOR=red][B]WAARSCHUWING !!![/COLOR][/B]", "Als je deze waarschuwing ziet betekend het dat het geforceerd sluiten is mislukt. Je ", "[COLOR=yellow][B]MOET[/COLOR][/B] Kodi geforceerd sluiten. [COLOR=lime]NIET[/COLOR] via het Kodi menu.","Android kan niet gevonden worden, Haal nu de stekker uit je device.")
def platform():
if xbmc.getCondVisibility('system.platform.android'):
return 'android'
elif xbmc.getCondVisibility('system.platform.linux'):
return 'linux'
elif xbmc.getCondVisibility('system.platform.windows'):
return 'windows'
elif xbmc.getCondVisibility('system.platform.osx'):
return 'osx'
elif xbmc.getCondVisibility('system.platform.atv2'):
return 'atv2'
elif xbmc.getCondVisibility('system.platform.ios'):
return 'ios'
def addDir(name,url,mode,iconimage,fanart,description):
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&iconimage="+urllib.quote_plus(iconimage)+"&fanart="+urllib.quote_plus(fanart)+"&description="+urllib.quote_plus(description)
ok=True
liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png", thumbnailImage=iconimage)
liz.setInfo( type="Video", infoLabels={ "Title": name, "Plot": description } )
liz.setProperty( "Fanart_Image", fanart )
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=False)
return ok
def get_params():
param=[]
paramstring=sys.argv[2]
if len(paramstring)>=2:
params=sys.argv[2]
cleanedparams=params.replace('?','')
if (params[len(params)-1]=='/'):
params=params[0:len(params)-2]
pairsofparams=cleanedparams.split('&')
param={}
for i in range(len(pairsofparams)):
splitparams={}
splitparams=pairsofparams[i].split('=')
if (len(splitparams))==2:
param[splitparams[0]]=splitparams[1]
return param
params=get_params()
url=None
name=None
mode=None
iconimage=None
fanart=None
description=None
try:
url=urllib.unquote_plus(params["url"])
except:
pass
try:
name=urllib.unquote_plus(params["name"])
except:
pass
try:
iconimage=urllib.unquote_plus(params["iconimage"])
except:
pass
try:
mode=int(params["mode"])
except:
pass
try:
fanart=urllib.unquote_plus(params["fanart"])
except:
pass
try:
description=urllib.unquote_plus(params["description"])
except:
pass
print str(PATH)+': '+str(VERSION)
print "Mode: "+str(mode)
print "URL: "+str(url)
print "Name: "+str(name)
print "IconImage: "+str(iconimage)
def setView(content, viewType):
# set content type so library shows more views and info
if content:
xbmcplugin.setContent(int(sys.argv[1]), content)
if ADDON.getSetting('auto-view')=='true':
xbmc.executebuiltin("Container.SetViewMode(%s)" % ADDON.getSetting(viewType) )
if mode==None or url==None or len(url)<1:
CATEGORIES()
elif mode==1:
wizard(name,url,description)
xbmcplugin.endOfDirectory(int(sys.argv[1]))