def parseMovieEntrySite():
    oParams = ParameterHandler()
    sSecurityValue = oParams.getValue('securityCookie')
    if (oParams.exist('sUrl')):
        sUrl = oParams.getValue('sUrl')
        # get movieEntrySite content
        sHtmlContent = __getHtmlContent(sUrl, sSecurityValue)
        sMovieTitle = __createMovieTitle(sHtmlContent)

        bIsSerie = __isSerie(sHtmlContent)
        if (bIsSerie):
            oGui = cGui()
            aSeriesItems = parseSerieSite(sHtmlContent)
            if (len(aSeriesItems) > 0):
                imdbID = oParams.getValue('imdbID')
                for item in aSeriesItems:
                    oGuiElement = cGuiElement(item['title'], SITE_IDENTIFIER, 'showHosters')
                    sShowTitle = sMovieTitle.split('(')[0].split('*')[0]
                    oGuiElement.setMediaType('episode')

                    oParams.addParams({'sUrl':item['url'], 'episode':item['episode'], 'season':item['season'], 'TvShowTitle':sShowTitle})
                    oGui.addFolder(oGuiElement, oParams, bIsFolder = False, iTotal = len(aSeriesItems))
            oGui.setView('episodes')
            oGui.setEndOfDirectory()
        else:
            result = showHosters(sHtmlContent, sMovieTitle)
            return result    
def showEpisodes():
    oGui = cGui()
    oParams = ParameterHandler()
    sSecurityValue = oParams.getValue('securityCookie')
    sUrl = oParams.getValue('sUrl')
    seasonNum = oParams.getValue('Season')
    sHtmlContent = __getHtmlContent(sUrl, sSecurityValue)
    sMovieTitle = __createMovieTitle(sHtmlContent)
    result = cParser().parse(sHtmlContent, '<div class="Grahpics">.*?<img src="([^"]+)"')
    thumbnail = URL_MAIN + str(result[1][0]) if result[0] else False

    aSeriesItems = parseSerieEpisodes(sHtmlContent, seasonNum)
    if not aSeriesItems[0]: return
    for item in aSeriesItems:
        oGuiElement = cGuiElement(item['title'], SITE_IDENTIFIER, 'showHosters')
        sShowTitle = sMovieTitle.split('(')[0].split('*')[0]
        oGuiElement.setThumbnail(thumbnail)
        oGuiElement.setMediaType('episode')
        oGuiElement.setSeason(item['season'])
        oGuiElement.setEpisode(item['episode'])
        oGuiElement.setTVShowTitle(sShowTitle)

        oParams.addParams({'sUrl': item['url'], 'episode': item['episode'], 'season': item['season']})
        oGui.addFolder(oGuiElement, oParams, bIsFolder=False, iTotal=len(aSeriesItems))
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
Exemplo n.º 3
0
def showHostersSeries():
    params = ParameterHandler()
    if params.exist("sUrl") and params.exist("sMovieTitle"):
        sUrl = params.getValue("sUrl")
        sMovieTitle = params.getValue("sMovieTitle")

        sHtmlContent = cRequestHandler(sUrl).request()
        sPattern = '<tr id="tablemoviesindex2".*?<a href="([^"]+)".*? width="16">([^<]+)<'
        aResult = cParser().parse(sHtmlContent.replace("\\", ""), sPattern)
        if aResult[0] == True:
            hosters = []
            previousName = ""
            iMatches = 2
            for aEntry in aResult[1]:
                sHoster = aEntry[1].strip()
                hoster = {}
                hoster["name"] = sHoster
                hoster["link"] = URL_MAIN + "/" + aEntry[0]
                if hoster["name"] == previousName:
                    hoster["displayedName"] = hoster["name"] + " (" + str(iMatches) + ")"
                    iMatches += 1
                else:
                    previousName = hoster["name"]
                    iMatches = 2
                hosters.append(hoster)
            hosters.append("showHoster")
            return hosters
Exemplo n.º 4
0
def showHostersSeries():
    oInputParameterHandler = ParameterHandler()
    if (oInputParameterHandler.exist('sUrl') and oInputParameterHandler.exist('sMovieTitle')):
        sUrl = oInputParameterHandler.getValue('sUrl')
        sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
        
        sHtmlContent = cRequestHandler(sUrl).request()        
        sPattern = '<tr id="tablemoviesindex2".*?<a href="([^"]+)".*? width="16">([^<]+)<'
        aResult = cParser().parse(sHtmlContent.replace('\\',''), sPattern)       
        if (aResult[0] == True):
            hosters = []
            previousName = ''
            iMatches = 2
            for aEntry in aResult[1]:
                sHoster = aEntry[1].strip()
                hoster = {}
                hoster['name'] = sHoster
                hoster['link'] = URL_MAIN + aEntry[0] 
                if hoster['name'] == previousName:
                    hoster['displayedName'] = hoster['name'] + ' ('+str(iMatches)+')'
                    iMatches += 1
                else:
                    previousName = hoster['name']
                    iMatches = 2            
                hosters.append(hoster)
            hosters.append('showHoster')
            return hosters
Exemplo n.º 5
0
def __getHtmlContent(sUrl = None, sSecurityValue=None):
    params = ParameterHandler()

    # Test if a url is available and set it
    if sUrl is None and not params.exist('siteUrl'):
        logger.info("There is no url we can request.")
        return False
    else:
        if sUrl is None:
            sUrl = params.getValue('siteUrl')

    # Test if a security value is available
    if sSecurityValue is None:
        if params.exist('securityCookie'):
            sSecurityValue = params.getValue('securityCookie')
        else :
            sSecurityValue = ''

    # Make the request
    oRequest = cRequestHandler(sUrl)
    #oRequest.addHeaderEntry('Cookie', sSecurityValue)
    #oRequest.addHeaderEntry('Accept', '*/*')
    #oRequest.addHeaderEntry('Host', 'gstream.to')

    return oRequest.request()
Exemplo n.º 6
0
def showEpisodes():
    oGui = cGui()


    oParams = ParameterHandler()
    sSeason = oParams.getValue('season')
    sMovieTitle = oParams.getValue('sMovieTitle')
    sMovie = oParams.getValue(PARAM_MOVIESEGMENT_KEY).replace(".html","/")
    sUrl = URL_SERIES_EPISODEURL + sMovie
    oRequest = cRequestHandler(sUrl)
    #oRequest.setHeaderEntry("Accept","application/json, text/javascript, */*; q=0.01")
    oRequest.addParameters("season",sSeason)
    oRequest.addHeaderEntry("X-Requested-With","XMLHttpRequest")
    oRequest.addHeaderEntry('Referer', sUrl)
    oRequest.addHeaderEntry('Accept', '*/*')
    oRequest.addHeaderEntry('Host', SITE_NAME.lower())
    sHtmlContent = oRequest.request()
    aData = sorted(loads(sHtmlContent)['episodes'])
    for aEntry in aData:
        logger.info(aEntry['episode'])
        oGuiElement = cGuiElement()
        oGuiElement.setFunction('_playEpisode')
        oGuiElement.setSiteName(SITE_IDENTIFIER)
        oGuiElement.setTitle(sMovieTitle + '- S'+sSeason+'E'+str(aEntry['episode']))
        oOutputParameterHandler = ParameterHandler()
        oOutputParameterHandler.setParam('link',aEntry['link'])
        oOutputParameterHandler.setParam('season',sSeason)
        oOutputParameterHandler.setParam('episode',aEntry['episode'])
        oOutputParameterHandler.setParam('sMovieTitle',sMovieTitle)
        oOutputParameterHandler.setParam(PARAM_URL_KEY,"http://www.ecostream.tv/stream/"+aEntry['link']+".html")
        oGui.addFolder(oGuiElement, oOutputParameterHandler, bIsFolder=False, iTotal = len(aData))

    oGui.setView('episodes')
    oGui.setEndOfDirectory()
