def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    sThumbnail = params.getValue("sThumbnail")
    sSeason = params.getValue('season')
    sShowName = params.getValue('TVShowTitle')
    sHtmlContent = cRequestHandler(sUrl).request()
    pattern = '<div[^>]*class="staffelWrapperLoop[^"]*"[^>]*data-sid="%s">(.*?)</div></li></ul></div>' % sSeason
    isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = '<a[^>]*href="([^"]*)"[^>]*class="getStaffelStream"[^>]*>.*?<small>([^>]*?)</small>'
    isMatch, aResult = cParser.parse(sContainer, pattern)
    isMatchDesc, sDesc = cParser.parseSingleResult(sHtmlContent,
                                                   '"description">([^<]+)')

    total = len(aResult)
    for sEpisodeUrl, sTitle in aResult:
        oGuiElement = cGuiElement(sTitle, SITE_IDENTIFIER, "showHosters")
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        oGuiElement.setTVShowTitle(sShowName)
        oGuiElement.setSeason(sSeason)
        oGuiElement.setMediaType('episode')
        params.setParam('entryUrl', sEpisodeUrl)
        if isMatchDesc:
            oGuiElement.setDescription(sDesc)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
示例#2
0
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    sThumbnail = params.getValue('sThumbnail')
    sSeasonNr = params.getValue('sSeasonNr')
    sHtmlContent = cRequestHandler(sUrl).request()
    pattern = 'id="s%s">.*?</table>' % sSeasonNr
    isMatch, sHtmlContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = "href = '([^']+).*?episodeNumber.*?>([\d]+)"
    isMatch, aResult = cParser.parse(sHtmlContainer, pattern)
    isMatchDesc, sDesc = cParser.parseSingleResult(sHtmlContent, '<p>([^<]+)')

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    total = len(aResult)
    for sUrl, sEpisodeNr in aResult:
        oGuiElement = cGuiElement('Folge ' + str(sEpisodeNr), SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setMediaType('episode')
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        oGuiElement.setEpisode(sEpisodeNr)
        if sDesc:
            oGuiElement.setDescription(sDesc)
        params.setParam('entryUrl', sUrl)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
def getHosterUrl(sUrl=False):
    results = []
    parms = ParameterHandler()
    sTitle = parms.getValue('title')
    if not sUrl: sUrl = parms.getValue('url')
    oRequest = cRequestHandler(sUrl)
    oRequest.addHeaderEntry('Referer', URL_MAIN)
    sHtmlContent = oRequest.request()
    pattern = '<a rel=\\\\"(.*?)\\\\"'
    aResult = cParser().parse(sHtmlContent, pattern)
    if aResult[0]:
        aMovieParts = aResult[1]
        ii = 1
        for sPartUrl in aMovieParts:
            oRequest = cRequestHandler(sUrl + '&Part=' + str(ii))
            oRequest.addHeaderEntry('Referer', URL_MAIN)
            sHtmlContent = oRequest.request()
            pattern = '<a\shref=\\\\".*?(https?:.*?)\\\\"'

            aResult = cParser().parse(sHtmlContent, pattern)
            if aResult[0]:
                aParts = aResult[1]
                sPartUrl = aParts[0]
                result = {'streamUrl': sPartUrl, 'resolved': False, 'title': sTitle + ' Part ' + str(ii)}
                results.append(result)
                ii += 1
    else:
        isMatch, sStreamUrl = cParser.parseSingleResult(sHtmlContent, '<a\shref=\\\\".*?(https?:.*?)\\\\"')
        if not isMatch:
            isMatch, sStreamUrl = cParser.parseSingleResult(sHtmlContent, '<iframe src=[^"]*"([^"]+)')
        if isMatch:
            results.append({'streamUrl': sStreamUrl, 'resolved': False})
    return results
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    oRequest = cRequestHandler(sUrl)
    sHtmlContent = oRequest.request()
    pattern = 'click="loadEpisode\S([\d]+).*?subheading">([^<]+)'
    isMatch, aResult = cParser.parse(sHtmlContent, pattern)
    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return
    isMatchDesc, sDesc = cParser.parseSingleResult(
        sHtmlContent, '<div class="v-card__text">([^<]+)')
    isMatchFanart, sFanart = cParser.parseSingleResult(
        sHtmlContent, "background-image[^>]*url[^>]'([^']+)")
    cf = createUrl(sUrl, oRequest)
    total = len(aResult)
    for sName, sTitle in aResult:
        oGuiElement = cGuiElement(sName + ' - ' + sTitle, SITE_IDENTIFIER,
                                  'showHosterserie')
        if sFanart:
            oGuiElement.setThumbnail(sFanart + cf)
            oGuiElement.setFanart(sFanart + cf)
        if sDesc:
            oGuiElement.setDescription(sDesc)
        params.setParam('Episodes', sName)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
示例#5
0
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    sThumbnail = params.getValue('sThumbnail')
    sSeasonNr = params.getValue('sSeasonNr')
    sHtmlContent = cRequestHandler(sUrl).request()
    pattern = '">[^>]Staffel %s.*?</div>' % sSeasonNr
    isMatch, sHtmlContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = 'href="([^"]+).*?">([^<]+)'
    isMatch, aResult = cParser.parse(sHtmlContainer, pattern)
    isDesc, sDesc = cParser.parseSingleResult(sHtmlContent,
                                              '<po3>.*?<p>(.*?)<po3>')

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    total = len(aResult)
    for sUrl, sEpisodeNr in aResult:
        oGuiElement = cGuiElement(sEpisodeNr, SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setMediaType('episode')
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        if isDesc:
            oGuiElement.setDescription(sDesc)
        params.setParam('entryUrl', sUrl)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    entryUrl = params.getValue('entryUrl')
    sSeason = params.getValue('Season')
    oRequest = cRequestHandler(entryUrl)
    sHtmlContent = oRequest.request()
    pattern = 'Season <span>%s.*?></tbody>' % sSeason
    isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, pattern)
    if isMatch:
        pattern = 'Num">([\d]+).*?href="([^"]+)'
        isMatch, aResult = cParser.parse(sContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    isDesc, sDesc = cParser.parseSingleResult(sHtmlContent, 'class="Description">(.*?)</p>')
    total = len(aResult)
    for sEpisode, sUrl in aResult:
        oGuiElement = cGuiElement('Folge ' + sEpisode, SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setMediaType('season')
        oGuiElement.setSeason(sSeason)
        oGuiElement.setEpisode(sEpisode)
        oGuiElement.setMediaType('episode')
        oGuiElement.setThumbnail(params.getValue('sThumbnail'))
        if isDesc:
            oGuiElement.setDescription(sDesc)
        oGuiElement.setFanart(params.getValue('sThumbnail'))
        params.setParam('entryUrl', sUrl)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
示例#7
0
def showEntries(entryUrl=False, sGui=False, sSearchText=False):
    import time
    oGui = sGui if sGui else cGui()
    params = ParameterHandler()
    if not entryUrl: entryUrl = params.getValue('sUrl')
    sortBy = params.getValue('sortBy')
    page = params.getValue('page')
    type = params.getValue('type')
    sHtmlContent = cRequestHandler(entryUrl,
                                   ignoreErrors=(sGui is not False)).request()
    isMatch, url = cParser.parseSingleResult(sHtmlContent, "url : '([^']+)")
    isMatch, token = cParser.parseSingleResult(sHtmlContent, "token':'([^']+)")
    oRequest = cRequestHandler(url, ignoreErrors=(sGui is not False))
    if sSearchText:
        oRequest.addParameters('search', sSearchText)
        page = '1'
        type = 'Alle'
        sortBy = 'latest'
    oRequest.addHeaderEntry('X-Requested-With', 'XMLHttpRequest')
    oRequest.addParameters('_token', token)
    oRequest.addParameters('from', 1900)
    oRequest.addParameters('page', page)
    oRequest.addParameters('rating', 0)
    oRequest.addParameters('sortBy', sortBy)
    oRequest.addParameters('to', time.strftime("%Y", time.localtime()))
    oRequest.addParameters('type', type)
    oRequest.setRequestType(1)
    sHtmlContent = oRequest.request()
    pattern = '<a title=[^>]"(.*?)" href=[^>]"([^"]+).*?src=[^>]"([^"]+)'
    isMatch, aResult = cParser.parse(sHtmlContent, pattern)

    if not isMatch:
        if not sGui: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    cf = cRequestHandler.createUrl(entryUrl, oRequest)
    total = len(aResult)
    for sName, sUrl, sThumbnail in aResult:
        if sSearchText and not cParser().search(sSearchText, sName):
            continue
        isTvshow = True if 'folge' in sUrl else False
        sThumbnail = sThumbnail + cf
        oGuiElement = cGuiElement(sName[:-1], SITE_IDENTIFIER,
                                  'showSeasons' if isTvshow else 'showHosters')
        oGuiElement.setThumbnail(sThumbnail[:-1])
        oGuiElement.setFanart(sThumbnail[:-1])
        oGuiElement.setMediaType('tvshow' if isTvshow else 'movie')
        params.setParam('sThumbnail', sThumbnail)
        params.setParam('sName', sName)
        params.setParam('entryUrl', sUrl[:-1])
        oGui.addFolder(oGuiElement, params, isTvshow, total)
    if not sGui:
        pattern = 'Next.*?data-p=[^>]"([\d]+).*?d-flex'
        isMatch, sUrl = cParser.parseSingleResult(sHtmlContent, pattern)
        if isMatch:
            params.setParam('page', sUrl)
            oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params)
        oGui.setView('tvshows' if 'folge' in entryUrl else 'movies')
        oGui.setEndOfDirectory()
示例#8
0
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    entryUrl = params.getValue('entryUrl')
    sThumbnail = params.getValue('sThumbnail')
    sTVShowTitle = params.getValue('TVShowTitle')
    oRequest = cRequestHandler(entryUrl)
    oRequest.addHeaderEntry('Referer', entryUrl)
    sHtmlContent = oRequest.request()
    pattern = 'vk.show.*?</script>'
    isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, pattern)
    if isMatch:
        pattern = "(http[^',]+)"
        isMatch, aResult = cParser.parse(sContainer, pattern)
    if not isMatch:
        pattern = '<iframe[^>]src="([^"]+)'
        isMatch, sUrl = cParser().parse(sHtmlContent, pattern)
        if isMatch:
            oRequest = cRequestHandler('' + sUrl[0])
            oRequest.addHeaderEntry('Referer', entryUrl)
            sUrl = oRequest.request()
            pattern = '<iframe[^>]src="([^"]+)'
            isMatch, sUrl = cParser().parse(sUrl, pattern)
        if isMatch:
            oRequest = cRequestHandler('http:' + sUrl[0])
            oRequest.addHeaderEntry('Referer', entryUrl)
            sUrl = oRequest.request()
            pattern = "var[^>]season_list.*?var"
            isMatch, sContainer = cParser.parseSingleResult(sUrl, pattern)
            pattern = '"([^",]+)'
            isMatch, aResult = cParser.parse(sContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    i = 0
    isDesc, sDesc = cParser.parseSingleResult(
        sHtmlContent, 'description[^>]*content="([^"]+)')
    total = len(aResult)
    for sUrl in aResult:
        i = i + 1
        oGuiElement = cGuiElement('Episode ' + str(i), SITE_IDENTIFIER,
                                  'showHosters')
        oGuiElement.setTVShowTitle(sTVShowTitle)
        oGuiElement.setEpisode(i)
        if sThumbnail:
            oGuiElement.setThumbnail(sThumbnail)
            oGuiElement.setFanart(sThumbnail)
        if isDesc:
            oGuiElement.setDescription(sDesc)
        if 'hdgo' in sUrl:
            params.setParam('entryUrl', sUrl)
        else:
            params.setParam('entryUrl', 'http://s1.f53mbcg4ak.ru' + sUrl)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
示例#9
0
def getHosterUrlandPlay(sUrl=False):
    results = []
    oParams = ParameterHandler()
    sSecurityValue = oParams.getValue('securityCookie')
    sTitle = oParams.getValue('title')
    if not sUrl: sUrl = oParams.getValue('url')
    sUrl = sUrl.replace('&amp;', '&')
    oRequest = cRequestHandler(sUrl)
    #    if "kinox.ag" not in domain:
    #        oRequest.addHeaderEntry('Cookie', sSecurityValue)
    oRequest.addHeaderEntry('Referer', URL_MAIN)
    sHtmlContent = oRequest.request()
    # pattern for multipart stream
    pattern = '<a rel=\\\\"(.*?)\\\\"'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, pattern)
    if aResult[0]:
        aMovieParts = aResult[1]
        ii = 1
        for sPartUrl in aMovieParts:
            sPartUrl = sPartUrl.replace('\\/', '/')
            oRequest = cRequestHandler(sUrl + '&Part=' + str(ii))
            #            if "kinox.ag" not in domain:
            #                oRequest.addHeaderEntry('Cookie', sSecurityValue)
            oRequest.addHeaderEntry('Referer', URL_MAIN)
            sHtmlContent = oRequest.request()
            # pattern for stream url (single part)
            pattern = '<a\shref=\\\\".*?(https?:.*?)\\\\"'
            oParser = cParser()
            aResult = oParser.parse(sHtmlContent, pattern)
            if aResult[0]:
                aParts = aResult[1]
                sPartUrl = aParts[0].replace('\\/', '/')
                result = {
                    'streamUrl': sPartUrl,
                    'resolved': False,
                    'title': sTitle + ' Part ' + str(ii)
                }
                results.append(result)
                ii += 1
    else:
        # pattern for stream url (single part)
        isMatch, sStreamUrl = cParser.parseSingleResult(
            sHtmlContent, '<a\shref=\\\\".*?(https?:.*?)\\\\"')
        if not isMatch:
            isMatch, sStreamUrl = cParser.parseSingleResult(
                sHtmlContent, '<iframe src=[^"]*"([^"]+)')
        if isMatch:
            results.append({
                'streamUrl': sStreamUrl.replace('\\/', '/'),
                'resolved': False
            })
    return results
示例#10
0
def showSeasons():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('sUrl')
    sThumbnail = params.getValue('sThumbnail')
    sTVShowTitle = params.getValue('TVShowTitle')
    request = cRequestHandler(sUrl)
    sHtmlContent = request.request()
    pattern = '<div[^>]*class="hosterSiteDirectNav"[^>]*>.*?<ul>(.*?)<\/ul>'
    isMatch, sMainContent = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = '<a[^>]*href="([^"]*)"[^>]*title="([^"]*)"[^>]*>(.*?)<\/a>.*?'
    isMatch, aResult = cParser.parse(sMainContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    isMatchDesc, sDesc = cParser.parseSingleResult(
        sHtmlContent, '<p[^>]*data-full-description="(.*?)"[^>]*>')

    if not sThumbnail:
        isMatchThumb, sThumbnail = cParser.parseSingleResult(
            sHtmlContent,
            '<div[^>]*class="seriesCoverBox"[^>]*>.*?<img[^>]*src="([^"]*)"[^>]*>'
        )

        if isMatchThumb:
            sThumbnail = cCFScrape().createUrl(sThumbnail, request)
            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)
        if sDesc:
            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()
示例#11
0
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('sUrl')
    sTVShowTitle = params.getValue('TVShowTitle')
    sSeason = params.getValue('sSeason')

    if not sSeason:
        sSeason = "0"

    isMovieList = sUrl.endswith('filme')
    oRequest = cRequestHandler(sUrl)
    sHtmlContent = oRequest.request()
    pattern = '<table[^>]*class="seasonEpisodesList"[^>]*>(.*?)<\/table>'
    isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, pattern)
    if isMatch:
        pattern = '<tr[^>]*data-episode-season-id="(\d+).*?<a href="([^"]+).*?(?:<strong>(.*?)</strong>.*?)?(?:<span>(.*?)</span>.*?)?<'
        isMatch, aResult = cParser.parse(sContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    isDesc, sDesc = cParser.parseSingleResult(
        sHtmlContent, '<p[^>]*data-full-description="(.*?)"[^>]*>')
    isThumbnail, sThumbnail = cParser.parseSingleResult(
        sHtmlContent,
        '<div[^>]*class="seriesCoverBox"[^>]*>.*?<img[^>]*src="([^"]*)"[^>]*>')
    if isThumbnail:
        cf = cRequestHandler.createUrl(URL_MAIN, oRequest)
        sThumbnail = sThumbnail + cf

    total = len(aResult)
    for sID, sUrl, sNameGer, sNameEng in aResult:
        sName = "%d - " % int(sID)
        sName += sNameGer if sNameGer else sNameEng
        oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setMediaType('episode' if not isMovieList else 'movie')
        if isThumbnail:
            oGuiElement.setThumbnail(sThumbnail)
            oGuiElement.setFanart(sThumbnail)
        if isDesc:
            oGuiElement.setDescription(sDesc)
        if not isMovieList:
            oGuiElement.setSeason(sSeason)
            oGuiElement.setEpisode(int(sID))
            oGuiElement.setTVShowTitle(sTVShowTitle)
        params.setParam('sUrl', URL_MAIN + sUrl)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes' if not isMovieList else '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 = '<div[^>]*class="poster">.*?<img[^>]*src="([^"]+).*?<a[^>]*href="([^"]+)">([^<]+).*?(?:<span>([^<]+)?).*?(?:<div[^>]*class="texto">([^<]+)?)'
    isMatch, aResult = cParser.parse(sHtmlContent, pattern)

    if not isMatch:
        pattern = '<div[^>]*class="search_page_form">.*?</div></div></div>'
        isMatch, sHtmlContainer = cParser.parseSingleResult(
            sHtmlContent, pattern)
        if not isMatch:
            if not sGui:
                oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
            return

        pattern = '<img[^>]*src="([^"]+).*?<a[^>]*href="([^"]+)">([^<]+)</a>.*?(?:<span[^>]*class="year">([^<]+)?).*?<p>([^<]+)'
        isMatch, aResult = cParser.parse(sHtmlContainer, pattern)

    if not isMatch:
        if not sGui: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    total = len(aResult)
    for sThumbnail, sUrl, sName, sYear, sDesc in aResult:
        if sSearchText and not cParser().search(sSearchText, sName):
            continue
        sThumbnail = cParser.replace('-\d+x\d+\.', '.', sThumbnail)
        isTvshow = True if "tvshow" in sUrl else False
        oGuiElement = cGuiElement(sName, SITE_IDENTIFIER,
                                  'showSeasons' if isTvshow else 'showHosters')
        oGuiElement.setMediaType('tvshow' if isTvshow else 'movie')
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        oGuiElement.setYear(sYear)
        oGuiElement.setDescription(sDesc)
        params.setParam('entryUrl', sUrl)
        params.setParam('sName', sName)
        params.setParam('sThumbnail', sThumbnail)
        oGui.addFolder(oGuiElement, params, isTvshow, total)
    if not sGui:
        pattern = "class=[^>]current.*?href='([^']+)"
        isMatchNextPage, sNextUrl = cParser.parseSingleResult(
            sHtmlContent, pattern)
        if isMatchNextPage:
            params.setParam('sUrl', sNextUrl)
            oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params)
        oGui.setView('tvshows' if 'serien' in entryUrl else 'movies')
        oGui.setEndOfDirectory()
