def parseSerieSite(sHtmlContent):
  print("#########sHTMLConeten Series: %s" % sHtmlContent)

  aSeriesItems = []

  sPattern = 'id="SeasonSelection" rel="([^"]+)"'
  oParser = cParser()
  aResult = oParser.parse(sHtmlContent, sPattern)
  if (aResult[0] == True):
    aSeriesUrls = aResult[1][0].split("&")
    sSeriesUrl = '&' + str(aSeriesUrls[0]) + '&' + str(aSeriesUrls[1])

    sPattern = '<option.*?rel="([^"]+)".*?>Staffel ([^<]+)</option'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
      for aEntry in aResult[1]:
        aSeriesIds = aEntry[0].split(",")
        for iSeriesIds in aSeriesIds:
          aSeries = []
          iSeriesId = iSeriesIds
          iSeasonId = aEntry[1]

          sTitel = 'Staffel '+ str(iSeasonId) + ' - ' + str(iSeriesId)
          sUrl = URL_EPISODE_URL + sSeriesUrl + '&Season=' + str(iSeasonId) + '&Episode=' + str(iSeriesId)

          aSeries.append(sTitel)
          aSeries.append(sUrl)
          aSeriesItems.append(aSeries)

  return aSeriesItems
def showAllMovies():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();

    sPattern = '<div class="actorsindex">(.*?)<div class="boxfooter">'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]

        sPattern = '<li><a href="([^"]+)" title=".*?">(.*?)</a></li>'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            for aEntry in aResult[1]:
                oGuiElement = cGuiElement()
                oGuiElement.setSiteName(SITE_IDENTIFIER)
                oGuiElement.setFunction('showHosters')
		sTitle = cUtil().removeHtmlTags(str(aEntry[1]))
                oGuiElement.setTitle(sTitle)

                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', URL_MAIN + str(aEntry[0]))
		oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
                oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
def showGenre():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();

    sPattern = '<ul class="subnav">(.*?)</ul>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]

        sPattern = '<a href="([^"]+)" title=".*?">(.*?)</a></li>'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            for aEntry in aResult[1]:
                oGuiElement = cGuiElement()
                oGuiElement.setSiteName(SITE_IDENTIFIER)
                oGuiElement.setFunction('showMovieEntries')
                oGuiElement.setTitle(cUtil().removeHtmlTags(str(aEntry[1])))

                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', URL_MAIN + str(aEntry[0]))
                oOutputParameterHandler.addParameter('page', 1)
                oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
def showHosters():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    
    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();    

    sPattern = '<h3>Hoster dieser Episode(.*?)</ul>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]

        sPattern = '<a href="([^"]+)">.*?title="([^"]+)" />(.*?)</a>'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
             for aEntry in aResult[1]:
                oHoster = __checkHoster(str(aEntry[1]))
                if (oHoster != False):
                    oGuiElement = cGuiElement()
                    oGuiElement.setSiteName(SITE_IDENTIFIER)
                    oGuiElement.setFunction('getHosterUrlandPlay')
                    oGuiElement.setTitle(str(aEntry[2]))

                    oOutputParameterHandler = cOutputParameterHandler()
                    oOutputParameterHandler.addParameter('siteUrl', URL_MAIN + str(aEntry[0]))
                    oOutputParameterHandler.addParameter('hosterName', oHoster.getPluginIdentifier())
                    oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
def showSeries():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();

    sPattern = '<table>(.*?)</table>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]
        
        sPattern = '<a href="([^"]+)"><strong>(.*?)</strong>.*?<span lang="en">(.*?)</span></a>'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
             for aEntry in aResult[1]:
                oGuiElement = cGuiElement()
                oGuiElement.setSiteName(SITE_IDENTIFIER)
                oGuiElement.setFunction('showHosters')
                oGuiElement.setTitle(str(aEntry[1]) + ' - ' + str(aEntry[2]))

                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', URL_MAIN + str(aEntry[0]))
                oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
Beispiel #6
0
    def __getMediaLinkForGuest(self):
        
        oRequest = cRequestHandler(self.__sUrl)
        sHtmlContent = oRequest.request()

        sPattern = 'flashvars.initItemXML = "([^"]+)";'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        
        if (aResult[0] == True):
            sXmlFile = aResult[1][0]

            try:
                oRequest = cRequestHandler(sXmlFile)
                sHtmlContent = oRequest.request()
            except:
                try:
                    oRequest = cRequestHandler(sXmlFile)
                    sHtmlContent = oRequest.request()
                except:
                    # http error 502 :(
                    return False

            sPattern = '<url>(.*?)</url>'
            oParser = cParser()
            aResult = oParser.parse(sHtmlContent, sPattern)           

            if (aResult[0] == True):
                sStreamUrl = aResult[1][0]
                
                return True, sStreamUrl

        return False, False
def showEntries(entryUrl=False, sGui=False):
    oGui = sGui if sGui else cGui()
    params = ParameterHandler()
    if not entryUrl: entryUrl = params.getValue('sUrl')
    sHtmlContent = cRequestHandler(entryUrl).request()
    pattern = 'class="list_film.*?img src="([^"]+).*?\s=\s\'([^\']+).*?>([^"(]+).*?\(([^")]+)'
    aResult = cParser().parse(sHtmlContent, pattern)

    if aResult[0] and aResult[1][0]:
        total = len(aResult[1])
        util = cUtil()
        for sThumbnail, sUrl, sName, sJahr in aResult[1]:
            oGuiElement = cGuiElement(
                util.unescape(sName.decode('utf-8')).encode('utf-8'),
                SITE_IDENTIFIER, 'showHosters')
            oGuiElement.setThumbnail(sThumbnail)
            oGuiElement.setYear(sJahr)
            oGuiElement.setMediaType('movie')
            params.setParam('entryUrl', URL_MAIN + sUrl)
            oGui.addFolder(oGuiElement, params, False, total)

    pattern = '"><a href="([^"]+)"([^>]+)?>&raquo;'
    aResult = cParser().parse(sHtmlContent, pattern)
    if aResult[0] and aResult[1][0] and 'void' not in aResult[1][0][0]:
        params.setParam('sUrl', URL_MAIN + aResult[1][0][0])
        oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params)
    if not sGui:
        oGui.setView('movies')
        oGui.setEndOfDirectory()
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
Beispiel #9
0
    def __getMediaLinkForGuest(self):
        oRequest = cRequestHandler(self.__sUrl)
        sHtmlContent = oRequest.request()

        sPattern = 'vid=([^;]+);'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)

        if (aResult[0] == True):
            videoId = aResult[1][0]
           
            oRequest = cRequestHandler(self.URL_XML)
            oRequest.addParameters('vid', videoId)
            oRequest.addParameters('hiLoPref', 'lo')
            sHtmlContent = oRequest.request()

            sPattern = '<src>([^<]+)</src>'
            oParser = cParser()
            aResult = oParser.parse(sHtmlContent, sPattern)

            if (aResult[0] == True):
                sStreamUrl = aResult[1][0]
                return True, sStreamUrl

        return False, False
def __getSecurityCookieValue():
    oRequestHandler = cRequestHandler(URL_MAIN)
    sHtmlContent = oRequestHandler.request()

    sPattern = (
        '<HTML><HEAD><SCRIPT language="javascript" src="([^"]+)">'
        + "</SCRIPT></HEAD><BODY onload=\"scf\('(.*?)'\+'(.*?)','/'\);\"></BODY></HTML>"
    )
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if aResult[0] == False:
        return ""
    sScriptFile = URL_MAIN + str(aResult[1][0][0])
    sHashSnippet = str(aResult[1][0][1]) + str(aResult[1][0][2])

    oRequestHandler = cRequestHandler(sScriptFile)
    oRequestHandler.addHeaderEntry("Referer", "http://g-stream.in/")
    sHtmlContent = oRequestHandler.request()

    sPattern = 'escape\(hsh \+ "([^"]+)"\)'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    sHash = aResult[1][0]
    sHash = sHashSnippet + sHash
    sSecurityCookieValue = "sitechrx=" + str(sHash)
    logger.info("Token: " + sSecurityCookieValue)
    return sSecurityCookieValue
def displaySeasions():
    oGui = cGui()
    sPattern = '<div id="staffeln">(.*?)<div id='

    oRequest = cRequestHandler(URL_MAIN)
    sHtmlContent = oRequest.request()    

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
  
    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]
        
        sPattern = '<a href="([^"]+)">([^<]+)</a>'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)

        for aEntry in aResult[1]:
            oGuiElement = cGuiElement()
            oGuiElement.setSiteName(SITE_IDENTIFIER)
            oGuiElement.setFunction('showEpisodes')
            oGuiElement.setTitle(aEntry[1])
            
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('sPage', aEntry[0])
            oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
def parseSerieSite(sHtmlContent):
  aSeriesItems = []

  sPattern = 'id="SeasonSelection" rel="([^"]+)"'
  oParser = cParser()
  aResult = oParser.parse(sHtmlContent, sPattern)
  if (aResult[0] == True):
    aSeriesUrls = aResult[1][0].split("&amp;")
    sSeriesUrl = '&' + str(aSeriesUrls[0]) + '&' + str(aSeriesUrls[1])

    sPattern = '<option.*?rel="([^"]+)".*?>Staffel ([^<]+)</option'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
      for aEntry in aResult[1]:
        aSeriesIds = aEntry[0].split(",")
        for iSeriesIds in aSeriesIds:
          aSeries = {}
          iEpisodeNum = iSeriesIds
          iSeasonNum = aEntry[1]
          sTitel = 'Staffel '+ str(iSeasonNum) + ' - ' + str(iEpisodeNum)
          sUrl = URL_EPISODE_URL + sSeriesUrl + '&Season=' + str(iSeasonNum) + '&Episode=' + str(iEpisodeNum)

          aSeries['title'] = sTitel
          aSeries['url'] = sUrl
          aSeries['season'] = iSeasonNum
          aSeries['episode'] = iEpisodeNum
          aSeriesItems.append(aSeries)
  return aSeriesItems
    def __getMediaLinkForGuest(self):
        sPattern = '([^/]+)$'
        vid = self.__sUrl
        vidId = cParser().parse(vid,sPattern)
        url = 'http://embed.movshare.net/embed.php?v=' + vidId[1][0]
        oRequest = cRequestHandler(url)
        sHtmlContent = oRequest.request()
        sPattern = '<form id="watch" name="watch" method="post" action=""><input type="hidden" name="wm" value="([^"]+)">'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        
        if (aResult[0] == True):
            sUid = aResult[1][0]

            oRequest = cRequestHandler(self.__sUrl)
            oRequest.setRequestType(cRequestHandler.REQUEST_TYPE_POST)
            oRequest.addParameters('submit.x','149')
            oRequest.addParameters('submit.y', '19')
            oRequest.addParameters('wm', sUid)
            sHtmlContent = oRequest.request()

            aMediaLink = cParser().parse(sHtmlContent, self.getPattern())          
            if (aMediaLink[0] == True):
                link = str(aMediaLink[1][0])
                link = 'http://w00.' + link[link.find('movshare'):]
                return True, link
        else:
            sPattern = 'type="video/divx"\s*src="([^"]+)"'        
            aMediaLink = cParser().parse(sHtmlContent, sPattern)
            if (aMediaLink[0] == True):
                link = str(aMediaLink[1][0])
                link = 'http://w00.' + link[link.find('movshare'):]
                return True, link
    
        return False, False
Beispiel #14
0
    def __getMediaLinkByPremiumUser(self, sUsername, sPassword):
        oRequestHandler = cRequestHandler('http://www.megavideo.com/?s=account')
        oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST)
        oRequestHandler.addParameters('login', '1')
        oRequestHandler.addParameters('username', sUsername)
        oRequestHandler.addParameters('password', sPassword)
        oRequestHandler.request()
      
        aHeader = oRequestHandler.getResponseHeader();
        sReponseCookie = aHeader.getheader("Set-Cookie")

        self.__sUrl = self.__getIdFromUrl()
        
        sPattern = 'user=([^;]+);'
        oParser = cParser()
        aResult = oParser.parse(sReponseCookie, sPattern)
        if (aResult[0] == True):
            sUserId = aResult[1][0]
            sUrl = 'http://www.megavideo.com/xml/player_login.php?u=' + str(sUserId) + '&v=' + str(self.__sUrl)
            oRequestHandler = cRequestHandler(sUrl)
            sXmlContent = oRequestHandler.request()

            sPattern = 'downloadurl="([^"]+)"'
            oParser = cParser()
            aResult = oParser.parse(sXmlContent, sPattern)
            
            if (aResult[0] == True):
                sMediaLink = cUtil().urlDecode(str(aResult[1][0]))
                return True, sMediaLink

        return False, ''
def __showCharacters(sUrl):
    oGui = cGui()    
    
    sHtmlContent = cRequestHandler(sUrl).request();
    sPattern = '<div class="apz_container">(.*?)</div>'
    aResult = cParser().parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]
        sPattern = '<a class="letter"\s*href="([^"]+)">([^<]+)</a>'
        aResult = cParser().parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
             for aEntry in aResult[1]:
                newUrl = str(aEntry[0]).strip().replace('&amp;','&')
                if not newUrl.startswith('http'):
                    newUrl = URL_MAIN + newUrl
                sTitle = aEntry[1].replace('&amp;','&').replace('&#039;','\'')

                oGuiElement = cGuiElement()
                oGuiElement.setSiteName(SITE_IDENTIFIER)
                oGuiElement.setFunction('showSeries')
                oGuiElement.setTitle(sTitle)

                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', newUrl)
                
                oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
def __showSeries(sUrl):  
    oGui = cGui()    
    log('neu: ' + sUrl)
    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();
    sPattern = '<ul>(.*?)</ul>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]
        sPattern = '<li>\s*<a href="([^"]+)">([^<]+)</a>\s*</li>'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
             for aEntry in aResult[1]:
                newUrl = str(aEntry[0]).strip().replace('&amp;','&')
                if not newUrl.startswith('http'):
                    newUrl = URL_MAIN + newUrl

                oGuiElement = cGuiElement()
                oGuiElement.setSiteName(SITE_IDENTIFIER)
                oGuiElement.setFunction('showSeasons')
                sTitle = aEntry[1].replace('&amp;','&').replace('&#039;','\'')
                oGuiElement.setTitle(sTitle)

                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', newUrl)
                oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
def listShow():
    oGui = cGui()

    oInputParameterHandler = cInputParameterHandler()
    if (oInputParameterHandler.exist('showUrl')):
        sShowUrl = oInputParameterHandler.getValue('showUrl')

        #Video im Player
        sPattern = '<h3 class="imgHeadline black defaultMarginBottom">\s*(.*?)\s*</h3>'
        sTitleCurrent = cParser().parse(cRequestHandler(sShowUrl).request(), sPattern)[1][0].strip()    
        __showHoster(oGui, sTitleCurrent, sShowUrl)
        
        #andere Videos
        sPattern = '<li class="half (?:playlist )?dashed_bottom".*?<a title="([^"]+)"\s*href="([^"]+)".*?</li>'

        oRequest = cRequestHandler(sShowUrl)
        sHtmlContent = oRequest.request()
     
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)

        if (aResult[0] == True):
            for aEntry in aResult[1]:
                sUrl = URL_MAIN + str(aEntry[1])
                __showHoster(oGui, aEntry[0], sUrl)

    oGui.setEndOfDirectory()
