Beispiel #1
0
def drawSplive(page):
    mode = 4
    jsonChannels = Spliveappcom.getChannels(page)
    image = icon
    for item in jsonChannels:
        try:
            logger.debug("trying splive item...")
            #title = urllib.unquote_plus(item["title"].decode('iso-8859-1', 'ignore'))
            title = item["title"]
            link = item["link"]
            referer = "splive"
            if item.has_key("permaLink"):
                mode = 111
                if item.has_key("referer"):
                    referer = item["referer"]
                    logger.info("referer is: " + referer)
            if item.has_key("thumbnail"):
                image = item["thumbnail"]
                logger.info("detected img: " + image)
            else:
                image = icon
            add_dir(title, link, mode, image, referer, link)
        except:
            logger.error("Something goes wrong with SPLIVEAPP drawer")
            pass
Beispiel #2
0
def openYoutubeLink(
    url, page
):  #could be replaced by decodeAndOpenLink, traces are the unique difference
    logger.info("decoding youtube link... " + url)
    link = Decoder.decodeLink(url)
    logger.info("decoded youtube link: " + link)
    open(link, page)
Beispiel #3
0
 def getChannels():
     x = []
     url = StreamingSports365.HTML_CHANNELS
     logger.debug("html channels url is: " + url)
     bruteResult = StreamingSports365.getContentFromUrl(
         url=url, referer=StreamingSports365.MAIN_URL)
     logger.debug("html is: " + bruteResult)
     htmlResults = Decoder.extract(
         '<table class="uk-table uk-table-hover uk-table-striped">',
         "</table>", bruteResult)
     for item in htmlResults.split("<tr>"):
         if "<td>acestream://" in item:
             name = ""
             if '"><strong>' in item:
                 name = Decoder.extract('"><strong>', '</strong>', item)
             else:
                 name = Decoder.extract('html">', '<', item)
             link = "acestream://" + Decoder.extract(
                 '<td>acestream://', '</td>', item)
             logger.info("Added: " + name + ", url: " + link)
             element = {}
             element["title"] = name
             element["link"] = link
             x.append(element)
     return x
Beispiel #4
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(XBMCUtils.getString(10014), 'paidonline', 3, "", 'paidonline', 0)
    add_dir(XBMCUtils.getString(10015), 'programsonline', 3, "",
            'programsonline', 0)
    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
Beispiel #5
0
def openMobdro(url, page):
    try:
        link = base64.decodestring(url)
    except:
        logger.debug("not a valid base64 content...")
        pass
    logger.info("decoded streamgaroo link: " + link)
    open(link, page)
Beispiel #6
0
def drawXspf(html,icon=''):
	lists = common.parseDOM(html,"track") #rusian acelive format
	if len(lists)>0:
		for item in lists:
			name = common.parseDOM(item,"title")[0].encode("utf-8")
			value = common.parseDOM(item,"location")[0].encode("utf-8")
			logger.info("Added: "+name+", url: "+value)
			add_dir(name, value, 2, icon,'', 0)
Beispiel #7
0
def get_params():
    param = []
    paramstring = sys.argv[2]
    if len(paramstring) >= 2:
        params = sys.argv[2]
        try:
            #now extract expected params, it has been changed because some params could be links
            #with other params and the previews method (split with '?' expr. doesn't work in some cases)
            logger.debug("filling params array with brute params...")
            mode = params[params.find("mode=") + len("mode="):]
            logger.debug("brute mode: " + mode)
            if mode.find("&") > -1:
                mode = mode[:mode.find("&")]
            url = params[params.find("url=") + len("url="):]
            logger.debug("brute url: " + url)
            if url.find("&mode") > -1:
                url = url[:url.find("&mode")]
            elif url.find("&page") > -1:
                url = url[:url.find("&page")]
            elif url.find("&") > -1:
                url = url[:url.find("&")]
            page = params[params.find("page=") + len("page="):]
            logger.debug("brute page: " + page)
            if page.find("&provider") > -1:
                page = page[:page.find("&provider")]
            elif page.find("&") > -1:
                page = page[:page.find("&")]
            provider = params[params.find("provider=") + len("provider="):]
            logger.debug("brute provider: " + provider)
            if provider.find("&") > -1:
                provider = provider[:provider.find("&")]
            #finally put in param array
            logger.debug("done, filling params dic...")
            param = {}
            param["mode"] = mode
            param["url"] = url
            param["page"] = page
            param["provider"] = provider
            logger.debug("done params built: " + str(len(param)))
        except Exception as e:
            logger.error("ERROR: using old method to extract params..." +
                         str(e))
            #old method
            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]
                    logger.info("param: " + splitparams[0] + " with value: " +
                                splitparams[1])

    return param