示例#13
0
def showSeasons():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    sThumbnail = params.getValue('sThumbnail')
    sTVShowTitle = params.getValue('sName')
    sHtmlContent = cRequestHandler(sUrl).request()
    pattern = '<div[^>]class="hosterSiteDirectNav".*?<div[^>]class="cf">'
    isMatch, sHtmlContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = 'href="([^"]+)"[^>]title="([^"]+)">([\d]+)'
    isMatch, aResult = cParser.parse(sHtmlContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    total = len(aResult)
    for sUrl, sName, sSeasonNr in aResult:
        oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, 'showEpisodes')
        oGuiElement.setMediaType('season')
        oGuiElement.setTVShowTitle(sTVShowTitle)
        oGuiElement.setSeason(sSeasonNr)
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        params.setParam('sUrl', sUrl)
        oGui.addFolder(oGuiElement, params, True, total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
def showSeasons():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    sThumbnail = params.getValue("sThumbnail")
    sName = params.getValue('sName')
    sHtmlContent = cRequestHandler(sUrl).request()
    pattern = '<a[^>]*class="staffTab"[^>]*data-sid="(\d+)"[^>]*>'
    isMatch, aResult = cParser.parse(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    isDesc, sDesc = cParser.parseSingleResult(sHtmlContent,
                                              '"description">([^<]+)')
    total = len(aResult)
    for sSeason in aResult:
        oGuiElement = cGuiElement("Staffel " + str(sSeason), SITE_IDENTIFIER,
                                  'showEpisodes')
        oGuiElement.setTVShowTitle(sName)
        oGuiElement.setSeason(sSeason)
        oGuiElement.setMediaType('season')
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        if isDesc:
            oGuiElement.setDescription(sDesc)
        oGui.addFolder(oGuiElement, params, True, total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
示例#15
0
def showValue():
    oGui = cGui()
    params = ParameterHandler()
    entryUrl = params.getValue('baseURL')
    valueType = params.getValue('valueType')
    sHtmlContent = cRequestHandler(entryUrl).request()
    pattern = 'name="%s.*?</option>.*?</option></select>' % valueType
    isMatch, sHtmlContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = '<option[^>]value="([^"]+)">.*?([^<]+)'
    isMatch, aResult = cParser.parse(sHtmlContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    for sName, sUrl in aResult:
        params.setParam('sUrl', entryUrl + '?' + valueType + '=' + sUrl)
        oGui.addFolder(cGuiElement(sName, SITE_IDENTIFIER, 'showEntries'),
                       params)
    oGui.setEndOfDirectory()
示例#16
0
def showEntries(entryUrl=False, sGui=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 = '<div[^>]*class="clear">.*?<a[^>]*href="([^"]+)">.*?<img[^>]*src="([^"]+)".*?<h2[^>]*class="entry-title">([^<]+)'
    isMatch, aResult = cParser.parse(sHtmlContent, pattern)

    if not isMatch:
        if not sGui:
            oGui.showInfo('streamon', 'Es wurde kein Eintrag gefunden')
        return

    total = len(aResult)
    for sUrl, sThumbnail, sName in aResult:
        oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, 'getHosterUrl')
        oGuiElement.setThumbnail(sThumbnail)
        params.setParam('entryUrl', sUrl)
        oGui.addFolder(oGuiElement, params, False, total)

    if not sGui:
        sPattern = '<a[^>]*class="nextpostslink"[^>]*rel="next"[^>]*href="([^"]+)'
        isMatchNextPage, sNextUrl = cParser.parseSingleResult(
            sHtmlContent, sPattern)
        if isMatchNextPage:
            params.setParam('sUrl', sNextUrl)
            oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params)
        oGui.setEndOfDirectory()
示例#17
0
def _getHostFromUrl(sUrl, sServername):
    # Seite abrufen
    sHtmlContent = cRequestHandler(sUrl).request()

    # JSon mit den Links ermitteln
    pattern = '(\[{".*?}\])'
    isMatch, sJson = cParser.parseSingleResult(sHtmlContent, pattern)

    # Nichts gefunden? => Raus hier
    if not isMatch:
        logger.info("hoster pattern did not match")
        return []

    # hosterliste initialisieren
    hosters = []

    # Alle Einträge durchlaufen und Hostereintrag erstellen
    for entry in json.loads(sJson):
        if 'file' not in entry or 'label' not in entry: continue
        sLabel = sServername + ' - ' + entry['label'].encode('utf-8')
        hoster = dict()
        hoster['link'] = entry['file']
        if entry['label'].encode('utf-8')[:-1] in QUALITY_ENUM:
            hoster['quality'] = QUALITY_ENUM[entry['label'].encode('utf-8')
                                             [:-1]]
        hoster['name'] = sLabel
        hosters.append(hoster)

    # Hoster zurückgeben
    return hosters
示例#18
0
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-src="([^"]+).*?alt="([^"]+).*?href="([^"]+).*?primary">([^<]+)'
    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, sName, sUrl, sType in aResult:
        isTvshow = True if "EPISODEN" in sType else False
        oGuiElement = cGuiElement(sName, SITE_IDENTIFIER,
                                  'showSeasons' if isTvshow else 'showHosters')
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        oGuiElement.setMediaType('tvshow' if isTvshow else 'movie')
        params.setParam('entryUrl', sUrl)
        params.setParam('sThumbnail', sThumbnail)
        params.setParam('sName', sName)
        oGui.addFolder(oGuiElement, params, isTvshow, total)
    if not sGui:
        isMatchNextPage, sNextUrl = cParser.parseSingleResult(
            sHtmlContent,
            'href="([^"]+)"[^>]data-ci-pagination-page="\d"[^>]rel="next">')
        if isMatchNextPage:
            params.setParam('sUrl', sNextUrl)
            oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params)
        oGui.setView('tvshows' if 'EPISODEN' in sType else 'movies')
        oGui.setEndOfDirectory()
