def showHosters(): sUrl = ParameterHandler().getValue('entryUrl') sHtmlContent = cRequestHandler(sUrl).request() sPattern = "recaptcha[^>]'([^']+)', '([^']+)', '([^']+).*?" sPattern += '">.*?>([^<]+)' isMatch, aResult = cParser().parse(sHtmlContent, sPattern) pattern = '<meta name="csrf-token" content="([^"]+)">' token = re.compile(pattern, flags=re.I | re.M).findall(sHtmlContent)[0] hosters = [] for e, h, sLang, sName in aResult: sUrl2 = getLinks(sUrl, e, h, token, sLang) hoster = {'link': cUtil.cleanse_text(sUrl2), 'name': cUtil.cleanse_text(sName).strip()} hosters.append(hoster) if hosters: hosters.append('getHosterUrl') return hosters
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 = 'data-id=.*?">[^>]*<a[^>]href="([^"]+)".*?' pattern += "(?:url[^>]'([^']+)?).*?" pattern += 'filename">([^<]+)' isMatch, aResult = cParser().parse(sHtmlContent, pattern) if not isMatch: if not sGui: oGui.showInfo('streamon', 'Es wurde kein Eintrag gefunden') return cf = createUrl(entryUrl, oRequest) total = len(aResult) for sUrl, sThumbnail, sName in aResult: sYear = re.compile("(.*?)\((\d*)\)").findall(sName) for name, year in sYear: sName = name sYear = year break isTvshow = True if "series" in sUrl else False oGuiElement = cGuiElement( sName, SITE_IDENTIFIER, 'showEpisodes' if isTvshow else 'showHosters') oGuiElement.setMediaType('tvshow' if isTvshow else 'movie') if sThumbnail: oGuiElement.setThumbnail(sThumbnail + cf) if sYear: oGuiElement.setYear(sYear) params.setParam('entryUrl', sUrl) oGui.addFolder(oGuiElement, params, isTvshow, total) isMatchNextPage, sNextUrl = cParser().parseSingleResult( sHtmlContent, '<a[^>]href="([^"]+)"[^>]*rel="next"') if isMatchNextPage: sNextUrl = cUtil.cleanse_text(sNextUrl) params.setParam('sUrl', sNextUrl) oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params) if not sGui: 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') oRequest = cRequestHandler(entryUrl, ignoreErrors=(sGui is not False)) oRequest.addHeaderEntry('Referer', entryUrl) sHtmlContent = oRequest.request() pattern = '<a[^>]*class="clip-link".*?title="([^"]+).*?href="([^"]+).*?(?:<img src="([^"]+).*?<span>([^<]+)?)' isMatch, aResult = cParser.parse(sHtmlContent, pattern) if not isMatch: if not sGui: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden') return total = len(aResult) for sName, sUrl, sThumbnail, sDesc in aResult: sYear = re.compile("(.*?)\((\d*)\)").findall(sName) for name, year in sYear: sName = name sYear = year break sID = re.compile('-(\d+)[^>]htm').findall(sUrl)[0] oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, 'showHosters') oGuiElement.setThumbnail(sThumbnail) if sDesc: oGuiElement.setDescription(sDesc) if sYear: oGuiElement.setYear(sYear) params.setParam('sUrl', URL_Hoster % sID) oGui.addFolder(oGuiElement, params, False, total) if not sGui: isMatchNextPage, sNextUrl = cParser.parseSingleResult( sHtmlContent, '<a[^>]*href="([^"]+)">>') if isMatchNextPage: params.setParam('sUrl', cUtil.cleanse_text(sNextUrl)) oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params) oGui.setView('movies') oGui.setEndOfDirectory()
def showEntries(entryUrl=False, sGui=False, sSearchText=False): oGui = sGui if sGui else cGui() params = ParameterHandler() if not entryUrl: entryUrl = params.getValue('sUrl') sHtmlContent = cRequestHandler(entryUrl, ignoreErrors=(sGui is not False)).request() pattern = 'poster.*?<img src="([^"]+).*?href="([^"]+)">([^"]+)</a>.*?body">(.*?)div.*?bottom">([^<]+)' isMatch, aResult = cParser.parse(sHtmlContent, pattern) if not isMatch: if not sGui: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden') return total = len(aResult) for sThumbnail, sUrl, sName, sDummy, sDesc in aResult: if sSearchText and not cParser().search(sSearchText, cUtil.cleanse_text(sName)): continue oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, 'showHosters') oGuiElement.setThumbnail(URL_MAIN + sThumbnail) oGuiElement.setFanart(URL_MAIN + sThumbnail) oGuiElement.setDescription(sDesc) isYear, sYear = cParser.parse(sDummy, '>([\d]+)<') if isYear: oGuiElement.setYear(sYear[0]) oGuiElement.setMediaType('movie') if sUrl.startswith('http'): params.setParam('entryUrl', sUrl) else: params.setParam('entryUrl', URL_MAIN + sUrl) oGui.addFolder(oGuiElement, params, False, total) if not sGui: pattern = 'class="swchItemA1"[^>]*>.*?</b>\s*<a[^>]*href="([^"]+)"' isMatchNextPage, sNextUrl = cParser.parseSingleResult( sHtmlContent, pattern) if isMatchNextPage: params.setParam('sUrl', URL_MAIN + sNextUrl) oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params) oGui.setView('movies') oGui.setEndOfDirectory()
def showGenres(): oGui = cGui() params = ParameterHandler() sHtmlContent = cRequestHandler(URL_MAIN).request() pattern = 'Filme</a><ul[^>]*class="sub-menu">.*?</ul></li><li[^>]*id' isMatch, sHtmlContainer = cParser.parseSingleResult(sHtmlContent, pattern) if not isMatch: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden') return pattern = '<a[^>]*href="([^"]+)".*?>([^"]+)</a>' isMatch, aResult = cParser.parse(sHtmlContainer, pattern) if not isMatch: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden') return for sUrl, sName in aResult: sName = cUtil.cleanse_text(sName) params.setParam('sUrl', sUrl) oGui.addFolder( cGuiElement(sName.strip(), SITE_IDENTIFIER, 'showEntries'), params) oGui.setEndOfDirectory()
def __init__(self, sTitle='', sSite=None, sFunction=None): self.__sType = 'video' self.__sMediaUrl = '' self.__sTitle = cUtil.cleanse_text(sTitle) self.__sTitleSecond = '' self.__sDescription = '' self.__sThumbnail = '' self.__sIcon = self.DEFAULT_FOLDER_ICON self.__aItemValues = {} self.__aProperties = {} self.__aContextElements = [] self.__sFanart = self.DEFAULT_FANART self.__sSiteName = sSite self.__sFunctionName = sFunction self._sLanguage = '' self._sSubLanguage = '' self._sYear = '' self._sQuality = '' self._mediaType = '' self._season = '' self._episode = '' self._imdbID = '' self._rating = '' self._isMetaSet = False
def setTitle(self, sTitle): self.__sTitle = cUtil.cleanse_text(sTitle)
def setDescription(self, sDescription): sDescription = cUtil.cleanse_text(sDescription) self.__sDescription = sDescription self.__aItemValues['plot'] = sDescription
def setTitleSecond(self, sTitleSecond): self.__sTitleSecond = cUtil.cleanse_text(str(sTitleSecond))