def getHosterUrlandPlay():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sHoster = oInputParameterHandler.getValue('hosterName')
    sTitle = oInputParameterHandler.getValue('sTitle')
   
    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();
    
    sPattern = '<iframe id="iframe" src="([^"]+)"'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        sStreamUrl = aResult[1][0]
        oHoster = cHosterHandler().getHoster(sHoster)
        if (sTitle != False):
            oHoster.setFileName(sTitle)
        cHosterGui().showHosterMenuDirect(oGui, oHoster, sStreamUrl)
        oGui.setEndOfDirectory()
        return
    else:
        sPattern = '<param name="movie" value="([^"]+)"'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            sStreamUrl = aResult[1][0]
            oHoster = cHosterHandler().getHoster(sHoster)
            if (sTitle != False):
                oHoster.setFileName(sTitle)
            cHosterGui().showHosterMenuDirect(oGui, oHoster, sStreamUrl)
            oGui.setEndOfDirectory()
            return

    oGui.setEndOfDirectory()
Beispiel #19
0
def __getSecurityCookieValue():
    oRequestHandler = cRequestHandler(URL_MAIN)
    sHtmlContent = oRequestHandler.request()

    sPattern = "<HTML><HEAD><SCRIPT language=\"javascript\" src=\"([^\"]+)\">"+\
    "</SCRIPT></HEAD><BODY onload=\"scf\('(.*?)'\+'(.*?)','/'\);\"></BODY></HTML>"
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if aResult[0] == False:
        return ''
    sScriptFile = URL_MAIN + str(aResult[1][0][0])
    sHashSnippet = str(aResult[1][0][1])+str(aResult[1][0][2])

    oRequestHandler = cRequestHandler(sScriptFile)
    oRequestHandler.addHeaderEntry('Referer', 'http://g-stream.in/')
    oRequestHandler.addHeaderEntry('Accept', '*/*')
    oRequestHandler.addHeaderEntry('Host', 'g-stream.in')
    sHtmlContent = oRequestHandler.request()

    sPattern = "escape\(hsh \+ \"([^\"]+)\"\)"
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    sHash = aResult[1][0]
    sHash = sHashSnippet + sHash
    sSecurityCookieValue = 'sitechrx=' + str(sHash)
    print 'Token: '+sSecurityCookieValue
    return sSecurityCookieValue 
def __parseCharts(sUrl):
    oGui = cGui()

    sPattern = '<td class="ch_place">.*?"/>(.*?)</td>.*?<td class="ch_last">(.*?)</td>.*?<td class="ch_artist">(.*?)</td>.*?<td class="ch_track">(.*?)</td>.*?<td class="ch_buy">(.*?)</td>'

    oRequest = cRequestHandler(sUrl)
    sHtmlContent = oRequest.request()

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        for aEntry in aResult[1]:
            sInterpretName = cUtil().removeHtmlTags(str(aEntry[2]), '')
            sTitle = str(aEntry[0]) + ' (' + str(aEntry[1]) + ') : ' + sInterpretName + ' - ' + str(aEntry[3])

            sPattern = '.*?<a href="([^"]+)".*?<img.*?<img.*?src="([^"]+)"'
            sCode = aEntry[4]
            oParser = cParser()
            aResultMeta = oParser.parse(sCode, sPattern)
            if (aResultMeta[0] == True):
                sLink = aResultMeta[1][0][0]                
                
                sUrl = URL_MAIN + str(sLink)
                __showHoster(oGui, sTitle, sUrl)

    oGui.setEndOfDirectory()
def showFeaturedSeries():
    oInputParameterHandler = ParameterHandler()
    if (oInputParameterHandler.exist('sUrl')):
        sUrl = oInputParameterHandler.getValue('sUrl')

        oRequest = cRequestHandler(sUrl)
        sHtmlContent = oRequest.request()
        
        sPattern = '<div id="maincontenttvshow">(.*?)<BR><BR>'
        aResult = cParser().parse(sHtmlContent,sPattern)
        if aResult[0] == True:
            sPattern = '<div style="float:left"><a href="([^"]+)"><img src="([^"]+)" border=0.*?title="([^"]+)"></a>.*?<img src="http://img.movie4k.to/img/(.*?).png"'
            sHtmlContent = aResult[1][0]
            aResult = cParser().parse(sHtmlContent, sPattern)
            if aResult[0] == True:
                oGui = cGui()
                for aEntry in aResult[1]:
                    newUrl = str(aEntry[0]).strip()
                    if not (newUrl.startswith('http')):
                        newUrl = URL_MAIN + newUrl
                    sThumbnail = aEntry[1]
                    sMovieTitle = aEntry[2].strip().replace('\t', '')                     
                    oGuiElement = cGuiElement()
                    oGuiElement.setSiteName(SITE_IDENTIFIER)
                    oGuiElement.setFunction('showAllSeasons')
                    oGuiElement.setTitle(sMovieTitle)
                    oGuiElement.setThumbnail(sThumbnail)
                    oGuiElement.setLanguage(__getLanguage(aEntry[3]))
                    
                    oOutputParameterHandler = ParameterHandler()
                    oOutputParameterHandler.setParam('sUrl', newUrl)
                    
                    oGui.addFolder(oGuiElement, oOutputParameterHandler)
                oGui.setView('tvshows')
                oGui.setEndOfDirectory()
def __showCategories(sHtmlContent, sPattern, sNextFunction):
    oGui = cGui()
  
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
	sHtmlContent = str(aResult[1][0])

	sPattern = '<a href="([^"]+)">([^"]+)</a>'
	oParser = cParser()
	aResult = oParser.parse(sHtmlContent, sPattern)

	if (aResult[0] == True):
	    for aEntry in aResult[1]:
		oGuiElement = cGuiElement()
		oGuiElement.setSiteName(SITE_IDENTIFIER)
		if (str(aEntry[1]) == 'All'):
		    oGuiElement.setFunction('showLiveVideos')
		else:
		    oGuiElement.setFunction(sNextFunction)
		oGuiElement.setTitle(aEntry[1])

		oOutputParameterHandler = cOutputParameterHandler()
		oOutputParameterHandler.addParameter('sSiteUrl', URL_MAIN + str(aEntry[0]))
		oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
def showBRonlineVideothekSeasons():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();

    sPattern = '<ul class="ebene1">(.*?)</ul>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]

        sPattern = '<li><a href="([^"]+)">(.*?)</a>'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            for aEntry in aResult[1]:
                oGuiElement = cGuiElement()
                oGuiElement.setSiteName(SITE_IDENTIFIER)
                oGuiElement.setFunction('showBRonlineMovies')
                oGuiElement.setTitle(aEntry[1])

                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', URL_MAIN + str(aEntry[0]))
                oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
Beispiel #24
0
    def __getMediaLinkForGuest(self):

        oRequest = cRequestHandler(self.__sUrl)
        sHtmlContent = oRequest.request()
        
        sPattern =  'unescape.+?"(.+?)"'
              
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)

        if (aResult[0] == True):
            decoder = cUtil().urlDecode(aResult[1][0])
            
            sPattern =  'file: "(.+?)"'
            oParser = cParser()
            aResult = oParser.parse(decoder, sPattern)
            if (aResult[0] == True):
                cGui().showInfo(self.__sDisplayName, 'Streaming', 5)
                return True, aResult[1][0]
            else:
                cGui().showInfo(self.__sDisplayName, 'Fichier introuvable' , 5)
                return False, False

        else:
            cGui().showInfo(self.__sDisplayName, 'Fichier introuvable' , 5)
            return False, False
        
        return False, False
def showCurrentMovies():
    oGui = cGui()
    params = cInputParameterHandler()
    sUrl = params.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();

    sPattern = '<h2>Aktuelle Anime Serienfolgen</h2>(.*?)</ul>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]

        sPattern = "<a href='([^']+)'>(.*?)<"
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            for aEntry in aResult[1]:
                sSiteUrl = str(aEntry[0])
                sMovieTitle = str(aEntry[1])
                
                oGuiElement = cGuiElement()
                oGuiElement.setSiteName(SITE_IDENTIFIER)
                oGuiElement.setFunction('showMovieTitles')
                oGuiElement.setTitle(str(aEntry[1]))                
                
                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', sSiteUrl)
                oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
                oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
def showAnimesAlphabetic():
    oGui = cGui()
    params = cInputParameterHandler()
    sUrl = params.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();

    sPattern = '<h2>Animes von A - Z</h2>(.*?)</select>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]

        sPattern = "<option value='([^']+)'>(.*?)<"
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            for aEntry in aResult[1]:
                oGuiElement = cGuiElement()
                oGuiElement.setSiteName(SITE_IDENTIFIER)
                oGuiElement.setFunction('showMovieTitles')
                oGuiElement.setTitle(str(aEntry[1]))

                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', str(aEntry[0]))
                oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()
def showEntries(entryUrl = False, sGui = False):
    oGui = sGui if sGui else cGui()
    params = ParameterHandler()
    if not entryUrl: entryUrl = params.getValue('sUrl')
    oRequest = cRequestHandler(entryUrl)
    oGui.setView('tvshows' if 'serien/' in entryUrl else 'movies')
    sHtmlContent = oRequest.request()
    # Grab the link and title
    pattern = '<a[^>]*href="([^"]*)"[^>]*title="([^"]*)"[^>]*>[^<]*'
    # Grab the thumbnail
    pattern +='<img[^>]*src=["\']([^"\']*)["\'][^>]*class="cover-opacity"[^>]*>'
    aResult = cParser().parse(sHtmlContent, pattern)
    if not aResult[0]:
        return
    for sUrl, sName, sThumbnail in aResult[1]:
        oGuiElement = cGuiElement(sName, SITE_IDENTIFIER, 'showHosters')
        oGuiElement.setMediaType('movie')
        oGuiElement.setThumbnail(__checkUrl(sThumbnail))
        params.setParam('entryUrl', __checkUrl(sUrl))
        oGui.addFolder(oGuiElement, params, bIsFolder = False)

    pattern = '<a[^>]*class="[^"]*pageing[^"]*"[^>]*'
    pattern += 'href=["\']([^"\']*)["\'][^>]*>[ ]*vorw'
    aResult = cParser().parse(sHtmlContent, pattern)
    if aResult[0] and aResult[1][0]:
        params.setParam('sUrl', aResult[1][0])
        oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params)
    if not sGui:	
        oGui.setEndOfDirectory()
    def showStatisticData(self):
        oGui = cGui()

        oInputParameterHandler = cInputParameterHandler()
        if (oInputParameterHandler.exist('sDate')):
            sDate = oInputParameterHandler.getValue('sDate')
            sTitle = 'Statistik fuer den ' + str(sDate)
            self.__createDummyFolder(oGui, sTitle)

            oRequest = cRequestHandler(self.URL_MAIN)
            oRequest.addParameters('date', sDate)
            sHtmlContent = oRequest.request()
            print sHtmlContent

            sPattern = 'totalCount="([^"]+)"'
            oParser = cParser()
            aResult = oParser.parse(sHtmlContent, sPattern)
            if (aResult[0] == True):
                iTotalCount = aResult[1][0]
                sTitle = 'Tagesaufrufe: ' + str(iTotalCount)
                self.__createDummyFolder(oGui, sTitle)

            sPattern = '<plugin name="([^"]+)">(.*?)</plugin>'
            oParser = cParser()
            aResult = oParser.parse(sHtmlContent, sPattern)
            print aResult
            if (aResult[0] == True):
                for aEntry in aResult[1]:
                    sTitle = 'Plugin: ' + str(aEntry[0]) + ' - ' + str(aEntry[1]) + ' Aufrufe'
                    self.__createDummyFolder(oGui, sTitle)

        oGui.setEndOfDirectory()
    def __getUrlFromJavascriptCode(self, sHtmlContent):
        sPattern = "<script type='text/javascript'>eval.*?return p}\((.*?)</script>"
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)

        log("JavascriptCode Parameter: %s" % aResult[1])

        if (aResult[0] == True):
          sJavascript = aResult[1][1]

          sUnpacked = cJsUnpacker().unpackByString(sJavascript)

          log("Unpacked String: %s" % sUnpacked)

          sPattern = '<param name="src"0="(.*?)"'
          oParser = cParser()
          aResultLink = oParser.parse(sUnpacked, sPattern)

          if (aResultLink[0] == True):
              aResult = []
              aResult.append(True)
              aResult.append(aResultLink[1][0])
              return aResult

        return False, ''
def showHosters():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request();

    sPattern = "<h\d+ class='post-title entry-title'>(.*?)<div style='clear: both;'></div>"
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]
        sHtmlContent = str(sHtmlContent).lower()

        sPattern = "src=([^ ]+) "
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            for aEntry in aResult[1]:
                sHosterUrl = str(aEntry).replace("'", '').replace('"', '')               
                hosterPattern = '([^\.]+)\.(?:com|eu|net|de|ru)?/'
                aResult = cParser().parse(sHosterUrl, hosterPattern)
                
                if aResult[0] == True:
                    hosterId = aResult[1][0]
                    oHoster = cHosterHandler().getHoster2(hosterId)                              
                    if (oHoster != False):
                        oHoster.setFileName(sMovieTitle)
                        cHosterGui().showHoster(oGui, oHoster, sHosterUrl)

    oGui.setEndOfDirectory()
Beispiel #31
0
def showTV():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()

    oParser = cParser()
    #sPattern = '<url>([^<>]+?)</url><title>([^<>]+?)</title><order>' + sOrder + '</order><icon>(.+?)</icon>'
    sPattern = '<title>(.+?)</title><link>(.+?)</link>'
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        dialog = cConfig().createDialog(SITE_NAME)

        #affiche par
        if (oInputParameterHandler.exist('AZ')):
            sAZ = oInputParameterHandler.getValue('AZ')
            string = filter(
                lambda t: t[0].strip().capitalize().startswith(sAZ),
                aResult[1])
            string = sorted(string, key=lambda t: t[0].strip().capitalize())
        else:
            string = sorted(aResult[1],
                            key=lambda t: t[0].strip().capitalize())

        total = len(string)
        for aEntry in string:
            cConfig().updateDialog(dialog, total)

            if dialog.iscanceled():
                break

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', aEntry[1])
            oOutputParameterHandler.addParameter('sMovieTitle', aEntry[0])
            oOutputParameterHandler.addParameter('sThumbnail', str('tv.png'))
            oOutputParameterHandler.addParameter('sThumbnail',
                                                 str(sRootArt + '/tv.png'))

            oGuiElement = cGuiElement()
            oGuiElement.setSiteName(SITE_IDENTIFIER)
            oGuiElement.setFunction('play__')
            oGuiElement.setTitle(aEntry[0])
            oGuiElement.setFileName(aEntry[0])
            oGuiElement.setIcon('tv.png')
            oGuiElement.setMeta(0)
            #oGuiElement.setThumbnail('tv.png')
            oGuiElement.setDirectTvFanart()
            oGuiElement.setCat(6)

            oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler,
                                  SITE_IDENTIFIER, SITE_IDENTIFIER,
                                  'direct_epg', 'Guide tv Direct')
            oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler,
                                  SITE_IDENTIFIER, SITE_IDENTIFIER, 'soir_epg',
                                  'Guide tv Soir')
            oGui.createContexMenuFav(oGuiElement, oOutputParameterHandler)
            oGui.addFolder(oGuiElement, oOutputParameterHandler)

        cConfig().finishDialog(dialog)

    oGui.setEndOfDirectory()
