fork(4) download
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import os,sys,xbmcplugin,xbmcgui,xbmc,xbmcaddon,shutil,urllib,time
  5. import resources.lib.requests as requests
  6.  
  7. addonID = 'plugin.program.iptvxtra'
  8. addon = xbmcaddon.Addon(id = addonID)
  9. addonPath = addon.getAddonInfo('path')
  10. profilePath = addon.getAddonInfo('profile')
  11.  
  12. __settings__ = addon
  13. icon = xbmc.translatePath("special://home/addons/plugin.program.iptvxtra/icon.png")
  14. iconb = xbmc.translatePath("special://home/addons/plugin.program.iptvxtra/resources/iconb.png")
  15. iconx = xbmc.translatePath("special://home/addons/plugin.program.iptvxtra/resources/iconx.png")
  16. eco_dir = xbmc.translatePath("special://home/addons/service.xbmc.ecoupd/")
  17. xmltv2de = xbmc.translatePath("special://temp/temp/xmltv_de_2.xmx")
  18. xmltv2th = xbmc.translatePath("special://temp/temp/xmltv_th_2.xmx")
  19.  
  20. temp = xbmc.translatePath("special://temp/")
  21. try:
  22. record_folder = xbmcaddon.Addon(id = 'plugin.video.iptvxtra-de').getSetting("record_folder")
  23. if record_folder == 'Kodi Cache Verzeichnis': record_folder = temp
  24. if not os.path.isdir(record_folder):
  25. xbmcaddon.Addon(id = 'plugin.video.iptvxtra-de').setSetting("record_folder","Kodi Cache Verzeichnis")
  26. record_folder = temp
  27. except: record_folder = temp
  28. record_folder = os.path.join(record_folder,'IPTVxtraPL','erfgbn.txt').replace('erfgbn.txt','')
  29.  
  30. popup = __settings__.getSetting("popup")
  31. downloaded = 0
  32.  
  33. xbmc.executebuiltin("Skin.SetString(iptvxtra_addon_aktuell,none)")
  34. xbmc.executebuiltin("Skin.Reset(iptvxtra_running)")
  35. xbmc.executebuiltin("Skin.SetString(iptvxtra_replaytext, "+''+")")
  36. xbmc.executebuiltin("Skin.SetString(iptvxtra_replaypuffer, 0)")
  37. xbmc.executebuiltin("Skin.SetString(iptvxtra_replayplaytime, 0)")
  38.  
  39. def AutoStart():
  40.  
  41. if __settings__.getSetting("popupx") == 'true':
  42. xbmc.executebuiltin('XBMC.Notification(IPTVxtra , diverse Auto-Starts werden vorbereitet ,4000,'+icon+')')
  43.  
  44.  
  45. # ------------------------------------------------------------------------------------------------------------------------------------------- wiederherstellen der DE Settings - START
  46. try:
  47. sxUser = 0
  48. sxBackup = 0
  49. saveset = xbmc.translatePath('special://userdata/addon_data/plugin.video.iptvxtra-de/backup.xml')
  50. orgset = xbmc.translatePath('special://userdata/addon_data/plugin.video.iptvxtra-de/settings.xml')
  51.  
  52. if os.path.isfile(saveset) and not os.path.isfile(orgset):
  53. try:
  54. shutil.copy(saveset, orgset)
  55. if __settings__.getSetting("popup") == 'true': xbmc.executebuiltin('XBMC.Notification(Backup Funktion , IPTVxtra DE-Settings wurden wiederhergestellt ,5000,'+icon+')')
  56. print ' ------------------------------------------------------------------------------ IPTVxtra Info-Message-Service 100'
  57. print ' -----------------------------------------------------------------------------------------------------------------'
  58. except: pass
  59.  
  60. try:
  61. fobj = open(orgset, "r")
  62. for line in fobj:
  63. if "login" in line and "xbmcuser" in line: sxUser = 1
  64. if "sBackup" in line and "true" in line: sxBackup = 1
  65. fobj.close()
  66. except: pass
  67. if sxBackup == 0 and sxUser == 1:
  68. try:
  69. fobj = open(saveset, "r")
  70. for line in fobj:
  71. if "sBackup" in line and "true" in line: sxBackup = 1
  72. break
  73. fobj.close()
  74. except: pass
  75.  
  76. if os.path.isfile(saveset) and sxBackup == 1 and sxUser == 1: # wiederherstellen
  77. try: os.remove(orgset)
  78. except: pass
  79. try:
  80. shutil.copy(saveset, orgset)
  81. if __settings__.getSetting("popup") == 'true': xbmc.executebuiltin('XBMC.Notification(Backup Funktion , IPTVxtra-DE Settings mussten wiederhergestellt werden ,5000,'+icon+')')
  82. print ' ------------------------------------------------------------------------------ IPTVxtra Info-Message-Service 102'
  83. print ' -----------------------------------------------------------------------------------------------------------------'
  84. except:
  85. print ' ------------------------------------------------------------------------------ IPTVxtra Info-Message-Service 103'
  86. print ' -----------------------------------------------------------------------------------------------------------------'
  87. except:
  88. print ' ------------------------------------------------------------------------------ IPTVxtra Info-Message-Service 104'
  89. print ' -----------------------------------------------------------------------------------------------------------------'
  90.  
  91. # -------------------------------------------------------------------------------------------------------------------------------------------------------------- ReplayPlayer
  92.  
  93. try: os.remove(record_folder + 'IPTVxtra.m3u8')
  94. except: pass
  95. shutil.rmtree(record_folder, ignore_errors=True)
  96. try:
  97. if len(filter(lambda x: x.endswith("_stream.ts"), os.listdir(record_folder))) > 0:
  98. for i in filter(lambda x: x.endswith("_stream.ts"), os.listdir(record_folder)):
  99. try: os.remove(record_folder + i)
  100. except: pass
  101. except: pass
  102. shutil.rmtree(record_folder, ignore_errors=True)
  103.  
  104. # -------------------------------------------------------------------------------------------------------------------------------------------------------------- EcoStream updater
  105. if __settings__.getSetting("ecodel") == 'true':
  106. try:
  107. if os.path.isdir(eco_dir) == True:
  108. shutil.rmtree(eco_dir)
  109. print ' -------------------------------------------------------- Verzeichnis service.xbmc.ecoupd wurde gelöscht'
  110. except:
  111. print ' -------------------------------------------------------- alter EcoUpdater-Service konnte nicht gelöscht werden'
  112. __settings__.setSetting("ecodel", "false")
  113.  
  114. # -------------------------------------------------------------------------------------------------------------------------------------------------------------- deutsches EPG
  115. if __settings__.getSetting("epgde") == 'true':
  116. try:
  117. if not os.path.isfile(xmltv2de) or os.stat(xmltv2de)[8] < (int(time.time()) - 72000) or os.path.getsize(xmltv2de) < 1200000:
  118. ab = requests.get('http://i...content-available-to-author-only...a.net/xbmc/_form/session/' + xbmcaddon.Addon(id = 'plugin.video.iptvxtra-de').getSetting("login").strip() + '.DE')
  119. if str(ab.status_code) == '200':
  120. if __settings__.getSetting("popup") == 'true':
  121. xbmc.executebuiltin('XBMC.Notification(XMLTV , deutsches EPG File wird geladen ,4000,'+iconx+')')
  122. try: urllib.urlretrieve('http://s...content-available-to-author-only...a.net/xmltv/xmltv_de_2.xmx', xmltv2de)
  123. except: urllib.urlretrieve('http://s...content-available-to-author-only...a.net/xmltv/xmltv_de_2.xmx', xmltv2de)
  124. print ' -------------------------------------------------------- DE XMLTV geladen'
  125. except:
  126. print ' -------------------------------------------------------- DE I.XMLTV konnte nicht geladen werden'
  127.  
  128. # -------------------------------------------------------------------------------------------------------------------------------------------------------------- thailändisches EPG
  129. if __settings__.getSetting("epgth") == 'true':
  130. try:
  131. if not os.path.isfile(xmltv2th) or os.stat(xmltv2th)[8] < (int(time.time()) - 72000) or os.path.getsize(xmltv2th) < 1800000:
  132. ab = requests.get('http://i...content-available-to-author-only...a.net/xbmc/_form/session/' + xbmcaddon.Addon(id = 'plugin.video.iptvxtra-th').getSetting("login").strip() + '.TH')
  133. if str(ab.status_code) == '200':
  134. if __settings__.getSetting("popup") == 'true':
  135. xbmc.executebuiltin('XBMC.Notification(XMLTV , thailaendisches EPG File wird geladen ,4000,'+iconx+')')
  136. try: urllib.urlretrieve('http://s...content-available-to-author-only...a.net/xmltv/xmltv_th_2.xmx', xmltv2th)
  137. except: urllib.urlretrieve('http://s...content-available-to-author-only...a.net/xmltv/xmltv_th_2.xmx', xmltv2th)
  138. print ' -------------------------------------------------------- TH XMLTV geladen'
  139. except:
  140. print ' -------------------------------------------------------- TH XMLTV konnte nicht geladen werden'
  141.  
  142. # -------------------------------------------------------------------------------------------------------------------------------------------------------------- Programm Starter
  143. if __settings__.getSetting("de") == 'true':
  144. __settings__.setSetting("th", "false")
  145. __settings__.setSetting("sport", "false")
  146. try:
  147. xbmc.executebuiltin('XBMC.RunAddon(plugin.video.iptvxtra-de)')
  148. except:
  149. __settings__.setSetting("de", "false")
  150. print ' -------------------------------------------------------- IPTVxtra-DE nicht installiert'
  151.  
  152. if __settings__.getSetting("th") == 'true':
  153. __settings__.setSetting("de", "false")
  154. __settings__.setSetting("sport", "false")
  155. try:
  156. xbmc.executebuiltin('XBMC.RunAddon(plugin.video.iptvxtra-th)')
  157. except:
  158. __settings__.setSetting("th", "false")
  159. print ' -------------------------------------------------------- IPTVxtra-TH nicht installiert'
  160.  
  161. if __settings__.getSetting("sport") == 'true':
  162. __settings__.setSetting("th", "false")
  163. __settings__.setSetting("de", "false")
  164. try:
  165. print ' -------------------------------------------------------- Plugin s.p.o.r.t.TV'
  166. xbmc.executebuiltin('XBMC.RunAddon(plugin.video.s.p.o.r.t)')
  167. except:
  168. __settings__.setSetting("sport", "false")
  169. print ' -------------------------------------------------------- Plugin s.p.o.r.t.TV nicht installiert'
  170.  
  171. if __settings__.getSetting("alt1") == 'true':
  172. try:
  173. print ' -------------------------------------------------------- alternatives Plugin'
  174. xbmc.executebuiltin('XBMC.RunAddon('+ __settings__.getSetting("alt2")+')')
  175. except:
  176. __settings__.setSetting("alt1", "false")
  177. print ' -------------------------------------------------------- alternatives Plugin nicht installiert'
  178.  
  179. # -------------------------------------------------------------------------------------------------------------------------------------------------------------- Player Info
  180. if __settings__.getSetting("playerinfox") == 'true':
  181. try:
  182. print ' -------------------------------------------------------- Playerinfo gestartet'
  183. if __settings__.getSetting("popup") == 'true':
  184. xbmc.executebuiltin('XBMC.Notification(Stream Restart , Stream-Restarter wird geladen ,4000,'+iconb+')')
  185. xbmc.sleep(3000)
  186. xbmc.executescript('special://home/addons/plugin.program.iptvxtra/playerinfo.py')
  187. except:
  188. __settings__.setSetting("playerinfox", "false")
  189. print ' -------------------------------------------------------- Playerinfo kann nicht gestartet werden'
  190.  
  191. # -------------------------------------------------------------------------------------------------------------------------------------------------------------- EcoUpdater
  192. if __settings__.getSetting("eco") == 'true':
  193. try:
  194. xbmc.executebuiltin('XBMC.RunPlugin(plugin://plugin.program.ecoupd)')
  195. except:
  196. __settings__.setSetting("eco", "false")
  197. xbmc.executebuiltin('XBMC.Notification(Error EcoUpdater, der EcoUpdater ist nicht installiert ,4000,'+icon+')')
  198. print ' -------------------------------------------------------- EcoUpdater nicht installiert'
  199.  
  200. # -------------------------------------------------------------------------------------------------------------------------------------------------------------- advancedsettings
  201. if __settings__.getSetting("as") == 'true':
  202. try:
  203. __settings__.setSetting("as", "false")
  204. xbmc.executebuiltin('XBMC.Notification(advancedsettings.xml, die advancedsettings.xml wurde kopiert - beim nächsten Neustart ist diese erst aktiv ,6000,'+icon+')')
  205. except:
  206. __settings__.setSetting("as", "false")
  207. xbmc.executebuiltin('XBMC.Notification(Error advancedsettings.xml, die advancedsettings.xml wurde nicht integriert ,4000,'+icon+')')
  208. print ' -------------------------------------------------------- advancedsettings.xml nicht installiert'
  209.  
  210.  
  211. if 'start'in sys.argv[2]:
  212. AutoStart()
  213. else:
  214. addon.openSettings()
  215.  
  216.  
  217.  
