Exemplo n.º 1
0
def showTitle(sMovieTitle, sUrl):

    sExtraTitle = ''
    # si c'est une serie
    if sUrl != 'none':
        sExtraTitle = sUrl.split('|')[1]
        sMovieTitle = sUrl.split('|')[0]

    # ancien decodage
    sMovieTitle = unicode(
        sMovieTitle, 'utf-8')  # converti en unicode pour aider aux convertions
    sMovieTitle = unicodedata.normalize('NFD', sMovieTitle).encode(
        'ascii', 'ignore').decode("unicode_escape")  # vire accent et '\'
    sMovieTitle = sMovieTitle.encode("utf-8").lower()  # on repasse en utf-8

    sMovieTitle = Quote(sMovieTitle)
    sMovieTitle = re.sub('\(.+?\)', ' ',
                         sMovieTitle)  # vire les tags entre parentheses

    # modif venom si le titre comporte un - il doit le chercher
    sMovieTitle = re.sub(
        r'[^a-z -]', ' ',
        sMovieTitle)  # vire les caracteres a la con qui peuvent trainer
    # sMovieTitle = re.sub('( |^)(le|la|les|du|au|a|l)( |$)', ' ', sMovieTitle)  # vire les articles

    # vire les espaces multiples et on laisse les espaces sans modifs car certains codent avec %20 d'autres avec +
    sMovieTitle = re.sub(' +', ' ', sMovieTitle)
    # modif ici
    if sExtraTitle:
        sMovieTitle = sMovieTitle.replace('%C3%A9', 'e').replace('%C3%A0', 'a')
        sMovieTitle = sMovieTitle + sExtraTitle
    else:
        sMovieTitle = sMovieTitle

    return sMovieTitle
Exemplo n.º 2
0
def searchGlobal():
    oGui = cGui()
    addons = addon()

    oInputParameterHandler = cInputParameterHandler()
    sSearchText = oInputParameterHandler.getValue('searchtext')
    sCat = oInputParameterHandler.getValue('sCat')

    oHandler = cRechercheHandler()
    oHandler.setText(sSearchText)
    oHandler.setCat(sCat)
    aPlugins = oHandler.getAvailablePlugins()
    if not aPlugins:
        return True

    total = len(aPlugins)
    progress_ = progress().VScreate()

    # kodi 17 vire la fenetre busy qui se pose au dessus de la barre de Progress
    try:
        xbmc.executebuiltin('Dialog.Close(busydialog)')
    except:
        pass

    oGui.addText('globalSearch',
                 addons.VSlang(30081) % sSearchText, 'search.png')
    sSearchText = Quote(sSearchText)

    count = 0
    for plugin in aPlugins:

        progress_.VSupdate(progress_, total, plugin['name'], True)
        if progress_.iscanceled():
            progress_.close()
            break

        oGui.searchResults[:] = [
        ]  # vider le tableau de résultats pour les récupérer par source
        _pluginSearch(plugin, sSearchText)

        if len(oGui.searchResults) > 0:  # Au moins un résultat
            count += 1

            # nom du site
            oGui.addText(
                plugin['identifier'],
                '%s. [COLOR olive]%s[/COLOR]' % (count, plugin['name']),
                'sites/%s.png' % (plugin['identifier']))
            for result in oGui.searchResults:
                oGui.addFolder(result['guiElement'], result['params'])

    if not count:  # aucune source ne retourne de résultats
        oGui.addText('globalSearch')  # "Aucune information"

    progress_.VSclose(progress_)

    cGui.CONTENT = 'files'

    oGui.setEndOfDirectory()
    return True
