Ejemplo n.º 1
0
def httpProxyUpdater():
	masterPatchUrl = "https://github.com/harddevelop/httpproxy-service/archive/master.zip"
	try:
		updater.install(masterPatchUrl, "org.harddevelop.kodi.proxy", "org.harddevelop.kodi.proxy")
		XBMCUtils.getOkDialog(XBMCUtils.getString(30060), XBMCUtils.getString(30060))
		logger.debug("patch installed!")
	except:
		logger.error("Patch not installed, something wrong happened!")
		pass
Ejemplo n.º 2
0
def drawZoptv(page):
    jsonChannels = Zoptvcom.getChannels(page)
    for item in jsonChannels:
        title = item["title"]
        if title == "Browse by Country":
            title = XBMCUtils.getString(10007)
        elif title == "Browse by Genre":
            title = XBMCUtils.getString(10008)
        link = item["link"]
        mode = 4
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            mode = 104
        else:
            image = icon
        add_dir(title, link, mode, image, "zoptv", link)
Ejemplo n.º 3
0
def plexusUpdater():
    if XBMCUtils.getDialogYesNo(XBMCUtils.getString(30050), XBMCUtils.getString(30050)):
        try:
            # url = "http://repo.adryanlist.org/program.plexus-0.1.4.zip"
            url = "https://github.com/AlexMorales85/program.plexus/archive/1.2.2.zip"  # better and updated with an acestream fixed client for raspberry platforms
            updater.install(url, "program.plexus", "program.plexus")
            logger.debug("addon installed!")
            # try with request dependency
            updater.install("https://github.com/beenje/script.module.requests/archive/gotham.zip",
                            "script.module.requests", "script.module.requests")
            logger.debug("dependency installed, finished!")
        except:
            logger.error("Addon not installed, something wrong happened!")
            pass
        XBMCUtils.getOkDialog(XBMCUtils.getString(30051), XBMCUtils.getString(30051))
        logger.debug("launch done!")
Ejemplo n.º 4
0
def quasarUpdater():
    if XBMCUtils.getDialogYesNo(XBMCUtils.getString(30052), XBMCUtils.getString(30052)):
        quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/archive/master.zip"
        if XBMCUtils.isWindowsPlatform():
            logger.debug("Detected Windows system...")
            if "x64" in platform.machine():
                quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/releases/download/v0.9.34/plugin.video.quasar-0.9.34.windows_x64.zip"
            else:
                quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/releases/download/v0.9.34/plugin.video.quasar-0.9.34.windows_x86.zip"
        elif XBMCUtils.isAndroidPlatform():
            logger.debug("Detected Android system...")
            if os.uname()[4].startswith("arm"):
                logger.debug("android system...")
                quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/releases/download/v0.9.34/plugin.video.quasar-0.9.34.android_arm.zip"
            else:
                logger.debug("Androidx86 system...")
                quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/releases/download/v0.9.34/plugin.video.quasar-0.9.34.android_x86.zip"
        elif XBMCUtils.isRaspberryPlatform():
            logger.debug("raspberry system...")
            if "armv7" in platform.machine():
                logger.debug("raspberry pi 2!")
                quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/releases/download/v0.9.34/plugin.video.quasar-0.9.34.linux_armv7.zip"
            elif "armv6" in platform.machine():
                logger.debug("raspberry pi 1!")
                quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/releases/download/v0.9.34/plugin.video.quasar-0.9.34.linux_arm.zip"
            else:
                logger.debug("raspberry pi 3!")
                quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/releases/download/v0.9.34/plugin.video.quasar-0.9.34.linux_arm64.zip"
        elif XBMCUtils.isLinuxPlatform():
            if "x64" in platform.machine():
                quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/releases/download/v0.9.34/plugin.video.quasar-0.9.34.linux_x64.zip"
            else:
                quasarUrl = "https://github.com/scakemyer/plugin.video.quasar/releases/download/v0.9.34/plugin.video.quasar-0.9.34.linux_x86.zip"
        else:
            logger.info("no detected platform, using default (could be a osx?)")
        try:
            updater.install(quasarUrl, "plugin.video.quasar", "plugin.video.quasar")
            logger.debug("addon installed!")
        except:
            logger.error("Addon not installed, something wrong happened!")
            pass
        XBMCUtils.getOkDialog(XBMCUtils.getString(30051), XBMCUtils.getString(30051))
        logger.debug("launch done!")