Runtime error #stdin #stdout #stderr 0.01s 9008KB
stdin
import xbmc, xbmcaddon, xbmcgui, xbmcplugin,os,base64
import shutil
import urllib2,urllib
import re
import extract
import downloader
import time

USER_AGENT = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3'
addon_id = 'plugin.video.mdwizard'
ADDON = xbmcaddon.Addon(id=addon_id)
User = ADDON.getSetting('User')
VERSION = "1.0.2"
PATH = "Mucky Ducks Wizard"           


    
def CATEGORIES():
    link = OPEN_URL('http://'+User+base).replace('\n','').replace('\r','')
    match = re.compile('name="(.+?)".+?rl="(.+?)".+?mg="(.+?)".+?anart="(.+?)".+?escription="(.+?)"').findall(link)
    for name,url,iconimage,fanart,description in match:
        addDir(name,url,1,iconimage,fanart,description)
    try:
        link = OPEN_URL(free).replace('\n','').replace('\r','')
        match = re.compile('name="(.+?)".+?rl="(.+?)".+?mg="(.+?)".+?anart="(.+?)".+?escription="(.+?)"').findall(link)
        for name,url,iconimage,fanart,description in match:
            addDir(name,url,1,iconimage,fanart,description)
    except: pass
    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("Mucky Ducks Wizard","Downloading ",'', 'Please Wait')
    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,"", "Extracting Zip Please Wait")
    print '======================================='
    print addonfolder
    print '======================================='
    extract.all(lib,addonfolder,dp)
    dialog = xbmcgui.Dialog()
    dialog.ok("KODI mediaportal", "Please Disconnect The Power To Take Effect","[COLOR yellow]Brought To You By KODI mediaportal[/COLOR]")
        
        
    



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
        
base = base64.decodestring('LmJ5ZXRob3N0OS5jb20vd2l6YXJkLnR4dA==')
free = base64.decodestring('aHR0cDovL2ZyZWVmaXguYnlldGhvc3Q5LmNvbS93aXphcmQudHh0')  
        
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]))
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "prog.py", line 4, in <module>
ImportError: No module named xbmcplugin