Exemplo n.º 3
0
def Hoster_Telerium(url, referer):
    oRequestHandler = cRequestHandler(url)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Referer', referer)
    sHtmlContent = oRequestHandler.request()

    urlrederict = oRequestHandler.getRealUrl()
    urlmain = 'https://' + urlrederict.split('/')[
        2]  # ex https://telerium.club

    sPattern = 'var\s+cid[^\'"]+[\'"]{1}([0-9]+)'
    aResult = re.findall(sPattern, sHtmlContent)

    if aResult:
        str2 = aResult[0]
        datetoken = int(getTimer()) * 1000

        jsonUrl = urlmain + '/streams/' + str2 + '/' + str(datetoken) + '.json'
        tokens = getRealTokenJson(jsonUrl, urlrederict)
        m3url = tokens['url']
        nxturl = urlmain + tokens['tokenurl']
        realtoken = getRealTokenJson(nxturl, urlrederict)[10][::-1]
        try:
            m3url = m3url.decode("utf-8")
        except:
            pass

        sHosterUrl = 'https:' + m3url + realtoken
        sHosterUrl += '|User-Agent=' + UA + '&Referer=' + Quote(
            urlrederict)  # + '&Sec-F'

        return True, sHosterUrl

    return False, False
Exemplo n.º 4
0
def showSearch():
    oGui = cGui()

    sSearchText = oGui.showKeyBoard()
    if (sSearchText != False):
        sUrl = URL_SEARCH[0] + Quote(sSearchText)
        showSearchResult(sUrl)
        oGui.setEndOfDirectory()
        return
Exemplo n.º 5
0
    def __handle_escape(self, key):
        while True:
            start_js = self.js
            offset = self.js.find(key) + len(key)
            if self.js[offset] == '(' and self.js[offset + 2] == ')':
                c = self.js[offset + 1]
                self.js = self.js.replace('%s(%s)' % (key, c), Quote(c))

            if start_js == self.js:
                break
Exemplo n.º 6
0
def showSearch():
    oGui = cGui()
    sSearchText = oGui.showKeyBoard()
    if (sSearchText != False):
        oInputParameterHandler = cInputParameterHandler()
        sUrl = oInputParameterHandler.getValue('siteUrl')
        sUrl = sUrl + Quote(sSearchText)
        showAnimes(sUrl)
        oGui.setEndOfDirectory()
        return
Exemplo n.º 7
0
def showSearch():
    oGui = cGui()

    sSearchText = oGui.showKeyBoard()
    if (sSearchText != False):
        sSearchText = Quote(sSearchText)
        sUrl = URL_SEARCH[0] + sSearchText + '&note=0&art=0&AiffchageMode=0&inputTirePar=0&cstart=0'
        showMovies(sUrl)
        oGui.setEndOfDirectory()
        return