def showCharacters():
    logger.info('load showCharacters')
    oGui = cGui()

    oParams = ParameterHandler()
    sSecurityValue = oParams.getValue('securityCookie')
    if oParams.exist('sUrl') and oParams.exist('page') and oParams.exist('mediaType'):
        siteUrl = oParams.getValue('sUrl')
        # iPage = oParams.getValue('page')
        # sMediaType = oParams.getValue('mediaType')
        # request
        sHtmlContent = __getHtmlContent(siteUrl, sSecurityValue)
        # parse content
        sPattern = 'class="LetterMode.*?>([^>]+)</a>'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)

    if aResult[0]:
        for aEntry in aResult[1]:
            oGuiElement = cGuiElement(aEntry, SITE_IDENTIFIER, 'ajaxCall')
            # oOutputParameterHandler = ParameterHandler()
            oParams.setParam('character', aEntry[0])
            # oOutputParameterHandler.addParameter('page', iPage)
            # oOutputParameterHandler.addParameter('mediaType', sMediaType)
            # oOutputParameterHandler.addParameter('securityCookie', sSecurityValue)
            if oParams.exist('mediaTypePageId'):
                sMediaTypePageId = oParams.getValue('mediaTypePageId')
                oParams.setParam('mediaTypePageId', sMediaTypePageId)
            oGui.addFolder(oGuiElement, oParams)

    oGui.setEndOfDirectory()
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()

    entryUrl = params.getValue('entryUrl')
    sTVShowTitle = params.getValue('TVShowTitle')
    sThumbnail = params.getValue('sThumbnail')
    sSeason = params.getValue('season')

    sHtmlContent = cRequestHandler(entryUrl).request()
    pattern = '<h\d+>[^"]*Staffel %s Episode (\d+)[^"]*</h\d+>' % sSeason
    aResult = cParser().parse(sHtmlContent, pattern)

    total = len (aResult)
    for sEpisode in sorted(aResult[1], key=lambda k: k) :
        oGuiElement = cGuiElement(sTVShowTitle + " - Folge " + sEpisode, SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setMediaType('episode')
        oGuiElement.setTVShowTitle(sTVShowTitle)
        oGuiElement.setSeason(sSeason)
        oGuiElement.setEpisode(sEpisode)
        oGuiElement.setThumbnail(sThumbnail)
        oGui.addFolder(oGuiElement, params, False, total)

    oGui.setView('episodes')
    oGui.setEndOfDirectory()
Exemplo n.º 9
0
def showMovies():
    oGui = cGui()
    oParams = ParameterHandler()
    if (oParams.exist(PARAM_URL_KEY)):
        sUrl = oParams.getValue(PARAM_URL_KEY)
        sRootUrl = sUrl
        iPage = 1
        if (oParams.exist(PARAM_PAGE_KEY)):
            iPage = oParams.getValue(PARAM_PAGE_KEY)
            sRootUrl = oParams.getValue(PARAM_ROOTURL_KEY)

            if (sRootUrl.startswith(URL_MOVIES_ALL) |
                  sRootUrl.startswith(URL_SEARCH)):
                sPattern = PATTERN_LIST
            elif (sRootUrl.startswith(URL_CURRENT_MOVIES) |
                sRootUrl.startswith(URL_NEW_MOVIES) |
                sRootUrl.startswith(URL_MAIN)):
                sPattern = PATTERN_DIVBOX
            else:
                oGui.showError('Error','wrong root url')
                return
            _parseMedia(sUrl,sRootUrl,iPage,sPattern, oGui)
        else:
            oGui.showError('Error','wrong page count')
            return

    else:
        oGui.showError('Error','No request url found')
    oGui.setEndOfDirectory()
Exemplo n.º 10
0
def showHosters():
    # ParameterHandler erzeugen
    params = ParameterHandler()
    
    # URL Anpassen um die Stream und nicht die Infos zu bekommen
    entryUrl = params.getValue('entryUrl').replace("-info","-stream")

    # Seite abrufen
    sHtmlContent = cRequestHandler(entryUrl).request()

    # Prüfen ob Episoden gefunden werden
    pattern = '<a[^>]*episode="([^"]*)"[^>]*href="([^"]*)"[^>]*>'
    aResult = cParser().parse(sHtmlContent, pattern)

    # Prüfen ob Einträge vorliegen
    if not aResult[0]:
        return

    # Ermitteln ob es sich um eine Serie handelt
    isTvshowEntry = params.getValue('isTvshow')

    # Falls Episoden gefunden worden => Episodenauswahl vorschalten
    if isTvshowEntry == 'True':
        showEpisodes(aResult[1], params)
    else:
        return getHosters(entryUrl)
Exemplo n.º 11
0
def parseMovieEntrySite():
    oParams = ParameterHandler()
    sSecurityValue = oParams.getValue('securityCookie')
    if oParams.exist('sUrl'):
        sUrl = oParams.getValue('sUrl')
        # get movieEntrySite content
        sHtmlContent = __getHtmlContent(sUrl, sSecurityValue)
        sMovieTitle = __createMovieTitle(sHtmlContent)
        # get thumbnail
        result = cParser().parse(sHtmlContent, '<div class="Grahpics">.*?<img src="([^"]+)"')
        thumbnail = URL_MAIN + str(result[1][0]) if result[0] else False

        bIsSerie = __isSerie(sHtmlContent)
        if bIsSerie:
            oGui = cGui()
            aSeriesItems = parseSerieSite(sHtmlContent)
            if not aSeriesItems[0]: return
            total = len(aSeriesItems)
            for aEntry in aSeriesItems[1]:
                seasonNum = str(aEntry)
                guiElement = cGuiElement('%s - Staffel %s' % (sMovieTitle, seasonNum), SITE_IDENTIFIER, 'showEpisodes')
                guiElement.setMediaType('season')
                guiElement.setSeason(seasonNum)
                guiElement.setTVShowTitle(sMovieTitle)

                oParams.setParam('Season', seasonNum)
                if thumbnail:
                    guiElement.setThumbnail(thumbnail)
                oGui.addFolder(guiElement, oParams, iTotal=total)
            oGui.setView('seasons')
            oGui.setEndOfDirectory()
        else:
            logger.info('Movie')
            result = showHosters(sHtmlContent, sMovieTitle)
            return result
Exemplo n.º 12
0
def __getHtmlContent(sUrl = None, sSecurityValue = None):
    oParams = ParameterHandler()
    # Test if a url is available and set it
    if sUrl is None and not oParams.exist('sUrl'):
        logger.error("There is no url we can request.")
        return False
    else:
        if sUrl is None:
            sUrl = oParams.getValue('sUrl')
    # Test if a security value is available
    if sSecurityValue is None:
        if oParams.exist("securityCookie"):
            sSecurityValue = oParams.getValue("securityCookie")
    if not sSecurityValue:
        sSecurityValue = ''
    # preferred language
    sPrefLang = __getPreferredLanguage()
    # Make the request
    oRequest = cRequestHandler(sUrl)
    oRequest.addHeaderEntry('Cookie', sPrefLang+sSecurityValue+'ListDisplayYears=Always;')
    oRequest.addHeaderEntry('Referer', URL_MAIN)
    oRequest.addHeaderEntry('Accept', '*/*')
    oRequest.addHeaderEntry('Host', domain)

    return oRequest.request()
Exemplo n.º 13
0
def showHosters():
    params = ParameterHandler()
    sHtmlContent = cRequestHandler(params.getValue('entryUrl')).request()
    aResult = cParser().parse(sHtmlContent, "var[ ]subcats[ ]=[ ](.*?);")
    if not aResult[0]: return []

    hosters = []
    data = json.loads(aResult[1][0])
    sJsonID = params.getValue('sJsonID')
    if not sJsonID:
        sJsonID = data.keys()[0]
    partCount = 1 # fallback for series (because they get no MultiParts)
    if '1' in data[sJsonID]:
        partCount = int(data[sJsonID]['1'])
    for jHoster in data[sJsonID]['links']:
        for jHosterEntry in data[sJsonID]['links'][jHoster]:
            if jHosterEntry[5] != 'stream': continue
            hoster = {}
            if partCount > 1:
                hoster['displayedName'] = jHoster + ' - Part ' + jHosterEntry[0]
            hoster['link'] = jHosterEntry[3]
            hoster['name'] = jHoster
            hosters.append(hoster)

    if len(hosters) > 0:
        hosters.append('getHosterUrl')
    return hosters
Exemplo n.º 14
0
def showHosters():
    params = ParameterHandler()
    imdbID = params.getValue('itemID')
    lang = params.getValue('lang')
    if not imdbID or not lang: return

    hosters = []
    for sLang in re.compile('(\w+)-').findall(lang):
        oResponse = _getJSonResponse(URL_LINKS, {'ID':imdbID,'lang':sLang} )
        if 'links' not in oResponse or len(oResponse['links']) == 0:
            return

        for aEntry in oResponse['links']:
            hoster = dict()
            if oResponse['links'][aEntry][0].upper() in QUALITY_ENUM:
                hoster['quality'] = QUALITY_ENUM[oResponse['links'][aEntry][0]]
            hoster['link'] = URL_OUT % oResponse['links'][aEntry][1]
            hoster['name'] = aEntry
            hoster['displayedName'] = '%s (%s) - Quality: %s' % (aEntry, sLang, oResponse['links'][aEntry][0])
            hosters.append(hoster)

    if hosters:
        hosters = sorted(hosters, key=lambda k: k['name']) #sort by hostername
        hosters.append('play')
    return hosters
Exemplo n.º 15
0
    def sendToPyLoad(self, siteResult = False):
        from resources.lib.handler.pyLoadHandler import cPyLoadHandler
        import urlresolver
        params = ParameterHandler()

        sMediaUrl = params.getValue('sMediaUrl')
        sFileName = params.getValue('MovieTitle')
        if not sFileName:
            sFileName = params.getValue('Title')
        if not sFileName: #nur vorrübergehend
            sFileName = params.getValue('sMovieTitle')
        if not sFileName:
            sFileName = params.getValue('title')

        if siteResult:
            sMediaUrl = siteResult['streamUrl']
            if siteResult['resolved']:
                sLink = sMediaUrl
            else:
                sLink = urlresolver.resolve(sMediaUrl)
        else:
            sLink = urlresolver.resolve(sMediaUrl)   
        try:
            msg = sLink.msg
        except:
            msg = False
        if sLink != False and not msg:
            logger.info('download with pyLoad: ' + sMediaUrl)
            cPyLoadHandler().sendToPyLoad(sFileName,sLink)
            return True
        else:
            cGui().showError('xStream', str(msg), 5)
            return False
Exemplo n.º 16
0
def showSeries():
    oGui = cGui()
    oParams = ParameterHandler()
    sChar = oParams.getValue('char')
    if sChar: sChar = sChar.lower()
    series = _getJsonContent("series")
    total = len(series)
    for serie in series:
        sTitle = serie["series"].encode('utf-8')
        if sChar:
            if sChar == '#':
                if sTitle[0].isalpha(): continue
            elif sTitle[0].lower() != sChar: continue
        if oParams.getValue('specific') == 'Season':
            guiElement = cGuiElement(sTitle, SITE_IDENTIFIER, 'randomSeason')
        else:
            guiElement = cGuiElement(sTitle, SITE_IDENTIFIER, 'showSeasons')
        guiElement.setMediaType('tvshow')
        guiElement.setThumbnail(URL_COVER % serie["id"])
        # Load series description by iteration through the REST-Api (slow)
        #sDesc = _getJsonContent("series/%d/1" % int(serie['id']))
        #guiElement.setDescription(sDesc['series']['description'].encode('utf-8'))
        #sStart = str(sDesc['series']['start'])
        #if sStart != 'None':
        #   guiElement.setYear(int(sDesc['series']['start']))
        oParams.addParams({'seriesID' : str(serie["id"]), 'Title' : sTitle})
        oGui.addFolder(guiElement, oParams, iTotal = total)

    oGui.setView('tvshows')
    oGui.setEndOfDirectory()
Exemplo n.º 17
0
def showHosters():
    oInputParameterHandler = ParameterHandler()
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sUrl = oInputParameterHandler.getValue(PARAM_URL_KEY)
    sHtmlContent = cRequestHandler(sUrl).request()
    
    sPattern = 'data-det="([^"]+)"'
    aResult = cParser().parse(sHtmlContent, sPattern)
    results = []

    if not aResult[0]: return results
    # can't handle without changes to requestHandler
    import mechanize, json
    request = mechanize.Request("http://kkiste.to/xhr/link", aResult[1][0])
    request.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
    request.add_header("X-Requested-With","XMLHttpRequest")
    request.add_header('Referer', sUrl)
    request.add_header('Accept', '*/*')
    request.add_header('Host', SITE_NAME.lower())
    request.add_header('Content-Length',len(aResult[1][0]))
    request.add_header('Content-Type','text/plain')
    resp = mechanize.urlopen(request)
    sHtmlContent = resp.read()
    try: items = json.loads(sHtmlContent)
    except: return results
    # multipart stream
    for i, item in enumerate(items) :
        result = {}
        result['streamUrl'] = 'http://www.ecostream.tv/stream/'+item
        result['resolved'] = False
        result['title'] = sMovieTitle + ' part ' +str(i)
        results.append(result)
    return results
Exemplo n.º 18
0
    def download(self, siteResult = False):
        from resources.lib.download import cDownload
        import urlresolver
        #oGui = cGui()
        params = ParameterHandler()

        sMediaUrl = params.getValue('sMediaUrl')
        sFileName = params.getValue('sFileName')
        sFileName = params.getValue('sMovieTitle')
        if siteResult:
            sMediaUrl = siteResult['streamUrl']
            if siteResult['resolved']:
                sLink = sMediaUrl
            else:
                sLink = urlresolver.resolve(sMediaUrl)
        else:
            sLink = urlresolver.resolve(sMediaUrl)
        logger.info('call download: ' + sMediaUrl)
        logger.info('file link: ' + str(sLink))
        if self.dialog:
            self.dialog.close()
        if (sLink != False):
            oDownload = cDownload()
            oDownload.download(sLink, 'Stream')
        else:
            #cGui().showError('Download', 'File deleted or Link could not be resolved', 5);
            return False
        return True
Exemplo n.º 19
0
def showEpisodes():
    oGui = cGui()
    oParams = ParameterHandler()
    sShowTitle = oParams.getValue('Title')
    seriesId = oParams.getValue('seriesID')
    sImdb = oParams.getValue('imdbID')
    sSeason = oParams.getValue('Season')

    logger.info("%s: show episodes of '%s' season '%s' " % (SITE_NAME, sShowTitle, sSeason))

    data = _getJsonContent("series/%s/%s" % (seriesId, sSeason))
    total = len(data['epi'])
    for episode in data['epi']:
        title = "%d - " % int(episode['epi'])
        if episode['german']:
            title += episode['german'].encode('utf-8')
        else:
            title += episode['english'].encode('utf-8')
        guiElement = cGuiElement(title, SITE_IDENTIFIER, 'showHosters')
        guiElement.setMediaType('episode')
        guiElement.setSeason(data['season'])
        guiElement.setEpisode(episode['epi'])
        guiElement.setTVShowTitle(sShowTitle)
        guiElement.setThumbnail(URL_COVER % data["series"]["id"])
        oParams.setParam('EpisodeNr', episode['epi'])
        oGui.addFolder(guiElement, oParams, bIsFolder = False, iTotal = total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
def showSeasons():
    oGui = cGui()
	
    params = ParameterHandler()
    sTitle = params.getValue('Title')
    seriesId = params.getValue('seriesID')
    sImdb = params.getValue('imdbID')
    
    logger.info("%s: show seasons of '%s' " % (SITE_NAME, sTitle))

    sHtmlContent = _getContent("series/%s/1" % seriesId)
    data = json.loads(sHtmlContent)
    total = int(data["series"]["seasons"])
    for i in range(1,total+1):
        seasonNum = str(i)
        guiElement = cGuiElement('%s - Staffel %s' %(sTitle,seasonNum), SITE_IDENTIFIER, 'showEpisodes')
        guiElement.setMediaType('season')
        guiElement.setSeason(seasonNum)
        guiElement.setTVShowTitle(sTitle)

        params.setParam('Season', seasonNum)
        guiElement.setThumbnail(URL_COVER % data["series"]["id"])
        oGui.addFolder(guiElement, params, iTotal = total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
Exemplo n.º 21
0
def showEpisodes():
    logger.info('load showEpisodes')
    oParams = ParameterHandler()
    sTitle = oParams.getValue('Title')
    sSeason = oParams.getValue('Season')

    sPattern = 'class="list-group-item".*?<span itemprop="name">Staffel ' + sSeason + ' Episode(?:[\s]*)(.*?)</span>.*?<a class="episode-name" href="(.*?)" title="(.*?)"'

    # request
    sHtmlContent = __getHtmlContent()
    # parse content
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    oGui = cGui()
    if (aResult[0] == True):
        for eNr, link, title in aResult[1]:
            guiElement = cGuiElement('Episode %s - %s' % (eNr, title), SITE_IDENTIFIER, 'showHosters')
            guiElement.setMediaType('episode')
            guiElement.setSeason(sSeason)

            # Special fix for non-int episode numbers (like Attack on Titan 13.5)
            # Can't even check this on thetvdb.com, because AOT 13.5 for example is Season 0 Episode 1
            # May I can use "<airsbefore_episode>" and "<airsbefore_season>" for metadata
            if representsInt(eNr):
                guiElement.setEpisode(eNr)

            guiElement.setTVShowTitle(sTitle)

            oParams.setParam('sUrl', link)
            oGui.addFolder(guiElement, oParams, bIsFolder=False)

    oGui.setView('episodes')
    oGui.setEndOfDirectory()
Exemplo n.º 22
0
def getHosters():
    oParams = ParameterHandler()
    sChannelUrl = oParams.getValue('channelUrl')
    sChannelName = oParams.getValue('channelName')
    logger.info('get stream url for URL: ' + sChannelUrl)

    oRequestHandler = cRequestHandler(sChannelUrl)
    oRequestHandler.addHeaderEntry('Referer', URL_MAIN)
    sHtmlContent = oRequestHandler.request();

    hosters = []

    sPattern = "'file': '(.*?)',"
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if aResult[0]:
        sUrl = str(aResult[1])[2:-2]
        logger.info('load channel ' + sChannelName + ' with url ' + sUrl)

        hoster = {}
        hoster['link'] = sUrl
        hoster['name'] = 'streamcloud'  # dummy
        hosters.append(hoster)
    hosters.append('getHosterUrl')
    return hosters
Exemplo n.º 23
0
def showSeasons():
    oGui = cGui()
    params = ParameterHandler()
    sTitle = params.getValue('Title')
    seriesId = params.getValue('seriesID')
    sImdb = params.getValue('imdbID')

    logger.info("%s: show seasons of '%s' " % (SITE_NAME, sTitle))

    data = _getJsonContent("series/%s/1" % seriesId)
    rangeStart = not int(data["series"]["movies"])
    total = int(data["series"]["seasons"])
    for i in range(rangeStart, total + 1):
        seasonNum = str(i)
        if i is 0:
            seasonTitle = 'Film(e)'
            dialogType = 'showCinemaMovies'
        else:
            seasonTitle = '%s - Staffel %s' %(sTitle, seasonNum)
            if params.getValue('specific') == 'Episode':
                dialogType = 'randomEpisode'
            else:
                dialogType = 'showEpisodes'
        guiElement = cGuiElement(seasonTitle, SITE_IDENTIFIER, dialogType)
        guiElement.setMediaType('season')
        guiElement.setSeason(seasonNum)
        guiElement.setTVShowTitle(sTitle)

        params.setParam('Season', seasonNum)
        guiElement.setThumbnail(URL_COVER % data["series"]["id"])
        oGui.addFolder(guiElement, params, iTotal = total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
def showEpisodes():
    oGui = cGui()
    oParams = ParameterHandler()
    sShowTitle = oParams.getValue('Title')
    sUrl = oParams.getValue('siteUrl')
    sImdb = oParams.getValue('imdbID')    
    sSeason = oParams.getValue('Season')
    
    logger.info("%s: show episodes of '%s' season '%s' " % (SITE_NAME, sShowTitle, sSeason)) 
    
    oRequestHandler = cRequestHandler(sUrl+"/"+sSeason)
    sHtmlContent = oRequestHandler.request();
    data = json.loads(sHtmlContent)
    total = len(data['epi'])
    for episode in data['epi']:
        if episode['german']:
            title = episode['german'].encode('utf-8')
        else:
            title = episode['english'].encode('utf-8')
        guiElement = cGuiElement(str(episode['epi'])+" - "+title, SITE_IDENTIFIER, 'showHosters')
        guiElement.setMediaType('episode')
        guiElement.setSeason(data['season'])
        guiElement.setEpisode(episode['epi'])
        guiElement.setTVShowTitle(sShowTitle)
        guiElement.setThumbnail(URL_COVER % data["series"]["id"])

        #oParams.setParam('EpisodeNr', episode['epi'])
        oParams.setParam('siteUrl',sUrl+"/"+sSeason+"/"+episode['epi'])
        oGui.addFolder(guiElement, oParams, bIsFolder = False, iTotal = total)  
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
Exemplo n.º 25
0
def randomSeason():
    oGui = cGui()
    oParams = ParameterHandler()
    if oParams.getValue('specific') == 'Season' and not oParams.getValue('seriesID'):
        showSeries()
        return

    data = _getJsonContent("series/%s/1" % oParams.getValue('seriesID'))

    seasons = int(data["series"]["seasons"])+1

    randomSeason = random.randrange(1, seasons, 1)

    seasonNum = str(randomSeason)
    seasonTitle = '%s - Staffel %s' % (oParams.getValue('Title'), seasonNum)
    dialogType = 'showEpisodes'
    guiElement = cGuiElement(seasonTitle, SITE_IDENTIFIER, dialogType)
    guiElement.setMediaType('season')
    guiElement.setSeason(seasonNum)
    guiElement.setTVShowTitle(oParams.getValue('Title'))

    oParams.setParam('Season', seasonNum)
    guiElement.setThumbnail(URL_COVER % data["series"]["id"])
    oGui.addFolder(guiElement, oParams, iTotal=1)

    oGui.setEndOfDirectory()
Exemplo n.º 26
0
def parseMovieEntrySite():
    oParams = ParameterHandler()
    sSecurityValue = oParams.getValue('securityCookie')
    if (oParams.exist('sUrl')):
        sUrl = oParams.getValue('sUrl')
        # get movieEntrySite content
        sHtmlContent = __getHtmlContent(sUrl, sSecurityValue)
        sMovieTitle = __createMovieTitle(sHtmlContent)

        bIsSerie = __isSerie(sHtmlContent)
        if (bIsSerie):
            oGui = cGui()
            aSeriesItems = parseSerieSite(sHtmlContent)
            if (len(aSeriesItems) > 0):
                imdbID = oParams.getValue('imdbID')
                for item in aSeriesItems:
                    oGuiElement = cGuiElement(item['title'], SITE_IDENTIFIER, 'showHosters')
                    sShowTitle = sMovieTitle.split('(')[0].split('*')[0]
                    oGuiElement.setMediaType('episode')
                    #if META and imdbID:
                    #    oMetaget = metahandlers.MetaData()
                    #    meta = oMetaget.get_episode_meta(sShowTitle, imdbID, item['season'], item['episode'])
                    #    meta['TVShowTitle'] = sShowTitle
                    #    oGuiElement.setItemValues(meta)
                    #    oGuiElement.setThumbnail(meta['cover_url'])
                    #    oGuiElement.setFanart(meta['backdrop_url'])
                    #    oGuiElement.setTitle('%s %s' % (item['title'], meta['title'].encode('utf-8')))
                    oParams.addParams({'sUrl':item['url'], 'episode':item['episode'], 'season':item['season'], 'TvShowTitle':sShowTitle})
                    oGui.addFolder(oGuiElement, oParams, bIsFolder = False, iTotal = len(aSeriesItems))
            oGui.setView('episodes')
            oGui.setEndOfDirectory()
        else:
            result = showHosters(sHtmlContent, sMovieTitle)
            return result    
def showHosters():
    #oGui = cGui()
	
    oParams= ParameterHandler()
    sTitle = oParams.getValue('Title')	
    sUrl = oParams.getValue('siteUrl')
    
    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()
    #if not META:
    #    __createInfo(oGui, sHtmlContent, sTitle)
    
    sPattern = '<h3>Hoster dieser Episode(.*?)</ul>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        hosters = []
        sHtmlContent = aResult[1][0]
        sPattern = 'href="([^"]+)">.*?class="icon ([^"]+)"></span> ([^<]+?)</a>'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            for aEntry in aResult[1]:
                hoster = dict()
                hoster['link'] = URL_MAIN + '/' + str(aEntry[0])
                hoster['name'] = str(aEntry[2]).split(' - Teil')[0]
                hoster['displayedName'] = str(aEntry[2])
                hosters.append(hoster)
    hosters.append('getHosterUrl')
    return hosters
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()

    sHtmlContent = _getRequestHandler(params.getValue('entryUrl')).request()
    pattern = "<a[^>]*href=['\"]#streams_episodes_%d_(\d+)['\"][^>]*>.*?" % int(params.getValue('iReleaseId')) # EpisodeId
    pattern += "<strong>(\d+)</strong>(.*?)</span>" # Episode-Nr / Name
    aResult = cParser().parse(sHtmlContent, pattern)

    if not aResult[0] or not aResult[1][0]: 
        oGui.showInfo('xStream','Es wurde kein Eintrag gefunden')
        return

    sThumbnail = params.getValue('sThumbnail')
    sName = params.getValue('sName')

    total = len(aResult[1])
    for sEpisodeId, sNumber, sEpisodName in aResult[1]:
        oGuiElement = cGuiElement(str(int(sNumber)) + " - " + sEpisodName, SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setTVShowTitle(sName)
        oGuiElement.setMediaType('episode')
        oGuiElement.setEpisode(int(sNumber))
        oGuiElement.setThumbnail(sThumbnail)
        params.setParam('iEpisodeId', int(sEpisodeId))
        oGui.addFolder(oGuiElement, params, False, total)

    oGui.setView('episodes')
    oGui.setEndOfDirectory()
Exemplo n.º 29
0
def parseMovieSimpleList():
    oGui = cGui()
    params = ParameterHandler()
    oParser = cParser()
    
    if (params.exist('iPage')):
        iPage = params.getValue('iPage')
    else:
        iPage = 1

    if (params.exist('sUrl')):
        sUrl = params.getValue('sUrl')
        logger.info(sUrl)
        if (sUrl.find('tvshows-season-') != -1):
            sPattern = '<TR>\s*<TD.*?id="tdmovies".*?<a href="([^"]+)">(.*?)\s*</a>.*?<img border=0 src="http://[^/]+/img/([^"]+)".*?</TR>'
            if params.exist('sLanguageToken'):
                sLanguageToken = params.getValue('sLanguageToken')
                oRequest = cRequestHandler(sUrl)
                sHtmlContent = oRequest.request()
                aResult = oParser.parse(sHtmlContent, sPattern)
                if aResult[0] == True:
                    for aEntry in aResult[1]:
                        sUrl = str(aEntry[0]).strip()
                        if not (sUrl.startswith('http')):
                            sUrl = URL_MAIN +'/'+ sUrl
                        if aEntry[2] == sLanguageToken:
                            break
                    oRequest = cRequestHandler(sUrl)
                    sHtmlContent = oRequest.request()
                    aResult = oParser.parse(sHtmlContent, sPattern)
                    if aResult[0] == True:
                        for aEntry in aResult[1]:
                            sUrl = str(aEntry[0]).strip()
                            if not (sUrl.startswith('http')):
                                sUrl = URL_MAIN +'/'+ sUrl
                            if aEntry[2] == sLanguageToken:
                                break
                                
            else:
                oRequest = cRequestHandler(sUrl)
                sHtmlContent = oRequest.request()
                aResult = oParser.parse(sHtmlContent, sPattern)
                if aResult[0] == True:
                    sUrl = str(aResult[1][0][0]).strip()
                    if not (sUrl.startswith('http')):
                        sUrl = URL_MAIN + sUrl
                    oRequest = cRequestHandler(sUrl)
                    sHtmlContent = oRequest.request()
                    aResult = oParser.parse(sHtmlContent, sPattern)
                    if aResult[0] == True:
                        sUrl = str(aResult[1][0][0]).strip()
                        if not (sUrl.startswith('http')):
                            sUrl = URL_MAIN +'/'+ sUrl
            __getAllSeasons(sUrl)
            
        else:
            __parseMovieSimpleList(sUrl, iPage, oGui)
            oGui.setView('movies')
            oGui.setEndOfDirectory()
Exemplo n.º 30
0
def parseMovieResultSite():
    oGui = cGui()
    params = ParameterHandler()
    if (params.exist('siteUrl')):
        siteUrl = params.getValue('siteUrl')
        normalySiteUrl = params.getValue('normalySiteUrl')
        iPage = params.getValue('iPage')
        __parseMovieResultSite(oGui, siteUrl, normalySiteUrl, iPage)
    oGui.setEndOfDirectory()
Exemplo n.º 31
0
def showHosters():
    params = ParameterHandler()
    if (params.exist('sUrl') and params.exist('sMovieTitle')):
        sUrl = params.getValue('sUrl')
        sMovieTitle = params.getValue('sMovieTitle')

        sHtmlContent = cRequestHandler(sUrl).request()
        sPattern = '<tr id="tablemoviesindex2">.*?<a href="([^"]+)">([^<]+)<.*?alt="(.*?) .*?width="16">.*?</a>.*?smileys/([1-9]).gif"'
        aResult = cParser().parse(sHtmlContent.replace('\\', ''), sPattern)
        if (aResult[0] == True):
            hosters = []
            for aEntry in aResult[1]:
                sHoster = aEntry[2].strip()
                hoster = {}
                hoster['name'] = sHoster
                hoster['link'] = URL_MAIN + '/' + aEntry[0]
                hoster['displayedName'] = aEntry[
                    1] + ' - ' + sHoster + ' - Quality: ' + aEntry[3]
                hoster['quality'] = aEntry[3]
                hoster['date'] = aEntry[1].strip()
                hosters.append(hoster)
            hosters.append('showHoster')
            return hosters
Exemplo n.º 32
0
def showHosters():
    oParams = ParameterHandler()
    seriesId = oParams.getValue('seriesID')
    season = oParams.getValue('Season')
    episode = oParams.getValue('EpisodeNr')

    data = _getJsonContent("series/%s/%s/%s" % (seriesId, season, episode))

    if not data:
        return []

    hosters = []
    for link in data['links']:
        hoster = dict()
        hoster['link'] = URL_MAIN + 'watch/' + link['id']
        hoster['name'] = link['hoster']
        if hoster['name'] == "OpenLoadHD":
            hoster['name'] = "OpenLoad"
        hoster['displayedName'] = link['hoster']
        hosters.append(hoster)
    if hosters:
        hosters.append('getHosterUrl')
    return hosters
Exemplo n.º 33
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 = '<div[^>]*class="poster">.*?img[^>]src="([^"]+)"[^>]alt="([^"]+).*?(.*?)<a[^>]href="([^"]+).*?<span>([\d]+)</span>.*?<div[^>]class="texto">([^"]+)</div>'
    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 sThumbnail, sName, sDummy, sUrl, sYear, sDesc in aResult:
        isTvshow = True if "serie" in sUrl else False
        sThumbnail = sThumbnail + cf
        if sThumbnail.startswith('//'):
            sThumbnail = 'https:' + sThumbnail
        if sUrl.startswith('//'):
            sUrl = 'https:' + sUrl
        oGuiElement = cGuiElement(sName, SITE_IDENTIFIER,
                                  'showSeasons' if isTvshow else 'showHosters')
        oGuiElement.setMediaType('tvshow' if isTvshow else 'movie')
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        if 'German' in sDummy:
            oGuiElement.setLanguage('Deutsch')
        if 'English' in sDummy:
            oGuiElement.setLanguage('Englisch')
        oGuiElement.setYear(sYear)
        oGuiElement.setDescription(sDesc)
        params.setParam('entryUrl', sUrl)
        params.setParam('sName', sName)
        params.setParam('sThumbnail', sThumbnail)
        params.setParam('sDesc', sDesc)
        oGui.addFolder(oGuiElement, params, isTvshow, total)

    if not sGui:
        pattern = '"next"[^>]*href="([^"]+)'
        isMatchNextPage, sNextUrl = cParser.parseSingleResult(
            sHtmlContent, pattern)
        if isMatchNextPage:
            if sNextUrl.startswith('//'):
                sNextUrl = 'https:' + sNextUrl
            params.setParam('sUrl', sNextUrl)
            oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params)
        oGui.setView('tvshows' if 'serie' in sUrl else 'movies')
        oGui.setEndOfDirectory()
Exemplo n.º 34
0
def play(sUrl=False):
    # ParameterHandler erzeugen
    oParams = ParameterHandler()

    # URL ermitteln falls nicht übergeben
    if not sUrl: sUrl = oParams.getValue('url')

    # Array mit einem Eintrag für Hosterliste erzeugen (sprich direkt abspielen)
    results = []
    result = {'streamUrl': sUrl, 'resolved': True}
    results.append(result)

    # Ergebniss zurückliefern
    return results
Exemplo n.º 35
0
def showValueList():
    oGui = cGui()
    params = ParameterHandler()
    entryUrl = params.getValue('sUrl')
    valueType = params.getValue('valueType')

    sHtmlContent = cRequestHandler(entryUrl).request()
    sPattern = '<select[^>]*name="%s\[\]"[^>]*>(.*?)</select>' % valueType  # container#
    logger.info("sPattern %s" % sPattern)
    isMatch, strContainer = cParser.parseSingleResult(sHtmlContent, sPattern)

    if isMatch:
        sPattern = '<option[^>]*value="(.*?)"[^>]*>(.*?)</option>'  # container
        isMatch, aResult = cParser.parse(strContainer, sPattern)

    if not isMatch:
        return

    for sID, sName in aResult:
        params.setParam('sUrl', entryUrl + '&' + valueType + '[]=' + sID)
        oGui.addFolder(
            cGuiElement(sName.strip(), SITE_IDENTIFIER, 'showEntries'), params)
    oGui.setEndOfDirectory()
def showCinemaMovies():
    oGui = cGui()
    oParams = ParameterHandler()
    sShowTitle = oParams.getValue('Title')
    seriesId = oParams.getValue('seriesID')
    sImdb = oParams.getValue('imdbID')

    data = _getJsonContent("series/%s/0" % (seriesId))
    total = len(data['epi'])

    for movie in data['epi']:
        if movie['german']:
            title = movie['german'].encode('utf-8')
        else:
            title = movie['english'].encode('utf-8')
        guiElement = cGuiElement(title, SITE_IDENTIFIER, 'showHosters')
        guiElement.setMediaType('movie')
        guiElement.setTitle(title)
        guiElement.setThumbnail(URL_COVER % data["series"]["id"])
        oParams.setParam('EpisodeNr', movie['epi'])
        oGui.addFolder(guiElement, oParams, bIsFolder=False, iTotal=total)
    oGui.setView('movie')
    oGui.setEndOfDirectory()
Exemplo n.º 37
0
def showHosters():
    oParams = ParameterHandler()
    sUrl = oParams.getValue('entryUrl')
    sHtmlContent = __getContent(sUrl)
    sPattern = '<a[^>]*class="link_a"[^>]*href="([^"]+).*?domain=([^"]+).*?</td><td>([^<]+)</td><td>([^<]+)</td><td>'
    aResult = cParser().parse(sHtmlContent, sPattern)
    hosters = []
    for sUrl, sName, sQuali, sLang in aResult[1]:
        if not 'filecrypt' in sName:
            hoster = {'link': sUrl, 'name': sName}
            hosters.append(hoster)
    if hosters:
        hosters.append('getHosterUrl')
    return hosters
Exemplo n.º 38
0
def showHosters():
    oParams = ParameterHandler()
    sUrl = oParams.getValue('entryUrl')
    sHtmlContent = cRequestHandler(sUrl).request()
    sPattern = 'src=[^>]"([^"]+)"\s'
    aResult = cParser().parse(sHtmlContent, sPattern)
    hosters = []
    if aResult[1]:
        for sUrl in aResult[1]:
            hoster = {'link': sUrl, 'name': sUrl}
            hosters.append(hoster)
    if hosters:
        hosters.append('getHosterUrl')
    return hosters
Exemplo n.º 39
0
def showGenre():
    oGui = cGui()
    params = ParameterHandler()
    entryUrl = params.getValue('sUrl')
    sHtmlContent = cRequestHandler(entryUrl).request()
    pattern = "text: '([^']+)', value: '([^']+)"
    isMatch, aResult = cParser.parse(sHtmlContent, pattern)
    if not isMatch:
        oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return
    for sName, sID in aResult:
        params.setParam('sUrl', entryUrl + '&genre[]=' + sID)
        oGui.addFolder(cGuiElement(sName, SITE_IDENTIFIER, 'showEntries'), params)
    oGui.setEndOfDirectory()
Exemplo n.º 40
0
def __getHtmlContent(sUrl=None, ignoreErrors=False):
    parms = ParameterHandler()
    if sUrl is None and not parms.exist('sUrl'):
        logger.error("There is no url we can request.")
        return False
    elif sUrl is None:
        sUrl = parms.getValue('sUrl')
    sPrefLang = __getPreferredLanguage()
    oRequest = cRequestHandler(sUrl, ignoreErrors=ignoreErrors)
    oRequest.addHeaderEntry('Cookie', sPrefLang + 'ListDisplayYears=Always;')
    oRequest.addHeaderEntry('Referer', URL_MAIN)
    oRequest.addHeaderEntry('Accept', '*/*')
    oRequest.addHeaderEntry('Host', domain)
    return oRequest.request()
Exemplo n.º 41
0
def getHosterUrl(sUrl=False):
    oParams = ParameterHandler()

    logger.info(oParams.getAllParameters())

    if not sUrl:
        sUrl = oParams.getValue('url')

    results = []
    result = {}
    result['streamUrl'] = sUrl
    result['resolved'] = False
    results.append(result)
    return results
Exemplo n.º 42
0
def searchRequest(dictFilter=False, sGui=False):
    oGui = sGui if sGui else cGui()
    params = ParameterHandler()

    dictFilter = {}
    for (prop, val) in SEARCH_DICT.items():
        parmVal = params.getValue(prop)
        parmVal = ast.literal_eval(
            parmVal
        ) if prop == 'year[]' and parmVal else parmVal  # yes a bit ugly
        dictFilter[prop] = parmVal if parmVal else val
        params.setParam(prop, dictFilter[prop])

    oResponse = _getJSonResponse(URL_SEARCH, dictFilter, (sGui is not False))

    if 'entries' not in oResponse or len(oResponse['entries']) == 0:
        if not sGui: oGui.showInfo('xStream', 'Es wurde kein Eintrag gefunden')
        return

    sLanguage = _getPrefLanguage()

    total = len(oResponse['entries'])
    for aEntry in oResponse['entries']:
        aLang = re.compile('(\w+)-').findall(aEntry['language'])
        if sLanguage and sLanguage not in aLang:
            continue
        elif sLanguage:
            aLang = [sLanguage]
        oGuiElement = cGuiElement()
        oGuiElement.setSiteName(SITE_IDENTIFIER)
        oGuiElement.setFunction('showHosters')
        oGuiElement.setTitle(aEntry['title'].encode('utf-8'))
        oGuiElement.setMediaType('movie')
        oGuiElement.setThumbnail(URL_PROTOCOL + aEntry['cover'])
        oGuiElement.setYear(aEntry['year'])
        oGuiElement.setLanguage(', '.join(map(str, aLang)))
        if oGui.isMetaOn:
            oGuiElement.addItemValue('imdb_id', 'tt' + aEntry['imdb'])
        oOutParms = ParameterHandler()
        oOutParms.setParam('itemID', aEntry['imdb'])
        oOutParms.setParam('lang', aEntry['language'])
        oGui.addFolder(oGuiElement, oOutParms, False, total, True)

    if int(oResponse['current']) < int(oResponse['pages']):
        params.setParam('page', int(oResponse['current']) + 1)
        oGui.addNextPage(SITE_IDENTIFIER, 'searchRequest', params)

    if not sGui:
        oGui.setView('movies')
        oGui.setEndOfDirectory()
Exemplo n.º 43
0
def showHosters():
    oParams = ParameterHandler()
    id = oParams.getValue('id')
    sHtmlContent = cRequestHandler(URL_HOSTER % id + S0VZ).request()
    pattern = '(http[^"]+)'
    isMatch, aResult = cParser().parse(sHtmlContent, pattern)
    hosters = []
    for sUrl in aResult:
        hname = cParser.urlparse(sUrl)
        hoster = {'link': sUrl, 'name': hname}
        hosters.append(hoster)
    if hosters:
        hosters.append('getHosterUrl')
    return hosters
Exemplo n.º 44
0
def showValue():
    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 isMatch:
        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 sUrl, sName in aResult:
        sUrl = sUrl if sUrl.startswith('http') else URL_MAIN + sUrl
        params.setParam('sUrl', sUrl)
        oGui.addFolder(
            cGuiElement(sName.strip(), SITE_IDENTIFIER, 'showEntries'), params)
    oGui.setEndOfDirectory()
Exemplo n.º 45
0
def getHosters():
    hosters = []
    params = ParameterHandler()
    if (params.exist('movieUrl') and params.exist('sMovieTitle')):
        sSiteUrl = params.getValue('movieUrl')
        sMovieTitle = params.getValue('sMovieTitle')
        sHtmlContent = __getHtmlContent(sUrl = sSiteUrl)
        sPattern = 'id="ame_noshow_post.*?<a href="([^"]+)" title="[^"]+" target="_blank">([^<]+)</a>'
        aResult = cParser().parse(sHtmlContent, sPattern)
        if aResult[0] == True:
            for aEntry in aResult[1]:
                sUrl = aEntry[0]
                # extract hoster domainname            
                if 'gstream.to/secure/' in sUrl :
                    sHoster = sUrl.split('secure/')[-1].split('/')[0].split('.')[-2]
                else:
                    sHoster = sUrl.split('//')[-1].split('/')[0].split('.')[-2]
                hoster = {}
                hoster['link'] = sUrl
                hoster['name'] = sHoster
                hosters.append(hoster)
            hosters.append('getHosterUrl')
    return hosters
Exemplo n.º 46
0
def showSearchEntries(entryUrl=False, sGui=False, sSearchText=False):
    oGui = sGui if sGui else cGui()
    params = ParameterHandler()
    if not entryUrl: entryUrl = params.getValue('sUrl')
    oRequest = cRequestHandler(entryUrl)
    sHtmlContent = oRequest.request()
    pattern = '-2">.*?href="([^"]+).*?src="([^"]+).*?alt="([^"]+).*?year">([\d]+)(.*?)(?:<div[^>]class="contenido"><p>([^<]+)?)'
    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 sUrl, sThumbnail, sName, sYear, sDummy, sDesc in aResult:
        if sSearchText and not cParser().search(sSearchText, sName):
            continue
        if sThumbnail and not sThumbnail.startswith('http'):
            sThumbnail = 'https:' + sThumbnail
        sThumbnail = sThumbnail + cf
        if sUrl.startswith('//'):
            sUrl = 'https:' + sUrl
        isTvshow = True if "serie" 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)
        if 'de.png' in sDummy:
            oGuiElement.setLanguage('Deutsch')
        if 'en.png' in sDummy:
            oGuiElement.setLanguage('Englisch')
        oGuiElement.setDescription(sDesc)
        params.setParam('entryUrl', sUrl)
        params.setParam('sName', sName)
        params.setParam('sThumbnail', sThumbnail)
        params.setParam('sDesc', sDesc)
        oGui.addFolder(oGuiElement, params, isTvshow, total)
    if not sGui:
        pattern = "span[^>]*class=[^>]*current[^>]*>.*?</span><a[^>]*href='([^']+)"
        isMatchNextPage, sNextUrl = cParser.parseSingleResult(
            sHtmlContent, pattern)
        if isMatchNextPage:
            if sNextUrl.startswith('//'):
                sNextUrl = 'https:' + sNextUrl
            params.setParam('sUrl', sNextUrl)
            oGui.addNextPage(SITE_IDENTIFIER, 'showSearchEntries', params)
        oGui.setEndOfDirectory()
Exemplo n.º 47
0
def showHosters():
    oParams = ParameterHandler()

    oRequest = cRequestHandler(URL_REQUEST)
    oRequest.addParameters('mID', oParams.getValue('id'))
    oRequest.addParameters('raw', 'true')
    oRequest.addParameters('language', oParams.getValue('lang'))
    if oParams.getValue('season'):
        oRequest.addParameters('season', oParams.getValue('season'))
        oRequest.addParameters('episode', oParams.getValue('episode'))
    sHtmlContent = oRequest.request()

    if not sHtmlContent:
        return []

    jContent = json.loads(sHtmlContent)

    if not jContent[1]:
        return []

    hosters = []
    for ohoster in jContent[1].items():
        sName = ohoster[1]['name']

        for links in ohoster[1]['links']:
            hoster = dict()
            hoster['link'] = links['URL']
            hoster['name'] = sName
            if links['quality'] in QUALITY_ENUM:
                hoster['displayedName'] = '[%s] %s' % (QUALITY_ENUM[links['quality']], sName)
            hoster['quality'] = links['quality']
            hosters.append(hoster)

    if hosters:
        hosters.append('getHosterUrl')

    return hosters
Exemplo n.º 48
0
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sUrl = params.getValue('entryUrl')
    sThumbnail = params.getValue("Thumbnail")
    sSeason = params.getValue('season')
    sShowName = params.getValue('TVShowTitle')
    sHtmlContent = cRequestHandler(sUrl).request()
    sPattern = '<a[^>]*href="#(s%se(\d+))"[^>]*>(.*?)</a>' % sSeason
    isMatch, aResult = cParser().parse(sHtmlContent, sPattern)

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

    result, imdb = cParser().parseSingleResult(sHtmlContent,
                                               'IMDB\s?=\s?\'(\d+)')

    total = len(aResult)
    for sEpisodeUrl, sEpisodeNr, sEpisodeTitle in aResult:
        res = re.search('%s (.*)' % sEpisodeNr, sEpisodeTitle)
        if res:
            sEpisodeTitle = '%s - %s' % (sEpisodeNr, res.group(1))
        oGuiElement = cGuiElement(sEpisodeTitle, SITE_IDENTIFIER,
                                  "showHosters")
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        oGuiElement.setTVShowTitle(sShowName)
        oGuiElement.setEpisode(sEpisodeNr)
        oGuiElement.setSeason(sSeason)
        oGuiElement.setMediaType('episode')
        params.setParam('entryUrl', sUrl)
        params.setParam('val', sEpisodeUrl)
        params.setParam('IMDB', imdb)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sTVShowTitle = params.getValue('TVShowTitle')
    entryUrl = params.getValue('entryUrl')
    sSeasonNr = params.getValue('sSeasonNr')
    oRequest = cRequestHandler(entryUrl)
    sHtmlContent = oRequest.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="([^"]+)"[^>]*>\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')
        if sUrl and not sUrl.startswith('http'):
           sUrl = URL_MAIN + sUrl
        params.setParam('entryUrl', sUrl.strip())
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
Exemplo n.º 50
0
def showSeasons():
    oGui = cGui()
    params = ParameterHandler()
    sTitle = params.getValue('Title')
    seriesId = params.getValue('seriesID')

    logger.info("%s: show seasons of '%s' " % (SITE_NAME, sTitle))

    data = _getJsonContent("series/%s/1" % seriesId)

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

    rangeStart = not int(data["series"]["movies"])
    total = int(data["series"]["seasons"])
    for i in range(rangeStart, total + 1):
        seasonNum = str(i)
        if i is 0:
            seasonTitle = 'Film(e)'
            dialogType = 'showCinemaMovies'
        else:
            seasonTitle = '%s - Staffel %s' % (sTitle, seasonNum)
            if params.getValue('specific') == 'Episode':
                dialogType = 'randomEpisode'
            else:
                dialogType = 'showEpisodes'
        guiElement = cGuiElement(seasonTitle, SITE_IDENTIFIER, dialogType)
        guiElement.setMediaType('season')
        guiElement.setSeason(seasonNum)
        guiElement.setTVShowTitle(sTitle)
        guiElement.setDescription(data["series"]["description"])
        guiElement.setThumbnail(URL_COVER % data["series"]["id"])
        params.setParam('Season', seasonNum)
        oGui.addFolder(guiElement, params, iTotal=total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
def showReleases():
    oGui = cGui()
    params = ParameterHandler()

    sHtmlContent = _getRequestHandler(params.getValue('entryUrl'), True).request()
    pattern = "<a[^>]*href=['\"]#stream_(\d+)['\"][^>]*>.*?</i>(.*?)" # releaseId / Name (opt)
    pattern += "(?:<i[^>]*class=['\"].*?flag-(\w+)['\"][^>]*>.*?)?" # main-lang (opt)
    pattern += "(?:[|]\s<i[^>]*class=['\"].*?flag-(\w+)['\"][^>]*>.*?)?</li>" # suptitle-lang (opt)
    aResult = cParser().parse(sHtmlContent, pattern)

    if not aResult[0] or not aResult[1][0]: 
        oGui.showInfo('xStream','Es wurde kein Eintrag gefunden')
        return

    sThumbnail = params.getValue('sThumbnail')
    sName = params.getValue('sName')

    total = len(aResult[1])
    for sReleaseId, sReleaseName, sLang, sSubLang in aResult[1]:
        aStreams = cParser().parse(sHtmlContent, "id=['\"]streams_episodes_%s_\d['\"]" % sReleaseId)
        if not aStreams[0] or not aStreams[1][0]: # skip empty releases
            continue
        sReleaseName = sReleaseName.strip()
        if sLang and sSubLang:
            sReleaseName += " (%s | %s)" % (sLang.upper(),sSubLang.upper())
        elif sLang:
            sReleaseName += " (%s)" % (sLang.upper())
        oGuiElement = cGuiElement(sReleaseName, SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setThumbnail(sThumbnail)
        params.setParam('iReleaseId', int(sReleaseId))
        if len(aStreams[1]) > 1:
            oGuiElement.setFunction("showEpisodes")
            oGui.addFolder(oGuiElement, params, True, total)
        else:
            params.setParam('iEpisodeId', 0)
            oGui.addFolder(oGuiElement, params, False, total)
    oGui.setEndOfDirectory()
Exemplo n.º 52
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)
    isDesc, 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 isDesc:
            oGuiElement.setDescription(sDesc)
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        oGui.addFolder(oGuiElement, params, True, total)
    oGui.setView('seasons')
    oGui.setEndOfDirectory()
Exemplo n.º 53
0
def parseMovieEntrySite():
    oParams = ParameterHandler()
    sSecurityValue = oParams.getValue('securityCookie')
    if (oParams.exist('sUrl')):
        sUrl = oParams.getValue('sUrl')
        # get movieEntrySite content
        sHtmlContent = __getHtmlContent(sUrl, sSecurityValue)
        sMovieTitle = __createMovieTitle(sHtmlContent)
        # get thumbnail
        result = cParser().parse(sHtmlContent, '<div class="Grahpics">.*?<img src="([^"]+)"')
        thumbnail = ''
        if result[0]:
            thumbnail = URL_MAIN + str(result[1][0])

        bIsSerie = __isSerie(sHtmlContent)
        if (bIsSerie):
            oGui = cGui()
            aSeriesItems = parseSerieSite(sHtmlContent)
            if (len(aSeriesItems) > 0):
                imdbID = oParams.getValue('imdbID')
                for item in aSeriesItems:
                    oGuiElement = cGuiElement(item['title'], SITE_IDENTIFIER, 'showHosters')
                    sShowTitle = sMovieTitle.split('(')[0].split('*')[0]
                    oGuiElement.setThumbnail(thumbnail)
                    oGuiElement.setMediaType('episode')
                    oGuiElement.setSeason(item['season'])
                    oGuiElement.setEpisode(item['episode'])
                    oGuiElement.setTVShowTitle(sShowTitle)

                    oParams.addParams({'sUrl':item['url'], 'episode':item['episode'], 'season':item['season']})
                    oGui.addFolder(oGuiElement, oParams, bIsFolder = False, iTotal = len(aSeriesItems))
            oGui.setView('episodes')
            oGui.setEndOfDirectory()
        else:
            logger.info('Movie')
            result = showHosters(sHtmlContent, sMovieTitle)
            return result    
Exemplo n.º 54
0
def getHosters(sUrl=False):
    if not sUrl:
        params = ParameterHandler()
        oRequest = cRequestHandler(HOSTER_URL)
        oRequest.addHeaderEntry("X-Requested-With", "XMLHttpRequest")
        oRequest.setRequestType(1)
        oRequest.addParameters('imdbid', params.getValue('imdbid'))
        oRequest.addParameters('language', params.getValue('language'))
        oRequest.addParameters('season', params.getValue('Season'))
        oRequest.addParameters('episode', params.getValue('Episode'))
        sHtmlContent = oRequest.request()
    else:
        sHtmlContent = cRequestHandler(sUrl).request()

    if not sHtmlContent:
        return []

    sPattern = '<a[^>]*href="([^"]+)"[^>]*><img[^>]*class="([s|h]d+)linkbutton"'
    isMatch, aResult = cParser.parse(sHtmlContent, sPattern)

    hosters = []
    if not isMatch:
        return hosters

    for sUrl, sQuali in aResult:
        hoster = {}
        if not 'nurhdfilm' in sUrl.lower():
            hoster['link'] = sUrl
            hoster['name'] = str(urlparse(sUrl).netloc).title()
            hoster['displayedName'] = '%s [%s]' % (hoster['name'],
                                                   sQuali.upper())
            hoster['quality'] = QUALITY_ENUM[sQuali.upper()]
            hosters.append(hoster)

    if hosters:
        hosters.append('getHosterUrl')
    return hosters
Exemplo n.º 55
0
def showHosters(sHtmlContent='', sTitle=False):
    oParams = ParameterHandler()
    sSecurityValue = oParams.getValue('securityCookie')
    if (sTitle == False):
        sTitle = oParams.getValue('title')
    if (oParams.exist('sUrl')):
        sUrl = oParams.getValue('sUrl')

    sHtmlContent = __getHtmlContent(sUrl, sSecurityValue)

    sPattern = '<li id="Hoster.*?rel="([^"]+)".*?<div class="Named">(.*?)</div>(.*?)</div></li>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    hosters = []
    if (aResult[0]):
        for aEntry in aResult[1]:
            sHoster = aEntry[1]
            # check for additional mirrors
            sPattern = '<b>Mirror</b>: [1-9]/([1-9])<br />'
            oParser = cParser()
            aResult = oParser.parse(aEntry[2], sPattern)
            mirrors = 1
            if (aResult[0]):
                mirrors = int(aResult[1][0])
            for i in range(1, mirrors + 1):
                sUrl = URL_MIRROR + urllib.unquote_plus(aEntry[0])
                mirrorName = ""
                if (mirrors > 1):
                    mirrorName = "  Mirror " + str(i)
                    sUrl = re.sub(r'Mirror=[1-9]', 'Mirror=' + str(i), sUrl)
                hoster = {}
                hoster['name'] = sHoster
                hoster['link'] = sUrl
                hoster['displayedName'] = sHoster + mirrorName
                hosters.append(hoster)
        hosters.append('getHosterUrlandPlay')
    return hosters
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)
    isDesc, sDesc = cParser.parseSingleResult(sHtmlContent,
                                              '"description">([^<]+)')

    total = len(aResult)
    for sEpisodeUrl, sName in aResult:
        oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, "showHosters")
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setFanart(sThumbnail)
        oGuiElement.setTVShowTitle(sShowName)
        oGuiElement.setSeason(sSeason)
        oGuiElement.setMediaType('episode')
        if sEpisodeUrl.startswith('//'):
            params.setParam('entryUrl', 'https:' + sEpisodeUrl)
        else:
            params.setParam('entryUrl', sEpisodeUrl)
        if isDesc:
            oGuiElement.setDescription(sDesc)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