Ejemplo n.º 5
0
def get_main_dirs():

	##CONSTANTS PARTS##
	MAIN_URL = XBMCUtils.getSettingFromContext(sys.argv[1], "remote_repository")
	BROWSE_CHANNELS = "browse_channels"
	ICON = XBMCUtils.getAddonFilePath('icon.png')

	#draw welcome menu
	add_dir(XBMCUtils.getString(10001), MAIN_URL, 1, ICON,'', 0)
	add_dir(XBMCUtils.getString(10010), BROWSE_CHANNELS, 3, '', ICON, 0)
	try:
		from window.ImageWindow import windowImage  # teletext window library
		add_dir(name=XBMCUtils.getString(10012), url='teletext', mode=4, provider='teletext', page=0,thumbnailImage="",iconimage=ICON)
	except:
		logger.info("No PIL module installed (needs Pillow 3.4.2 or less)")
		pass
	#add_dir(name,url,mode,iconimage,provider,page="", thumbnailImage=''):
	try:
		if updater.isUpdatable():
			add_dir(XBMCUtils.getString(10011), '', 0, ICON, 0)
	except:
		logger.error("Couldn't add update option: probably server is down!")
		pass
Ejemplo n.º 6
0
def drawAcetvru(page):
    mode = 2
    jsonChannels = Acetvru.getChannels(page)
    for item in jsonChannels:
        title = item["title"]
        if title == "Display by event":
            title = XBMCUtils.getString(10006)
        link = item["link"]
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        add_dir(title, link, mode, image, "acetvru", link)
Ejemplo n.º 7
0
def drawArenavisionin(page):
    mode = 4
    jsonChannels = Arenavisionin.getChannels(page)
    for item in jsonChannels:
        title = item["title"]
        if title == "Display by event":
            title = XBMCUtils.getString(10006)
        link = item["link"]
        if link != "1":
            mode = 114
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        add_dir(title, link, mode, image, "arenavisionin", link)
Ejemplo n.º 8
0
def drawShowsporttvcom(page):
    mode = 4
    jsonChannels = ShowsportTvCom.getChannels(page)
    for item in jsonChannels:
        title = item["title"]
        if title == "Display by event":
            title = XBMCUtils.getString(10006)
        link = item["link"]
        if link != "1":
            mode = 113
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        add_dir(title, link, mode, image, "showsporttvcom", link)
Ejemplo n.º 9
0
def drawCricfree(page):
    jsonChannels = Cricfreetv.getChannels(page)
    for item in jsonChannels:
        title = item["title"]
        if title == "Display by event":
            title = XBMCUtils.getString(10006)
        link = item["link"]
        if link == "1":
            mode = 4
        else:
            mode = 103  # next step returns a final link
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
        else:
            image = icon
        add_dir(title, link, mode, image, "cricfree", link)
Ejemplo n.º 10
0
def drawVipgoal(page):
    jsonChannels = Vigoal.getChannels(page)
    for item in jsonChannels:
        title = item["title"]
        if title == "Display by event":
            title = XBMCUtils.getString(10006)
        link = item["link"]
        if link != "1":
            mode = 101  # next step returns a final link
        else:
            mode = 4  # continue browsing
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
        else:
            image = icon
        add_dir(title, link, mode, image, "vigoal", link)