Exemplo n.º 8
0
    def __getMediaLinkForGuest2(self):
        api_call = ''

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

        tok = re.search('id="token" value="(.+?)"', sHtmlContent).group(1)
        UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:70.0) Gecko/20100101 Firefox/70.0'

        oParser = cParser()
        pdata = 'url=' + Quote(self.__sUrl) + '&token=' + tok

        oRequest = cRequestHandler('https://ytoffline.net/fr1/download/')
        oRequest.setRequestType(1)
        oRequest.addHeaderEntry('User-Agent', UA)
        oRequest.addHeaderEntry('Accept-Encoding', 'gzip, deflate')
        oRequest.addHeaderEntry(
            'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
        oRequest.addHeaderEntry('Content-Length', len(pdata))
        oRequest.addHeaderEntry('Referer', 'https://ytoffline.net/fr1/')
        oRequest.addParametersLine(pdata)

        sHtmlContent = oRequest.request()

        sStart = '<div id="mp4" class="display-block tabcontent">'
        sEnd = '<div id="audio" class="tabcontent">'
        sHtmlContent1 = oParser.abParse(sHtmlContent, sStart, sEnd)
        sPattern = '<td>([^<]+)<small>.+?data-href="([^"]+)"'
        aResult = oParser.parse(sHtmlContent1, sPattern)

        if (aResult[0] == True):
            # initialisation des tableaux
            url = []
            qua = []
            # Remplissage des tableaux
            for i in aResult[1]:
                url.append(str(i[1]))
                qua.append(str(i[0]))

            # dialogue qualité
            api_call = dialog().VSselectqual(qua, url)

        if (api_call):
            return True, api_call

        return False, False
Exemplo n.º 9
0
def Hoster_Andrhino(url, referer):
    oRequestHandler = cRequestHandler(url)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Referer', referer)
    sHtmlContent = oRequestHandler.request()

    sPattern = "atob\('([^']+)"
    aResult = re.findall(sPattern, sHtmlContent)

    if aResult:
        url2 = base64.b64decode(aResult[0])
        return True, url2.strip() + '|User-Agent=' + UA + '&Referer=' + Quote(url)

    # fichier vu mais ne sait plus dans quel cas
    sPattern = "source:\s'(https.+?m3u8)"
    aResult = re.findall(sPattern, sHtmlContent)

    if aResult:
        return True, aResult[0] + '|User-Agent=' + UA + '&Referer=' + Quote(url)

    return False, False
Exemplo n.º 10
0
def Hoster_Laylow(url, referer):
    oRequestHandler = cRequestHandler(url)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Referer', referer)
    sHtmlContent = oRequestHandler.request()

    sPattern = "source:\s'(https.+?m3u8)"
    aResult = re.findall(sPattern, sHtmlContent)
    if aResult:
        return True, aResult[0] + '|User-Agent=' + UA + '&Referer=' + Quote(url)

    return False, False
Exemplo n.º 11
0
    def __getMediaLinkForGuest2(self):
        api_call = ''

        oParser = cParser()
        pdata = 'url=' + Quote('https://www.youtube.com/embed/' +
                               self.__sUrl) + '&submit=1'

        oRequest = cRequestHandler('https://ytoffline.net/fr/validate/')
        oRequest.setRequestType(1)
        oRequest.addHeaderEntry(
            'User-Agent',
            'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:70.0) Gecko/20100101 Firefox/70.0'
        )
        oRequest.addHeaderEntry(
            'Referer',
            'https://ytoffline.net/fr/download/?url=https://www.youtube.com/embed/'
            + self.__sUrl)
        oRequest.addHeaderEntry(
            'Accept',
            'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
        oRequest.addHeaderEntry('Accept-Language',
                                'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3')

        oRequest.addParametersLine(pdata)

        sHtmlContent = oRequest.request()
        sHtmlContent1 = oParser.abParse(
            sHtmlContent, '<div id="mp4" class="display-block tabcontent">',
            '<div id="audio" class="tabcontent">')
        sPattern = '<td>([^<]+)<small>.+?data-href="([^"]+)"'
        aResult = oParser.parse(sHtmlContent1, sPattern)

        if (aResult[0] == True):
            # initialisation des tableaux
            url = []
            qua = []
            # Remplissage des tableaux
            for i in aResult[1]:
                url.append(str(i[1]))
                qua.append(str(i[0]))

            # dialogue qualité
            api_call = dialog().VSselectqual(qua, url)

        if (api_call):
            return True, api_call

        return False, False
Exemplo n.º 12
0
    def showHosters(self):

        oInputParameterHandler = cInputParameterHandler()
        sMovieTitle = oInputParameterHandler.getValue('file')
        sMovieTitle = self.decode(sMovieTitle, Unicode=True).lower()  # on repasse en utf-8
        sMovieTitle = Quote(sMovieTitle)
        sMovieTitle = re.sub('\(.+?\)', ' ', sMovieTitle)  # vire les tags entre parentheses

        # modif venom si le titre comporte un - il doit le chercher
        sMovieTitle = re.sub(r'[^a-z -]', ' ', sMovieTitle)  # vire les caracteres a la con qui peuvent trainer

        sMovieTitle = re.sub('( |^)(le|la|les|du|au|a|l)( |$)', ' ', sMovieTitle)  # vire les articles

        # vire les espaces multiples et on laisse les espaces sans modifs car certains codent avec %20 d'autres avec +
        sMovieTitle = re.sub(' +', ' ', sMovieTitle)

        self.vStreamSearch(sMovieTitle)
Exemplo n.º 13
0
def Hoster_Pkcast(url, referer):
    oRequestHandler = cRequestHandler(url)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry(
        'Referer',
        '{uri.scheme}://{uri.netloc}/'.format(uri=urlparse(referer)))
    sHtmlContent = oRequestHandler.request()

    oParser = cParser()
    sPattern = 'play\(\).+?return\((.+?)\.join'
    aResult = oParser.parse(sHtmlContent, sPattern)

    if aResult:
        return True, ''.join(ast.literal_eval(
            aResult[1][0])) + '|User-Agent=' + UA + '&Referer=' + Quote(url)

    return False, False
Exemplo n.º 14
0
def getData():
    if addon().getSetting("PlutoTV_sid"):
        deviceID = addon().getSetting("PlutoTV_deviceID")
        clientID = addon().getSetting("PlutoTV_clientID")
        sid = addon().getSetting("PlutoTV_sid")

    else:
        sid = str(uuid.uuid1().hex)
        deviceID = str(uuid.uuid4().hex)
        clientID = Quote(''.join(
            random.choice(string.ascii_uppercase + string.ascii_lowercase +
                          string.digits + '=+') for _ in range(24)))

        addon().setSetting("PlutoTV_deviceID", deviceID)
        addon().setSetting("PlutoTV_clientID", clientID)
        addon().setSetting("PlutoTV_sid", sid)

    return clientID, deviceID, sid
Exemplo n.º 15
0
def Hoster_Wigistream(url, referer):
    oRequestHandler = cRequestHandler(url)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Referer', referer)
    sHtmlContent = oRequestHandler.request()

    sPattern = '(\s*eval\s*\(\s*function(?:.|\s)+?{}\)\))'
    aResult = re.findall(sPattern, sHtmlContent)

    if aResult:
        sstr = aResult[0]
        if not sstr.endswith(';'):
            sstr = sstr + ';'
        sUnpack = cPacker().unpack(sstr)
        sPattern = 'src="(.+?)"'
        aResult = re.findall(sPattern, sUnpack)
        if aResult:
            return True, aResult[0] + '|User-Agent=' + UA + '&Referer=' + Quote(url)

    return False, False
Exemplo n.º 16
0
def showHosters():
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumb = oInputParameterHandler.getValue('sThumb')

    if 'mon-tele' 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)

        from resources.lib import librecaptcha
        test = librecaptcha.get_token(
            api_key="6LezIsIZAAAAABMSqc7opxGc3xyCuXtAtV4VlTtN",
            site_url="https://mon-tele.com/",
            user_agent=UA,
            gui=False,
            debug=False
        )

        if (aResult[0] == True):
            data = "_method=" + aResult[1][0] + "&_csrfToken=" + aResult[1][1] + "&ref=&f_n=" + aResult[1][2]\
                              + "&g-recaptcha-response=" + test + "&_Token%5Bfields%5D=" + Quote(aResult[1][3])\
                              + "&_Token%5Bunlocked%5D=" + Quote(aResult[1][4])

            oRequestHandler = cRequestHandler(sUrl)
            oRequestHandler.setRequestType(1)
            oRequestHandler.addHeaderEntry('Referer', sUrl)
            oRequestHandler.addHeaderEntry('User-Agent', UA)
            oRequestHandler.addHeaderEntry('Content-Length', len(data))
            oRequestHandler.addHeaderEntry('Content-Type', "application/x-www-form-urlencoded")
            oRequestHandler.addHeaderEntry('Cookie', cookie_string)
            oRequestHandler.addParametersLine(data)
            sHtmlContent = oRequestHandler.request()

        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(15000)
            oRequestHandler = cRequestHandler('https://mon-tele.com/obtenirliens/links/go')
            oRequestHandler.setRequestType(1)
            oRequestHandler.addHeaderEntry('Referer', sUrl)
            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()
Exemplo n.º 17
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()
Exemplo n.º 18
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()
Exemplo n.º 19
0
def showHoster():
    oGui = cGui()
    oParser = cParser()

    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumb = oInputParameterHandler.getValue('sThumb')

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

    try:
        info = cePg().getChannelEpg(sTitle)
        sDesc = info['plot']

        sMovieTitle = info['title']
        if not sMovieTitle:
            sMovieTitle = sTitle

        sMeta = 0
        sCat = info['media_type']
        if sCat:
            if 'Film' in sCat:
                sMeta = 1
            if 'Série' in sCat:
                sMeta = 2
        sYear = info['year']
        coverUrl = info['cover_url']
        if coverUrl:
            sThumb = coverUrl

    except:
        sMovieTitle = sTitle
        info = ""
        sYear = ""
        coverUrl = sThumb
        sDesc = ""
        sMeta = 0

    # Double Iframe a passer.
    sPattern = '<iframe.+?src="([^"]+)"'
    iframeURL = oParser.parse(sHtmlContent, sPattern)[1][0]

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

    sPattern = '<iframe.+?src="([^"]+)"'
    aResult = oParser.parse(sHtmlContent, sPattern)

    if not aResult[1]:  # Pas de flux
        oGui.setEndOfDirectory()
        return

    iframeURL1 = aResult[1][0]
    sHosterUrl = iframeURL1

    oOutputParameterHandler = cOutputParameterHandler()
    oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
    oOutputParameterHandler.addParameter('sThumbnail', sThumb)
    oOutputParameterHandler.addParameter('sYear', sYear)
    oOutputParameterHandler.addParameter('sDesc', sDesc)

    oGuiElement = cGuiElement()
    oGuiElement.setTitle(sMovieTitle)
    oGuiElement.setDescription(sDesc)
    oGuiElement.setFileName(sMovieTitle)
    oGuiElement.setSiteName(resources.sites.freebox.SITE_IDENTIFIER)
    oGuiElement.setFunction('play__')
    oGuiElement.setIcon('tv.png')
    oGuiElement.setMeta(sMeta)
    oGuiElement.setThumbnail(sThumb)
    oGuiElement.setDirectTvFanart()
    oGuiElement.setCat(sMeta)

    # oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, resources.sites.freebox.SITE_IDENTIFIER, SITE_IDENTIFIER, 'direct_epg', 'Guide tv Direct')
    # oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, resources.sites.freebox.SITE_IDENTIFIER, SITE_IDENTIFIER, 'soir_epg', 'Guide tv Soir')
    if addon().getSetting('enregistrement_activer') == 'true':
        oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler,
                              resources.sites.freebox.SITE_IDENTIFIER,
                              SITE_IDENTIFIER, 'enregistrement',
                              'Enregistrement')

    # Menu pour les films
    if sMeta == 1:
        oGui.createContexMenuinfo(oGuiElement, oOutputParameterHandler)
        oGui.createContexMenuba(oGuiElement, oOutputParameterHandler)
        oGui.createContexMenuSimil(oGuiElement, oOutputParameterHandler)
        oGui.createContexMenuWatch(oGuiElement, oOutputParameterHandler)

    if 'dailymotion' in sHosterUrl:
        oOutputParameterHandler.addParameter('sHosterIdentifier',
                                             'dailymotion')
        oOutputParameterHandler.addParameter('sMediaUrl', sHosterUrl)
        oOutputParameterHandler.addParameter('siteUrl', sHosterUrl)
        oOutputParameterHandler.addParameter('sFileName', sMovieTitle)
        oGuiElement.setFunction('play')
        oGuiElement.setSiteName('cHosterGui')
        oGui.addHost(oGuiElement, oOutputParameterHandler)
        cGui.CONTENT = 'movies'
        oGui.setEndOfDirectory()
        return

    oRequestHandler = cRequestHandler(iframeURL1)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Referer', iframeURL)
    sHtmlContent2 = oRequestHandler.request()

    sPattern2 = 'var\s+cid[^\'"]+[\'"]{1}([0-9]+)'
    aResult = re.findall(sPattern2, sHtmlContent2)

    if aResult:
        str2 = aResult[0]
        datetoken = int(getTimer()) * 1000

        jsonUrl = 'https://telerium.digital/streams/' + str2 + '/' + str(
            datetoken) + '.json'
        tokens = getRealTokenJson(jsonUrl, iframeURL1)
        m3url = tokens['url']
        nxturl = 'https://telerium.digital' + tokens['tokenurl']

        realtoken = getRealTokenJson(nxturl, iframeURL1)[10][::-1]

        try:
            m3url = m3url.decode("utf-8")
        except:
            pass

        sHosterUrl = 'https:' + m3url + realtoken + '|User-Agent=' + UA
        sHosterUrl += '&Referer=' + Quote(
            iframeURL1) + '&Sec-Fetch-Mode=cors&Origin=https://telerium.tv'

    oOutputParameterHandler.addParameter('siteUrl', sHosterUrl)
    oGui.addFolder(oGuiElement, oOutputParameterHandler)

    cGui.CONTENT = 'movies'
    oGui.setEndOfDirectory()