Exemplo n.º 57
0
def showEpisodes():
    oGui = cGui()
    params = ParameterHandler()
    sThumbnail = params.getValue('sThumbnail')
    sTVShowTitle = params.getValue('TVShowTitle')
    entryUrl = params.getValue('entryUrl')
    sSeasonNr = params.getValue('sSeasonNr')

    sHtmlContent = cRequestHandler(entryUrl).request()
    pattern = '<span[^>]*>\s*'  # container start
    pattern += '<a[^>]*href="([^"]+staffel-%s-[^"]+)"[^>]*><b>E(\d+)</b>.([^"]+)</a>.*?' % sSeasonNr  # url / epId / name
    pattern += '(?:<small[^>]*>([^<]*)</small>.*?)?'  # desc
    pattern += '</span>'  # container end
    isMatch, aResult = cParser.parse(sHtmlContent, pattern)

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

    total = len(aResult)
    for sUrl, sEpisodeNr, sName, sDesc in aResult:
        if sName and 'episode #' not in sName.lower():
            sName = "%s - %s" % (sEpisodeNr, sName.strip())
        else:
            sName = "Folge %s" % sEpisodeNr

        oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setTVShowTitle(sTVShowTitle)
        oGuiElement.setSeason(sSeasonNr)
        oGuiElement.setEpisode(sEpisodeNr)
        oGuiElement.setThumbnail(sThumbnail)
        oGuiElement.setDescription(sDesc)
        oGuiElement.setMediaType('episode')
        params.setParam('entryUrl', URL_MAIN + sUrl)
        oGui.addFolder(oGuiElement, params, False, total)
    oGui.setView('episodes')
    oGui.setEndOfDirectory()