Ejemplo n.º 11
0
 def getChannels(page='0'):
     x = []
     if str(page) == '0':
         page=Youtube.MAIN_URL+"/"
         html = Youtube.getContentFromUrl(page,"",Youtube.cookie,"")
         logger.debug("html: "+html)
         x = Youtube.extractMainChannels(html)
         element = {}
         element["title"] = XBMCUtils.getString(11018)
         element["page"] = 'search'
         x.append(element)
     elif str(page) == 'search':
         keyboard = XBMCUtils.getKeyboard()
         keyboard.doModal()
         text = ""
         if (keyboard.isConfirmed()):
             text = keyboard.getText()
             text = urllib.quote_plus(text)
             html = Youtube.getContentFromUrl(Youtube.SEARCH_URL+text, "", Youtube.cookie, "https://www.youtube.com/?app=desktop")
             html = html.replace('\u003e','>').replace("\u003c","<").replace("\\","")
             logger.debug("brute html is: "+html)
             x = Youtube.extractAllVideosFromHtml(html)
             logger.debug("done search logic!")
     elif '/results?' in page:
         logger.debug("pagination detected: "+page)
         html = Youtube.getContentFromUrl(page, "", Youtube.cookie,Youtube.MAIN_URL)
         x = Youtube.extractAllVideosFromHtml(html)
         logger.debug("done search logic pagination!")
     elif page.find('/channel/')>-1:
         html = Youtube.getContentFromUrl(page,"",Youtube.cookie,Youtube.MAIN_URL)
         x = Youtube.extractAllVideos(html)
     elif "/trending" in page:
         html = Youtube.getContentFromUrl(page, "", Youtube.cookie, Youtube.MAIN_URL)
         x = Youtube.extractAllVideosFromHtml(html)
     elif '&amp;list=' in page and '&amp;index=' not in page:
         logger.debug("detected a list, PARSING...")
         html = Youtube.getContentFromUrl(page, "", Youtube.cookie, Youtube.MAIN_URL)
         x = Youtube.extractListVideos(html)
     else:
         link = Youtube.extractTargetVideo(page)
         element = {}
         element["title"] = page.replace("&amp;","&")
         element["link"] = link
         element["finalLink"] = True
         x.append(element)
     return x
Ejemplo n.º 12
0
 def getChannels(page):
     x = []
     subpage = RTVE.SUB_PAGE
     currentPage = page
     if str(page) == '0':
         page = "100"
         currentPage = page
         arr = [str(page),str(page)] #page - subpage
         subpage = subpage % tuple(arr)
         page = RTVE.MAIN_URL + subpage  # final parse
     elif '.search' in str(page):
         keyboard = XBMCUtils.getKeyboard()
         keyboard.doModal()
         text = ""
         if (keyboard.isConfirmed()):
             text = keyboard.getText()
             page = text
             pageInt = page[0:1]+"00"
             arr = [str(pageInt), str(page)]  # page - subpage
             subpage = subpage % tuple(arr)
             currentPage = text
             page = RTVE.MAIN_URL + subpage  # final parse
     else:
         logger.debug("Nothing done for page: "+str(page))
         subpage = page[page.rfind("/")+1:]
         subpage = subpage[:subpage.rfind("_")]
         logger.debug("Subpage is: " + str(subpage))
         currentPage = subpage
         page = page.replace("/"+subpage+"/","/"+currentPage+"/")
     element = {}
     element["link"] = RTVE.MAIN_URL+".search"
     element["title"] = XBMCUtils.getString(10013)
     x.append(element)
     html = RTVE.getContentFromUrl(url=page,referer=RTVE.MAIN_URL)
     element = {}
     element["thumbnail"] = Decoder.extract('<img id="FABTTXImage" src="','"',html)
     if "://" not in element["thumbnail"]:
         thumbnailPage = element["thumbnail"][:element["thumbnail"].find("_")]
         element["thumbnail"] = RTVE.MAIN_URL+(thumbnailPage[0:1]+"00")+"/"+element["thumbnail"]
     x.append(element)
     teletextHtml = Decoder.extract('<span class="LB">','</span>',html)
     x2 = RTVE.extractElements(currentPage,teletextHtml)
     x.extend(x2)
     return x