def showMovies(sSearch=''):
    oGui = cGui()  # ouvre l'affichage

    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue(
        'siteUrl')  # recupere l'url sortie en parametre
    if sSearch:  # si une url et envoyer directement grace a la fonction showSearch
        sUrl = sSearch.replace(' ', '+')

    oRequestHandler = cRequestHandler(sUrl)  # envoye une requete a l'url
    sHtmlContent = oRequestHandler.request()  # requete aussi

    sHtmlContent = sHtmlContent.replace('<span class="likeThis">',
                                        '').replace('</span>', '')
    # la fonction replace est pratique pour supprimer un code du resultat

    sPattern = 'class="movie movie-block"><img src="([^"]+)" alt=".+?" title="([^"]+)"/>.+?<h2 onclick="window.location.href=\'([^"]+)\'">.+?<div style="color:#F29000">.+?<div.+?>(.+?)</div>'
    # pour faire simple recherche ce bout de code dans le code source de l'url
    # - "([^"]+)" je veux cette partie de code qui se trouve entre guillemets mais pas de guillemets dans la chaine
    # - .+? je ne veux pas cette partie et peux importe ceux qu'elle contient
    # - >(.+?)< je veux cette partie de code qui se trouve entre > et < mais il peut y avoir n'inporte quoi entre les 2.
    # - (https*://[^"]) je veux l'adresse qui commence par https ou http jusqu'au prochain guillemet.

    # Pour tester vos Regex, vous pouvez utiliser le site https://regex101.com/ en mettant dans les modifiers "gmis"

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    # le plus simple et de faire un VSlog(str(aResult))
    # dans le fichier log de Kodi vous pourrez voir un array de ce que recupere le script
    # et modifier sPattern si besoin
    VSlog(str(aResult))  # Commenter ou supprimer cette ligne une fois fini

    # affiche une information si aucun resulat
    if (aResult[0] == False):
        oGui.addText(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        # dialog barre de progression
        progress_ = progress().VScreate(SITE_NAME)

        oOutputParameterHandler = cOutputParameterHandler()
        for aEntry in aResult[1]:
            # dialog update
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            # L'array affiche vos info dans l'ordre de sPattern en commencant a 0, attention dans ce cas la on recupere 6 information
            # Mais selon votre regex il ne peut y en avoir que 2 ou 3.
            sThumb = aEntry[0]
            sTitle = aEntry[1]
            sUrl2 = aEntry[2]
            sLang = aEntry[3]
            sQual = aEntry[4]
            sHoster = aEntry[5]
            sDesc = ''

            sTitle = sTitle.replace('En streaming', '')

            # Si vous avez des information dans aEntry Qualiter lang organiser un peux vos titre exemple.
            # Si vous pouvez la langue et la Qualite en MAJ ".upper()" vostfr.upper() = VOSTFR
            sTitle = ('%s [%s] (%s) [COLOR coral]%s[/COLOR]') % (
                sTitle, sQual, sLang.upper(), sHoster)
            # mettre les informations de streaming entre [] et le reste entre () vStream s'occupe de la couleur automatiquement.

            # Utile si les liens recupere ne commencent pas par (http://www.nomdusite.com/)
            # sUrl2 = URL_MAIN + sUrl2

            oOutputParameterHandler.addParameter('siteUrl',
                                                 sUrl2)  # sortie de l'url
            oOutputParameterHandler.addParameter('sMovieTitle',
                                                 sTitle)  # sortie du titre
            oOutputParameterHandler.addParameter('sThumb',
                                                 sThumb)  # sortie du poster
            oOutputParameterHandler.addParameter(
                'sDesc', sDesc)  # sortie de la description
            oOutputParameterHandler.addParameter(
                'referer',
                sUrl)  # URL d'origine, parfois utile comme référence

            if '/series' in sUrl:
                oGui.addTV(SITE_IDENTIFIER, 'ShowSerieSaisonEpisodes', sTitle,
                           '', sThumb, sDesc, oOutputParameterHandler)
                # addTV pour sortir les series tv (identifiant, fonction, titre, icon, poster, description, sortie parametre)
            elif '/animes' in sUrl:
                oGui.addAnime(SITE_IDENTIFIER, 'ShowSerieSaisonEpisodes',
                              sTitle, '', sThumb, sDesc,
                              oOutputParameterHandler)
                # addAnime pour sortir les series animés (mangas) (identifiant, fonction, titre, icon, poster, description, sortie parametre)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '',
                              sThumb, sDesc, oOutputParameterHandler)
                # addMovies pour sortir les films (identifiant, fonction, titre, icon, poster, description, sortie parametre)

            # Il existe aussi addMisc(identifiant, function, titre, icon, poster, description, sortie parametre)
            # A utiliser pour les autres types, tels que : documentaires, spectacles, etc.
            # qui ne nécessitent pas de metadonnées (recherches de la description, de la bande annonces, des acteurs, etc.)

        progress_.VSclose(progress_)  # fin du dialog

    if not sSearch:
        sNextPage = __checkForNextPage(
            sHtmlContent)  # cherche la page suivante
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            sNumPage = re.search('/page/([0-9]+)', sNextPage).group(1)
            oGui.addNext(SITE_IDENTIFIER, 'showSeries', 'Page ' + sNumPage,
                         oOutputParameterHandler)
            # Si pas de numero de page dans l'url du nextPage, utiliser la ligne suivante et désactiver les 2 précédentes
            # oGui.addNext(SITE_IDENTIFIER, 'showMovies', Suivant, oOutputParameterHandler)
            # Ajoute une entree pour le lien Suivant | pas de addMisc pas de poster et de description inutile donc

        oGui.setEndOfDirectory()  # ferme l'affichage
Beispiel #33
0
def showMovies(sSearch=''):
    oGui = cGui()
    oParser = cParser()
    if sSearch:
        sUrl = URL_SEARCH[0]
    else:
        oInputParameterHandler = cInputParameterHandler()
        sUrl = oInputParameterHandler.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)

    if sSearch:
        oRequestHandler.addHeaderEntry('Referer', URL_SEARCH[0])
        oRequestHandler.addHeaderEntry('User-Agent', UA)
        oRequestHandler.addHeaderEntry('Content-Type',
                                       'application/x-www-form-urlencoded')
        oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST)
        oRequestHandler.addParametersLine('do=search')
        oRequestHandler.addParametersLine('subaction=search')
        oRequestHandler.addParametersLine('story=' + sSearch)

    sHtmlContent = oRequestHandler.request()

    sPattern = 'shortstory-in.+?<img src="([^"]+)".+?short-link"><a href="(.+?)".+?>(.+?)</a>'

    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == False):
        oGui.addText(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        dialog = cConfig().createDialog(SITE_NAME)

        for aEntry in aResult[1]:
            cConfig().updateDialog(dialog, total)
            if dialog.iscanceled():
                break

            sTitle = str(aEntry[2])
            sUrl = URL_MAIN + aEntry[1].replace(
                '/animes/films/', '/films/').replace('/animes/series/',
                                                     '/series/')
            sThumb = URL_MAIN + aEntry[0]

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            oOutputParameterHandler.addParameter('sThumb', sThumb)

            if '/series/' in sUrl or '/animes/' in sUrl:
                oGui.addTV(SITE_IDENTIFIER, 'showSerieSaisons', sTitle,
                           'series.png', sThumb, '', oOutputParameterHandler)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showLink', sTitle, 'films.png',
                              sThumb, '', oOutputParameterHandler)

        cConfig().finishDialog(dialog)

        sNextPage = __checkForNextPage(sHtmlContent)
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            oGui.addNext(SITE_IDENTIFIER, 'showMovies',
                         '[COLOR teal]Next >>>[/COLOR]',
                         oOutputParameterHandler)

    if not sSearch:
        oGui.setEndOfDirectory()
Beispiel #34
0
def showMovies(sSearch=''):
    oGui = cGui()

    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    if sSearch:
        sUrl = sSearch.replace(' ', '+')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()

    if sSearch:
        sPattern = '<span class="image"><img src="([^"]+)" alt="([^"]+).+?<a href="([^"]+).+?desc">([^<]+)'
    elif '/films-vf-vostfr/' in sUrl:
        sPattern = 'href="([^"]+)" alt="([^"]+).+?src="([^"]+).+?desc">([^<]+)'
    else:
        sPattern = 'href="([^"]+)" alt="([^"]+).+?src="([^"]+).+?desc">([^<]+).+?</i>Saison</span><b>([^<]+).+?Ep</span><b>([^<]+)'

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == False):
        oGui.addText(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        progress_ = progress().VScreate(SITE_NAME)

        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            if sSearch:
                sThumb = aEntry[0]
                if 'http' not in sThumb:
                    sThumb = URL_MAIN + sThumb
                sUrl2 = aEntry[2]
            else:
                sUrl2 = aEntry[0]
                sThumb = aEntry[2]
                if 'http' not in sThumb:
                    sThumb = URL_MAIN + sThumb

            sMovieTitle = aEntry[1]
            sDesc = aEntry[3]

            sLang = ''
            if 'FRENCH' in sMovieTitle or 'French' in sMovieTitle:
                sLang = 'VF'
            if 'VOSTFR' in sMovieTitle:
                sLang = 'VOSTFR'

            sMovieTitle = sMovieTitle.replace(' VOSTFR', '').replace(' FRENCH', '').replace(' French', '')
            sDisplayTitle = sMovieTitle + ' (' + sLang + ')'
            if len(aEntry) > 4:
                sDisplayTitle = sDisplayTitle + ' S' + aEntry[4] + ' E' + aEntry[5]

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl2)
            oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
            oOutputParameterHandler.addParameter('sThumb', sThumb)
            oOutputParameterHandler.addParameter('sDesc', sDesc)

            oGui.addAnime(SITE_IDENTIFIER, 'seriesHosters', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)

        progress_.VSclose(progress_)

    if not sSearch:
        sNextPage, sPaging = __checkForNextPage(sHtmlContent)
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            oGui.addNext(SITE_IDENTIFIER, 'showMovies', 'Page ' + sPaging, oOutputParameterHandler)

        oGui.setEndOfDirectory()
Beispiel #35
0
def seriesHosters():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumb = oInputParameterHandler.getValue('sThumb')

    url = URL_MAIN + 'templates/Animix/js/anime.js'

    oRequestHandler = cRequestHandler(url)
    playerContent = oRequestHandler.request()

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()

    # On récupere l'id associé a l'épisode
    sPattern = '<option value="buttons_([0-9]+)">([^<]+)</option>'

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    epNumber = ''
    sHosterUrl = ''
    if (aResult[0] == True):
        total = len(aResult[1])
        progress_ = progress().VScreate(SITE_NAME)

        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            # Streaming
            sTitle = sMovieTitle + ' ' + aEntry[1]
            if epNumber != aEntry[1]:
                epNumber = aEntry[1]
                oGui.addText(SITE_IDENTIFIER, '[COLOR red]' + epNumber + '[/COLOR]')

            # On récupere l'info du player
            sPattern = '<div id="buttons_' + aEntry[0] + '" class="button_box">(.+?)/div></div>'
            htmlCut = oParser.parse(sHtmlContent, sPattern)[1][0]

            #sPattern = '<div id="player_([0-9]+)".+?">([^<]+)<'
            sPattern = '<div id="player_([0-9]+)".+?class="new_player_([^"]+)'
            data = oParser.parse(htmlCut, sPattern)

            for aEntry1 in data[1]:

                sPattern = '<div id="content_player_' + aEntry1[0] + '" class="player_box">([^<]+)</div>'
                playerData = oParser.parse(sHtmlContent, sPattern)[1][0]

                if 'http' not in playerData:
                    sPattern = 'player_type.*=="new_player_' + aEntry1[1].lower()+ '"\|.+?(?:src=\\\\")([^"]*).*?player_content.*?"([^\\\\"]*)'
                    aResult2 = oParser.parse(playerContent, sPattern)
                    if aResult2[0] == True:
                        sHosterUrl = aResult2[1][0][0] + playerData + aResult2[1][0][1]
                        if 'http' not in sHosterUrl:
                            sHosterUrl = 'https:' + sHosterUrl
                else:
                    sHosterUrl = playerData

                oHoster = cHosterGui().checkHoster(sHosterUrl)
                if (oHoster != False):
                    oHoster.setDisplayName(sTitle)
                    oHoster.setFileName(sTitle)
                    cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb)

            sPattern = '<div class="lien-episode">.+?<b>' + epNumber + '<.+?href="([^"]+).+?<b>([^<]+)<'
            ddlData = oParser.parse(sHtmlContent, sPattern)

            for aEntry2 in ddlData[1]:
                sTitle = sMovieTitle + ' ' + epNumber + ' ' + aEntry2[1]
                url = aEntry2[0]

                if 'ouo' in url:
                    oOutputParameterHandler = cOutputParameterHandler()
                    oOutputParameterHandler.addParameter('siteUrl', url)
                    oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
                    oOutputParameterHandler.addParameter('sThumb', sThumb)
                    oGui.addLink(SITE_IDENTIFIER, 'DecryptOuo', sTitle, sThumb, '', oOutputParameterHandler)

                else:
                    sHosterUrl = url
                    oHoster = cHosterGui().checkHoster(sHosterUrl)
                    if (oHoster != False):
                        oHoster.setDisplayName(sTitle)
                        oHoster.setFileName(sTitle)
                        cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb)
    oGui.setEndOfDirectory()
Beispiel #36
0
class cHoster(iHoster):

    def __init__(self):
        self.__sDisplayName = 'MailRu'
        self.__sFileName = self.__sDisplayName
        self.__sHD = ''

    def getDisplayName(self):
        return  self.__sDisplayName

    def setDisplayName(self, sDisplayName):
        self.__sDisplayName = sDisplayName + ' [COLOR skyblue]' + self.__sDisplayName + '[/COLOR]'

    def setFileName(self, sFileName):
        self.__sFileName = sFileName

    def getFileName(self):
        return self.__sFileName

    def getPluginIdentifier(self):
        return 'mailru'

    def setHD(self, sHD):
        self.__sHD = ''

    def getHD(self):
        return self.__sHD

    def isDownloadable(self):
        return True

    def isJDownloaderable(self):
        return True

    def getPattern(self):
        return ''

    def __getIdFromUrl(self, sUrl):
        return ''

    def setUrl(self, sUrl):
        self.__sUrl = str(sUrl)

    def checkUrl(self, sUrl):
        return True

    def __getUrl(self, media_id):
        return

    def getMediaLink(self):
        return self.__getMediaLinkForGuest()

    def __getMediaLinkForGuest(self):
        api_call = False

        UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'

        headers = {"User-Agent":UA}

        req1 = urllib2.Request(self.__sUrl, None, headers)
        resp1 = urllib2.urlopen(req1)
        sHtmlContent = resp1.read()
        resp1.close()

        sPattern = '{"metadataUrl":"([^"]+)",'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)

        vurl = 'http://my.mail.ru/' + aResult[1][0]

        req = urllib2.Request(vurl, None, headers)

        try:
            response = urllib2.urlopen(req)
        except urllib2.URLError, e:
            print e.read()
            print e.reason

        data = response.read()
        head = response.headers
        response.close()

        #get cookie
        cookies = ''
        if 'Set-Cookie' in head:
            oParser = cParser()
            sPattern = '(?:^|,) *([^;,]+?)=([^;,\/]+?);'
            aResult = oParser.parse(str(head['Set-Cookie']), sPattern)
            #print aResult
            if (aResult[0] == True):
                for cook in aResult[1]:
                    cookies = cookies + cook[0] + '=' + cook[1] + ';'


        sPattern = '{"url":"([^"]+)",.+?"key":"(\d+p)"}'
        aResult = oParser.parse(data, sPattern)
        if (aResult[0] == True):
            #initialisation des tableaux
            url=[]
            qua=[]
            #Remplissage des tableaux
            for i in aResult[1]:
                url.append(str(i[0]))
                qua.append(str(i[1]))

            #Affichage du tableau
            api_call = dialog().VSselectqual(qua, url)

        if (api_call):
            return True, 'http:' + api_call + '|User-Agent=' + UA + '&Cookie=' + cookies

        return False, False