Exemplo n.º 58
0
def showEpisodes():
    oGui = cGui()


    oParams = ParameterHandler()
    sSeason = oParams.getValue('season')
    sMovieTitle = oParams.getValue('sMovieTitle')
    sMovie = oParams.getValue(PARAM_MOVIESEGMENT_KEY).replace(".html","/")
    sUrl = URL_SERIES_EPISODEURL + sMovie
    oRequest = cRequestHandler(sUrl)
    #oRequest.setHeaderEntry("Accept","application/json, text/javascript, */*; q=0.01")
    oRequest.addParameters("season",sSeason)
    oRequest.addHeaderEntry("X-Requested-With","XMLHttpRequest")
    oRequest.addHeaderEntry('Referer', sUrl)
    oRequest.addHeaderEntry('Accept', '*/*')
    oRequest.addHeaderEntry('Host', SITE_NAME.lower())
    sHtmlContent = oRequest.request()
    aData = sorted(loads(sHtmlContent)['episodes'])
    for aEntry in aData:
        logger.info(aEntry['episode'])
        oGuiElement = cGuiElement()
        oGuiElement.setFunction('_playEpisode')
        oGuiElement.setSiteName(SITE_IDENTIFIER)
        oGuiElement.setTitle(sMovieTitle + '- S'+sSeason+'E'+str(aEntry['episode']))
        oGuiElement.setMediaType('episode')
        oGuiElement.setEpisode(aEntry['episode'])

        oOutputParameterHandler = ParameterHandler()
        oOutputParameterHandler.setParam('link',aEntry['link'])
        oOutputParameterHandler.setParam('season',sSeason)
        oOutputParameterHandler.setParam('episode',aEntry['episode'])
        oOutputParameterHandler.setParam('sMovieTitle',sMovieTitle)
        oOutputParameterHandler.setParam(PARAM_URL_KEY,"http://www.ecostream.tv/stream/"+aEntry['link']+".html")
        oGui.addFolder(oGuiElement, oOutputParameterHandler, bIsFolder=False, iTotal = len(aData))

    oGui.setView('episodes')
    oGui.setEndOfDirectory()