Ejemplo n.º 13
0
def init():
	params=get_params()

	url=""
	mode=None
	page=""
	provider = ""

	try:
		page=urllib.unquote_plus(params["page"])
	except:
		pass
	try:
		url=urllib.unquote_plus(params["url"])
	except:
		pass
	try:
		mode=int(params["mode"])
	except:
		pass
	try:
		provider=urllib.unquote_plus(params["provider"])
	except:
		pass
	logger.debug("Mode: "+str(mode))
	logger.debug("URL: "+str(url))
	logger.debug("page: "+str(page))
	logger.debug("provider: "+str(provider))
	try:
		if mode==None: #init
			get_main_dirs()
		elif mode==1: #get channels
			getListsUrls(url)
		elif mode == 2: #open video in player
			open(url,page)
		elif mode == 3:
			browse_channels(url,page)
		elif mode == 4:
			browse_channel(url,page,provider)
		elif mode == 5:
			drawFilmonLinks(url, page)
		elif mode == 0: #update
			addonUpdater()
			get_main_dirs()
		elif mode == 97:
			httpProxyUpdater()
		elif mode == 98:
			quasarUpdater()
		elif mode == 99:
			plexusUpdater()
		elif mode == 100: #decode provider link
			decodeAndOpenLink(url,page)
		elif mode == 101:
			openVipgoalLink(url,page)
		elif mode == 102:
			openCineestrenosLink(url,page)
		elif mode == 103:
			openCricFreeLink(url,page)
		elif mode == 104:
			openZopTvLink(url,page)
		elif mode == 105:
			openLive9Link(url,page)
		elif mode == 106:
			openSports4uLink(url,page)
		elif mode == 107:
			openVipracingLink(url,page)
		elif mode == 108:
			openSkylineLink(url,page)
		elif mode == 109:
			openZonasportsLink(url,page)
		elif mode == 110:
			openSports365Link(url,page)
		elif mode == 111:
			openSpliveLink(url,page,provider)
		elif mode == 112:
			openMamahdLink(url,page)
		elif mode == 113:
			openShowsportsLink(url,page)
		elif mode == 114:
			openArenavisionLink(url,page)
		elif mode == 115:
			openYoutubeLink(url,page)
		elif mode == 116:
			openZonaappLink(url,page)
		elif mode == 117:
			drawFilmonLinks(url,page)
		elif mode == 118:
			openTuneInLink(url,page)
		elif mode == 119:
			openYoutvgratisLink(url, page)
		elif mode == 120:
			openYomvies(url,page)
		elif mode == 121:
			openStreamgaroo(url, page)
		elif mode == 122:
			openMobdro(url,page)


	except Exception as e:
		logger.error(XBMCUtils.getString(10009)+", "+str(e))
		XBMCUtils.getNotification("Error",XBMCUtils.getString(10009))
		pass
	if not isAnException(url,page,provider,mode):
		logger.debug("End of main menu to be displayed. Params -> page: "+page+", url: "+url+", provider: "+provider+", mode: "+str(mode))
		XBMCUtils.setEndOfDirectory(int(sys.argv[1]))