def showSeriesHosters():  # recherche et affiche les hotes
    #xbmc.log('showSeriesHosters')

    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler(
    )  #apelle l'entree de paramettre
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sThumbnail = oInputParameterHandler.getValue('sThumbnail')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()

    #Fonction pour recuperer uniquement les liens
    #sHtmlContent = Cutlink(sHtmlContent)

    #Pour les series on fait l'inverse des films on vire les liens premiums
    if 'Premium' in sHtmlContent or 'PREMIUM' in sHtmlContent or 'premium' in sHtmlContent:
        sHtmlContent = CutPremiumlinks(sHtmlContent)

    oParser = cParser()

    sPattern = '<div style="font-weight:bold;color:[^"]+?">([^<]+)</div>|<a target="_blank" href="https://([^"]+)/([^"]+?)">([^<]+)<'
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        total = len(aResult[1])
        dialog = cConfig().createDialog(SITE_NAME)

        for aEntry in aResult[1]:
            cConfig().updateDialog(dialog, total)
            #print aEntry
            if dialog.iscanceled():
                break

            if aEntry[0]:
                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', aEntry[1])
                oOutputParameterHandler.addParameter('sMovieTitle',
                                                     str(sMovieTitle))
                oOutputParameterHandler.addParameter('sThumbnail',
                                                     str(sThumbnail))
                if 'Télécharger' in aEntry[0]:
                    oGui.addText(SITE_IDENTIFIER,
                                 '[COLOR olive]' + str(aEntry[0]) + '[/COLOR]')
                else:
                    oGui.addText(SITE_IDENTIFIER,
                                 '[COLOR red]' + str(aEntry[0]) + '[/COLOR]')
            else:
                sName = aEntry[3]
                sName = sName.replace('Télécharger', '')
                sName = sName.replace('pisodes', 'pisode')
                sUrl2 = 'https://' + aEntry[1] + '/' + aEntry[2]
                #cConfig().log(sUrl2)

                sTitle = sMovieTitle + ' ' + sName
                sDisplayTitle = cUtil().DecoTitle(sTitle)
                URL_DECRYPT = aEntry[1]

                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', str(sUrl2))
                oOutputParameterHandler.addParameter('sMovieTitle',
                                                     str(sTitle))
                oOutputParameterHandler.addParameter('sThumbnail',
                                                     str(sThumbnail))
                oGui.addMovie(SITE_IDENTIFIER, 'Display_protected_link',
                              sDisplayTitle, '', sThumbnail, '',
                              oOutputParameterHandler)

        cConfig().finishDialog(dialog)

    oGui.setEndOfDirectory()
Beispiel #38
0
def showLinks():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sRefUrl = oInputParameterHandler.getValue('siteUrl')
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumb = oInputParameterHandler.getValue('sThumb')

    oParser = cParser()

    oRequestHandler = cRequestHandler(sRefUrl)
    sHtmlContent = oRequestHandler.request()

    sDesc = ''
    try:
        sPattern = '<p>([^<>"]+)<\/p>'
        aResult = oParser.parse(sHtmlContent, sPattern)
        if aResult[0]:
            sDesc = aResult[1][0].replace('&#8217;',
                                          '\'').replace('&#8230;', '...')
    except:
        pass

    sPattern = 'var movie.+?id.+?"(.+?)"'
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        MovieUrl = URL_MAIN + 'playery/?id=' + aResult[1][0]

        req = urllib2.Request(MovieUrl, None, headers)
        req.add_header('Referer', sRefUrl)
        response = urllib2.urlopen(req)
        head = response.headers
        sHtmlContent = response.read()
        response.close()

        cookies = getcookie(head)

    sPattern = '<input type="hidden" name="videov" id="videov" value="([^"]+)">.+?<\/b>([^<]+)<span class="dt_flag">.+?\/flags\/(.+?)\.'
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        for aEntry in aResult[1]:

            sHost = aEntry[1].replace(' ', '').replace('.ok.ru', 'ok.ru')
            sHost = re.sub('\.\w+', '', sHost)
            if 'nowvideo' in sHost:
                continue
            sHost = sHost.capitalize()
            sLang = aEntry[2].upper()

            sTitle = ('%s (%s) [COLOR coral]%s[/COLOR]') % (sMovieTitle, sLang,
                                                            sHost)

            sUrl = URL_MAIN[:-1] + aEntry[0]

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl)
            oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
            oOutputParameterHandler.addParameter('sThumb', sThumb)
            oOutputParameterHandler.addParameter('sRefUrl', sRefUrl)
            oOutputParameterHandler.addParameter('cookies', cookies)
            oGui.addLink(SITE_IDENTIFIER, 'showHosters', sTitle, sThumb, sDesc,
                         oOutputParameterHandler)

    oGui.setEndOfDirectory()
Beispiel #39
0
def showMovies(sSearch=''):
    oGui = cGui()
    oParser = cParser()

    if sSearch:
        sUrl = sSearch.replace(' ', '+')
    else:
        oInputParameterHandler = cInputParameterHandler()
        sUrl = oInputParameterHandler.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()

    sPattern = '<a href="([^"]+)" data-url=".+?" class=".+?" title="([^"]+)"><img.+?src="([^"]+)"'
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == False):
        oGui.addText(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        progress_ = progress().VScreate(SITE_NAME)

        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            #encode/decode pour affichage des accents
            sTitle = unicode(aEntry[1], 'utf-8')
            sTitle = unicodedata.normalize('NFD', sTitle).encode(
                'ascii', 'ignore').decode("unicode_escape")
            sTitle = sTitle.encode("latin-1")

            sThumb = aEntry[2]
            sUrl = aEntry[0]

            #tris search
            if sSearch and total > 3:
                if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0], ''),
                                          sTitle) == 0:
                    continue

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            oOutputParameterHandler.addParameter('sThumb', sThumb)

            if '/series/' in sUrl:
                oGui.addTV(SITE_IDENTIFIER, 'showSeries', sTitle, '', sThumb,
                           '', oOutputParameterHandler)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sTitle, '', sThumb,
                              '', oOutputParameterHandler)

        progress_.VSclose(progress_)

        sNextPage = __checkForNextPage(sHtmlContent)
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            oGui.addNext(SITE_IDENTIFIER, 'showMovies',
                         '[COLOR teal]Next >>>[/COLOR]',
                         oOutputParameterHandler)

    if not sSearch:
        oGui.setEndOfDirectory()
Beispiel #40
0
def showHosters():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumb = oInputParameterHandler.getValue('sThumb')

    if 'forum-tv' in sUrl:
        dialog().VSinfo('Décodage en cours', "Patientez", 5)
        s = requests.Session()

        response = s.get(sUrl, headers={'User-Agent': UA})
        sHtmlContent = str(response.content)
        cookie_string = "; ".join(
            [str(x) + "=" + str(y) for x, y in s.cookies.items()])

        oParser = cParser()
        sPattern = '<input type="hidden".+?value="([^"]+)"'
        aResult = oParser.parse(sHtmlContent, sPattern)

        if (aResult[0] == True):
            data = "_method=" + aResult[1][0] + "&_csrfToken=" + aResult[1][
                1] + "&ad_form_data=" + Quote(
                    aResult[1][2]) + "&_Token%5Bfields%5D=" + Quote(
                        aResult[1][3]) + "&_Token%5Bunlocked%5D=" + Quote(
                            aResult[1][4])

            #Obligatoire pour validé les cookies.
            xbmc.sleep(6000)
            oRequestHandler = cRequestHandler(
                "https://forum-tv.org/adslinkme/links/go")
            oRequestHandler.setRequestType(1)
            oRequestHandler.addHeaderEntry('Referer', sUrl)
            oRequestHandler.addHeaderEntry(
                'Accept', 'application/json, text/javascript, */*; q=0.01')
            oRequestHandler.addHeaderEntry('User-Agent', UA)
            oRequestHandler.addHeaderEntry('Content-Length', len(data))
            oRequestHandler.addHeaderEntry(
                'Content-Type',
                "application/x-www-form-urlencoded; charset=UTF-8")
            oRequestHandler.addHeaderEntry('X-Requested-With',
                                           'XMLHttpRequest')
            oRequestHandler.addHeaderEntry('Cookie', cookie_string)
            oRequestHandler.addParametersLine(data)
            sHtmlContent = oRequestHandler.request()

            sPattern = 'url":"([^"]+)"'
            aResult = oParser.parse(sHtmlContent, sPattern)
            if (aResult[0] == True):
                sHosterUrl = aResult[1][0]
                oHoster = cHosterGui().checkHoster(sHosterUrl)
                if (oHoster != False):
                    oHoster.setDisplayName(sMovieTitle)
                    oHoster.setFileName(sMovieTitle)
                    cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb)
    else:
        sHosterUrl = sUrl
        oHoster = cHosterGui().checkHoster(sHosterUrl)
        if (oHoster != False):
            oHoster.setDisplayName(sMovieTitle)
            oHoster.setFileName(sMovieTitle)
            cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb)

    oGui.setEndOfDirectory()
def showMovies2(sSearch = ''):
    oGui = cGui() #ouvre l'affichage
    if sSearch: #si une url et envoyer directement grace a la fonction showSearch
      sUrl = sSearch
    else:
        oInputParameterHandler = cInputParameterHandler()
        sUrl = oInputParameterHandler.getValue('siteUrl') #recupere l'url sortie en parametre

    oRequestHandler = cRequestHandler(sUrl) #envoye une requete a l'url
    sHtmlContent = oRequestHandler.request() #requete aussi

    #sHtmlContent = sHtmlContent.replace('<span class="likeThis">', '').replace('</span>', '')
    #la fonction replace est pratique pour supprimer un code du resultat

    sPattern = '<img src="([^"]+)"\s*alt=".+?"\s*"/>\s*</div>\s*<div class=".+?"\s*data-ajax=".+?"\s*data-id=".+?"\s*data-type=".+?"\s*<a href="([^"]+)"\s*title=".+?">([^<>]+)</a>'
    #pour faire simple recherche ce bout de code dans le code source de l'url
    #- "([^"]+)" je veux cette partie de code qui se trouve entre guillemets mais pas de guillemets dans la chaine
    #- .+? je ne veux pas cette partie et peux importe ceux qu'elle contient
    #- >(.+?)< je veux cette partie de code qui se trouve entre < et > mais il peut y avoir n'inporte quoi entre les 2.
    #- (https*://[^"]) je veux l'adresse qui commence par https ou http jusqu'au prochain guillemet.
    #
    #Pour tester vos Regex, vous pouvez utiliser le site https://regex101.com/ en mettant dans les modifiers "gmis"

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    #le plus simple et de faire un  VSlog(str(aResult))
    #dans le fichier log d'xbmc vous pourrez voir un array de ce que recupere le script
    #et modifier sPattern si besoin
    VSlog(str(aResult)) #Commenter ou supprimer cette ligne une fois fini

    #affiche une information si aucun resulat
    if (aResult[0] == False):
        oGui.addText(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        #dialog barre de progression
        progress_ = progress().VScreate(SITE_NAME)

        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total) #dialog update
            if progress_.iscanceled():
                break

            #L'array affiche vos info dans l'orde de sPattern en commencant a 0, attention dans ce cas la on recupere 6 information
            #Mais selon votre regex il ne peut y en avoir que 2 ou 3.
            sTitle = str(aEntry[2])
            sUrl2 = str(aEntry[1])
            sThumb = str(aEntry[0])
            #sLang = str(aEntry[3])
            #sQual = str(aEntry[4])
            #sHoster = str(aEntry[5])
            sDesc = ''

            #sTitle = sTitle.replace('En streaming', '')

            #Si vous avez des information dans aEntry Qualiter lang organiser un peux vos titre exemple.
            #Si vous pouvez la langue et la Qualite en MAJ ".upper()" vostfr.upper() = VOSTFR
            #sTitle = ('%s [%s] (%s) [COLOR coral]%s[/COLOR]') % (sTitle, sQual, sLang.upper(), sHoster)
            #mettre les information de streaming entre [] et le reste entre () vstream s'occupe de la couleur automatiquement.

        #Utile que si les liens recuperer ne commence pas par (http://www.nomdusite.com/)
            #sUrl2 = URL_MAIN + sUrl2

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl2) #sortie de l'url
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle) #sortie du titre
            oOutputParameterHandler.addParameter('sThumb', sThumb) #sortie du poster

            if '/series' in sUrl:
                oGui.addTV(SITE_IDENTIFIER, 'ShowSerieSaisonEpisodes', sTitle, '', sThumb, sDesc, oOutputParameterHandler)
                #addTV pour sortir les series tv (identifiant, function, titre, icon, poster, description, sortie parametre)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumb, sDesc, oOutputParameterHandler)
                #addMovies pour sortir les films (identifiant, function, titre, icon, poster, description, sortie parametre)

            #il existe aussi addMisc(identifiant, function, titre, icon, poster, description, sortie parametre)
            #la difference et pour les metadonner serie, films ou sans

        progress_.VSclose(progress_) #fin du dialog

        sNextPage = __checkForNextPage(sHtmlContent) #cherche la page suivante
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            oGui.addNext(SITE_IDENTIFIER, 'showMovies2', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler)
            #Ajoute une entree pour le lien Next | pas de addMisc pas de poster et de description inutile donc

    if not sSearch:
        oGui.setEndOfDirectory() #ferme l'affichage
