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
def getChannels(page): x = [] logger.debug("page: " + page) if (str(page) == "0"): html = Peliculasbiz.getContentFromUrl(Peliculasbiz.MAIN_URL) menuHtml = Decoder.extract('<ul class="clearfix">', '</ul>', html) for itemHtml in menuHtml.split("<li>"): if "href=" in itemHtml: item = {} item["title"] = Decoder.extract('">', '<', itemHtml) item["link"] = Decoder.extract('href="', '"', itemHtml) x.append(item) search = {} search["title"] = XBMCUtils.getString(11018) search["link"] = ".search" x.append(search) elif page == '.search': #display keyboard, it will wait for result keyboard = XBMCUtils.getKeyboard() keyboard.doModal() text = "" if (keyboard.isConfirmed()): text = keyboard.getText() x = Peliculasbiz.search(text) elif str(page).isdigit(): logger.debug("numeric detected...") link = Peliculasbiz.extractProviderFromLink(page) element = {} element["link"] = link x.append(element) else: x = Peliculasbiz.extractProvidersFromLink(page) return x
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)
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!")
def getChannels(page='0'): x = [] if str(page) == '0': page = Youtube.MAIN_URL + "/" html = Youtube.getContentFromUrl(page, "", Youtube.cookie, "") logger.debug("html: " + html) jsonScript = Decoder.extract('ytInitialGuideData = ', ';', html) x = Youtube.extractMainChannelsJSON(jsonScript) element = {} element["title"] = XBMCUtils.getString(11018) element["page"] = 'search' x.append(element) elif '/channel/' in page or '/trending' in page: headers = Youtube.buildHeaders() response = Youtube.getContentFromUrl(url=str(page + "?pbj=1"), headers=headers, launchLocation=True) try: jsonResponse = json.loads(response) logger.debug("parsed json from '" + page + "', continue...") logger.debug("json is: " + response) try: logger.debug("using way 1...") x = Youtube.extractVideosFromJSON( jsonResponse[1]["response"]) except: logger.debug("fails way 1, using way 2...") x = Youtube.extractVideosFromSpecialChannelJSON( jsonResponse[1]["response"]) pass except: logger.error("Could not parse response: " + str(response)) pass elif str(page) == 'search': keyboard = XBMCUtils.getKeyboard() keyboard.doModal() text = "" if (keyboard.isConfirmed()): text = keyboard.getText() text = urllib.quote_plus(text) headers = Youtube.buildHeaders() response = Youtube.getContentFromUrl( url=str(Youtube.SEARCH_URL + text + "?pbj=1"), headers=headers) try: jsonResponse = json.loads(response) logger.debug("parsed search json with text: '" + page + "', continue...") x = Youtube.extractVideosFromSpecialChannelJSON( jsonResponse[1]["response"]) except: logger.error("Could not parse response: " + str(response)) logger.debug("finished search logic!") else: element = Youtube.extractTargetVideoJSON(page) x.append(element) return x
def getChannels(page): x = [] if str(page) == '0': try: page=Arenavisionin.MAIN_URL+"guide" html = Arenavisionin.getContentFromUrl(page,"",'beget=begetok; has_js=1',Arenavisionin.MAIN_URL) #guideUrl = Decoder.rExtract('"','">EVENTS GUIDE</a></li>',html) #html = Arenavisionin.getContentFromUrl(page+guideUrl,"",'beget=begetok; has_js=1',Arenavisionin.MAIN_URL) except: page = Arenavisionin.MAIN_URL_RU+"guide" html = Arenavisionin.getContentFromUrl(page, "", 'beget=begetok; has_js=1', Arenavisionin.MAIN_URL_RU) #guideUrl = Decoder.rExtract('"', '">EVENTS GUIDE</a></li>', html) #html = Arenavisionin.getContentFromUrl(page+guideUrl, "", 'beget=begetok; has_js=1', Arenavisionin.MAIN_URL_RU) pass html = Decoder.extract('<table align="center" cellspacing="1" class="auto-style1" style="width: 100%; float: left"><tr><th class="auto-style4" style="width: 190px; height: 39px"><strong>DAY</strong></th>',"</tr></table></div></div></div>",html) x = Arenavisionin.extractElements(html) else: if page.find("-")>-1: #put a context menu and the user should decice, if not use the first one (default action) dialog = XBMCUtils.getDialog() cmenu = [] for contextItem in page.split("-"): #if len(contextItem)>0: cmenu.append(contextItem) result = dialog.select(XBMCUtils.getString(11016), cmenu) #choose logger.debug("result was: "+str(result)) if result == None or result==-1: target = page[:page.find("-")] page = target else: logger.debug("has choosed "+str(result)+": "+cmenu[result]) page = (cmenu[result]) html = Arenavisionin.getContentFromUrl(Arenavisionin.MAIN_URL, "", 'beget=begetok; has_js=1', Arenavisionin.MAIN_URL) link = Decoder.rExtract("<a href=\"","title=\"\">ArenaVision "+page+"</a>",html) logger.debug("html is: "+html) link = link[:link.find('"')] logger.debug("provisional link is: "+link) else: if "av" not in page: page = "av"+page link = "http://www.arenavision.us/"+page try: html = Arenavisionin.getContentFromUrl(link,"",'beget=begetok; has_js=1',Arenavisionin.MAIN_URL) logger.debug("second html is: "+html) except: logger.error("sonething goes wrong with link: "+link) pass if html.find("acestream://")>-1: link2 = Decoder.extractWithRegex("acestream://",'"',html).replace('"',"") else: link2 = Decoder.extractWithRegex("sop://",'"',html).replace('"',"") element = {} element["title"] = page element["link"] = link2 x.append(element) return x
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!")
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
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)
def getChannels(page): x = [] logger.debug("page: "+page) if(str(page)=="0"): html = MejorTorrent.getContentFromUrl(url=MejorTorrent.MAIN_URL) menuHtml = Decoder.extract("<table width='140' border='0' cellpadding='0' cellspacing='0' style='border-left:1px solid black; border-right:1px solid black; border-bottom:1px solid black;'>",'</table>',html) for itemHtml in menuHtml.split("<a"): logger.debug("li --> HTML is: "+itemHtml) if "href=" in itemHtml: item = {} title = Decoder.extract('">','</a>',itemHtml) title = Decoder.removeHTML(title) if len(title)>0: item["title"] = title link = Decoder.extract("href='", "'", itemHtml) if 'musica' not in link and 'juegos' not in link and 'variados' not in link: if "://" not in link: item["link"] = MejorTorrent.MAIN_URL+link x.append(item) search = {} search["title"] = XBMCUtils.getString(11018) search["link"] = ".search" x.append(search) elif page=='.search': #display keyboard, it will wait for result keyboard = XBMCUtils.getKeyboard() keyboard.doModal() text = "" if (keyboard.isConfirmed()): text = keyboard.getText() x = MejorTorrent.search(text) elif '-descargar-' in page: logger.debug("-descargar- page detected...") x = MejorTorrent.extractProvidersFromLink(page) elif 'sec=descargas' in page and '&p=' not in page: logger.debug("decoding torrent..."+page) html = MejorTorrent.getContentFromUrl(url=page) link = MejorTorrent.MAIN_URL+Decoder.extract("Pincha <a href='/","'",html) logger.debug("extracted torrent link: "+link) element = {} element["link"] = link element["title"] = page element["finalLink"] = True x.append(element) else: x = MejorTorrent.extractContentFromLink(page) return x
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)
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)
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)
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)
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
def getChannels(page): x = [] logger.debug("page: " + page) cookie = Elitetorrent.getValidCookie() logger.debug("Using new cookie: " + cookie) if (str(page) == "0"): html = Elitetorrent.getContentFromUrl(url=Elitetorrent.MAIN_URL, cookie=cookie) menuHtml = Decoder.extract('<div class="wrap">', '</div>', html) for itemHtml in menuHtml.split("<a"): logger.debug("li --> HTML is: " + itemHtml) if "href=" in itemHtml: item = {} item["title"] = Decoder.extract('">', '<', itemHtml) link = Decoder.extract('href="', '"', itemHtml) if "://" not in link: item["link"] = Elitetorrent.MAIN_URL + link x.append(item) search = {} search["title"] = XBMCUtils.getString(11018) search["link"] = ".search" x.append(search) elif page == '.search': #display keyboard, it will wait for result keyboard = XBMCUtils.getKeyboard() keyboard.doModal() text = "" if (keyboard.isConfirmed()): text = keyboard.getText() x = Elitetorrent.search(text, cookie) elif '/torrent/' in page: logger.debug("torrent page detected...") link = Elitetorrent.extractProviderFromLink(page, cookie) element = {} element["link"] = link x.append(element) else: x = Elitetorrent.extractContentFromLink(page, cookie) return x
def addonUpdater(): if XBMCUtils.getDialogYesNo(XBMCUtils.getString(10011), updater.getUpdateInfo()): updater.update()
def browse_channels(url, page): #BROWSES ALL PROVIDERS (it has been re-sorted) if str(url) == 'browse_channels': add_dir(XBMCUtils.getString(10016), 'popularonline', 3, "", 'popularonline', 0) add_dir(XBMCUtils.getString(10017), 'tvseriesonline', 3, "", 'tvseriesonline', 0) add_dir(XBMCUtils.getString(10018), 'torrentwebsites', 3, "", 'torrentwebsites', 0) #add_dir(XBMCUtils.getString(10019), 'usersonlinewebsites', 3, "", 'usersonlinewebsites', 0) add_dir(XBMCUtils.getString(10020), 'sportsonline', 3, "", 'sportsonline', 0) add_dir(XBMCUtils.getString(10021), 'newsonlinewebsites', 3, "", 'newsonlinewebsites', 0) add_dir(XBMCUtils.getString(10022), 'worldstvonlinewebsites', 3, "", 'worldstvonlinewebsites', 0) add_dir(XBMCUtils.getString(10023), 'listsonlinewebsites', 3, "", 'listsonlinewebsites', 0) add_dir(XBMCUtils.getString(10024), 'webcamsonlinewebsites', 3, "", 'webcamsonlinewebsites', 0) add_dir(XBMCUtils.getString(10025), 'otherssonlinewebsites', 3, "", 'otherssonlinewebsites', 0) else: enableNews = XBMCUtils.getSettingFromContext(int(sys.argv[1]), "enable_news") enablePlexus = XBMCUtils.getSettingFromContext(int(sys.argv[1]), "enable_plexus") enableMobdro = XBMCUtils.getSettingFromContext(int(sys.argv[1]), "enable_mobdro") enableSplive = XBMCUtils.getSettingFromContext(int(sys.argv[1]), "enable_splive") patchedFfmpeg = XBMCUtils.getSettingFromContext( int(sys.argv[1]), "ffmpeg_patch") enableDinamic = XBMCUtils.getSettingFromContext( int(sys.argv[1]), "enable_pastebin") if str(url) == 'tvseriesonline': add_dir("HDFull.tv", 'hdfulltv', 4, "http://hdfull.tv/templates/hdfull/images/logo.png", 'hdfulltv', 0) add_dir("Peliculasid.cc", 'peliculasbiz', 4, "", 'peliculasbiz', 0) add_dir("Pepecine.com", 'pepecine', 4, "http://pepecine.net/assets/images/logo.png", 'pepecine', 0) if enablePlexus: #add_dir("[T] - Elitetorrent.net", 'elitetorrentnet', 4, "http://www.elitetorrent.net/images/logo_elite.png",'elitetorrentnet', 0) add_dir( "[T] - TuMejorTorrent.net", 'tumejortorrent', 4, "http://tumejortorrent.com/pct1/library/content/template/images/tmt_logo.jpg", 'tumejortorrent', 0) add_dir( "[T] - MejorTorrent.net", 'mejortorrent', 4, "http://www.mejortorrent.com/imagenes_web/cabecera.jpg", 'mejortorrent', 0) elif str(url) == 'popularonline': add_dir( "Youtube.com", 'youtube', 4, "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/YouTube_logo_2015.svg/120px-YouTube_logo_2015.svg.png", 'youtube', 0) add_dir( "RTVE AlaCarta", 'rtvealacarta', 4, "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Logo_RTVE.svg/150px-Logo_RTVE.svg.png", 'rtvealacarta', 0) add_dir( "CLAN (rtve)", 'clan', 4, "https://upload.wikimedia.org/wikipedia/en/thumb/4/47/TVEClan_logo.png/150px-TVEClan_logo.png", 'clan', 0) add_dir( "TuneIn.com", 'tunein', 4, "https://lh5.googleusercontent.com/-NsniPTwZFkc/AAAAAAAAAAI/AAAAAAAAOLE/qtdbWIxlF5M/s0-c-k-no-ns/photo.jpg", 'tunein', 0) elif str(url) == 'paidonline': enableYomvi = XBMCUtils.getSettingFromContext( int(sys.argv[1]), "enable_yomvi") if enableYomvi == "true": add_dir( "Yomvi.es", 'yomvies', 4, "http://ver.movistarplus.es/img/logo-web-player-YOMVI.png", 'yomvies', 0) elif str(url) == 'programsonline': if enableSplive == "true": add_dir( "Spliveapp.com", 'splive', 4, "http://www.spliveapp.com/main/wp-content/uploads/footer_logo.png", 'splive', 0) if enableMobdro == 'true': add_dir("Mobdro.com", 'mobdro', 4, "https://www.mobdro.com/favicon.ico", 'mobdro', 0) elif str(url) == 'torrentwebsites' and enablePlexus == "true": add_dir( "Arenavision.in", 'arenavisionin', 4, "http://www.arenavision.in/sites/default/files/logo_av2015.png", 'arenavisionin', 0) add_dir("Acesoplisting.in", 'acesoplistingin', 4, "http://acesoplisting.in/images/acesop.gif", 'acesoplistingin', 0) add_dir("Ace-tv.ru", 'acetvru', 4, "http://ace-tv.eu/logo.png", 'acetvru', 0) #elif str(url)=='usersonlinewebsites': #add_dir("Tvshow.me", 'tvshowme', 4, "http://www.tvshow.me/wp-content/uploads/2016/09/Icon_.png", 'tvshowme', 0) elif str(url) == 'sportsonline': add_dir("Live9.co", 'live9', 4, "", 'live9', 0) add_dir("Cricfree.tv", 'cricfree', 4, "http://cricfree.tv/images/logosimg.png", 'cricfree', 0) add_dir("Mamahd.com", 'mamahdcom', 4, "http://mamahd.com/images/logo.png", 'mamahdcom', 0) add_dir("Vipracing.net", 'vipracinginfo', 4, "", 'vipracinginfo', 0) add_dir("Zonasports.me", 'zonasportsme', 4, "http://i.imgur.com/yAuKRZw.png", 'zonasportsme', 0) elif str(url) == 'newsonlinewebsites' and enableNews == "true": add_dir("Bbc.co.uk", 'bbccouk', 4, "", 'bbccouk', 'http://feeds.bbci.co.uk/news/rss.xml?edition=int') add_dir( "Reuters.com", 'reuters', 4, "http://www.thewrap.com/wp-content/uploads/2013/10/Reuters-Logo.jpg", 'reuters', 0) add_dir( "CNN.com", 'editioncnn', 4, "http://i.cdn.cnn.com/cnn/.e1mo/img/4.0/logos/logo_cnn_badge_2up.png", 'editioncnn', 0) add_dir("ElMundo.es", 'editionelmundo', 4, "http://estaticos.elmundo.es/imagen/canalima144.gif", 'editionelmundo', 0) add_dir("ElPais.es", 'editionelpais', 4, "http://ep01.epimg.net/corporativos/img/elpais2.jpg", 'editionelpais', 0) elif str(url) == 'worldstvonlinewebsites': add_dir( "Filmon.com", 'filmon', 4, "http://static.filmon.com/theme/img/filmon_small_logo.png", 'filmoncom', 0) add_dir("Streamgaroo.com", 'streamgaroo', 4, "http://www.streamgaroo.com/images/logo.png", 'streamgaroo', 0) elif str(url) == 'listsonlinewebsites': add_dir( "Ramalin.com", 'ramalin', 4, "http://websites-img.milonic.com/img-slide/420x257/r/ramalin.com.png", 'ramalin', 0) if enableDinamic == "true": add_dir("Pastebin.com", 'pastebincom', 4, "", 'pastebincom', 0) add_dir("Redeneobux.com", 'redeneobuxcom', 4, "", 'redeneobuxcom', 0) elif str(url) == 'webcamsonlinewebsites': add_dir("Skylinewebcams.com", 'skylinewebcams', 4, "http://www.skylinewebcams.com/website.jpg", 'skylinewebcams', 0) elif str(url) == 'otherssonlinewebsites': if patchedFfmpeg == "true": add_dir("Cinestrenostv.tv", 'cineestrenos', 4, "http://i.imgur.com/z3CINCU.jpg", 'cineestrenos', 0) add_dir("Vipgoal.net", 'vigoal', 4, "http://vipgoal.net/VIPgoal/img/logo.png", 'vigoal', 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 == 'https://hdfull.me/episodios#latest': html = HdfullTv.getContentFromUrl( url="https://hdfull.me/a/episodes", data="action=latest&start=0&limit=24&elang=ALL", cookie=cookie) logger.debug(html) x = json.loads(html) elif page == 'https://hdfull.me/episodios#premiere': html = HdfullTv.getContentFromUrl( url="https://hdfull.me/a/episodes", data="action=premiere&start=0&limit=24&elang=ALL", cookie=cookie) logger.debug(html) x = json.loads(html) elif page == 'https://hdfull.me/episodios#updated': html = HdfullTv.getContentFromUrl( url="https://hdfull.me/a/episodes", data="action=updated&start=0&limit=24&elang=ALL", cookie=cookie) logger.debug(html) x = json.loads(html) elif page == 'https://hdfull.me/peliculas-estreno': html = HdfullTv.getContentFromUrl( "https://hdfull.me/peliculas-estreno") logger.debug(html) x = HdfullTv.extractItems(html) elif page == 'https://hdfull.me/peliculas-actualizadas': html = HdfullTv.getContentFromUrl( "https://hdfull.me/peliculas-actualizadas") logger.debug(html) x = HdfullTv.extractItems(html) elif page == 'https://hdfull.me/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("https://hdfull.me/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.getContentFromUrl( url="https://hdfull.me/a/episodes", data={ "action": "season", "limit": "0", "season": season, "show": sid, "start": "0" }, cookie=cookie).read() x = json.loads(bruteJson) else: x = HdfullTv.extractProvidersFromLink(page, cookie) return x
def getChannels(page): x = [] logger.debug("page for pepecine: " + page) movie = 'movie' serie = 'series' if (str(page) == "0"): element = {} element["title"] = "Películas" element[ "link"] = 'https://pepecine.tv/titles/paginate?_token=%s&perPage=50&page=1&order=mc_num_of_votesDesc&type=' + movie + '&minRating=&maxRating=&availToStream=1' x.append(element) element = {} element["title"] = "Series" element[ "link"] = 'https://pepecine.tv/titles/paginate?_token=%s&perPage=50&page=1&order=mc_num_of_votesDesc&type=' + serie + '&minRating=&maxRating=&availToStream=1' x.append(element) last = {} last["title"] = "Últimas películas publicadas" last[ "link"] = "https://pepecine.tv/plugins/estrenos-peliculas-online.php" x.append(last) last = {} last["title"] = "Últimas series actualizadas" last[ "link"] = "https://pepecine.tv/plugins/estrenos-episodios-online.php" x.append(last) search = {} search["title"] = XBMCUtils.getString(11018) search["link"] = ".search" x.append(search) elif page == '.search': logger.debug("search page detected...") #display keyboard, it will wait for result keyboard = XBMCUtils.getKeyboard() keyboard.doModal() text = "" if (keyboard.isConfirmed()): text = keyboard.getText() x = Pepecine.search(text) elif '%s' in page: #token issue logger.debug("list page detected...") x = Pepecine.extractProvidersFromLink(page) elif page.endswith("=") or "://" not in page: #title in base64 format if "://" not in page: page += "=" #base64 could be missed title = base64.decodestring(page) logger.debug("trying to query by title: " + title) searchByTitle = "https://pepecine.tv/titles/paginate?_token=%s&perPage=24&page=1&order=mc_num_of_votesDesc&type=series&minRating=&maxRating=&query=" + urllib.quote_plus( title) + "&availToStream=true" #x = Pepecine.extractProvidersFromLink(searchByTitle,True) x = Pepecine.searchItemByTitle(title) elif '/ver-online/' in page: #extract links from html x = Pepecine.extractLinksFromPage(page) elif '/ver-serie/' in page: #serie if '/seasons/' in page: if '/episodes/' in page: #draw links x = Pepecine.extractLinksFromPage(page) else: #draw chapters html = Pepecine.getContentFromUrl( url=page, referer=Pepecine.MAIN_URL) episodesHtml = Decoder.extract( '<ul class="list-unstyled" id="episode-list" data-bind="moreLess, playVideos">', '</ul>', html) i = 0 for episodeHtml in episodesHtml.split( '<li class="media bord">'): if i > 0: link = Decoder.extract( '<a class="col-sm-3" href="', '"', episodeHtml) img = Decoder.extract( '<img class="media-object img-responsive" src="', '"', episodeHtml) title = Decoder.extract('"><b>', '</a></h4>', episodeHtml) element = {} element["link"] = link element["thumbnail"] = img element["title"] = title.replace("</b>", " - ") x.append(element) i += 1 else: #draw seasons html = Pepecine.getContentFromUrl(url=page, referer=Pepecine.MAIN_URL) seasonsHtml = Decoder.extract( '<div class="heading bord" style="margin:0 -15px;">', '<br>', html) i = 0 for seasonHtml in seasonsHtml.split('<a '): if i > 0: link = Decoder.extract('href="', '"', seasonHtml) title = Decoder.extract('class="sezon">', "<", seasonHtml) element = {} element["title"] = title element["link"] = link x.append(element) i += 1 elif '/plugins/' in page: #last films and series html = Pepecine.getContentFromUrl(url=page, referer=Pepecine.MAIN_URL) i = 0 for line in html.split('<td><a'): if i > 0: link = Pepecine.MAIN_URL + Decoder.extract( 'href=', " ", line) title = Decoder.extract(' alt="', '"', line) img = Decoder.extract('<img src=', ' ', line) element = {} element["title"] = title element["link"] = link element["thumbnail"] = img x.append(element) i += 1 else: logger.debug("nothing done for page: " + page) return x
def getChannels(page): x = [] logger.debug("page: " + page) if (str(page) == "0"): html = TuMejorTorrent.getContentFromUrl( url=TuMejorTorrent.MAIN_URL) menuHtml = Decoder.extract('<nav class="nav nav3" ', '</nav>', html) i = 0 for itemHtml in menuHtml.split("<li>"): logger.debug("li --> HTML is: " + itemHtml) if i > 1 and "href=" in itemHtml and 'title="' in itemHtml: item = {} title = Decoder.extract('title="', '"', itemHtml) if "Juegos " not in title: #title = Decoder.removeHTML(title) item["title"] = title link = Decoder.extract('href="', '"', itemHtml) if 'page=categorias' not in link: item["link"] = link x.append(item) i += 1 search = {} search["title"] = XBMCUtils.getString(11018) search["link"] = ".search" x.append(search) elif page == '.search': # display keyboard, it will wait for result keyboard = XBMCUtils.getKeyboard() keyboard.doModal() text = "" if (keyboard.isConfirmed()): text = keyboard.getText() x = TuMejorTorrent.search(text) elif '/descargar' in page or '/pelicula/' in page or '/varios/' in page or ( '/miniseries/' in page and page != TuMejorTorrent.MAIN_URL + "miniseries/"): #decode logger.debug("torrent page detected...") link = TuMejorTorrent.extractProviderFromLink(page) element = {} element["link"] = link element["title"] = page element["finalLink"] = True x.append(element) logger.debug("DONE!") elif ( "/miniseries/" in page or "/series/" in page or '/series-hd/' in page or '/series-vo/' in page ) and page != TuMejorTorrent.MAIN_URL + 'series/' and page != TuMejorTorrent.MAIN_URL + 'series-hd/' and page != TuMejorTorrent.MAIN_URL + "series-vo/" and page != TuMejorTorrent.MAIN_URL + "miniseries/": html = TuMejorTorrent.getContentFromUrl( url=page, referer=TuMejorTorrent.MAIN_URL) logger.debug("series html is: " + html) if '<ul class="buscar-list">' in html: x = TuMejorTorrent.extractItems(html) elif 'http://tumejorjuego.com/redirect/index.php?link=descargar-torrent/' in html: link = "tumejortorrent.com/download/" + Decoder.extract( 'http://tumejorjuego.com/redirect/index.php?link=descargar-torrent/', '/";', html) + ".torrent" logger.debug("torrent obtained is: " + link) element = {} element["link"] = link element["finalLink"] = True element["title"] = "[T] " + Decoder.extract( '<meta itemprop="description" content="', ' - ', html) x.append(element) else: x = TuMejorTorrent.extractContentFromLink(page) logger.debug("finished else part for TuMejorTorrent") return x
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) elif mode == 123: openPeliculasbiz(url, page) elif mode == 124: openElitetorrentnet(url, page) elif mode == 125: openClan(url, page) elif mode == 126: openTuMejorTorrent(url, page) elif mode == 127: openMejorTorrent(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]))
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")