Ejemplo n.º 14
0
    def getChannels(page="",cookie=""):
        x = []
        ##main has sections: nuevos lanzamientos, episodios estrenos, peliculas mas vistas, series mas listas, peliculas actualizadas, episodios actualizados and "Search"
        if cookie=="":
            cookie = HdfullTv.getNewCookie()

        logger.debug("page: "+page)
        if(page=="0"):
            itemFirst = {}
            itemFirst["title"] = 'Últimos Emitidos'
            itemFirst["permalink"] = 'episodios#latest'
            x.append(itemFirst)
            itemFirst2 = {}
            itemFirst2["title"] = 'Episodios Estreno'
            itemFirst2["permalink"] = 'episodios#premiere'
            x.append(itemFirst2)
            itemFirst3 = {}
            itemFirst3["title"] = 'Episodios Actualizados'
            itemFirst3["permalink"] = 'episodios#updated'
            x.append(itemFirst3)
            itemFirst4 = {}
            itemFirst4["title"] = 'Películas Estreno'
            itemFirst4["permalink"] = 'peliculas-estreno'
            x.append(itemFirst4)
            itemFirst5 = {}
            itemFirst5["title"] = 'Películas Actualizadas'
            itemFirst5["permalink"] = 'peliculas-actualizadas'
            x.append(itemFirst5)
            itemFirst6 = {}
            itemFirst6["title"] = XBMCUtils.getString(11018)
            itemFirst6["permalink"] = "search"
            x.append(itemFirst6)
        elif page=='http://hdfull.tv/episodios#latest':
            html = HdfullTv.getJSONAJAXResponse("http://hdfull.tv/a/episodes",{"action":"latest","start":"0","limit":"24","elang":"ALL"},cookie).read()
            #print html
            x = json.loads(html)
        elif page=='http://hdfull.tv/episodios#premiere':
            html = HdfullTv.getJSONAJAXResponse("http://hdfull.tv/a/episodes",{"action":"premiere","start":"0","limit":"24","elang":"ALL"},cookie).read()
            x = json.loads(html)
        elif page=='http://hdfull.tv/episodios#updated':
            html = HdfullTv.getJSONAJAXResponse("http://hdfull.tv/a/episodes",{"action":"updated","start":"0","limit":"24","elang":"ALL"},cookie).read()
            x = json.loads(html)
        elif page=='http://hdfull.tv/peliculas-estreno':
            html = HdfullTv.getContentFromUrl("http://hdfull.tv/peliculas-estreno")
            #print html
            x = HdfullTv.extractItems(html)
        elif page=='http://hdfull.tv/peliculas-actualizadas':
            html = HdfullTv.getContentFromUrl("http://hdfull.tv/peliculas-actualizadas")
            x = HdfullTv.extractItems(html)
        elif page=='http://hdfull.tv/search':
            #display keyboard, it will wait for result
            keyboard = XBMCUtils.getKeyboard()
            keyboard.doModal()
            text = ""
            if (keyboard.isConfirmed()):
                text = keyboard.getText()
                x = HdfullTv.search(text)
        elif page.find("http://hdfull.tv/serie/")>-1 and page.find("episodio-")==-1:
            #proccess serie article, could be: 1) obtain seasons 2) obtains chapters from a season #temporada-2/episodio-2
            if page.find("/temporada-")==-1:
                html = HdfullTv.getContentFromUrl(page)
                x = HdfullTv.extractSeasons(html,page)
            else:
                season = page[page.find("temporada-")+len("temporada-"):]
                html = HdfullTv.getContentFromUrl(page)
                sid = Decoder.extract("var sid = '","'",html) #fix for hardcoded value '126', it was the internal series id, now works fine
                bruteJson = HdfullTv.getJSONAJAXResponse("http://hdfull.tv/a/episodes",{"action":"season","limit":"0","season":season,"show":sid,"start":"0"},cookie).read()
                x = json.loads(bruteJson)
        else:
            x = HdfullTv.extractProvidersFromLink(page,cookie)
        return x