def Display_protected_link():
    #xbmc.log('Display_protected_link')
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sThumbnail = oInputParameterHandler.getValue('sThumbnail')

    oParser = cParser()

    #cConfig().log(sUrl)

    #Ne marche pas
    if (False):
        code = {
            '123455600123455602123455610123455615': 'http://uptobox.com/',
            '1234556001234556071234556111234556153': 'http://turbobit.net/',
            '123455600123455605123455615': 'http://ul.to/',
            '123455600123455608123455610123455615': 'http://nitroflare.com/',
            '123455601123455603123455610123455615123455617':
            'https://1fichier.com/?',
            '123455600123455606123455611123455615': 'http://rapidgator.net/'
        }

        for k in code:
            match = re.search(k + '(.+)$', sUrl)
            if match:
                sHosterUrl = code[k] + match.group(1)
                sHosterUrl = sHosterUrl.replace('123455615', '/')
                oHoster = cHosterGui().checkHoster(sHosterUrl)
                sTitle = sMovieTitle
                if (oHoster != False):
                    sDisplayTitle = cUtil().DecoTitle(sTitle)
                    oHoster.setDisplayName(sDisplayTitle)
                    oHoster.setFileName(sTitle)
                    cHosterGui().showHoster(oGui, oHoster, sHosterUrl,
                                            sThumbnail)
                oGui.setEndOfDirectory()
                return

    #Est ce un lien dl-protect ?
    if URL_DECRYPT in sUrl:
        sHtmlContent = DecryptDlProtecte(sUrl)

        if sHtmlContent:
            #Si redirection
            if sHtmlContent.startswith('http'):
                aResult_dlprotecte = (True, [sHtmlContent])
            else:
                sPattern_dlprotecte = '<div class="lienet"><a href="(.+?)">'
                aResult_dlprotecte = oParser.parse(sHtmlContent,
                                                   sPattern_dlprotecte)

        else:
            oDialog = cConfig().createDialogOK('Erreur décryptage du lien')
            aResult_dlprotecte = (False, False)

    #Si lien normal
    else:
        if not sUrl.startswith('http'):
            sUrl = 'http://' + sUrl
        aResult_dlprotecte = (True, [sUrl])

    #print aResult_dlprotecte

    if (aResult_dlprotecte[0]):

        episode = 1

        for aEntry in aResult_dlprotecte[1]:
            sHosterUrl = aEntry
            #print sHosterUrl

            sTitle = sMovieTitle
            if len(aResult_dlprotecte[1]) > 1:
                sTitle = sMovieTitle + ' episode ' + str(episode)

            sDisplayTitle = cUtil().DecoTitle(sTitle)

            episode += 1

            if not 'uptobox' or '1fichier' or 'ul' or 'turbobit' or 'nitroflare' or 'rapidgator' in str(
                    sHosterUrl):
                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl',
                                                     str(sHosterUrl))
                oOutputParameterHandler.addParameter('sMovieTitle',
                                                     str(sDisplayTitle))
                oOutputParameterHandler.addParameter('sThumbnail',
                                                     str(sThumbnail))
                oGui.addMovie(SITE_IDENTIFIER, 'showStreamingHosters',
                              sDisplayTitle, '', sThumbnail, '',
                              oOutputParameterHandler)
            else:
                oHoster = cHosterGui().checkHoster(sHosterUrl)
                if (oHoster != False):
                    oHoster.setDisplayName(sDisplayTitle)
                    oHoster.setFileName(sTitle)
                    cHosterGui().showHoster(oGui, oHoster, sHosterUrl,
                                            sThumbnail)

    oGui.setEndOfDirectory()
def showSeriesLinks():
    #xbmc.log('mode serie')

    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumbnail = oInputParameterHandler.getValue('sThumbnail')
    sUrl = oInputParameterHandler.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()

    #cConfig().log(sUrl)

    oParser = cParser()

    #Mise àjour du titre
    sPattern = 'content="Telecharger (.+?)Qualité [^\|]+?\| [^\|]+?\| (.+?)       la serie'
    aResult = oParser.parse(sHtmlContent, sPattern)
    #print aResult
    if (aResult[0]):
        sMovieTitle = aResult[1][0][0] + aResult[1][0][1]

    oGui.addText(
        SITE_IDENTIFIER,
        '[COLOR olive]Qualités disponibles pour cette saison :[/COLOR]')

    #on recherche d'abord la qualité courante
    sPattern = '<div style="[^"]+?">.+?Qualité (.+?)<'
    aResult = oParser.parse(sHtmlContent, sPattern)
    #print aResult

    sQual = ''
    if (aResult[1]):
        sQual = aResult[1][0]

    sDisplayTitle = cUtil().DecoTitle(
        sMovieTitle) + ' [COLOR skyblue]' + sQual + '[/COLOR]'

    oOutputParameterHandler = cOutputParameterHandler()
    oOutputParameterHandler.addParameter('siteUrl', sUrl)
    oOutputParameterHandler.addParameter('sMovieTitle', str(sMovieTitle))
    oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail))
    oGui.addTV(SITE_IDENTIFIER, 'showSeriesHosters', sDisplayTitle, '',
               sThumbnail, '', oOutputParameterHandler)

    #on regarde si dispo dans d'autres qualités
    sHtmlContent1 = CutQual(sHtmlContent)
    #sPattern1 = '<a href="([^"]+)"><span class="otherquality">([^<]+)<'
    sPattern1 = '<a href="([^"]+)"><span class="otherquality"><span style="color:#.{6}"><b>([^<]+)<\/b><\/span><span style="color:#.{6}"><b>([^<]+)<\/b><\/span>'

    aResult1 = oParser.parse(sHtmlContent1, sPattern1)
    #print aResult1

    if (aResult1[0] == True):
        total = len(aResult1[1])
        dialog = cConfig().createDialog(SITE_NAME)
        for aEntry in aResult1[1]:
            cConfig().updateDialog(dialog, total)
            if dialog.iscanceled():
                break

            sDisplayTitle = cUtil().DecoTitle(
                sMovieTitle
            ) + ' [COLOR skyblue]' + aEntry[1] + aEntry[2] + '[/COLOR]'
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter(
                'siteUrl', URL_MAIN + 'telecharger-series' + aEntry[0])
            oOutputParameterHandler.addParameter('sMovieTitle',
                                                 str(sMovieTitle))
            oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail))
            oGui.addTV(SITE_IDENTIFIER, 'showSeriesHosters', sDisplayTitle, '',
                       sThumbnail, '', oOutputParameterHandler)

        cConfig().finishDialog(dialog)

    #on regarde si dispo d'autres saisons
    sHtmlContent2 = CutSais(sHtmlContent)
    #sPattern2 = '<a href="([^"]+)"><span class="otherquality">([^<]+)<'
    sPattern2 = '<a href="([^"]+)"><span class="otherquality">([^<]+)<b>([^<]+)<span style="color:#.{6}">([^<]+)<\/span><span style="color:#.{6}">([^<]+)<\/b><\/span>'

    aResult2 = oParser.parse(sHtmlContent2, sPattern2)
    #print aResult2

    if (aResult2[0] == True):
        oGui.addText(
            SITE_IDENTIFIER,
            '[COLOR olive]Autres Saisons disponibles pour cette série :[/COLOR]'
        )

        for aEntry in aResult2[1]:

            sTitle = '[COLOR skyblue]' + aEntry[1] + aEntry[2] + aEntry[
                3] + aEntry[4] + '[/COLOR]'
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter(
                'siteUrl', URL_MAIN + 'telecharger-series' + aEntry[0])
            oOutputParameterHandler.addParameter('sMovieTitle',
                                                 str(sMovieTitle))
            oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail))
            oGui.addTV(SITE_IDENTIFIER, 'showSeriesLinks', sTitle,
                       'series.png', sThumbnail, '', oOutputParameterHandler)

    oGui.setEndOfDirectory()
def showHosters():  # recherche et affiche les hotes
    #xbmc.log('showHosters')

    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sThumbnail = oInputParameterHandler.getValue('sThumbnail')

    #xbmc.log(sUrl)

    oRequestHandler = cRequestHandler(sUrl)
    oRequestHandler.addHeaderEntry(
        'User-Agent',
        'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'
    )
    oRequestHandler.addHeaderEntry(
        'Accept',
        'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
    oRequestHandler.addHeaderEntry('Accept-Language',
                                   'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3')
    sHtmlContent = oRequestHandler.request()

    #fh = open('c:\\test.txt', "w")
    #fh.write(sHtmlContent.replace('\n',''))
    #fh.close()

    #Fonction pour recuperer uniquement les liens
    #sHtmlContent = Cutlink(sHtmlContent)

    #Si ca ressemble aux lien premiums on vire les liens non premium
    if 'Premium' in sHtmlContent or 'PREMIUM' in sHtmlContent:
        oParser = cParser()
        sPattern = '<font color=red>([^<]+?)</font>'
        aResult = oParser.parse(sHtmlContent, sPattern)
        sHtmlContent = CutNonPremiumlinks(sHtmlContent)

        #print sHtmlContent
    oParser = cParser()

    sPattern = '<font color=red>([^<]+?)</font>|<div style="font-weight:bold;[^"]+?">([^>]+?)</div></b><b><a target="_blank" href="([^<>"]+?)">Télécharger<\/a>|>\[(Liens Premium) \]<|<span style="color:#FF0000">(.+?)</div></b><b><a target="_blank" href=href="https://([^"]+)/([^"]+?)">'
    aResult = oParser.parse(sHtmlContent, sPattern)

    #xbmc.log(str(aResult))

    if (aResult[0] == True):
        total = len(aResult[1])
        dialog = cConfig().createDialog(SITE_NAME)

        for aEntry in aResult[1]:
            cConfig().updateDialog(dialog, total)
            if dialog.iscanceled():
                break

            if aEntry[0]:
                if ('Interchangeables' not in aEntry[0]):
                    oOutputParameterHandler = cOutputParameterHandler()
                    oOutputParameterHandler.addParameter('siteUrl', str(sUrl))
                    oOutputParameterHandler.addParameter(
                        'sMovieTitle', str(sMovieTitle))
                    oOutputParameterHandler.addParameter(
                        'sThumbnail', str(sThumbnail))
                    oGui.addText(SITE_IDENTIFIER,
                                 '[COLOR red]' + str(aEntry[0]) + '[/COLOR]')

            #elif aEntry[1]:
            #oOutputParameterHandler = cOutputParameterHandler()
            #oOutputParameterHandler.addParameter('siteUrl', str(sUrl))
            #oOutputParameterHandler.addParameter('sMovieTitle', str(sMovieTitle))
            #oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail))
            #if 'Télécharger' in aEntry[1]:
            #oGui.addText(SITE_IDENTIFIER, '[COLOR olive]'+str(aEntry[1])+'[/COLOR]')
            #else:
            #oGui.addText(SITE_IDENTIFIER, '[COLOR red]'+str(aEntry[1])+'[/COLOR]')

            else:
                sTitle = '[COLOR skyblue]' + aEntry[
                    1] + '[/COLOR] ' + sMovieTitle
                URL_DECRYPT = aEntry[3]
                oOutputParameterHandler = cOutputParameterHandler()
                if sUrl.startswith('https') or sUrl.startswith('http'):
                    oOutputParameterHandler.addParameter('siteUrl', aEntry[2])
                else:
                    sUrl2 = 'https://' + aEntry[3] + '/' + aEntry[4]
                    oOutputParameterHandler.addParameter('siteUrl', str(sUrl2))

                oOutputParameterHandler.addParameter('sMovieTitle',
                                                     str(sMovieTitle))
                oOutputParameterHandler.addParameter('sThumbnail',
                                                     str(sThumbnail))
                oGui.addMovie(SITE_IDENTIFIER, 'Display_protected_link',
                              sTitle, '', sThumbnail, '',
                              oOutputParameterHandler)

        cConfig().finishDialog(dialog)

    oGui.setEndOfDirectory()
def showMovies(sSearch=''):
    oGui = cGui()
    bGlobal_Search = False
    qual = False
    if sSearch:

        if URL_SEARCH[0] in sSearch:
            bGlobal_Search = True
            sSearch = sSearch.replace(URL_SEARCH[0], '')

        query_args = (('do', 'search'), ('subaction', 'search'),
                      ('story', sSearch), ('titleonly', '3'))

        data = urllib.urlencode(query_args)
        request = urllib2.Request(URL_SEARCH[0], data, headers)
        sPattern = '<div style="height:[0-9]{3}px;"> *<a href="([^"]+)" *><img class="[^"]+?" data-newsid="[^"]+?" src="([^<"]+)".+?<div class="[^"]+?" style="[^"]+?"> *<a href="[^"]+?" *> ([^<]+?)<'

    else:
        oInputParameterHandler = cInputParameterHandler()
        sUrl = oInputParameterHandler.getValue('siteUrl')
        request = urllib2.Request(sUrl, None, headers)
        sPattern = '<div style="height:[0-9]{3}px;"> *<a href="([^"]+)"><img class="[^"]+?" data-newsid="[^"]+?" src="([^<"]+)".+?<div class="[^"]+?" style="[^"]+?"> *<a href="[^"]+?"> ([^<]+?)<'

    reponse = urllib2.urlopen(request)
    sHtmlContent = reponse.read()
    #xbmc.log(sHtmlContent)
    reponse.close()

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    #print aResult
    if (aResult[0] == False):
        oGui.addText(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        dialog = cConfig().createDialog(SITE_NAME)
        for aEntry in aResult[1]:
            cConfig().updateDialog(dialog, total)
            if dialog.iscanceled():
                break
            sTitle = str(aEntry[2])
            sUrl2 = aEntry[0]

            #traite les qualités
            liste = [
                '4k', '1080p', '720p', 'bdrip', 'hdrip', 'dvdrip', 'cam-md'
            ]
            for i in liste:
                if i in sUrl2:
                    sTitle = '%s (%s)' % (sTitle, i)

            #Si recherche et trop de resultat, on nettoye
            #31/12/17 Ne fonctionne plus ?
            if sSearch and total > 2:
                if cUtil().CheckOccurence(sSearch, sTitle) == 0:
                    continue

            if 'http' in aEntry[1]:
                sThumbnail = aEntry[1]
            else:
                sThumbnail = URL_MAIN + aEntry[1]

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', str(sUrl2))
            oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle))
            oOutputParameterHandler.addParameter('sThumbnail', sThumbnail)

            sDisplayTitle = cUtil().DecoTitle(sTitle)

            if 'films-gratuit' in sUrl2 or '4k' in sUrl2:
                oGui.addMovie(SITE_IDENTIFIER, 'showMoviesLinks',
                              sDisplayTitle, '', sThumbnail, '',
                              oOutputParameterHandler)
            else:
                oGui.addTV(SITE_IDENTIFIER, 'showSeriesLinks', sDisplayTitle,
                           '', sThumbnail, '', oOutputParameterHandler)

        sNextPage = __checkForNextPage(sHtmlContent)
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            oGui.addNext(SITE_IDENTIFIER, 'showMovies',
                         '[COLOR teal]Next >>>[/COLOR]',
                         oOutputParameterHandler)

    if not sSearch:
        oGui.setEndOfDirectory()