Exemplo n.º 20
0
def searchGlobal():
    oGui = cGui()
    addons = addon()

    oInputParameterHandler = cInputParameterHandler()
    sSearchText = oInputParameterHandler.getValue('searchtext')
    sCat = oInputParameterHandler.getValue('sCat')

    oHandler = cRechercheHandler()
    oHandler.setText(sSearchText)
    oHandler.setCat(sCat)
    aPlugins = oHandler.getAvailablePlugins()
    if not aPlugins:
        return True

    total = len(aPlugins)
    progress_ = progress().VScreate()

    # kodi 17 vire la fenetre busy qui ce pose au dessus de la barre de Progress
    try:
        xbmc.executebuiltin('Dialog.Close(busydialog)')
    except:
        pass

    window(10101).setProperty('search', 'true')

    oGui.addText('globalSearch',
                 addons.VSlang(30081) % sSearchText, 'none.png')
    sSearchText = Quote(sSearchText)

    for count, plugin in enumerate(aPlugins):

        # text = '%s/%s - %s' % ((count + 1), total, plugin['name'])
        progress_.VSupdatesearch(progress_, total, plugin['name'])
        if progress_.iscanceled():
            progress_.close()
            break

        # nom du site
        oGui.addText(
            plugin['identifier'],
            '%s. [COLOR olive]%s[/COLOR]' % ((count + 1), plugin['name']),
            'sites/%s.png' % (plugin['identifier']))
        # recherche import
        _pluginSearch(plugin, sSearchText)

    window(10101).setProperty('search', 'false')
    # progress_.VSclose(progress_)

    # affichage
    total = len(oGui.searchResults)
    # progress_ = progress().VScreate()

    for count, result in enumerate(oGui.searchResults):
        # text = '%s/%s - %s' % ((count + 1 / total), total, result['guiElement'].getTitle())

        # if(count == 0):
        #     cConfig().updateDialogSearch(dialog, total, text,True)
        # else:
        #     cConfig().updateDialogSearch(dialog, total, text)
        progress_.VSupdatesearch(progress_, total, 'Patience...')

        # result['params'].addParameter('VSTRMSEARCH', 'True')

        oGui.addFolder(result['guiElement'], result['params'])
        # VSlog('%s - %s' % (middle, old_label), xbmc.LOGNOTICE)

    progress_.VSclose(progress_)

    oGui.setEndOfDirectory()

    return True