Beispiel #8
0
def drawYomviEs(page):
    mode = 120
    jsonChannels = Yomvies.getChannels(page)
    for item in jsonChannels:
        title = item["title"]
        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, "yomvies", link)
Beispiel #9
0
def drawMamahdcom(page):
    mode = 4
    jsonChannels = Mamahdcom.getChannels(page)
    for item in jsonChannels:
        title = item["title"]
        link = item["link"]
        if item.has_key("permaLink"):
            mode = 112
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        add_dir(title, link, mode, image, "mamahdcom", link)
Beispiel #10
0
def drawFilmon(page):
    jsonChannels = Filmoncom.getChannelsJSON()
    for itemFirst in jsonChannels:
        if page == "0":
            add_dir(itemFirst["title"],
                    "http://www.filmon.com/tv/" + itemFirst["alias"], 4, icon,
                    "filmoncom", itemFirst["title"])
        elif (page == itemFirst["title"]) and itemFirst.has_key("channels"):
            for item in itemFirst["channels"]:
                add_dir(item["title"],
                        "http://www.filmon.com/tv/" + item["alias"], 5,
                        item["logo"], "filmoncom", item["title"])
        else:
            logger.info("no channel: " + page)
Beispiel #11
0
def drawStreamgaroo(page):
    jsonChannels = Streamgaroo.getChannels(page)
    for item in jsonChannels:
        mode = 121
        title = item["title"]
        link = item["link"]
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        if item.has_key("navigate"):
            mode = 4
        add_dir(title, link, mode, image, "streamgaroo", link)
Beispiel #12
0
def drawTvshowme(page):
    jsonChannels = Tvshowme.getChannels(page)
    for item in jsonChannels:
        mode = 4
        title = item["title"]
        link = item["link"]
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        if item.has_key("finalLink"):
            mode = 100
        add_dir(title, link, mode, image, "tvshowme", link)
Beispiel #13
0
def drawRamalin(page):
    jsonChannels = Ramalin.getChannels(page)
    for item in jsonChannels:
        mode = 4
        title = item["title"]
        link = item["link"]
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        if item.has_key("finalLink"):
            mode = 2
        add_dir(title, link, mode, image, "ramalin", link)
Beispiel #14
0
def drawMejorTorrent(page):
    jsonChannels = MejorTorrent.getChannels(page)
    for item in jsonChannels:
        mode = 4
        title = item["title"]
        link = item["link"]
        if 'secciones.php' in link and '&p=' not in link:
            mode = 127
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        add_dir(title, link, mode, image, "mejortorrent", link)
Beispiel #15
0
def update():
    #download ZIP file
    start = time.clock()

    localfile = ROOT_DIR+"/update.zip"

    response = urllib2.urlopen(REMOTE_FILE_XML)
    html = response.read()
    remote_file = common.parseDOM(html,"file")[0].encode("utf-8") #remote version
    downloadtools.downloadfile(remote_file, localfile, notStop=False)

    end = time.clock()
    logger.info("org.harddevelop.kodi.tv Downloaded in %d seconds " % (end-start+1))

    separatorChar = XBMCUtils.getSeparatorChar()

    #unzip
    unzipper = ziptools.ziptools()
    logger.info("org.harddevelop.kodi.tv destpathname=%s" % ROOT_DIR)
    addons_dir = XBMCUtils.getAddonsDir()
    current_plugin_dir = XBMCUtils.getPathFixedFrom(XBMCUtils.getAddonInfo('path'))
    logger.debug("using dir: "+addons_dir+" to extract content")

    unzipper.extractReplacingMainFolder(localfile,addons_dir,current_plugin_dir) #github issues
    #unzipper.extract(localfile,ROOT_DIR)

    #clean downloaded zip file
    logger.info("org.harddevelop.kodi.tv clean zip file...")
    os.remove(localfile)
    logger.info("org.harddevelop.kodi.tv clean done!")