Exemplo n.º 59
0
def getHosters(sUrl=False):
    # ParameterHandler erzeugen 
    params = ParameterHandler()

    # URL und Name ermitteln falls nicht übergeben
    sUrl = sUrl if sUrl else params.getValue('sUrl')

    # Seite abrufen
    sHtmlContent = cRequestHandler(sUrl).request()

    # Servername und Episoden pro Server ermitteln
    pattern = "<ul[^>]*class=['\"]list-inline list-film['\"][^>]*>.*?([a-zA-Z0-9_ ]+)</div>(.*?)</ul>"
    isMatch, aResult = cParser.parse(sHtmlContent, pattern)

    # Hosterliste initialisieren
    hosters = []

    # Prüfen ob Server ermittelt werden konnte 
    if isMatch:
        # Prüfen ob eine direkte-Episode gewünscht ist
        aMatches = re.compile("episode=(\d+)$").findall(sUrl)

        # gewünsche Episode ermitteln wenn möglich
        sEpisode = "1" if not aMatches else aMatches[0]

        # Server-Block durchlaufen
        for sServername, sInnerHtml in aResult:
            # Alle Links für diesen Server ermitteln 
            isMatch, aResult = cParser.parse(sInnerHtml, "href=['\"]([^'\"]*)['\"][^>]*>")
            
            # Keine Links gefunden? => weiter machen 
            if not isMatch:
                continue

            # Alle Links durchlaufen
            for singleUrl in aResult:
                # Link auf korrekte Episode prüfen
                aMatches = re.compile("episode=(%s)$" % sEpisode).findall(singleUrl)

                # Wurde ein Link gefunden? => Einträge zur Gesamtliste hinzufügen
                if aMatches:
                    res = re.search("(\d+)-stream(?:\?episode=(\d+))?", singleUrl, re.I)
                    if res:
                        hosters.extend(_getHostFromUrl(res.group(1), res.group(2), sServername))

    # Sind Hoster vorhanden? => Nachfolgefunktion ergänzen
    if hosters:
        hosters.append('play')
    return hosters