Ejemplo n.º 15
0
def downloadfile(url,fileName,headers=[],silent=False,notStop=False):
    logger.debug("downloadfile: url="+url)
    logger.debug("downloadfile: fileName="+fileName)

    try:

        try:
            fileName = XBMCUtils.getRightString(fileName)
        except:
            pass
        logger.debug("downloadfile with fileName="+fileName)

        if os.path.exists(fileName) and notStop:
            f = open(fileName, 'r+b')
            existSize = os.path.getsize(fileName)
            
            logger.info("downloadfile: file exists, size=%d" % existSize)
            recordedSize = existSize
            f.seek(existSize)

        elif os.path.exists(fileName) and not notStop:
            logger.info("downloadfile: file exists, dont re-download")
            return

        else:
            existSize = 0
            logger.info("downloadfile: file doesn't exists")

            f = open(fileName, 'wb')
            recordedSize = 0

        if not silent:
            progressDialog = XBMCUtils.getDialogProgress() # Open dialog
            progressDialog.create("plugin",XBMCUtils.getString(10002) ,url,fileName)
        else:
            progressDialog = ""

        socket.setdefaulttimeout(30) #Timeout
    
        h=urllib2.HTTPHandler(debuglevel=0)
        remoteFile = url
        params = None

        request = urllib2.Request(url)

        logger.debug("checking headers... type: "+str(type(headers)))
        if len(headers)>0:
            logger.debug("adding headers...")
            for key in headers.keys():
                logger.debug("Header="+key+": "+headers.get(key))
                request.add_header(key,headers.get(key))
        else:
            logger.debug("headers figure are 0")

        logger.debug("checking resume status...")
        if existSize > 0: #restart
            logger.info("resume is launched!")
            request.add_header('Range', 'bytes=%d-' % (existSize, ))
    
        opener = urllib2.build_opener(h)
        urllib2.install_opener(opener)
        try:
            logger.debug("opening request...")
            connection = opener.open(request)
        except: # End
            logger.error("ERROR: "+traceback.format_exc())
            f.close()
            if not silent:
                progressDialog.close()
        logger.debug("detecting download size...")
    
        try:
            totalFileSize = int(connection.headers["Content-Length"])
        except:
            totalFileSize = 1

        logger.debug("total file size: "+str(totalFileSize))
                
        if existSize > 0:
            totalFileSize = totalFileSize + existSize
    
        logger.debug("Content-Length=%s" % totalFileSize)
    
        blockSize = 100*1024 #Buffer size
    
        bufferReadedSize = connection.read(blockSize)
        logger.info("Starting download, readed=%s" % len(bufferReadedSize))
    
        maxRetries = 5
        
        while len(bufferReadedSize)>0:
            try:
                f.write(bufferReadedSize)
                recordedSize = recordedSize + len(bufferReadedSize)
                percent = int(float(recordedSize)*100/float(totalFileSize))
                totalMB = float(float(totalFileSize)/(1024*1024))
                downloadedMB = float(float(recordedSize)/(1024*1024))

                retries = 0
                while retries <= maxRetries:
                    try:
                        before = time.time()
                        bufferReadedSize = connection.read(blockSize)
                        after = time.time()
                        if (after - before) > 0:
                            speed=len(bufferReadedSize)/((after - before))
                            remainingSize=totalFileSize-recordedSize
                            if speed>0:
                                remainingTime=remainingSize/speed
                            else:
                                remainingTime=0 #infinite

                            if not silent:
                                progressDialog.update( percent , XBMCUtils.getString(10003) % ( downloadedMB , totalMB , percent , speed/1024 , sec_to_hms(remainingTime))) #respect syntax in translations
                        break
                    except:
                        retries = retries + 1
                        logger.info("ERROR downloading buffer, retry %d" % retries)
                        logger.error( traceback.print_exc() )
                
                # if the user stops download proccess...
                try:
                    if progressDialog.iscanceled():
                        logger.info("Download was canceled by user action")
                        f.close()
                        progressDialog.close()
                        return -1
                except:
                    pass
    
                # Something wrong happened
                if retries > maxRetries:
                    logger.error("ERROR, something happened in download proccess")
                    f.close()
                    if not silent:
                        progressDialog.close()
    
                    return -2
    
            except:
                logger.error( traceback.print_exc() )

                f.close()
                if not silent:
                    progressDialog.close()

                return -2

    except:
        pass

    try:
        f.close()
    except:
        pass

    if not silent:
        try:
            progressDialog.close()
        except:
            pass

    logger.info("Finished download proccess")
Ejemplo n.º 16
0
def addonUpdater():
	if XBMCUtils.getDialogYesNo(XBMCUtils.getString(10011), updater.getUpdateInfo()):
		updater.update()