Beispiel #16
0
def drawTuMejorTorrent(page):
    jsonChannels = TuMejorTorrent.getChannels(page)
    for item in jsonChannels:
        mode = 4
        title = item["title"]
        link = item["link"]
        if item.has_key("finalLink"):
            mode = 126
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        add_dir(title, link, mode, image, "tumejortorrent", link)
Beispiel #17
0
def drawSkylinewebcams(page):
    jsonChannels = Skylinewebcamscom.getChannels(page)
    mode = 4
    for item in jsonChannels:
        title = item["title"]
        link = item["link"]
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        if item.has_key("permaLink"):
            mode = 108
        add_dir(title, link, mode, image, "skylinewebcams", link)
Beispiel #18
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)
Beispiel #19
0
def drawElitetorrentnet(page):
    jsonChannels = Elitetorrent.getChannels(page)
    for item in jsonChannels:
        mode = 4
        title = item["title"]
        link = item["link"]
        if '/torrent/' in link:
            mode = 124
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        add_dir(title, link, mode, image, "elitetorrentnet", link)
Beispiel #20
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)
Beispiel #21
0
def drawMobdro(page):
    jsonChannels = Mobdro.getChannels(page)
    for item in jsonChannels:
        title = item["title"]
        link = item["link"]
        if item.has_key("thumbnail"):
            image = item["thumbnail"]
            logger.info("detected img: " + image)
        else:
            image = icon
        if item.has_key("finalLink"):
            link = base64.encodestring(link)
            mode = 122  #base64 link, so needs to be decoded
        else:
            mode = 4
        add_dir(title, link, mode, image, "mobdro", link)
Beispiel #22
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)
Beispiel #23
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!")
Beispiel #24
0
 def getChannels(page):
     x = []
     if page == '0':
         url = CNN.LAST_NEWS_RSS
         logger.debug("news rss url is: "+url)
         bruteResult = CNN.getContentFromUrl(url=url,launchLocation=True,ajax=False)
         logger.debug("brute response: "+bruteResult)
         lists = common.parseDOM(bruteResult, "item")
         if len(lists) > 0:
             logger.info("counted: " + str(len(lists)))
             for item in lists:
                 name = common.parseDOM(item, "title")[0].encode("utf-8")
                 value = common.parseDOM(item, "guid")[0].encode("utf-8")
                 logger.info("Added: " + name + ", url: " + value)
                 element = {}
                 element["title"] = name.replace('<![CDATA[','').replace("]]>","")
                 element["link"] = value.replace("//www.cnn.com/","//edition.cnn.com/")
                 try:
                     img = common.parseDOM(item, "media:content", ret="url")[0].encode("utf-8")
                     element["thumbnail"] = img
                 except:
                     logger.debug("Could not be extracted any img. :'(")
                 x.append(element)
     else:
         html = CNN.getContentFromUrl(url=page,launchLocation=True,referer=CNN.MAIN_URL)
         startRegex = '<div class="el__leafmedia el__leafmedia--sourced-paragraph">'
         body = Decoder.extract(startRegex,'</div><p class="zn-body__paragraph zn-body__footer">',html)
         logger.debug("removing html: "+body)
         body = Decoder.removeHTML(body)
         logger.debug("html has removed from body!")
         if '|' in body:
             body = body[body.find('|')+1:]
         try:
             lowerCaseIndex = int(re.search("[a-z]", body).start())
             body = body[:lowerCaseIndex-1]+"\n"+body[lowerCaseIndex-1:]
         except:
             logger.error("No break for city was done. Something goes wrong")
             pass
         element = {}
         element["link"] = page
         element["title"] = body
         element["thumbnail"] = ''
         x.append(element)
     return x
