def showEntries(entryUrl=False, sGui=False): oGui = sGui if sGui else cGui() params = ParameterHandler() if not entryUrl: entryUrl = params.getValue('sUrl') oRequest = cRequestHandler(entryUrl, ignoreErrors=(sGui is not False)) sHtmlContent = oRequest.request() pattern = '<div[^>]*class="col-md-[^"]*"[^>]*>.*?' # start element pattern += '<a[^>]*href="([^"]*)"[^>]*>.*?' # url pattern += '<img[^>]*src="([^"]*)"[^>]*>.*?' # thumbnail pattern += '<h3>(.*?)<span[^>]*class="paragraph-end">.*?' # title pattern += '<\/div>' # end element parser = cParser() isMatch, aResult = parser.parse(sHtmlContent, pattern) if not isMatch: if not sGui: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden') return total = len(aResult) for sEntryUrl, sThumbnail, sName in aResult: sThumbnail = cCFScrape().createUrl((URL_MAIN + sThumbnail), oRequest) oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, 'showSeasons') oGuiElement.setThumbnail(sThumbnail) oGuiElement.setMediaType('tvshow') oGuiElement.setTVShowTitle(sName) params.setParam('sUrl', URL_MAIN + sEntryUrl) params.setParam('sThumbnail', sThumbnail) oGui.addFolder(oGuiElement, params, True, total) if not sGui: oGui.setView('tvshows') oGui.setEndOfDirectory()
def __check_protection(self, html, user_agent, cookie_jar): oResponse = None if 'cf-browser-verification' in html: self.__sUrl = self.__sUrl.replace('https', 'http') oResponse = cCFScrape().resolve(self.__sUrl, cookie_jar, user_agent) elif 'Blazingfast.io' in html or 'xhr.open("GET","' in html: oResponse = cBFScrape().resolve(self.__sUrl, cookie_jar, user_agent) return oResponse
def __check_protection(self, html, user_agent, cookie_jar): oResponse = None if 'cf-browser-verification' in html: oResponse = cCFScrape().resolve(self.__sUrl, cookie_jar, user_agent) elif 'Blazingfast.io' in html: oResponse = cBFScrape().resolve(self.__sUrl, cookie_jar, user_agent) return oResponse
def showSeasons(): oGui = cGui() params = ParameterHandler() sUrl = params.getValue('sUrl') sThumbnail = params.getValue('sThumbnail') sTVShowTitle = params.getValue('TVShowTitle') oRequest = cRequestHandler(sUrl) sHtmlContent = oRequest.request() pattern = '<div[^>]*class="hosterSiteDirectNav"[^>]*>.*?<ul>(.*?)<\/ul>' parser = cParser() isMatch, sMainContent = parser.parseSingleResult(sHtmlContent, pattern) if not isMatch: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden') return pattern = '<a[^>]*href="([^"]*)"[^>]*title="([^"]*)"[^>]*>(.*?)<\/a>.*?' isMatch, aResult = parser.parse(sMainContent, pattern) if not isMatch: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden') return isMatchDesc, sDesc = parser.parseSingleResult( sHtmlContent, '<p[^>]*data-full-description="(.*?)"[^>]*>') if not sThumbnail: isMatchThumb, sThumbnail = parser.parseSingleResult( sHtmlContent, '<div[^>]*class="seriesCoverBox"[^>]*>.*?<img[^>]*src="([^"]*)"[^>]*>' ) if isMatchThumb: sThumbnail = cCFScrape().createUrl(sThumbnail, oRequest) params.setParam('sThumbnail', sThumbnail) total = len(aResult) for sEntryUrl, sName, sText in aResult: isMovie = sEntryUrl.endswith('filme') oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, ('showEpisodes')) oGuiElement.setMediaType('season' if not isMovie else 'movie') if sThumbnail: oGuiElement.setThumbnail(sThumbnail) oGuiElement.setDescription(sDesc) if not isMovie: oGuiElement.setTVShowTitle(sTVShowTitle) oGuiElement.setSeason(sText) params.setParam('sSeason', sText) params.setParam('sUrl', URL_MAIN + sEntryUrl) oGui.addFolder(oGuiElement, params, True, total) oGui.setView('seasons') oGui.setEndOfDirectory()
def showEntries(entryUrl=False, sGui=False): oGui = sGui if sGui else cGui() params = ParameterHandler() if not entryUrl: entryUrl = params.getValue('sUrl') iPage = int(params.getValue('page')) if iPage > 0: entryUrl = entryUrl + ('&' if '?' in entryUrl else '?') + 'page=' + str(iPage) oRequestHandler = cRequestHandler(entryUrl, ignoreErrors=(sGui is not False)) sHtmlContent = oRequestHandler.request() pattern = '<a[^>]*href="([^"]+)" title="([^"]+)"><img src="([^"]+)" alt="' parser = cParser() isMatch, aResult = parser.parse(sHtmlContent, pattern) if not isMatch: if not sGui: oGui.showInfo('streamon', 'Es wurde kein Eintrag gefunden') return total = len(aResult) for sUrl, sName, sThumbnail in aResult: sFunction = "showHosters" if not "serie" in sUrl else "showSeasons" if sThumbnail.startswith('/'): sThumbnail = URL_MAIN + sThumbnail sThumbnail = cCFScrape().createUrl(sThumbnail, oRequestHandler) oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, sFunction) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setMediaType('serie' if 'serie' in sUrl else 'movie') params.setParam('entryUrl', URL_MAIN + sUrl) params.setParam('sName', sName) params.setParam('Thumbnail', sThumbnail) oGui.addFolder(oGuiElement, params, bIsFolder="serie" in sUrl, iTotal=total) if not sGui: isMatch, strPage = parser.parseSingleResult( sHtmlContent, '<a[^>]*class="next page-numbers"[^>]*href="[^>]*page=([^"]+)">Next »' ) if isMatch: params.setParam('page', int(strPage)) oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params) oGui.setView('tvshows' if 'serie' in entryUrl else 'movies') oGui.setEndOfDirectory()
def showEntries(entryUrl=False, sGui=False): oGui = sGui if sGui else cGui() params = ParameterHandler() if not entryUrl: entryUrl = params.getValue('sUrl') iPage = int(params.getValue('page')) if iPage > 0: entryUrl = entryUrl + ('&' if '?' in entryUrl else '?') + 'page=' + str(iPage) oRequestHandler = cRequestHandler(entryUrl, ignoreErrors = (sGui is not False)) sHtmlContent = oRequestHandler.request() pattern = '<div class="cover"><a[^>]*href="([^"]+)" title="([^"]+).*?data-src="([^"]+)' parser = cParser() isMatch, aResult = parser.parse(sHtmlContent, pattern) if not isMatch: if not sGui: oGui.showInfo('xStream','Es wurde kein Eintrag gefunden') return total = len(aResult) for sUrl, sName, sThumbnail in aResult: sFunction = "showHosters" if not "serie" in sUrl else "showSeasons" sThumbnail = cCFScrape().createUrl(URL_MAIN + sThumbnail, oRequestHandler) oGuiElement = cGuiElement(cUtil().unescape(sName.decode('utf-8')).encode('utf-8'), SITE_IDENTIFIER, sFunction) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setMediaType('serie' if 'serie' in sUrl else 'movie') params.setParam('entryUrl', URL_MAIN + sUrl) params.setParam('sName', sName) params.setParam('Thumbnail', sThumbnail) oGui.addFolder(oGuiElement, params, bIsFolder="serie" in sUrl, iTotal=total) isMatch, strPage = parser.parseSingleResult(sHtmlContent, "<a[^>]class='current'.*?<a[^>]href='[^']*'[^>]*>(\d+)<[^>]*>") if isMatch: params.setParam('page', int(strPage)) oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params) if not sGui: oGui.setView('tvshows' if 'serie' in entryUrl else 'movies') oGui.setEndOfDirectory()