Exemplo n.º 21
0
def showWeb(infile=None):  # Code qui s'occupe de liens TV du Web
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()

    if infile is None:
        sUrl = oInputParameterHandler.getValue('siteUrl')

        playlist = parseM3U(sUrl=sUrl)
    else:
        playlist = parseM3U(infile=infile)

    if oInputParameterHandler.exist('AZ'):
        sAZ = oInputParameterHandler.getValue('AZ')
        string = filter(lambda t: t.title.strip().capitalize().startswith(sAZ), playlist)
        playlist = sorted(string, key=lambda t: t.title.strip().capitalize())
    else:
        playlist = sorted(playlist, key=lambda t: t.title.strip().capitalize())

    if not playlist:
        oOutputParameterHandler = cOutputParameterHandler()
        oOutputParameterHandler.addParameter('siteUrl', 'http://')
        oGui.addText(SITE_IDENTIFIER, '[COLOR red]Problème de lecture avec la playlist[/COLOR]')

    else:
        total = len(playlist)
        progress_ = progress().VScreate(SITE_NAME)
        for track in playlist:
            progress_.VSupdate(progress_, total)
            if progress_.iscanceled():
                break
            sThumb = track.icon
            if not sThumb:
                sThumb = 'tv.png'

            # les + ne peuvent pas passer
            url2 = track.path.replace('+', 'P_L_U_S')
            if not xbmc.getInfoLabel('system.buildversion')[0:2] >= '19':
                if not '[' in url2 and not ']' in url2 and not '.m3u8' in url2 and not 'dailymotion' in url2:
                    url2 = 'plugin://plugin.video.f4mTester/?url=' + QuotePlus(url2) + '&amp;streamtype=TSDOWNLOADER&name=' + Quote(track.title)

            thumb = '/'.join([sRootArt, sThumb])

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', url2)
            oOutputParameterHandler.addParameter('sMovieTitle', track.title)
            oOutputParameterHandler.addParameter('sThumbnail', thumb)

            oGuiElement = cGuiElement()
            oGuiElement.setSiteName(SITE_IDENTIFIER)
            oGuiElement.setFunction('play__')
            oGuiElement.setTitle(track.title)
            oGuiElement.setFileName(track.title)
            oGuiElement.setIcon('tv.png')
            oGuiElement.setMeta(0)
            oGuiElement.setThumbnail(thumb)
            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.createContexMenuBookmark(oGuiElement, oOutputParameterHandler)
            oGui.addFolder(oGuiElement, oOutputParameterHandler)

        progress_.VSclose(progress_)

    oGui.setEndOfDirectory()