def showMoviesLinks():
    #xbmc.log('mode film')

    oGui = cGui()

    oInputParameterHandler = cInputParameterHandler()
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumbnail = oInputParameterHandler.getValue('sThumbnail')
    sUrl = oInputParameterHandler.getValue('siteUrl')

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()

    #print sUrl

    oParser = cParser()

    sCom = ''
    #Affichage du menu
    oGui.addText(
        SITE_IDENTIFIER,
        '[COLOR olive]' + 'Qualités disponibles pour ce film :' + '[/COLOR]')

    #on recherche d'abord la qualité courante
    sPattern = '<div style="[^"]+?"> *Qualité (.+?)<\/div>'
    aResult = oParser.parse(sHtmlContent, sPattern)
    #print aResult

    sQual = ''
    if (aResult[0]):
        sQual = aResult[1][0]

        sTitle = sMovieTitle + ' [COLOR skyblue]' + sQual + '[/COLOR]'

        oOutputParameterHandler = cOutputParameterHandler()
        oOutputParameterHandler.addParameter('siteUrl', sUrl)
        oOutputParameterHandler.addParameter('sMovieTitle', str(sMovieTitle))
        oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail))
        oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumbnail,
                      sCom, oOutputParameterHandler)

    #on regarde si dispo dans d'autres qualités
    sPattern = '<a href="([^"]+)"><span class="otherquality"><span style="color:#.{6}"><b>([^<]+)<\/b><\/span><span style="color:#.{6}"><b>([^<]+)<\/b><\/span>'

    aResult = oParser.parse(sHtmlContent, sPattern)
    #print aResult

    if (aResult[0] == True):
        total = len(aResult[1])
        dialog = cConfig().createDialog(SITE_NAME)
        for aEntry in aResult[1]:
            cConfig().updateDialog(dialog, total)
            if dialog.iscanceled():
                break

            sTitle = sMovieTitle + ' [COLOR skyblue]' + aEntry[1] + aEntry[
                2] + '[/COLOR]'
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl',
                                                 URL_MAIN[:-1] + aEntry[0])
            oOutputParameterHandler.addParameter('sMovieTitle',
                                                 str(sMovieTitle))
            oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail))
            oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '',
                          sThumbnail, sCom, oOutputParameterHandler)

        cConfig().finishDialog(dialog)

    oGui.setEndOfDirectory()
Beispiel #47
0
def showMovies(sSearch=''):
    oGui = cGui()
    oParser = cParser()
    oInputParameterHandler = cInputParameterHandler()

    sType = ''

    if sSearch:
        sUrl = sSearch

        #partie en test
        oInputParameterHandler = cInputParameterHandler()
        sType = oInputParameterHandler.getValue('type')

    else:
        sUrl = oInputParameterHandler.getValue('siteUrl')

    sPattern = 'fullstreaming".*?img src="(.+?)".+?<span class="xquality">(.+?)</span>.+?href="(.+?)">(.+?)<\/a>.*?style="font-family:.*?>(.+?)<\/span>'

    oRequestHandler = cRequestHandler(sUrl)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    sHtmlContent = oRequestHandler.request()

    #page bloquee?
    if sHtmlContent.startswith('<noscript>'):
        code = re.search('value="([^"]+)"\/>', sHtmlContent,
                         re.DOTALL).group(1)

        oRequestHandler2 = cRequestHandler(sUrl)

        oRequestHandler2.addHeaderEntry('Referer', URL_MAIN)
        oRequestHandler2.addHeaderEntry('User-Agent', UA)
        oRequestHandler2.addHeaderEntry('Content-Type',
                                        'application/x-www-form-urlencoded')

        oRequestHandler2.setRequestType(cRequestHandler.REQUEST_TYPE_POST)
        oRequestHandler2.addParametersLine('_authfer=' + code)

        sHtmlContent = oRequestHandler2.request()

    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == False):
        oGui.addText(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        progress_ = progress().VScreate(SITE_NAME)
        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            sThumb = str(aEntry[0])
            if sThumb.startswith('/'):
                sThumb = URL_MAIN[:-1] + sThumb

            sQual = str(aEntry[1]).replace('Haute-qualité',
                                           'HQ').replace(' ', '')
            sUrl2 = str(aEntry[2])
            sDesc = str(aEntry[4]).replace('<br />', '')

            #traitement pour affichage de la langue
            sLang = ''
            if '/vf/' in sUrl or '/vostfr/' in sUrl:
                sLang = ''
            elif 'VF' in str(aEntry[3]):
                sLang = 'VF'
            elif 'VOSTFR' in str(aEntry[3]):
                sLang = 'VOSTFR'

            sTitle = str(aEntry[3]).replace('VOSTFR',
                                            '').replace('VF', '').replace(
                                                'VOST', '')
            sDisplayTitle = ('%s [%s] (%s)') % (sTitle, sQual, sLang)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl2)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            oOutputParameterHandler.addParameter('sThumb', sThumb)
            oOutputParameterHandler.addParameter('sDesc', sDesc)

            if '/seriestv/' in sUrl:
                oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, '',
                           sThumb, sDesc, oOutputParameterHandler)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showLink', sDisplayTitle, '',
                              sThumb, sDesc, oOutputParameterHandler)

        progress_.VSclose(progress_)

        sNextPage = __checkForNextPage(sHtmlContent)
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            oGui.addNext(SITE_IDENTIFIER, 'showMovies',
                         '[COLOR teal]Next >>>[/COLOR]',
                         oOutputParameterHandler)

    if not sSearch:
        oGui.setEndOfDirectory()
Beispiel #48
0
def showMovies(sSearch=''):
    oGui = cGui()
    oParser = cParser()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')

    if sSearch:
        sUrl = sSearch
        sPattern = 'class="image">.*?<a href="([^"]+)">\s*<img src="([^"]+)" alt="([^"]+)".+?<p>([^<]*)'
    elif 'episodes' in sUrl:
        sPattern = 'class="poster">.*?<img src="([^"]+)" alt="([^"]+)".+?<a href="([^"]+)'
    else:
        sPattern = 'class="poster"> *<img src="([^"]+)".+?<a href="([^"]+)" *title="([^"]+)".+?class="texto">([^<]*)'

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()

    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == False):
        oGui.addText(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        progress_ = progress().VScreate(SITE_NAME)

        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            # Si recherche et trop de resultat, on filtre
            if sSearch and total > 5:
                if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0], ''),
                                          aEntry[2]) == 0:
                    continue

            if sSearch:
                sUrl = aEntry[0]
                sThumb = aEntry[1]
                sTitle = aEntry[2]
                sDesc = aEntry[3]
            elif 'episodes' in sUrl:
                sThumb = aEntry[0]
                sTitle = aEntry[1]
                sUrl = aEntry[2]
                sDesc = ''
            else:
                sThumb = aEntry[0]
                sUrl = aEntry[1]
                sTitle = aEntry[2].replace('streaming', ' ')
                sDesc = aEntry[3]

            # si utile il faut retirer oOutputParameterHandler.addParameter(sDesc)
            # if sDesc:  # désactivé le 17/06/2020,
            # try:
            # sDesc = cUtil().unescape(sDesc.decode('utf8'))
            # except AttributeError:
            # sDesc = cUtil().unescape(sDesc)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            oOutputParameterHandler.addParameter('sThumb', sThumb)
            oOutputParameterHandler.addParameter('sDesc', sDesc)

            if 'series' in sUrl:
                oGui.addTV(SITE_IDENTIFIER, 'showSxE', sTitle, '', sThumb,
                           sDesc, oOutputParameterHandler)
            elif 'episodes' in sUrl:
                oGui.addTV(SITE_IDENTIFIER, 'showLinks', sTitle, '', sThumb,
                           sDesc, oOutputParameterHandler)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sTitle, '', sThumb,
                              sDesc, oOutputParameterHandler)

        progress_.VSclose(progress_)

    if not sSearch:
        sNextPage = __checkForNextPage(sHtmlContent)
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            number = re.search('page/([0-9]+)', sNextPage).group(1)
            oGui.addNext(SITE_IDENTIFIER, 'showMovies',
                         '[COLOR teal]Page ' + number + ' >>>[/COLOR]',
                         oOutputParameterHandler)

    if not sSearch:
        oGui.setEndOfDirectory()
Beispiel #49
0
def showFile(sSearch=''):

    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    # VSlog('input   ' + str(sUrl))
    oParser = cParser()

    sOffset = 0
    if (oInputParameterHandler.exist('sOffset')):
        sOffset = int(oInputParameterHandler.getValue('sOffset'))

    sNext = 0
    if (oInputParameterHandler.exist('sNext')):
        sNext = int(oInputParameterHandler.getValue('sNext'))

    sToken = ''
    if (oInputParameterHandler.exist('sToken')):
        sToken = oInputParameterHandler.getValue('sToken')

    sFoldername = ''
    if (oInputParameterHandler.exist('sFoldername')):
        sFoldername = oInputParameterHandler.getValue('sFoldername')
        sUrl = sUrl + Quote(sFoldername).replace('//', '%2F%2F')
        # VSlog('folder   ' + str(sUrl))

    sPath = ''
    if (oInputParameterHandler.exist('sPath')):
        sPath = oInputParameterHandler.getValue('sPath')
        sUrl = sUrl + Quote(sPath).replace('//', '%2F%2F')
        # VSlog('sPath   ' + str(sUrl))

    oPremiumHandler = cPremiumHandler('uptobox')

    if 'uptobox.com' in sUrl:
        sHtmlContent = oPremiumHandler.GetHtml(sUrl)

    else:
        if sToken == '':
            sHtmlContent = oPremiumHandler.GetHtml(BURL)
            sPattern = 'token":"(.+?)",'
            aResult = oParser.parse(sHtmlContent, sPattern)
            if (aResult[0] == True):
                sToken = aResult[1][0]

            if sSearch:

                sHtmlContent = oPremiumHandler.GetHtml(
                    API_URL.replace('none', sToken) + '%2F%2F' + sSearch)
            else:
                sHtmlContent = oPremiumHandler.GetHtml(
                    API_URL.replace('none', sToken) + '%2F%2F')

    content = json.loads(sHtmlContent)
    content = content['data']

    if content:
        total = len(content)
        progress_ = progress().VScreate(SITE_NAME)
        sPath = getpath(content)
        for x in content:

            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            if x == 'files':

                for y in content[x]:
                    if xbmc.getInfoLabel('system.buildversion')[0:2] >= '19':
                        sTitle = y['file_name']
                    else:
                        sTitle = y['file_name'].encode('utf-8')

                    sHosterUrl = URL_MAIN + y['file_code']

                    oHoster = cHosterGui().checkHoster(sHosterUrl)
                    if (oHoster != False):
                        oHoster.setDisplayName(sTitle)
                        oHoster.setFileName(sTitle)
                        cHosterGui().showHoster(oGui, oHoster, sHosterUrl, '')
                    sNext += 1

            if x == 'folders':

                for z in content[x]:
                    if xbmc.getInfoLabel('system.buildversion')[0:2] >= '19':
                        sTitle = z['name']
                        sFoldername = z['fld_name']
                    else:
                        sTitle = z['name'].encode('utf-8')
                        sFoldername = z['fld_name'].encode('utf-8')

                    sUrl = API_URL.replace('none', sToken)

                    oOutputParameterHandler = cOutputParameterHandler()
                    oOutputParameterHandler.addParameter('siteUrl', sUrl)
                    oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
                    oOutputParameterHandler.addParameter(
                        'sFoldername', sFoldername)
                    oOutputParameterHandler.addParameter('sToken', sToken)
                    oGui.addDir(SITE_IDENTIFIER, 'showFile', sTitle,
                                'genres.png', oOutputParameterHandler)

            if x == 'currentFolder':
                if content[x]['fileCount'] != int(sNext):
                    oOutputParameterHandler = cOutputParameterHandler()

                    sOffset = int(sOffset) + 100

                    oOutputParameterHandler.addParameter(
                        'siteUrl',
                        API_URL.replace('none', sToken).replace(
                            'offset=0', 'offset=' + str(sOffset)))
                    oOutputParameterHandler.addParameter('sToken', sToken)
                    oOutputParameterHandler.addParameter('sNext', sNext)
                    oOutputParameterHandler.addParameter('sOffset', sOffset)
                    oOutputParameterHandler.addParameter('sPath', sPath)
                    oGui.addNext(SITE_IDENTIFIER, 'showFile', 'Suite',
                                 oOutputParameterHandler)

        progress_.VSclose(progress_)

    oGui.setEndOfDirectory()
    def getMediaLink(self):
        self.oPremiumHandler = cPremiumHandler('uptobox')
        premium = self.oPremiumHandler.isPremiumModeAvailable()
        api_call = False
        SubTitle = ""

        if premium:
            self.oPremiumHandler.Authentificate()
        else:
            dialog().VSok('Ce hoster demande un login, meme gratuit.')
            return False, False

        cookies = GestionCookie().Readcookie("uptobox")

        s = requests.Session()
        s.headers.update({"Cookie": cookies})

        r = s.get('https://uptobox.com/api/streaming?file_code=' + self.__sUrl.split('/')[-1]).json()
        
        if r["statusCode"] != 0: # Erreur
            dialog().VSinfo(r["data"])
            return False, False

        r1 = s.get(r["data"]["user_url"]).text
        tok = re.search('token.+?;.+?;(.+?)&', r1).group(1)

        if not xbmc.getCondVisibility('system.platform.android'):
            # Si possible on ouvre la page automatiquement dans un navigateur internet.
            import webbrowser
            webbrowser.open(r['data']['user_url'])
            with CountdownDialog("Autorisation nécessaire", "Pour voir cette vidéo, veuillez vous connecter", "Allez sur ce lien : " + r['data']['user_url'], "Et valider le pin : " + r['data']['pin'], True, r["data"]['expired_in'], 10) as cd:
                js_result = cd.start(self.__check_auth, [r["data"]["check_url"]])["data"]
        else:
            from resources.lib import pyqrcode
            from resources.lib.librecaptcha.gui import cInputWindowYesNo
            qr = pyqrcode.create(r['data']['user_url'])
            qr.png('special://home/userdata/addon_data/plugin.video.vstream/qrcode.png', scale=5)
            oSolver = cInputWindowYesNo(captcha='special://home/userdata/addon_data/plugin.video.vstream/qrcode.png', msg="Scanner le QRCode pour acceder au lien d'autorisation", roundnum=1)
            retArg = oSolver.get()
            DIALOG = dialog()
            if retArg == "N":
                return False

            js_result = s.get(r["data"]["check_url"]).json()["data"]

        #Deux modes de fonctionnement different.
        if js_result.get("streamLinks").get('src'):
            api_call = js_result['streamLinks']['src'].replace(".m3u8",".mpd")
        else:
            sPattern = "'(.+?)': {(.+?)}"

            oParser = cParser()
            aResult = oParser.parse(js_result["streamLinks"], sPattern)

            url = []
            qua = []
            api_call = False

            for aEntry in aResult[1]:
                QUAL = aEntry[0]
                d = re.findall("'u*(.+?)': u*'(.+?)'",aEntry[1])
                for aEntry1 in d:
                    url.append(aEntry1[1])
                    qua.append(QUAL  + ' (' + aEntry1[0] + ')')

            # Affichage du tableau
            api_call = dialog().VSselectqual(qua, url)

        try:
            SubTitle = self.checkSubtitle(js_result["subs"])
        except:
            VSlog("Pas de sous-titre")

        if (api_call):
            if SubTitle:
                return True, api_call, SubTitle
            else:
                return True, api_call

        return False, False