Exemplo n.º 60
0
def __displayItems(oGui, sHtmlContent):
    # Test if a cookie was set, else define the default empty one
    sSecurityValue = ""
    oParams = ParameterHandler()
    if oParams.exist("securityCookie"):
        sSecurityValue = oParams.getValue("securityCookie")

    # The pattern to filter every item of the list
    sPattern = '<td class="Icon"><img width="16" height="11" src="/gr/sys/lng/(\d+).png" alt="language"></td>'+\
    '.*?title="([^\"]+)".*?<td class="Title">.*?<a href="([^\"]+)" onclick="return false;">([^<]+)</a> <span class="Year">([0-9]+)</span>'

    # Parse to get all items of the list
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if not aResult[0]:
        logger.error("Could not find an item")
        return
    # Go throught all items and create a gui element for them.
    total = len(aResult[1])
    for aEntry in aResult[1]:
        sTitle = cUtil().unescape(aEntry[3])
        # split title and subtitle language
        sTitle, subLang = __checkSubLanguage(sTitle)
        # get audio language
        sLang = __createLanguage(aEntry[0])
        sUrl = URL_MAIN + aEntry[2]
        mediaType = ''
        if aEntry[1] == 'movie' or aEntry[1] == 'cinema':
            mediaType = 'movie'
        elif aEntry[1] == 'series':
            mediaType = 'series'
        else:
            mediaType = 'documentation'

        oGuiElement = cGuiElement(sTitle, SITE_IDENTIFIER,
                                  'parseMovieEntrySite')
        oGuiElement.setLanguage(sLang)
        oGuiElement.setSubLanguage(subLang)
        oGuiElement.setYear(aEntry[4])
        oParams.setParam('sUrl', sUrl)
        oParams.setParam('mediaType', mediaType)
        if mediaType == 'series':
            oGuiElement.setMediaType('tvshow')
            oGui.addFolder(oGuiElement, oParams, iTotal=total)
        elif mediaType == 'movie':
            oGuiElement.setMediaType('movie')
            oGui.addFolder(oGuiElement, oParams, bIsFolder=False, iTotal=total)
        else:
            oGui.addFolder(oGuiElement, oParams, bIsFolder=False, iTotal=total)