Beispiel #25
0
def install(remote_file,id,folder):
    #first check if plexus exists, and where
    logger.info("installing "+id+"... ")

    addons_dir = XBMCUtils.getAddonsDir()
    logger.debug("Addons dir set to: "+addons_dir)

    localfile = ROOT_DIR+"/install.zip"

    downloadtools.downloadfile(remote_file, localfile, notStop=False)
    logger.debug("Download done, now it's time to unzip")
    unzipper = ziptools.ziptools()
    if folder == '':
        unzipper.extract(localfile,addons_dir) #github issues
    else:
        unzipper.extractReplacingMainFolder(localfile,addons_dir,folder)
    logger.debug("Unzip done! cleaning...")
    os.remove(localfile)
    logger.info("Additional addon clean done!")
Beispiel #26
0
def openSpliveLink(url, page, provider):
    if url.find(".m3u8") == -1 and url.find("rtmp://") == -1:
        channel = Spliveappcom.decodeUrl(url, provider)
        link = channel[0]["link"]
        if link.find(", referer:") > -1:
            link = link[0:link.find(", referer:")]
        url = link
    else:
        logger.debug(
            "nothing decoded for splive encrypted channels, continue...")

    logger.debug("splive BRUTE logic for url: " + url)

    try:
        if 'ponlatv.com' in url or 'playerhd1.pw' in url:
            logger.debug("trying to decode cineestrenos script from url: " +
                         url)
            url = Cineestrenostv.extractScriptLevel3(
                url, referer=Cineestrenostv.MAIN_URL)
            logger.debug("decoded link was: " + url)

        else:
            url = Cineestrenostv.getChannels(url)[0]["link"]
            html = Downloader.getContentFromUrl(url)
            element = Cineestrenostv.extractIframeChannel(html, url)
            if element is not None and element.has_key("link"):
                url = element["link"]
                logger.debug("cineestrenos url was decoded to: " + url)
            else:
                logger.debug("nothing was done to decode cineestrenostv url!")
    except:
        logger.debug("nothing to be decoded with url: " + url)
        pass

    link = url

    logger.info("found link: " + link + ", launching...")
    open(link, page)
Beispiel #27
0
    def importEngine(engine, url, targetPath, deletePath):

        ROOT_DIR = XBMCUtils.getAddonInfo('path')

        try:
            shutil.rmtree(ROOT_DIR + "/" + engine)
        except:
            logger.debug("local folder %s doesn't exists... continue" %
                         str(ROOT_DIR + "/" + engine))
            pass

        logger.debug("downloading...")

        localfile = ROOT_DIR + "/master.zip"

        try:
            os.delete(localfile)
        except:
            logger.debug("local file doesn't exists... continue")
            pass

        downloadtools.downloadfile(url, localfile, notStop=True)

        logger.debug("done, unzipping...")
        logger.debug("Download done, now it's time to unzip")
        unzipper = ziptools.ziptools()
        unzipper.extract(localfile, ROOT_DIR)
        shutil.move(ROOT_DIR + targetPath, ROOT_DIR + "/" + engine)
        logger.debug("done, delete all unused files...")
        shutil.rmtree(ROOT_DIR + "/" + deletePath)
        logger.debug("Unzip done! cleaning...")
        try:
            os.unlink(localfile)
        except:
            logger.debug("couldn't remove %s" % localfile)
            pass
        logger.info("Additional addon clean done!")
Beispiel #28
0
def openTuMejorTorrent(url, page):
    logger.info("decoding tumejortorrent link... " + url)
    link = url
    if ".torrent" not in url:
        link = TuMejorTorrent.getChannels(url)[0]["link"]
        logger.debug("provisional link is: " + link)
        if ".torrent" not in link:
            link = TuMejorTorrent.getChannels(link)[0]["link"]
            logger.info("decoded two times tumejortorrent link: " + link)
        logger.info("decoded tumejortorrent link: " + link)
    open(link, page)
Beispiel #29
0
def openSports365Link(url, page):
    channel = Sportstream365com.getChannels(url)
    logger.info("found link: " + channel[0]["link"] + ", launching...")
    open(channel[0]["link"], page)
Beispiel #30
0
def openZonasportsLink(url, page):
    channel = Zonasportsme.getChannels(url)
    logger.info("found link: " + channel[0]["link"] + ", launching...")
    open(channel[0]["link"], page)