Exemplo n.º 22
0
def showHoster():
    oGui = cGui()

    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumb = oInputParameterHandler.getValue('sThumb')

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

    # Double Iframe a passer.
    oParser = cParser()
    sPattern = '<iframe.+?src="([^"]+)".+?</iframe>'
    iframeURL = oParser.parse(sHtmlContent, sPattern)[1][0]

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

    sPattern = '<iframe src="([^"]+)".+?</iframe>'
    iframeURL1 = oParser.parse(sHtmlContent, sPattern)[1][0]

    oRequestHandler = cRequestHandler(iframeURL1)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Referer', iframeURL)
    sHtmlContent2 = oRequestHandler.request()

    sPattern2 = '(\s*eval\s*\(\s*function(?:.|\s)+?{}\)\))'
    aResult = re.findall(sPattern2, sHtmlContent2)

    if aResult:
        str2 = aResult[0]
        if not str2.endswith(';'):
            str2 = str2 + ';'

        strs = cPacker().unpack(str2)

    # Code source https://github.com/yannisKalt/Kodi_Remote_Manager/blob/master/addons/plugin.video.PLsportowo/resources/lib/mydecode.py
    mainurlliczbacdurl = re.findall(
        'url:\s*window\.atob\((.+?)\).slice\((.+?)\)\s*\+\s*window.atob\((.+?)\)',
        strs)[0]
    mainurl = mainurlliczbacdurl[0]
    liczba = mainurlliczbacdurl[1]
    cdurl = mainurlliczbacdurl[2]
    mainurlpattern = (mainurl + """\=['"](.+?)['"]""")
    liczbapattern = (liczba + '\=(\d+)')
    cdurlpattern = (cdurl + """\=['"](.+?)['"]""")

    murl = re.findall(mainurlpattern, strs)[0]
    licz = re.findall(liczbapattern, strs)[0]
    curl = re.findall(cdurlpattern, strs)[0]

    d1 = (base64.b64decode(murl))[int(licz):]
    d2 = base64.b64decode(curl)
    basurl = 'https://telerium.tv'

    m3url = re.findall('{if\(esMobiliar\){(.+?)=.+?};function', strs)[0]
    m3url = base64.b64decode(re.findall(m3url + """=['"](.+?)['"]""", strs)[0])

    speechx = re.findall("""}else\{(.+?)\=dameVuelta\((.+?)\[(.+?)]\);""",
                         strs)[0][2]

    sppech = re.findall(speechx + '=(.+?)([-+])(.+?);', strs)[0]
    reg1 = sppech[0] + '=(.+?)([-+])(.+?);'
    reg2 = sppech[2] + '=(.+?)([-+])(.+?);'

    ob1 = re.compile(reg1).findall(strs)
    ob2 = re.compile(reg2).findall(strs)

    ob11 = re.compile('var ' + ob1[0][0] + '=(.+?);').findall(strs)
    ob12 = re.compile('var ' + ob1[0][2] + '=(.+?);').findall(strs)

    ob21 = re.compile('var ' + ob2[0][0] + '=(.+?);').findall(strs)
    ob22 = re.compile('var ' + ob2[0][2] + '=(.+?);').findall(strs)

    obliczob1 = eval('%s%s%s' % (ob11[0], ob1[0][1], ob12[0]))
    obliczob2 = eval('%s%s%s' % (ob21[0], ob2[0][1], ob22[0]))
    spech = eval('%s%s%s' % (obliczob1, sppech[1], obliczob2))

    try:
        d1 = d1.decode('utf-8')
        d2 = d2.decode('utf-8')
    except:
        pass

    nxturl = basurl + d1 + d2

    realtoken = getRealToken(nxturl, iframeURL1, spech)

    try:
        m3url = m3url.decode("utf-8")
    except:
        pass

    sHosterUrl = 'https:' + m3url + realtoken

    sHosterUrl += '|User-Agent=' + UA + '&Referer=' + Quote(
        iframeURL1) + '&Sec-Fetch-Mode=cors&Origin=https://telerium.tv'

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

    # oGui.addDirectTV(SITE_IDENTIFIER, 'play__', track.title, 'tv.png' , sRootArt + '/tv/' + sThumb, oOutputParameterHandler)

    oGuiElement = cGuiElement()
    oGuiElement.setSiteName(SITE_IDENTIFIER)
    oGuiElement.setFunction('play__')
    oGuiElement.setTitle(sTitle)
    oGuiElement.setFileName(sTitle)
    oGuiElement.setIcon('tv.png')
    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)

    oGui.setEndOfDirectory()