Beispiel #51
0
def showMovies(sSearch=''):
    oGui = cGui()
    oParser = cParser()
    if sSearch:
        sUrl = sSearch
        oRequest = cRequestHandler(sUrl)
        sHtmlContent = oRequest.request()
    else:
        oInputParameterHandler = cInputParameterHandler()
        sUrl = oInputParameterHandler.getValue('siteUrl')

        oRequestHandler = cRequestHandler(sUrl)
        sHtmlContent = oRequestHandler.request()

        if '<h2 class="side-title nop">film du moment</h2>' in sHtmlContent:
            sStart = '<div class="films-group small'
            sEnd = '<div class="side-title">films par Genres'
            sHtmlContent = oParser.abParse(sHtmlContent, sStart, sEnd)
        else:
            sHtmlContent = sHtmlContent

    sPattern = 'class="film-uno *">.+?href="([^"]+)".+?src="([^"]+)" alt="([^"]+).+?class="quality ">([^<]+).+?class="nop short-story *">(.+?)</p>'
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == False):
        oGui.addText(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        progress_ = progress().VScreate(SITE_NAME)
        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            sUrl = aEntry[0]
            sThumb = aEntry[1]
            sTitle = aEntry[2]  # .decode("unicode_escape").encode("latin-1")
            sQual = aEntry[3]
            sDesc = aEntry[4]
            sDisplayTitle = ('%s [%s]') % (sTitle, sQual)

            # Nettoie le titre, la premiere phrase est souvent doublée
            sDesc = sDesc.replace('SYNOPSIS ET DÉTAILS', '').lstrip()
            if len(sDesc) > 180:
                idx = sDesc.find(sDesc[:15], 30, 180)
                if idx > 0:
                    sDesc = sDesc[idx:]

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            oOutputParameterHandler.addParameter('sThumb', sThumb)
            oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)

        progress_.VSclose(progress_)

    if not sSearch:
        sNextPage = __checkForNextPage(sHtmlContent)
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            number = re.search('/page/([0-9]+)', sNextPage).group(1)
            oGui.addNext(SITE_IDENTIFIER, 'showMovies', 'Page ' + number, oOutputParameterHandler)

        oGui.setEndOfDirectory()
Beispiel #52
0
def UptomyAccount():
    addons = addon()

    if (addons.getSetting('hoster_uptobox_username')
            == '') and (addons.getSetting('hoster_uptobox_password') == ''):
        return
    oInputParameterHandler = cInputParameterHandler()
    sMediaUrl = oInputParameterHandler.getValue('sMediaUrl')

    oPremiumHandler = cPremiumHandler('uptobox')

    sHtmlContent = oPremiumHandler.GetHtml(URL_MAIN)
    cookies = GestionCookie().Readcookie('uptobox')

    aResult = re.search('<form id="fileupload" action="([^"]+)"', sHtmlContent,
                        re.DOTALL)
    if (aResult):
        upUrl = aResult.group(1).replace('upload?', 'remote?')

        if upUrl.startswith('//'):
            upUrl = 'https:' + upUrl

        fields = {'urls': '["' + sMediaUrl + '"]'}
        mpartdata = MPencode(fields)

        req = urllib2.Request(upUrl, mpartdata[1], headers)
        req.add_header('Content-Type', mpartdata[0].replace(',', ';'))
        req.add_header('Cookie', cookies)
        req.add_header('Content-Length', len(mpartdata[1]))

        # penible ce dialog auth
        xbmc.executebuiltin('Dialog.Close(all,true)')
        xbmcgui.Dialog().notification('Requête envoyée',
                                      'vous pouvez faire autre chose',
                                      xbmcgui.NOTIFICATION_INFO, 4000, False)

        try:
            rep = urllib2.urlopen(req)
        except UrlError:
            return ''

        sHtmlContent = rep.read()
        rep.close()

        sPattern = '{"id":.+?,(?:"size":|"progress":)([0-9]+)'
        oParser = cParser()
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            total = aResult[1][0]
            del aResult[1][0]

            dialog = xbmcgui.DialogProgressBG()
            dialog.create(SITE_NAME,
                          'Transfert de fichiers sur votre compte Uptobox')

            for aEntry in aResult[1]:
                dialog.update(
                    int(aEntry) * 100 / int(total), 'Upload en cours...')

                xbmc.sleep(500)
            dialog.close()

        else:
            # penible ce dialog auth
            xbmc.executebuiltin('Dialog.Close(all,true)')
            xbmcgui.Dialog().notification('Info upload', 'Fichier introuvable',
                                          xbmcgui.NOTIFICATION_INFO, 2000,
                                          False)
    else:
        # penible ce dialog auth
        xbmc.executebuiltin('Dialog.Close(all,true)')
        xbmcgui.Dialog().notification('Info upload', 'Erreur pattern',
                                      xbmcgui.NOTIFICATION_ERROR, 2000, False)
Beispiel #53
0
def showAllPlaylist():  #On recupere les differentes playlist si il y en a
    oGui = cGui()

    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumb = oInputParameterHandler.getValue('sThumbnail')
    sDesc = oInputParameterHandler.getValue('sDescription')
    #VSlog(str(sUrl))
    if 'firstonetv' and 'Register-Login' in sUrl:

        session = requests.Session()
        url = 'https://www.firstonetv.net/Register-Login'
        data = {
            'usrmail': ADDON.getSetting('hoster_firstonetv_username'),
            'password': ADDON.getSetting('hoster_firstonetv_password'),
            'login': '******'
        }

        headers = {
            'user-agent': UA,
            'Content-Type': 'application/x-www-form-urlencoded',
            'Referer': 'https://www.firstonetv.net/Index',
            'Content-Length': str(len(data))
        }

        session.post(url, data=data, headers=headers)
        cookiesDict = requests.utils.dict_from_cookiejar(session.cookies)
        getUser = re.match("{'(.+?)': '(.+?)',", str(cookiesDict))
        #VSlog(cookiesDict)
        cookies = str(getUser.group(1)) + '=' + str(getUser.group(2))
        GestionCookie().SaveCookie('firstonetv', cookies)
        dialog().VSinfo('Authentification reussie merci de recharger la page',
                        "FirstOneTv", 15)
        return

    sHtmlContent = getHtml(sUrl)

    if 'myfree-tivi' in sUrl:
        aResult = re.findall('<meta name="csrf-token" content="(.+?)">',
                             sHtmlContent)
        if aResult:
            token = aResult[0]
            #VSlog(token)
            sHtmlContent = getHtml(sUrl, token)

    if 'firstonetv' in sUrl:
        sPattern = '(?:"surl":"{\".+?|,.+?)"([^"]+)\".+?"http([^"]+).m3u8'
    elif 'myfree-tivi' in sUrl:
        sPattern = "thumb'.+?'(.+?)'.+?title.+?'(.+?)'.+?url'.+?'(.+?)'"
    elif 'iptvgratuit.com' in sUrl:
        sPattern = '<h4><a class="more-link" title="(.+?)" href="(.+?)" target="_blank" rel="noopener"><button>.+?</button></a></h4>'
    elif 'dailyiptvlist.com' in sUrl:
        sPattern = '<p></br><br /><strong>2. Click on link to download .+? iptv channels list</strong></p>\s*.+?<a href="(.+?)">Download (.+?)</a>'
    elif 'iptvsource.com':
        sPattern = '<a href="([^"]+)">Download as([^"]+)</a>'

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        total = len(aResult[1])
        progress_ = progress().VScreate(SITE_NAME)

        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            if 'firstonetv' in sUrl:
                sTitle = sTitle + aEntry[0]
                sDesc = sDesc
                sThumb = sThumb
                sUrl2 = 'http' + aEntry[1].replace('\\\/', '/').replace(
                    "\/", "/"
                ) + '.m3u8|Referer=' + sUrl + '&User-Agent=' + UA + '&X-Requested-With=ShockwaveFlash/28.0.0.137&Origin=https://www.firstonetv.net'
            elif 'myfree-tivi' in sUrl:
                sTitle = str(aEntry[1])
                sUrl2 = str(aEntry[2])
                sThumb = 'https:' + str(aEntry[0])
                sDesc = ''
            elif 'iptvgratuit.com' in sUrl:
                sTitle = aEntry[0]
                sUrl2 = aEntry[1]
                sThumb = ''
                sDesc = ''
            else:
                sTitle = aEntry[1]
                sUrl2 = aEntry[0]
                sThumb = ''
                sDesc = ''

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl2)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            if 'myfree-tivi' or 'firstonetv' in sUrl:
                oOutputParameterHandler.addParameter('sThumbnail', sThumb)

            if 'iptvgratuit' and 'world-iptv-links' in sUrl:
                oGui.addDir(SITE_IDENTIFIER, 'showWorldIptvGratuit', sTitle,
                            '', oOutputParameterHandler)
            elif 'firstonetv' in sUrl or 'myfree-tivi' in sUrl:
                oGuiElement = cGuiElement()
                oGuiElement.setSiteName(SITE_IDENTIFIER)
                oGuiElement.setFunction('play__')
                oGuiElement.setTitle(sTitle)
                oGuiElement.setFileName(sTitle)
                oGuiElement.setIcon(sThumb)
                oGuiElement.setMeta(0)
                oGuiElement.setThumbnail(sThumb)
                oGuiElement.setDirectTvFanart()
                oGuiElement.setCat(6)

                oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler,
                                      SITE_IDENTIFIER, SITE_IDENTIFIER,
                                      'direct_epg', 'Guide tv Direct')
                oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler,
                                      SITE_IDENTIFIER, SITE_IDENTIFIER,
                                      'soir_epg', 'Guide tv Soir')
                oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler,
                                      SITE_IDENTIFIER, SITE_IDENTIFIER,
                                      'enregistrement', 'Enregistrement')
                oGui.createContexMenuFav(oGuiElement, oOutputParameterHandler)
                oGui.addFolder(oGuiElement, oOutputParameterHandler)
            else:
                oGui.addDir(SITE_IDENTIFIER, 'showWeb', sTitle, '',
                            oOutputParameterHandler)

        progress_.VSclose(progress_)

    oGui.setEndOfDirectory()
Beispiel #54
0
def getHtml(sUrl, data=None):  #S'occupe des requetes
    if 'firstonetv' in sUrl:
        cookies = GestionCookie().Readcookie('firstonetv')
    if 'myfree-tivi' and 'watch' in sUrl:
        #VSlog(data)
        cookies = GestionCookie().Readcookie('myfree_tivi')
        headers = {
            'Host': 'www.myfree-tivi.com',
            'User-Agent':
            'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0',
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
            'Referer': sUrl,
            'X-CSRF-Token': data,
            'Connection': 'keep-alive',
            'Cookie': cookies,
            'Content-Length': '0',
            'TE': 'Trailers'
        }

        r = requests.post('https://www.myfree-tivi.com/getdata',
                          headers=headers)

    elif 'firstonetv' and '/France/' in sUrl:  #On passe les redirection
        aResult = re.findall('Live/.+?/*[^<>]+(?:-)([^"]+)', sUrl)
        idChannel = aResult[0]

        apiNumber = random.uniform(0.0000000000000000, 0.9999999999999999)
        url = 'https://www.firstonetv.net/api/?cacheFucker=' + str(apiNumber)
        oRequestHandler = cRequestHandler(url)
        oRequestHandler.setRequestType(1)
        oRequestHandler.addHeaderEntry('User-Agent', UA)
        oRequestHandler.addHeaderEntry('Cookie', cookies)
        oRequestHandler.addParameters('action', 'hiro')
        oRequestHandler.addParameters('result', 'get')
        data = oRequestHandler.request()
        hiro = unFuckFirst(data)  #On decode Hiro

        sPattern = '"hiro":(.+?),"hash":"(.+?)","time":(.+?),'

        oParser = cParser()
        aResult = oParser.parse(hiro, sPattern)

        for aEntry in aResult[1]:
            hiro = aEntry[0]
            Hash = aEntry[1]
            time = aEntry[2]

        apiNumber = random.uniform(0.0000000000000000, 0.9999999999999999)
        url = 'https://www.firstonetv.net/api/?cacheFucker=' + str(apiNumber)
        oRequestHandler = cRequestHandler(url)
        oRequestHandler.setRequestType(1)
        oRequestHandler.addHeaderEntry('User-Agent', UA)
        oRequestHandler.addHeaderEntry('Cookie', cookies)
        oRequestHandler.addParameters('action', 'hiro')
        oRequestHandler.addParameters('result', hiro)
        oRequestHandler.addParameters('time', time)
        oRequestHandler.addParameters('hash', Hash)
        data = oRequestHandler.request()

        aResult = re.findall('"ctoken":"(.+?)"}', data)
        cToken = aResult[0]

        apiNumber = random.uniform(0.0000000000000000, 0.9999999999999999)
        url = 'https://www.firstonetv.net/api/?cacheFucker=' + str(apiNumber)
        oRequestHandler = cRequestHandler(url)
        oRequestHandler.setRequestType(1)
        oRequestHandler.addHeaderEntry('User-Agent', UA)
        oRequestHandler.addHeaderEntry('Cookie', cookies)
        oRequestHandler.addParameters('action', 'channel')
        oRequestHandler.addParameters('ctoken', cToken)
        oRequestHandler.addParameters('c', 'fr')
        oRequestHandler.addParameters('id', idChannel)
        oRequestHandler.addParameters('native_hls', '0')
        oRequestHandler.addParameters('unsecure_hls', '0')
        data = oRequestHandler.request()

        return data
    elif 'firstonetv' in sUrl:
        oRequestHandler = cRequestHandler(sUrl)
        oRequestHandler.addHeaderEntry('User-Agent', UA)
        oRequestHandler.addHeaderEntry('Host', 'www.firstonetv.net')
        oRequestHandler.addHeaderEntry('Cookie', cookies)
        data = oRequestHandler.request()
        return data

    if data == None and 'watch' in sUrl:
        oRequestHandler = cRequestHandler(sUrl)
        data = oRequestHandler.request()
        cookies = oRequestHandler.GetCookies()
        GestionCookie().SaveCookie('myfree_tivi', cookies)
        return data

    else:
        oRequestHandler = cRequestHandler(sUrl)
        oRequestHandler.addHeaderEntry('User-Agent', UA)

    if not data == None and 'watch' in sUrl:
        data = r.json()
    else:
        data = oRequestHandler.request()
    #VSlog(data)
    return data
Beispiel #55
0
def showMovies(sSearch=''):
    oGui = cGui()
    if sSearch:
        sUrl = sSearch
    else:
        oInputParameterHandler = cInputParameterHandler()
        sUrl = oInputParameterHandler.getValue('siteUrl')
        sUrl = sUrl + "|X-Forwarded-For=89.237.187.6:8080"

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()
    # .+? ([^<]+)
    sPattern = '<a href="([^<]+)" data-url=.+?oldtitle="([^<]+)" title="">.+?<img src="([^<]+)" class="mli-thumb" alt=.+?class="f-desc"><p>([^<]+)</p>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        total = len(aResult[1])
        progress_ = progress().VScreate(SITE_NAME)
        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            sTitle = str(aEntry[1]).decode("utf8")
            sTitle = cUtil().unescape(sTitle).encode("utf8")
            sTitle = sTitle.replace("مشاهدة", "").replace("مترجم", "").replace(
                "فيلم",
                "").replace("اون لاين", "").replace("WEB-DL", "").replace(
                    "BRRip",
                    "").replace("720p", "").replace("HD-TC", "").replace(
                        "HDRip", "").replace("HD-CAM", "").replace(
                            "DVDRip", "").replace("BluRay", "").replace(
                                "1080p", "").replace("4K", "").replace(
                                    "All", "").replace("BDRip", "").replace(
                                        "HDCAM",
                                        "").replace("HDTC", "").replace(
                                            "HDTV",
                                            "").replace("WEBRip", "").replace(
                                                "HD", "").replace("720", "")
            siteUrl = URL_MAIN + str(aEntry[0])
            sThumbnail = str(aEntry[2])
            sInfo = str(aEntry[3]).decode("utf8")
            sInfo = cUtil().unescape(sInfo).encode("utf8")
            sInfo = '[COLOR yellow]' + sInfo + '[/COLOR]'

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', siteUrl)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            oOutputParameterHandler.addParameter('sThumbnail', sThumbnail)

            oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '',
                          sThumbnail, sInfo, oOutputParameterHandler)

        progress_.VSclose(progress_)