示例#19
0
def showSeasons():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    sHtmlContent = cRequestHandler(sUrl).request()
    aResult = cParser().parse(sHtmlContent, "var[ ]subcats[ ]=[ ](.*?);")
    if not aResult[0] or not aResult[1][0]:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return
    data = json.loads(aResult[1][0])
    seasons = []
    for key, value in data.items():
        SeasonsNr = int(value['info']['staffel'])
        if SeasonsNr not in seasons:
            seasons.append(SeasonsNr)
    sThumbnail = params.getValue('sThumbnail')
    sName = params.getValue('sName')
    seasons = sorted(seasons)
    isMatchDesc, sDesc = cParser.parseSingleResult(
        sHtmlContent, '<img[^>]class.*?>(.*?)<br><br>')

    total = len(seasons)
    for iSeason in seasons:
        oGuiElement = cGuiElement("Staffel " + str(iSeason), SITE_IDENTIFIER,
                                  'showEpisodes')
        oGuiElement.setTVShowTitle(sName)
        oGuiElement.setSeason(iSeason)
        oGuiElement.setMediaType('season')
        if sDesc:
            oGuiElement.setDescription(sDesc)
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        oGui.addFolder(oGuiElement, params, True, total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sTVShowTitle = params.getValue('TVShowTitle')
    entryUrl = params.getValue('entryUrl')
    sSeasonNr = params.getValue('sSeasonNr')
    sHtmlContent = __getContent(entryUrl)
    pattern = '<span[^>]*class="se-t[^"]*">%s</span>.*?<ul[^>]*class="episodios"[^>]*>(.*?)</ul>' % sSeasonNr
    isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = '<a[^>]*href="([^"]+)"[^>]*>\s*<img src="([^"]+).*?<div[^>]*class="numerando">[^-]*-\s*(\d+)\s*?</div>.*?<a[^>]*>([^<]*)</a>'
    isMatch, aResult = cParser.parse(sContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    total = len(aResult)
    for sUrl, sThumbnail, sEpisodeNr, sName in aResult:
        oGuiElement = cGuiElement("%s - %s" % (sEpisodeNr, sName.strip()),
                                  SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setTVShowTitle(sTVShowTitle)
        oGuiElement.setSeason(sSeasonNr)
        oGuiElement.setEpisode(sEpisodeNr)
        sThumbnail = re.sub('-\d+x\d+\.', '.', sThumbnail)
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setMediaType('episode')
        params.setParam('entryUrl', sUrl.strip())
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sTVShowTitle = params.getValue('sName')
    entryUrl = params.getValue('entryUrl')
    sSeasonNr = params.getValue('sSeasonNr')
    sHtmlContent = cRequestHandler(entryUrl).request()
    pattern = '<span[^>]*class="se-t[^"]*">%s</span>.*?<ul[^>]*class="episodios"[^>]*>(.*?)</ul>' % sSeasonNr
    isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = '<a[^>]*href="([^"]+)"[^>]*>([^<]+)'
    isMatch, aResult = cParser.parse(sContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    total = len(aResult)
    for sUrl, sEpisodeNr in aResult:
        oGuiElement = cGuiElement('Folge' + sEpisodeNr, SITE_IDENTIFIER,
                                  'showHosters')
        oGuiElement.setTVShowTitle(sTVShowTitle)
        oGuiElement.setSeason(sSeasonNr)
        oGuiElement.setEpisode(sEpisodeNr)
        oGuiElement.setMediaType('episode')
        params.setParam('entryUrl', sUrl.strip())
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
示例#22
0
def showHosters(sUrl=False):
    params = ParameterHandler()
    sUrl = sUrl if sUrl else params.getValue('sUrl')
    sHtmlContent = _getRequestHandler(sUrl).request()
    pattern = "<div[^>]*data-url='([^']*)'[^>]*>"
    isMatch, sStreamUrl = cParser.parseSingleResult(sHtmlContent, pattern)
    hosters = []
    if isMatch:
        oRequestHandler = _getRequestHandler(sStreamUrl)
        oRequestHandler.addHeaderEntry('Referer', sUrl)
        sJson = oRequestHandler.request()

        if not sJson:
            return []
        data = json.loads(base64.decodestring(sJson))
        if "playinfo" in data:
            if isinstance(data["playinfo"], list):
                for urlData in data["playinfo"]:
                    hoster = dict()
                    hoster['link'] = urlData["link_mp4"]
                    hoster['name'] = urlData["quality"]
                    if urlData["quality"] in QUALITY_ENUM:
                        hoster['quality'] = QUALITY_ENUM[urlData["quality"]]
                    hoster['resolveable'] = True
                    hosters.append(hoster)
            else:
                hoster = dict()
                hoster['link'] = data["playinfo"]
                hoster['name'] = SITE_NAME
                hoster['resolveable'] = True
                hosters.append(hoster)
    if hosters:
        hosters.append('play')
    return hosters
示例#23
0
def showLinkList():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('sUrl')
    sHtmlContent = cRequestHandler(sUrl).request()
    isMatch, sContainer = cParser.parseSingleResult(
        sHtmlContent,
        '<ul[^>]*class="%s"[^>]*>(.*?)<\/ul>' % params.getValue('sCont'))

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    isMatch, aResult = cParser.parse(
        sContainer, '<li>\s*<a[^>]*href="([^"]*)"[^>]*>(.*?)<\/a>\s*<\/li>')

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    for sEntryUrl, sName in aResult:
        sEntryUrl = sEntryUrl if sEntryUrl.startswith(
            'http') else URL_MAIN + sEntryUrl
        params.setParam('sUrl', sEntryUrl)
        oGui.addFolder(
            cGuiElement(sName.strip(), SITE_IDENTIFIER, 'showEntries'), params)
    oGui.setEndOfDirectory()
示例#24
0
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sTVShowTitle = params.getValue('TVShowTitle')
    entryUrl = params.getValue('entryUrl')
    sHtmlContent = cRequestHandler(entryUrl).request()
    pattern = '<ul[^>]class="list-group">.*?<div[^>]style="clear'
    isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = '">([\d]+)'
    isMatch, aResult = cParser.parse(sContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    total = len(aResult)
    for sEpisodeNr in aResult:
        oGuiElement = cGuiElement('Folge ' + sEpisodeNr, SITE_IDENTIFIER,
                                  'showHosters')
        oGuiElement.setTVShowTitle(sTVShowTitle)
        oGuiElement.setEpisode(sEpisodeNr)
        oGuiElement.setMediaType('episode')
        params.setParam('sEpisodeNr', sEpisodeNr)
        params.setParam('isTvshow', 'true')
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
示例#25
0
def showSeasons():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    sThumbnail = params.getValue('sThumbnail')
    sTVShowTitle = params.getValue('sName')
    sHtmlContent = cRequestHandler(sUrl).request()
    pattern = 'class="season">.*?Staffel[^>]([\d]+)'
    isMatch, aResult = cParser().parse(sHtmlContent, pattern)
    isDesc, sDesc = cParser.parseSingleResult(sHtmlContent,
                                              '<po3>.*?<p>(.*?)<po3>')

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    total = len(aResult)
    for sSeasonNr in aResult:
        oGuiElement = cGuiElement('Staffel ' + sSeasonNr, SITE_IDENTIFIER,
                                  'showEpisodes')
        oGuiElement.setMediaType('season')
        oGuiElement.setTVShowTitle(sTVShowTitle)
        oGuiElement.setSeason(sSeasonNr)
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        if isDesc:
            oGuiElement.setDescription(sDesc)
        params.setParam('sSeasonNr', sSeasonNr)
        oGui.addFolder(oGuiElement, params, True, total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
def showSeasons():
    oGui = cGui()
    params = ParameterHandler()
    entryUrl = params.getValue('entryUrl')
    sThumbnail = params.getValue('sThumbnail')
    sTVShowTitle = params.getValue('TVShowTitle')
    sHtmlContent = cRequestHandler(entryUrl).request()
    pattern = "hdgo.show.*?</script>"
    isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if isMatch:
        pattern = "'([^\]]+)"
        isMatch, aResult = cParser.parse(sContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    i = 0
    total = len(aResult)
    for sSeasonNr in aResult:
        i = i + 1
        oGuiElement = cGuiElement('Staffel ' + str(i), SITE_IDENTIFIER,
                                  'showEpisodes')
        oGuiElement.setTVShowTitle(sTVShowTitle)
        oGuiElement.setSeason(i)
        if sThumbnail:
            oGuiElement.setThumbnail(sThumbnail)
            oGuiElement.setFanart(sThumbnail)
        params.setParam('sNr', i)
        params.setParam('sSeasonNr', sSeasonNr)
        oGui.addFolder(oGuiElement, params, True, total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
示例#27
0
def showValue():
    oGui = cGui()
    params = ParameterHandler()
    value = params.getValue("value")
    sHtmlContent = cRequestHandler(URL_MAIN).request()
    pattern = '">%s.*?</ul>[^>]*</div>[^>]*</div>' % value
    isMatch, sContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    pattern = 'href="([^"]+)">([^<]+)'
    isMatch, aResult = cParser.parse(sContainer, pattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    for sUrl, sName in aResult:
        params.setParam('sUrl', sUrl)
        if not 'mehr' in sName.lower():
            oGui.addFolder(cGuiElement(sName, SITE_IDENTIFIER, 'showEntries'),
                           params)
    oGui.setEndOfDirectory()
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    sSeasonNr = params.getValue('sSeasonNr')
    sThumbnail = params.getValue('sThumbnail')
    sHtmlContent = cRequestHandler(sUrl).request()
    pattern = 'episodeBBox%s">.*?</div>' % sSeasonNr
    isMatch, sHtmlContainer = cParser.parseSingleResult(sHtmlContent, pattern)

    if isMatch:
        pattern = 'href="([^"]+).*?">(\d+)'
        isMatch, aResult = cParser.parse(sHtmlContainer, pattern)
    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    isDesc, sDesc = cParser.parse(sHtmlContent,
                                  'name="description" content="([^"]+)')
    total = len(aResult)
    for sUrl, sEpisodeNr in aResult:
        oGuiElement = cGuiElement('Folge ' + sEpisodeNr, SITE_IDENTIFIER,
                                  'showHosters')
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        if isDesc:
            oGuiElement.setDescription(sDesc[0])
        params.setParam('entryUrl', URL_MAIN + sUrl)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
def __checkForNextPage(sHtmlContent, iCurrentPage):
    iNextPage = int(iCurrentPage) + 1
    sPattern = '<a[^>]*href="([^"]+)">\s*%s\s*</a>' % str(iNextPage)
    isMatch, sNextUrl = cParser.parseSingleResult(sHtmlContent, sPattern)
    if isMatch:
        return sNextUrl
    return False
示例#30
0
def showValueList():
    oGui = cGui()
    params = ParameterHandler()
    entryUrl = params.getValue('sUrl')
    valueType = params.getValue('valueType')
    sHtmlContent = cRequestHandler(entryUrl).request()

    sPattern = '<ul[^>]*class="[^"]*%s[^"]*">(.*?)</ul>' % valueType
    isMatch, sHtmlContainer = cParser.parseSingleResult(sHtmlContent, sPattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    sPattern = '<a[^>]*href="([^"]+)"[^>]*>([^<]+)</a>\s*<i>(\d+)</i>'
    isMatch, aResult = cParser.parse(sHtmlContainer, sPattern)

    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    for sUrl, sName, sCount in aResult:
        params.setParam('sUrl', sUrl)
        oGui.addFolder(
            cGuiElement('%s (%s) ' % (sName, sCount), SITE_IDENTIFIER,
                        'showEntries'), params)
    oGui.setEndOfDirectory()