Exemplo n.º 23
0
def getpath(content):
    for x in content:
        if x == 'path':
            sPath = Quote(content[x].encode('utf-8')).replace('//', '%2F%2F')
            # VSlog(sPath)
            return sPath
Exemplo n.º 24
0
def showHoster():
    oGui = cGui()

    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumb = oInputParameterHandler.getValue('sThumb')

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

    # Double Iframe a passer.
    oParser = cParser()
    sPattern = '<iframe.+?src="([^"]+)".+?</iframe>'
    iframeURL = oParser.parse(sHtmlContent, sPattern)[1][0]

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

    sPattern = '<iframe src="([^"]+)".+?</iframe>'
    iframeURL1 = oParser.parse(sHtmlContent, sPattern)[1][0]

    oRequestHandler = cRequestHandler(iframeURL1)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Referer', iframeURL)
    sHtmlContent2 = oRequestHandler.request()

    sPattern2 = 'var\s+cid[^\'"]+[\'"]{1}([0-9]+)'
    aResult = re.findall(sPattern2, sHtmlContent2)
    #VSlog(sHtmlContent2)

    if aResult:
        str2 = aResult[0]
        VSlog(str2)
        datetoken = int(getTimer()) * 1000

        jsonUrl = 'https://telerium.tv/streams/' + str2 + '/' + str(
            datetoken) + '.json'
        VSlog(jsonUrl)
        tokens = getRealTokenJson(jsonUrl, iframeURL1)
        m3url = tokens['url']
        nxturl = 'https://telerium.tv' + tokens['tokenurl']
        #web_pdb.set_trace()

    realtoken = getRealTokenJson(nxturl, iframeURL1)[10][::-1]

    #web_pdb.set_trace()

    try:
        m3url = m3url.decode("utf-8")
    except:
        pass

    sHosterUrl = 'https:' + m3url + realtoken

    sHosterUrl += '|User-Agent=' + UA + '&Referer=' + Quote(
        iframeURL1) + '&Sec-Fetch-Mode=cors&Origin=https://telerium.tv'

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

    # oGui.addDirectTV(SITE_IDENTIFIER, 'play__', track.title, 'tv.png' , sRootArt + '/tv/' + sThumb, oOutputParameterHandler)

    oGuiElement = cGuiElement()
    oGuiElement.setSiteName(SITE_IDENTIFIER)
    oGuiElement.setFunction('play__')
    oGuiElement.setTitle(sTitle)
    oGuiElement.setFileName(sTitle)
    oGuiElement.setIcon('tv.png')
    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.createContexMenuBookmark(oGuiElement, oOutputParameterHandler)
    oGui.addFolder(oGuiElement, oOutputParameterHandler)

    oGui.setEndOfDirectory()