# ([^<]+) .+?

    sPattern = "rel='nofollow' class='page larger' href='([^<]+)'>([^<]+)</a>"

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        total = len(aResult[1])
        progress_ = progress().VScreate(SITE_NAME)
        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            sTitle = aEntry[1].decode("utf8")
            sTitle = cUtil().unescape(sTitle).encode("utf8")
            sTitle = "PAGE " + sTitle
            sTitle = '[COLOR red]' + sTitle + '[/COLOR]'
            siteUrl = URL_MAIN + str(aEntry[0])
            sThumbnail = ""
            sInfo = ""

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', siteUrl)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            oOutputParameterHandler.addParameter('sThumbnail', sThumbnail)

            oGui.addMovie(SITE_IDENTIFIER, 'showMovies', sTitle, '',
                          sThumbnail, sInfo, oOutputParameterHandler)

        progress_.VSclose(progress_)

    if not sSearch:
        oGui.setEndOfDirectory()
Beispiel #56
0
def showDailyList():  #On recupere les dernier playlist ajouter au site
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')

    sHtmlContent = getHtml(sUrl)  #On recupere le contenue de la page
    #VSlog(sHtmlContent)
    #VSlog(sUrl)

    if 'firstonetv' in sUrl:
        sPattern = '<div class="post-thumb">\s*<img src="(.+?)" alt="(.+?)">\s*<a href="(.+?)".+?>(?:\s*<img.+?\s*<.+?<b>(.+?)<.+?>(.+?)<.+?>.+?>(.+?)</text>.+?</b><br><br>(.+?)</span>|)'
    elif 'iptvsource.com' in sUrl:
        sPattern = '<h3 class="entry-title td-module-title"><a href="(.+?)" rel="bookmark" title="(.+?)"'
    elif 'iptvgratuit.com' in sUrl:
        sPattern = '<header class="entry-header">\s*<h2 class="entry-title">\s*<a href="(.+?)" rel="bookmark">(.+?)</a>'
    elif 'dailyiptvlist.com' in sUrl:
        sPattern = '</a><h2 class="post-title"><a href="(.+?)">(.+?)</a></h2><div class="excerpt"><p>.+?</p>'
    elif 'pavandayal' in sUrl:
        sPattern = '<p class="link" data-clipboard-text="(.+?)">(.+?)<'
    elif 'myfree-tivi' in sUrl:
        sPattern = '<img.+?src="(.+?)">\s*</a>\s*</div>\s*<div class="list-item-detals">\s*<a href="(.+?)" title="(.+?)">\s*<.+?\s*<hr>\s*<p class="list-item-text">(.+?)</p>'

    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        total = len(aResult[1])

        progress_ = progress().VScreate(SITE_NAME)

        for aEntry in aResult[1]:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break

            if 'firstonetv' in sUrl:
                sThumb = 'https://www.firstonetv.net' + aEntry[0]
                sTitle = aEntry[1]
                sUrl2 = 'https://www.firstonetv.net' + aEntry[2]
                sDesc = (
                    '[COLOR skyblue]%s de %s a %s[/COLOR] \n [COLOR coral]Synopsis :[/COLOR] %s'
                ) % (aEntry[3], aEntry[4], aEntry[5], aEntry[6])

            if 'pavandayal' in sUrl:
                sTitle = aEntry[1]
            elif not 'myfree-tivi' in sUrl and not 'firstonetv' in sUrl:
                sTitle = aEntry[1]

            if 'myfree-tivi' in sUrl and not 'firstonetv' in sUrl:
                sThumb = "https:" + aEntry[0]
                sUrl2 = 'https://www.myfree-tivi.com' + aEntry[1]
                sTitle = aEntry[2]
                sDesc = aEntry[3]
            elif not 'myfree-tivi' in sUrl and not 'firstonetv' in sUrl:
                sUrl2 = aEntry[0]

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl2)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            if 'firstonetv' in sUrl:
                oOutputParameterHandler.addParameter('sDescription', sDesc)
                oOutputParameterHandler.addParameter('sThumbnail', sThumb)

            if 'myfree-tivi' in sUrl or 'firstonetv' in sUrl:
                oGui.addMovie(SITE_IDENTIFIER, 'showAllPlaylist', sTitle, '',
                              sThumb, sDesc, oOutputParameterHandler)
            elif 'pavandayal' in sUrl:
                oGui.addDir(SITE_IDENTIFIER, 'showWeb', sTitle, 'tv.png',
                            oOutputParameterHandler)
            else:
                oGui.addDir(SITE_IDENTIFIER, 'showAllPlaylist', sTitle,
                            'tv.png', oOutputParameterHandler)

        progress_.VSclose(progress_)

        sNextPage = __checkForNextPage(sHtmlContent)
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            oGui.addNext(SITE_IDENTIFIER, 'showDailyList',
                         '[COLOR teal]Next >>>[/COLOR]',
                         oOutputParameterHandler)

    oGui.setEndOfDirectory()
def showMovies(sSearch=''):
    oGui = cGui()
    if sSearch:
        sSearch = sSearch.replace(' ', '+')
        sUrl = sSearch
    else:
        oInputParameterHandler = cInputParameterHandler()
        sUrl = oInputParameterHandler.getValue('siteUrl')

    #oRequestHandler = cRequestHandler(sUrl)
    #sHtmlContent = oRequestHandler.request()
    sHtmlContent = SucurieBypass().GetHtml(sUrl)

    sPattern = 'class="item"> *<a href="([^<]+)">.+?<img src="([^<>"]+?)" alt="([^"]+?)".+?<span class="calidad2">(.+?)<\/span>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == False):
        oGui.addNone(SITE_IDENTIFIER)

    if (aResult[0] == True):
        total = len(aResult[1])
        dialog = cConfig().createDialog(SITE_NAME)

        for aEntry in aResult[1]:
            cConfig().updateDialog(dialog, total)  #dialog
            if dialog.iscanceled():
                break

            sName = aEntry[2].replace(' en Streaming HD', '')
            sName = sName.replace(' Streaming HD', '')
            sName = sName.decode('utf8')
            sName = cUtil().unescape(sName)
            try:
                sName = sName.encode("utf-8")
            except:
                pass

            sTitle = sName + ' [' + aEntry[3] + ']'
            sUrl = aEntry[0]
            sThumbnail = aEntry[1]

            if sThumbnail.startswith('//'):
                sThumbnail = 'http:' + sThumbnail

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', str(sUrl))
            oOutputParameterHandler.addParameter('sMovieTitle', sName)
            oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail))
            sDisplayTitle = cUtil().DecoTitle(sTitle)

            if re.match('.+?saison [0-9]+', sTitle, re.IGNORECASE):
                oGui.addTV(SITE_IDENTIFIER, 'serieHosters', sDisplayTitle, '',
                           sThumbnail, '', oOutputParameterHandler)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle,
                              'films.png', sThumbnail, '',
                              oOutputParameterHandler)

        cConfig().finishDialog(dialog)

        if not sSearch:
            sNextPage = __checkForNextPage(sHtmlContent)
            if (sNextPage != False):
                oOutputParameterHandler = cOutputParameterHandler()
                oOutputParameterHandler.addParameter('siteUrl', sNextPage)
                oGui.addNext(SITE_IDENTIFIER, 'showMovies',
                             '[COLOR teal]Next >>>[/COLOR]',
                             oOutputParameterHandler)

    if not sSearch:
        oGui.setEndOfDirectory()
Beispiel #58
0
def showResultSearch(sSearch=''):
    oGui = cGui()
    oParser = cParser()

    UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'
    post_data = {'k': sSearch}
    data = urllib.urlencode(post_data)

    oRequest = cRequestHandler('http://streamay.bz/search')
    oRequest.setRequestType(1)
    oRequest.addHeaderEntry('User-Agent', UA)
    oRequest.addParametersLine(data)

    sHtmlContent = oRequest.request()

    sHtmlContent = unicode(sHtmlContent, 'utf-8')
    sHtmlContent = unicodedata.normalize('NFD', sHtmlContent).encode(
        'ascii', 'ignore').decode("unicode_escape")
    sHtmlContent = sHtmlContent.encode("utf-8")
    sHtmlContent = sHtmlContent.replace("\n", "")
    sHtmlContent = re.sub(
        '"img":"([^"]+)","synopsis":"([^"]+)"',
        '"synopsis":"\g<2>","img":"\g<1>"',
        sHtmlContent)  #pattern en ordre img et syn inversé parfois

    sPattern = '{"result":{"id":".+?","title":"([^"]+)",.+?(?:"story"|"synopsis"):"(.+?)",*.+?(?:"img"|"banner"):"([^"]+)",.+?,"url":"([^"]+)"'
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        total = len(aResult[1])
        dialog = cConfig().createDialog(SITE_NAME)
        for aEntry in aResult[1]:
            cConfig().updateDialog(dialog, total)
            if dialog.iscanceled():
                break

            sTitle = aEntry[0]
            sTitle = cUtil().removeHtmlTags(sTitle)
            sSyn = aEntry[1]
            sUrl = aEntry[3]
            sThumb = URL_MAIN + 'cdn/img/' + aEntry[2]

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            oOutputParameterHandler.addParameter('sThumbnail', sThumb)
            if 'serie' in sUrl:
                oGui.addTV(SITE_IDENTIFIER, 'showSaisons', sTitle, '', sThumb,
                           sSyn, oOutputParameterHandler)
            elif 'mangas' in sUrl:
                oGui.addTV(SITE_IDENTIFIER, 'showAnime', sTitle, '', sThumb,
                           sSyn, oOutputParameterHandler)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '',
                              sThumb, sSyn, oOutputParameterHandler)

        cConfig().finishDialog(dialog)

        sNextPage = __checkForNextPage(sHtmlContent)
        if (sNextPage != False):
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sNextPage)
            oGui.addDir(SITE_IDENTIFIER, 'showMovies',
                        '[COLOR teal]Next >>>[/COLOR]', 'next.png',
                        oOutputParameterHandler)

    if not sSearch:
        oGui.setEndOfDirectory()
Beispiel #59
0
def cutLink(sHtmlContent):
    oParser = cParser()
    sPattern = '">Lecteurs Disponibles :</span></h3>(.+?)<div id="extras">'
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        return aResult[1][0]
class cPremiumHandler:
    def __init__(self, sHosterIdentifier):
        self.__sHosterIdentifier = sHosterIdentifier.lower()
        self.__sDisplayName = 'Premium mode'
        self.isLogin = False

    def isPremiumModeAvailable(self):
        bIsPremium = cConfig().getSetting('hoster_' +
                                          str(self.__sHosterIdentifier) +
                                          '_premium')
        if (bIsPremium == 'true'):
            cConfig().log("Utilise compte premium pour hoster " +
                          str(self.__sHosterIdentifier))
            return True

        cConfig().log("Utilise compte gratuit pour hoster: " +
                      str(self.__sHosterIdentifier))
        return False

    def getUsername(self):
        sUsername = cConfig().getSetting('hoster_' +
                                         str(self.__sHosterIdentifier) +
                                         '_username')
        return sUsername

    def getPassword(self):
        sPassword = cConfig().getSetting('hoster_' +
                                         str(self.__sHosterIdentifier) +
                                         '_password')
        return sPassword

    #-----------------------
    #     Cookies gestion
    #------------------------

    def DeleteCookie(self, Domain):
        print 'Effacement cookies'
        file = os.path.join(PathCache, 'Cookie_' + str(Domain) + '.txt')
        os.remove(os.path.join(PathCache, file))

    def SaveCookie(self, Domain, data):
        Name = os.path.join(PathCache, 'Cookie_' + str(Domain) + '.txt')

        #save it
        file = open(Name, 'w')
        file.write(data)

        file.close()

    def Readcookie(self, Domain):
        Name = os.path.join(PathCache, 'Cookie_' + str(Domain) + '.txt')

        try:
            file = open(Name, 'r')
            data = file.read()
            file.close()
        except:
            return ''

        return data

    def AddCookies(self):
        cookies = self.Readcookie(self.__sHosterIdentifier)
        return 'Cookie=' + cookies

    def Authentificate(self):

        post_data = {}

        if 'uptobox' in self.__sHosterIdentifier:
            url = 'https://login.uptobox.com/logarithme'
            post_data['op'] = 'login'
            post_data['login'] = self.getUsername()
            post_data['password'] = self.getPassword()

        elif 'onefichier' in self.__sHosterIdentifier:
            url = 'https://1fichier.com/login.pl'
            post_data['mail'] = self.getUsername()
            post_data['pass'] = self.getPassword()
            post_data['lt'] = 'on'
            post_data['purge'] = 'on'
            post_data['valider'] = 'Send'
        elif 'uploaded' in self.__sHosterIdentifier:
            url = 'http://uploaded.net/io/login'
            post_data['id'] = self.getUsername()
            post_data['pw'] = self.getPassword()

        #si aucun de trouve on retourne
        else:
            return False

        #print url
        #print post_data

        req = urllib2.Request(url, urllib.urlencode(post_data), headers)

        try:
            response = urllib2.urlopen(req)
        except urllib2.URLError, e:
            if e.code == 403:
                #login denied
                cGui().showInfo(self.__sDisplayName, 'Authentification rate',
                                5)
            elif e.code == 502:
                #login denied
                cGui().showInfo(self.__sDisplayName, 'Authentification rate',
                                5)
            elif e.code == 234:
                #login denied
                cGui().showInfo(self.__sDisplayName, 'Authentification rate',
                                5)
            else:
                print e.code
                print e.reason

            self.isLogin = False
            return False

        sHtmlContent = response.read()
        head = response.headers
        response.close()

        #print head

        #fh = open('c:\\prem.txt', "w")
        #fh.write(sHtmlContent)
        #fh.close()

        if 'uptobox' in self.__sHosterIdentifier:
            if 'OK' in sHtmlContent:
                self.isLogin = True
            else:
                cGui().showInfo(self.__sDisplayName, 'Authentification rate',
                                5)
                return False
        elif 'onefichier' in self.__sHosterIdentifier:
            if 'You are logged in. This page will redirect you.' in sHtmlContent:
                self.isLogin = True
            else:
                cGui().showInfo(self.__sDisplayName, 'Authentification rate',
                                5)
                return False
        elif 'uploaded' in self.__sHosterIdentifier:
            if sHtmlContent == '':
                self.isLogin = True
            else:
                cGui().showInfo(self.__sDisplayName, 'Authentification rate',
                                5)
                return False
        else:
            return False

        #get cookie
        cookies = ''
        if 'Set-Cookie' in head:
            oParser = cParser()
            sPattern = '(?:^|,) *([^;,]+?)=([^;,\/]+?);'
            aResult = oParser.parse(str(head['Set-Cookie']), sPattern)
            #print aResult
            if (aResult[0] == True):
                for cook in aResult[1]:
                    cookies = cookies + cook[0] + '=' + cook[1] + ';'

        #save cookie
        self.SaveCookie(self.__sHosterIdentifier, cookies)

        cGui().showInfo(self.__sDisplayName, 'Authentification reussie', 5)
        print 'Auhentification reussie'

        return True