def UptomyAccount():
    if (cConfig().getSetting('hoster_uptobox_username')
            == '') and (cConfig().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(
        '<div id="div_url".+?action="([^"]+)".+?name="sess_id" value="([^"]+)".+?name="srv_tmp_url" value="([^"]+)"',
        sHtmlContent, re.DOTALL)
    if (aResult):
        aCt = aResult.group(1)
        sId = aResult.group(2)
        sTmp = aResult.group(3)

        UPurl = ('%s%s&js_on=1&utype=reg&upload_type=url' % (aCt, sId))

        fields = {
            'sess_id': sId,
            'upload_type': 'url',
            'srv_tmp_url': sTmp,
            'url_mass': sMediaUrl,
            'tos': '1',
            'submit_btn': 'Uploader'
        }
        mpartdata = MPencode(fields)
        req = urllib2.Request(UPurl, mpartdata[1], headers)
        req.add_header('Content-Type', mpartdata[0])
        req.add_header('Cookie', cookies)
        req.add_header('Content-Length', len(mpartdata[1]))
        #req.add_data(mpartdata[1])
        xbmcgui.Dialog().notification('Info upload',
                                      'Envoi de la requete patienter ..',
                                      xbmcgui.NOTIFICATION_INFO, 2000, False)
        try:
            rep = urllib2.urlopen(req)
        except:
            return ''

        sHtmlContent = rep.read()
        rep.close()
        xbmc.executebuiltin("Dialog.Close(all,true)")
        if '>OK<' in sHtmlContent:
            xbmcgui.Dialog().notification('Info upload', 'Upload réussie',
                                          xbmcgui.NOTIFICATION_INFO, 2000,
                                          False)
        else:
            xbmcgui.Dialog().notification('Info upload', 'Fichier introuvable',
                                          xbmcgui.NOTIFICATION_INFO, 2000,
                                          False)
    else:
        xbmcgui.Dialog().notification('Info upload', 'Erreur pattern',
                                      xbmcgui.NOTIFICATION_ERROR, 2000, False)
示例#2
0
def load():
    oGui = cGui()
    addons = addon()
    oPremiumHandler = cPremiumHandler('uptobox')

    if (addons.getSetting('hoster_uptobox_username')
            == '') and (addons.getSetting('hoster_uptobox_password') == ''):
        oGui.addText(
            SITE_IDENTIFIER, '[COLOR red]' +
            'Nécessite Un Compte Uptobox Premium ou Gratuit' + '[/COLOR]')
        oOutputParameterHandler = cOutputParameterHandler()
        oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
        oGui.addDir(SITE_IDENTIFIER, 'opensetting', addons.VSlang(30023),
                    'none.png', oOutputParameterHandler)
    else:
        if (GestionCookie().Readcookie('uptobox') != ''):

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
            oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche',
                        'search.png', oOutputParameterHandler)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
            oOutputParameterHandler.addParameter('file', 'fileonly')
            oGui.addDir(SITE_IDENTIFIER, 'showFile', 'Mes Fichiers',
                        'genres.png', oOutputParameterHandler)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://Dossier/')
            oGui.addDir(SITE_IDENTIFIER, 'showFolder', 'Mes Dossiers',
                        'genres.png', oOutputParameterHandler)
        else:
            Connection = oPremiumHandler.Authentificate()
            if (Connection == False):
                dialog().VSinfo('Connexion refusée')
                return

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
            oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche',
                        'search.png', oOutputParameterHandler)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
            oOutputParameterHandler.addParameter('file', 'fileonly')
            oGui.addDir(SITE_IDENTIFIER, 'showFile', 'Mes Fichiers',
                        'genres.png', oOutputParameterHandler)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://Dossier/')
            oGui.addDir(SITE_IDENTIFIER, 'showFolder', 'Mes Dossiers',
                        'genres.png', oOutputParameterHandler)

    oGui.setEndOfDirectory()
示例#3
0
def AddmyAccount():
    if (cConfig().getSetting('hoster_uptobox_username')
            == '') and (cConfig().getSetting('hoster_uptobox_password') == ''):
        return
    oInputParameterHandler = cInputParameterHandler()
    sMediaUrl = oInputParameterHandler.getValue('sMediaUrl')

    sId = sMediaUrl.replace(URL_MAIN, '')
    if 'https://uptostream.com/iframe/' in sMediaUrl:
        sId = sMediaUrl.replace('https://uptostream.com/iframe/', '')
    else:
        sId = sMediaUrl.replace('http://uptobox.com/', '')

    Upurl = URL_MAIN + '?op=my_files&add_my_acc=' + sId

    oPremiumHandler = cPremiumHandler('uptobox')
    if (GestionCookie().Readcookie('uptobox') != ''):

        cookies = GestionCookie().Readcookie('uptobox')
        sHtmlContent = oPremiumHandler.GetHtmlwithcookies(Upurl, None, cookies)
        if (len(sHtmlContent) > 25):

            oPremiumHandler.Authentificate()
            cookies = GestionCookie().Readcookie('uptobox')
            sHtmlContent = oPremiumHandler.GetHtmlwithcookies(
                Upurl, None, cookies)

    else:
        sHtmlContent = oPremiumHandler.GetHtml(Upurl)

    xbmc.executebuiltin("Dialog.Close(all,true)")
    if ('dded to your account' in sHtmlContent):
        xbmcgui.Dialog().notification('Info upload',
                                      'Fichier ajouté à votre compte',
                                      xbmcgui.NOTIFICATION_INFO, 2000, False)
    elif ('nvalid file' in sHtmlContent):
        xbmcgui.Dialog().notification('Info upload', 'Fichier introuvable',
                                      xbmcgui.NOTIFICATION_INFO, 2000, False)
    else:
        xbmcgui.Dialog().notification('Info upload', 'Erreur',
                                      xbmcgui.NOTIFICATION_ERROR, 2000, False)
def load():
    oGui = cGui()
    oPremiumHandler = cPremiumHandler('uptobox')

    if (cConfig().getSetting('hoster_uptobox_username')
            == '') and (cConfig().getSetting('hoster_uptobox_password') == ''):
        oGui.addText(
            SITE_IDENTIFIER, '[COLOR red]' +
            'Nécessite Un Compte Uptobox Premium ou Gratuit' + '[/COLOR]')
    else:
        if (GestionCookie().Readcookie('uptobox') != ''):

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
            oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche',
                        'search.png', oOutputParameterHandler)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
            oOutputParameterHandler.addParameter('file', 'fileonly')
            oGui.addDir(SITE_IDENTIFIER, 'showFile', 'Mes Fichiers',
                        'genres.png', oOutputParameterHandler)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://Dossier/')
            oGui.addDir(SITE_IDENTIFIER, 'showFolder', 'Mes Dossiers',
                        'genres.png', oOutputParameterHandler)
        else:
            Connection = oPremiumHandler.Authentificate()
            if (Connection == False):
                xbmcgui.Dialog().notification('Info connexion',
                                              'Connexion refusée',
                                              xbmcgui.NOTIFICATION_ERROR, 2000,
                                              False)
                return

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
            oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche',
                        'search.png', oOutputParameterHandler)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
            oOutputParameterHandler.addParameter('file', 'fileonly')
            oGui.addDir(SITE_IDENTIFIER, 'showFile', 'Mes Fichiers',
                        'genres.png', oOutputParameterHandler)

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', 'http://Dossier/')
            oGui.addDir(SITE_IDENTIFIER, 'showFolder', 'Mes Dossiers',
                        'genres.png', oOutputParameterHandler)

    oGui.setEndOfDirectory()
示例#5
0
def DecryptDlProtecte(url):

    VSlog('DecryptDlProtecte : ' + url)
    dialogs = dialog()

    if not (url):
        return ''
    #VSlog(url)

    # 1ere Requete pour recuperer le cookie
    oRequestHandler = cRequestHandler(url)
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    sHtmlContent = oRequestHandler.request()

    cookies = GestionCookie().Readcookie('www_dl-protect1_com')
    #VSlog( 'cookie'  + str(cookies))

    #Tout ca a virer et utiliser oRequestHandler.addMultipartFiled('sess_id':sId,'upload_type':'url','srv_tmp_url':sTmp) quand ca marchera
    import string
    _BOUNDARY_CHARS = string.digits
    boundary = ''.join(random.choice(_BOUNDARY_CHARS) for i in range(15))
    multipart_form_data = {'submit': 'continuer', 'submit': 'Continuer'}
    data, headersMulti = encode_multipart(multipart_form_data, {}, boundary)

    #2 eme requete pour avoir le lien
    oRequestHandler = cRequestHandler(url)
    oRequestHandler.setRequestType(1)
    oRequestHandler.addHeaderEntry('Host', 'www.dl-protect1.com')
    oRequestHandler.addHeaderEntry('Referer', url)
    oRequestHandler.addHeaderEntry(
        'Accept',
        'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Accept-Language',
                                   'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3')
    oRequestHandler.addHeaderEntry('Content-Length',
                                   headersMulti['Content-Length'])
    oRequestHandler.addHeaderEntry('Content-Type',
                                   headersMulti['Content-Type'])
    oRequestHandler.addHeaderEntry('Cookie', cookies)
    oRequestHandler.addHeaderEntry('Accept-Encoding', 'gzip, deflate')

    oRequestHandler.addParametersLine(data)

    sHtmlContent = oRequestHandler.request()

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

    return sHtmlContent
    def GetHtml(self, url, data=None):
        cookies = GestionCookie().Readcookie(self.__sHosterIdentifier)

        # aucun ne marche sans cookies
        if (cookies == '') and not self.__LoginTry and self.__Ispremium:
            self.Authentificate()
            if not self.isLogin:
                return ''
            cookies = GestionCookie().Readcookie(self.__sHosterIdentifier)

        sHtmlContent = self.GetHtmlwithcookies(url, data, cookies)

        # Les cookies ne sont plus valables, mais on teste QUE si la personne n'a pas essaye de s'authentifier
        if not self.Checklogged(sHtmlContent) and not self.__LoginTry and self.__Ispremium:
            VSlog('Cookies non valables')
            self.Authentificate()
            if self.isLogin:
                cookies = GestionCookie().Readcookie(self.__sHosterIdentifier)
                sHtmlContent = self.GetHtmlwithcookies(url, data, cookies)
            else:
                return ''

        return sHtmlContent
示例#7
0
def Rename():
    #voir public ou privée
    oInputParameterHandler = cInputParameterHandler()

    aParams = oInputParameterHandler.getAllParameter()
    sTitle = oInputParameterHandler.getValue('sFileName')
    #sTitle = sTitle.replace('.mp4','')
    xbmc.log(str(aParams))
    sUrl = oInputParameterHandler.getValue('siteUrl')

    sText = cConfig().showKeyBoard(sTitle)
    if sText == False:
        return

    post_data = {}

    if 'fld_id=' in sUrl:
        sId = sUrl.replace('https://uptobox.com/?op=my_files&fld_id=',
                           '').replace(
                               'http://uptobox.com/?op=my_files&fld_id=', '')
        sUrl = 'http://uptobox.com/?op=fld_edit&fld_id=' + sId

        post_data['op'] = 'fld_edit'
        post_data['fld_id'] = sId
        post_data['fld_name'] = sText
        post_data['save'] = 'Soumettre'

    else:
        sId = sUrl.replace('https://uptobox.com/',
                           '').replace('http://uptobox.com/', '')
        sUrl = 'https://uptobox.com/?op=file_edit&file_code=' + sId

        post_data['op'] = 'file_edit'
        post_data['file_code'] = sId
        post_data['file_name'] = sText
        post_data['save'] = 'Soumettre'

    oPremiumHandler = cPremiumHandler('uptobox')
    cookies = GestionCookie().Readcookie('uptobox')

    req = urllib2.Request(sUrl, urllib.urlencode(post_data), headers)
    req.add_header('Cookie', cookies)
    try:
        rep = urllib2.urlopen(req)
    except:
        return ''

    rep.close()

    xbmc.executebuiltin("Container.Refresh")
def UptomyAccount():
    if (cConfig().getSetting('hoster_uptobox_username')
            == '') and (cConfig().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("request.open\('POST', '([^']+)'\);", sHtmlContent,
                        re.DOTALL)
    if (aResult):
        UPurl = aResult.group(1)
        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]))

        xbmcgui.Dialog().notification('Info upload',
                                      'Envoi de la requete patienter ..',
                                      xbmcgui.NOTIFICATION_INFO, 2000, False)
        try:
            rep = urllib2.urlopen(req)
        except urllib2.URLError, e:
            #VSlog(e.code)
            #VSlog(e.reason)
            return ''

        sHtmlContent = rep.read()
        #VSlog(sHtmlContent)
        rep.close()
        xbmc.executebuiltin("Dialog.Close(all,true)")
        if 'success' in sHtmlContent:
            xbmcgui.Dialog().notification('Info upload', 'Upload réussie',
                                          xbmcgui.NOTIFICATION_INFO, 2000,
                                          False)
        else:
            xbmcgui.Dialog().notification('Info upload', 'Fichier introuvable',
                                          xbmcgui.NOTIFICATION_INFO, 2000,
                                          False)
示例#9
0
def load():
    addons = addon()

    if (addons.getSetting('hoster_onefichier_username') == '') and (addons.getSetting('hoster_onefichier_password') == ''):
        oGui = cGui()
        oGui.addText(SITE_IDENTIFIER, "[COLOR %s]%s[/COLOR]" % ("red", "Nécessite Un Compte 1Fichier Premium ou Gratuit"))
        oGui.setEndOfDirectory()
    else:
        if (GestionCookie().Readcookie('onefichier') != ''):
            showFile(URL_FILE)

        else:
            oPremiumHandler = cPremiumHandler('onefichier')
            Connection = oPremiumHandler.Authentificate()
            if (Connection == False):
                oGui = cGui()
                oGui.addText(SITE_IDENTIFIER, "[COLOR %s]%s[/COLOR]" % ("red", "Connexion refusée"))
                oGui.setEndOfDirectory()

            else:
                showFile(URL_FILE)
示例#10
0
    def SaveCookie(self, head, xfss=None):
        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]:
                    if 'deleted' in cook[1]:
                        continue
                    cookies = cookies + cook[0] + '=' + cook[1] + ';'
                    if cook[0] == 'xfss':
                        # cMySqlDB().updateXFSS(cook[1], self.xfss)
                        self.xfss = cook[1]

        if xfss:
            cookies = cookies + "xfss=%s;" % (xfss)

        #save cookie
        GestionCookie().SaveCookie(self.__sHosterIdentifier, cookies)
示例#11
0
    def __getMediaLinkForGuest(self):
        api_call = ''
        UA = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'

        oParser = cParser()

        headers = {'User-Agent': UA}
        sHtml = Unquote(
            requests.get(self.__sUrl,
                         cookies={
                             'CONSENT': GestionCookie().Readcookie("youtube")
                         },
                         headers=headers).text)

        sHtmlContent = self.deescape(
            sHtml[7 + sHtml.find('formats'):sHtml.rfind('adaptiveFormats')])
        sPattern = '"url":"([^"]+)".+?"qualityLabel":"([^"]+)"'
        aResult = oParser.parse(sHtmlContent, sPattern)

        if (aResult[0] == True):
            url = []
            qua = []
            for aEntry in aResult[1]:
                # Py3 a besoin de la deuxieme version, je laisse le 1er replace au cas où pour Py2
                url.append(aEntry[0].replace('/&', '&').replace(
                    "\\\\u0026", "&").replace("\u0026", "&"))
                qua.append(aEntry[1])

            if url:
                if self.__res:
                    for i in range(len(qua)):
                        if qua[i] == self.__res:
                            api_call = url[i]
                if not api_call:
                    api_call = dialog().VSselectqual(qua, url)

        if api_call:
            return True, api_call
        else:
            return False
示例#12
0
def login():
    oGui = cGui()
    name = oGui.showKeyBoard()
    password = oGui.showKeyBoard()
    cookies = ''
    
    oRequestHandler = cRequestHandler(URL_MAIN)
    oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST)
    #oRequestHandler.addHeaderEntry('Origin',URL_MAIN)
    oRequestHandler.addHeaderEntry('Referer',URL_MAIN)
    oRequestHandler.addParameters('login_name', name)
    oRequestHandler.addParameters('login_password', password)
    oRequestHandler.addParameters('login', 'submit')
        
    sHtmlContent = oRequestHandler.request()
    cookies = oRequestHandler.GetCookies()
    print cookies
    if cookies:
        cConfig().showInfo('vStream', 'Login OK')
        #save cookies
        GestionCookie().SaveCookie('streamase.com',cookies)
    
    oGui.setEndOfDirectory()
    return
示例#13
0
    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")
        import requests, re

        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)

        r1 = s.post("https://uptobox.com/api/user/pin/validate?token=" + tok,
                    json={
                        "pin": r["data"]["pin"]
                    }).json()
        s.headers.update(
            {"Referer": "https://uptobox.com/pin?pin=" + r["data"]["pin"]})

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

        sPattern = "'(.+?)': {(.+?)}"

        oParser = cParser()
        aResult = oParser.parse(r["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)

        SubTitle = self.checkSubtitle(r["subs"])

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

        return False, False
def DecryptddlProtect(url):
    #print 'entering DecryptddlProtect'
    if not (url): return ''

    #Get host
    tmp = url.split('/')
    host = tmp[0] + '//' + tmp[2] + '/'

    cookies = ''
    dialogs = dialog()
    #try to get previous cookie
    cookies = GestionCookie().Readcookie('liens_free-telechargement_org')

    oRequestHandler = cRequestHandler(url)
    if cookies:
        oRequestHandler.addHeaderEntry('Cookie', cookies)
    sHtmlContent = oRequestHandler.request()

    #A partir de la on a les bon cookies pr la protection cloudflare

    #Si ca demande le captcha
    if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent:
        if cookies:
            GestionCookie().DeleteCookie('liens_free-telechargement_org')
            oRequestHandler = cRequestHandler(url)
            sHtmlContent = oRequestHandler.request()

        s = re.findall('src=".\/([^<>"]+?)" alt="CAPTCHA Image"', sHtmlContent)
        if host in s[0]:
            image = s[0]
        else:
            image = host + s[0]

        captcha,cookies2 = get_response(image, cookies)
        cookies = cookies + '; ' + cookies2

        oRequestHandler = cRequestHandler(url)
        oRequestHandler.setRequestType(1)
        oRequestHandler.addHeaderEntry('User-Agent', UA)
        oRequestHandler.addHeaderEntry('Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4')
        oRequestHandler.addHeaderEntry('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8')
        oRequestHandler.addHeaderEntry('Cookie', cookies)
        oRequestHandler.addHeaderEntry('Referer', url)

        oRequestHandler.addParameters('do', 'contact')
        oRequestHandler.addParameters('ct_captcha', captcha)

        sHtmlContent = oRequestHandler.request()

        if 'Code de securite incorrect' in sHtmlContent:
            dialogs.VSinfo("Mauvais Captcha")
            return 'rate'

        if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent:
            dialogs.VSinfo("Rattage")
            return 'rate'

        #si captcha reussi
        #save cookies
        GestionCookie().SaveCookie('liens_free-telechargement_org', cookies)

    return sHtmlContent
示例#15
0
def DecryptDlProtecte(url):

    VSlog('DecryptDlProtecte : ' + url)
    dialogs = dialog()

    if not (url):
        return ''

    #url2 = 'https://www.dl-protecte.org/php/Qaptcha.jquery.php'
    #url2 = 'https://www.protect-zt.com/php/Qaptcha.jquery.php'
    url2 = 'https://' + url.split('/')[2] + '/php/Qaptcha.jquery.php'

    #VSlog(url2)

    #Make random key
    s = "azertyupqsdfghjkmwxcvbn23456789AZERTYUPQSDFGHJKMWXCVBN_-#@";
    RandomKey = ''.join(random.choice(s) for i in range(32))

    oRequestHandler = cRequestHandler(url2)
    oRequestHandler.setRequestType(1)
    oRequestHandler.addHeaderEntry('Host', 'www.dl-protect.ru')
    oRequestHandler.addHeaderEntry('Referer', url)
    oRequestHandler.addHeaderEntry('Accept', 'application/json, text/javascript, */*; q=0.01')
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4')
    oRequestHandler.addHeaderEntry('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
    oRequestHandler.addHeaderEntry('X-Requested-With','XMLHttpRequest')
    oRequestHandler.addParameters('action', 'qaptcha')
    oRequestHandler.addParameters('qaptcha_key', RandomKey)

    sHtmlContent = oRequestHandler.request()

    cookies = oRequestHandler.GetCookies()
    GestionCookie().SaveCookie('dl_protect.ru',cookies)
    #VSlog( 'result'  + sHtmlContent)

    if not '"error":false' in sHtmlContent:
        VSlog('Captcha rate')
        VSlog(sHtmlContent)
        return

    #tempo pas necessaire
    #cGui().showInfo("Patientez", 'Décodage en cours', 2)
    #xbmc.sleep(1000)

    #Ancienne methode avec POST
    #query_args = ( ( 'YnJYHKk4xYUUu4uWQdxxuH@JEJ2yrmJS', '' ) , ('submit', 'Valider' ) )
    #data = urllib.urlencode(query_args)

    #Nouvelle methode avec multipart
    #multipart_form_data = { RandomKey : '', 'submit' : 'Valider' }

    import string
    _BOUNDARY_CHARS = string.digits + string.ascii_letters
    boundary = ''.join(random.choice(_BOUNDARY_CHARS) for i in range(30))

    multipart_form_data = { RandomKey : '', 'submit' : 'Valider' }
    data, headersMulti = encode_multipart(multipart_form_data, {}, boundary)
    #VSlog( 'header 2'  + str(headersMulti))
    #VSlog( 'data 2'  + str(data))

    #2 eme requete pour avoir le lien
    cookies = GestionCookie().Readcookie('dl_protect.ru')
    oRequestHandler = cRequestHandler(url)
    oRequestHandler.setRequestType(1)
    oRequestHandler.addHeaderEntry('Host', 'www.dl-protect.ru')
    oRequestHandler.addHeaderEntry('Referer', url)
    oRequestHandler.addHeaderEntry('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
    oRequestHandler.addHeaderEntry('User-Agent', UA)
    oRequestHandler.addHeaderEntry('Accept-Language', 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3')
    oRequestHandler.addHeaderEntry('Content-Length', headersMulti['Content-Length'])
    oRequestHandler.addHeaderEntry('Content-Type', headersMulti['Content-Type'])
    oRequestHandler.addHeaderEntry('Cookie', cookies)
    oRequestHandler.addHeaderEntry('Accept-Encoding', 'gzip, deflate')

    oRequestHandler.addParametersLine(data)

    sHtmlContent = oRequestHandler.request()

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

    return sHtmlContent
示例#16
0
def DecryptddlProtect(url):
    #VSlog 'entering DecryptddlProtect'
    if not (url): return ''

    #Get host
    tmp = url.split('/')
    host = tmp[0] + '//' + tmp[2] + '/' + tmp[3] + '/'
    host1 = tmp[2]

    cookies = ''
    dialogs = dialog()
    #try to get previous cookie
    cookies = GestionCookie().Readcookie('cinemegatoil_org')

    oRequestHandler = cRequestHandler(url)
    if cookies:
        oRequestHandler.addHeaderEntry('Cookie', cookies)
    sHtmlContent = oRequestHandler.request()

    #A partir de la on a les bon cookies pr la protection cloudflare

    #Si ca demande le captcha
    if 'Vérification Captcha:' in sHtmlContent:
        if cookies:
            GestionCookie().DeleteCookie('cinemegatoil_org')
            oRequestHandler = cRequestHandler(url)
            sHtmlContent = oRequestHandler.request()

        s = re.findall('<img src="([^<>"]+?)" /><br />', sHtmlContent)
        if host in s[0]:
            image = s[0]
        else:
            image = host + s[0]

        captcha,cookies2 = get_response(image, cookies)
        cookies = cookies2.replace(';', '')

        oRequestHandler = cRequestHandler(url)
        oRequestHandler.setRequestType(1)
        oRequestHandler.addHeaderEntry('Host',host1)
        oRequestHandler.addHeaderEntry('User-Agent', UA)
        oRequestHandler.addHeaderEntry('Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4')
        oRequestHandler.addHeaderEntry('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8')
        oRequestHandler.addHeaderEntry('Cookie', cookies)
        oRequestHandler.addHeaderEntry('Referer', url)

        oRequestHandler.addParameters('submit1', 'Submit')
        oRequestHandler.addParameters('security_code', captcha)

        sHtmlContent = oRequestHandler.request()

        if 'Code de securite incorrect' in sHtmlContent:
            dialogs.VSinfo("Mauvais Captcha")
            return 'rate'

        if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent:
            dialogs.VSinfo("Rattage")
            return 'rate'

        #si captcha reussi
        #save cookies
        GestionCookie().SaveCookie('cinemegatoil_org', cookies)

    return sHtmlContent
示例#17
0
def DecryptddlProtect(url):
    #print 'entering DecryptddlProtect'
    if not (url): return ''

    #Get host
    tmp = url.split('/')
    host = tmp[0] + '//' + tmp[2] + '/'
    #VSlog(host)

    cookies = ''
    dialogs = dialog()
    #try to get previous cookie
    cookies = GestionCookie().Readcookie('wawacity')

    oRequestHandler = cRequestHandler(url)
    if cookies:
        oRequestHandler.addHeaderEntry('Cookie', cookies)
    sHtmlContent = oRequestHandler.request()
    #VSlog(sHtmlContent)

    #A partir de la on a les bon cookies pr la protection cloudflare

    #Si ca demande le captcha
    if 'Recopiez :' in sHtmlContent:
        if cookies:
            GestionCookie().DeleteCookie('wawacity')
            oRequestHandler = cRequestHandler(url)
            sHtmlContent = oRequestHandler.request()

        s = re.findall('<label for=".+? >.+?</label><img src="(.+?)"',
                       sHtmlContent)
        if host in s[0]:
            image = s[0]
        else:
            image = host + s[0]

        captcha, cookies2 = get_response(image, cookies)
        cookies = cookies + '; ' + cookies2

        oRequestHandler = cRequestHandler(url)
        oRequestHandler.setRequestType(1)
        oRequestHandler.addHeaderEntry('User-Agent', UA)
        oRequestHandler.addHeaderEntry('Accept-Language',
                                       'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3')
        oRequestHandler.addHeaderEntry(
            'Accept',
            'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
        )
        oRequestHandler.addHeaderEntry('Cookie', cookies)
        oRequestHandler.addHeaderEntry('Referer', url)

        oRequestHandler.addParameters('submit', 'unlock')
        oRequestHandler.addParameters('cr-nvar', captcha.upper())

        sHtmlContent = oRequestHandler.request()

        if 'Code de securite incorrect' in sHtmlContent:
            dialogs.VSinfo("Mauvais Captcha")
            return 'rate'

        if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent:
            dialogs.VSinfo("Rattage")
            return 'rate'

        #si captcha reussi
        #save cookies
        GestionCookie().SaveCookie('wawacity', cookies)

    return sHtmlContent
示例#18
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 and not data is None:
        # 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.replace('\n', '').replace('\r', ''),
            '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 is None and 'watch' in sUrl:
        data = r.text
        VSlog(data)
    else:
        data = oRequestHandler.request()
    # VSlog(data)
    return data
示例#19
0
 def CheckCookie(self):
     cookies = GestionCookie().Readcookie(self.__sHosterIdentifier)
     if cookies != '':
         return True
     return False
示例#20
0
    def GetHtml(self,url,htmlcontent = '',cookies = '',postdata = None,Gived_headers = ''):

        #Memorise headers
        self.Memorised_Headers = Gived_headers

        #Memorise postdata
        self.Memorised_PostData = postdata

        #Memorise cookie
        self.Memorised_Cookies = cookies
        #VSlog(cookies)

        #cookies in headers ?
        if Gived_headers != '':
            if Gived_headers.get('Cookie',None):
                if cookies:
                    self.Memorised_Cookies = cookies + '; ' + Gived_headers.get('Cookie')
                else:
                    self.Memorised_Cookies = Gived_headers['Cookie']

        #For debug
        if (Mode_Debug):
            VSlog('Headers present ' + str(Gived_headers))
            VSlog('url ' + url)
            if (htmlcontent):
                VSlog('code html ok')
            VSlog('cookies passés' + self.Memorised_Cookies)
            VSlog('post data :' + str(postdata))

        self.hostComplet = re.sub(r'(https*:\/\/[^/]+)(\/*.*)','\\1',url)
        self.host = re.sub(r'https*:\/\/','',self.hostComplet)
        self.url = url

        cookieMem = GestionCookie().Readcookie(self.host.replace('.', '_'))
        if not (cookieMem == ''):
            if (Mode_Debug):
                VSlog('cookies present sur disque :' + cookieMem )
            if not (self.Memorised_Cookies):
                cookies = cookieMem
            else:
                cookies = self.Memorised_Cookies + '; ' + cookieMem
        else:
            if (Mode_Debug):
                VSlog('Pas de cookies present sur disque ' )
                
        data = {}
        if postdata:
            method = 'POST'
            #Need to convert data to dictionnary
            d = postdata.split('&')
            for dd in d:
                ddd = dd.split('=')
                data[ddd[0]] = ddd[1]
        else:
            method = 'GET'

        s = CloudflareScraper()
        
        r = s.request(method,url,headers = self.SetHeader() , cookies = self.ParseCookies(cookies) , data = data )
        if r:
            sContent = r.text.encode("utf-8")
            self.RedirectionUrl = r.url
            self.Header = r.headers
        else:
            VSlog("Erreur, delete cookie" )
            sContent = ''
            #self.RedirectionUrl = r.url
            #self.Header = r.headers
            s.MemCookie = ''
            GestionCookie().DeleteCookie(self.host.replace('.', '_'))
        
        #fh = open('c:\\test.txt', "w")
        #fh.write(sContent)
        #fh.close()
            
        #Memorisation des cookies
        c = ''
        cookie = s.MemCookie
        if cookie:
            for i in cookie:
                c = c + i + '=' + cookie[i] + ';'
            #Write them
            GestionCookie().SaveCookie(self.host.replace('.', '_'),c)
            if Mode_Debug:
                VSlog("Sauvegarde cookies : " + str(c) )
        
        return sContent
示例#21
0
class cPremiumHandler:

    def __init__(self, sHosterIdentifier):
        self.__sHosterIdentifier = sHosterIdentifier.lower()
        self.__sDisplayName = 'Premium mode'
        self.isLogin = False
        self.__LoginTry = False
        self.__ssl = False
        
        self.__Ispremium = False
        bIsPremium = cConfig().getSetting('hoster_' + str(self.__sHosterIdentifier) + '_premium')        
        if (bIsPremium == 'true'):
            cConfig().log("Utilise compte premium pour hoster " +  str(self.__sHosterIdentifier))
            self.__Ispremium = True
        else:
            cConfig().log("Utilise compte gratuit pour hoster: " + str(self.__sHosterIdentifier))

    def isPremiumModeAvailable(self):
        return self.__Ispremium

    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
        
    def AddCookies(self):
        cookies = GestionCookie().Readcookie(self.__sHosterIdentifier)
        return 'Cookie=' + cookies
        
    def Checklogged(self,code):
        if 'uptobox' in self.__sHosterIdentifier:
            if '//uptobox.com/?op=logout">Logout</a>' in code:
                return True
        return False
        
    def CheckCookie(self):
        cookies = GestionCookie().Readcookie(self.__sHosterIdentifier)
        if cookies != '':
            return True
        return False

    def Authentificate(self):

        #un seul essais par session, pas besoin de bombarder le serveur
        if self.__LoginTry:
            return False
        self.__LoginTry = True
        
        if not self.__Ispremium:
            return False
        
        post_data = {}
        
        if 'uptobox' in self.__sHosterIdentifier:
            url = 'https://login.uptobox.com/logarithme'
            post_data['login'] = self.getUsername()
            post_data['password'] = self.getPassword()
            post_data['op'] = 'login'
            
        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'
            self.__ssl = True
        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
        if (self.__ssl):
            try:
                import ssl
                context = ssl._create_unverified_context()
            except:
                self.__ssl = False
        
        req = urllib2.Request(url, urllib.urlencode(post_data), headers)
        
        try:
            if (self.__ssl):
                response = urllib2.urlopen(req,context=context)
            else:
                response = urllib2.urlopen(req)       
        except urllib2.URLError, e:
            if getattr(e, "code", None) == 403:
                #login denied
                cGui().showInfo(self.__sDisplayName, 'Authentification rate' , 5)
            elif getattr(e, "code", None) == 502:
                #login denied
                cGui().showInfo(self.__sDisplayName, 'Authentification rate' , 5)
            elif getattr(e, "code", None) == 234:
                #login denied
                cGui().showInfo(self.__sDisplayName, 'Authentification rate' , 5)
            else:
                cConfig().log("debug" + str(getattr(e, "code", None)))
                cConfig().log("debug" + str(getattr(e, "reason", None)))

            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
        GestionCookie().SaveCookie(self.__sHosterIdentifier,cookies)
        
        cGui().showInfo(self.__sDisplayName, 'Authentification reussie' , 5)
        cConfig().log( 'Auhentification reussie' )
        
        return True
示例#22
0
    def GetHtml(self,
                url,
                htmlcontent='',
                cookies='',
                postdata=None,
                Gived_headers=''):

        #Memorise headers
        self.Memorised_Headers = Gived_headers

        #Memorise postdata
        self.Memorised_PostData = postdata

        #Memorise cookie
        self.Memorised_Cookies = cookies
        #VSlog(cookies)

        #cookies in headers?
        if Gived_headers != '':
            if Gived_headers.get('Cookie', None):
                if cookies:
                    self.Memorised_Cookies = cookies + '; ' + Gived_headers.get(
                        'Cookie')
                else:
                    self.Memorised_Cookies = Gived_headers['Cookie']

        #For debug
        if (Mode_Debug):
            VSlog('Headers present ' + str(Gived_headers))
            VSlog('url ' + url)
            if (htmlcontent):
                VSlog('code html ok')
            VSlog('cookies passés : ' + self.Memorised_Cookies)
            VSlog('post data :' + str(postdata))

        self.hostComplet = re.sub(r'(https*:\/\/[^/]+)(\/*.*)', '\\1', url)
        self.host = re.sub(r'https*:\/\/', '', self.hostComplet)
        self.url = url

        cookieMem = GestionCookie().Readcookie(self.host.replace('.', '_'))
        if not (cookieMem == ''):
            if (Mode_Debug):
                VSlog('cookies present sur disque :' + cookieMem)
            if not (self.Memorised_Cookies):
                cookies = cookieMem
            else:
                cookies = self.Memorised_Cookies + '; ' + cookieMem
        else:
            if (Mode_Debug):
                VSlog('Pas de cookies présent sur disque ')

        data = {}
        if postdata:
            method = 'POST'
            #Need to convert data to dictionnary
            d = postdata.split('&')
            for dd in d:
                ddd = dd.split('=')
                data[ddd[0]] = ddd[1]
        else:
            method = 'GET'

        from resources.lib import cloudscraper

        #Fonctionne pour le moment sur tout les sites, donc on ne va pas se compliquer la vie.
        s = cloudscraper.create_scraper(browser={'custom': 'ScraperBot/1.0'})

        r = s.request(method,
                      url,
                      headers=self.SetHeader(),
                      cookies=self.ParseCookies(cookies),
                      data=data)
        #r = s.request(method, url)
        MemCookie = r.cookies.get_dict()

        if r:
            sContent = r.text.encode('utf-8')
            self.RedirectionUrl = r.url
            self.Header = r.headers
            VSlog('Page ok')
        else:
            VSlog('Erreur, delete cookie')
            sContent = ''
            #self.RedirectionUrl = r.url
            #self.Header = r.headers
            MemCookie = {}
            #r.cookies.clear()
            GestionCookie().DeleteCookie(self.host.replace('.', '_'))

        #fh = open('c:\\test.txt', 'w')
        #fh.write(sContent)
        #fh.close()

        #Memorisation des cookies
        c = ''
        cookie = MemCookie
        if cookie:
            for i in cookie:
                c = c + i + '=' + cookie[i] + ';'
            #Write them
            GestionCookie().SaveCookie(self.host.replace('.', '_'), c)
            if Mode_Debug:
                VSlog('Sauvegarde cookies: ' + str(c))

        return sContent
示例#23
0
def DecryptddlProtect(url):
    #xbmc.log("DecryptddlProtect")

    #xbmc.log('>>' + url)

    if not (url): return ''

    cookies = ''
    #try to get previous cookie
    cookies = GestionCookie().Readcookie('liens_free-telechargement_org')
    #xbmc.log( 'cookie récupéré:')
    #xbmc.log( 'Ancien' + cookies )
    oRequestHandler = cRequestHandler(url)
    if cookies:
        oRequestHandler.addHeaderEntry('Cookie', cookies)
    sHtmlContent = oRequestHandler.request()

    #A partir de la on a les bon cookies pr la protection cloudflare

    #Si ca demande le captcha
    if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent:
        if cookies:
            GestionCookie().DeleteCookie('liens_free-telechargement_org')
            oRequestHandler = cRequestHandler(url)
            sHtmlContent = oRequestHandler.request()

        s = re.findall('src=".\/([^<>"]+?)" alt="CAPTCHA Image"', sHtmlContent)
        if URL_PROTECT in s[0]:
            image = s[0]
        else:
            image = URL_PROTECT + s[0]

        #cConfig().log(image)

        captcha, cookies2 = get_response(image, cookies)
        cookies = cookies + '; ' + cookies2
        #xbmc.log( 'New ' + cookies)

        oRequestHandler = cRequestHandler(url)
        oRequestHandler.setRequestType(1)
        oRequestHandler.addHeaderEntry('User-Agent', UA)
        oRequestHandler.addHeaderEntry('Accept-Language',
                                       'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4')
        oRequestHandler.addHeaderEntry(
            'Accept',
            'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
        )
        oRequestHandler.addHeaderEntry('Cookie', cookies)
        oRequestHandler.addHeaderEntry('Referer', url)

        oRequestHandler.addParameters('do', 'contact')
        oRequestHandler.addParameters('ct_captcha', captcha)

        sHtmlContent = oRequestHandler.request()

        #xbmc.log( sHtmlContent )

        if 'Code de securite incorrect' in sHtmlContent:
            cGui().showInfo("Erreur", 'Mauvais Captcha', 5)
            return 'rate'

        if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent:
            cGui().showInfo("Erreur", 'Rattage', 5)
            return 'rate'

        #si captcha reussi
        #save cookies
        GestionCookie().SaveCookie('liens_free-telechargement_org', cookies)

    return sHtmlContent
示例#24
0
def showMovies(sSearch = ''):
    #xbmc.log('showMovies')
    
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    
    if sSearch:
        
        oInputParameterHandler = cInputParameterHandler()
        sType = oInputParameterHandler.getValue('type')
        
        Url_Search = URL_MAIN
        
        if sType:
            if sType == "serie":
                Url_Search = URL_MAIN_SERIE
            else:
                Url_Search = URL_MAIN
        
        if sSearch == URL_FAV:
            sUrl = URL_FAV
            cookies = ''
            #try to get previous cookie
            cookies = GestionCookie().Readcookie('streamase.com')
            oRequestHandler = cRequestHandler(sUrl)
            if cookies:
                oRequestHandler.addHeaderEntry('Cookie',cookies)
            
            sHtmlContent = oRequestHandler.request()
            
            sSearch = ''
            #xbmc.log(sHtmlContent)
        else:
            sUrl = Url_Search + 'index.php?do=search'
            
            if URL_SEARCH[0] in sSearch:
                sSearch=sSearch.replace(URL_SEARCH[0],'')

            oRequestHandler = cRequestHandler(sUrl)
            oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST)
            #oRequestHandler.addHeaderEntry('Origin',URL_MAIN)
            oRequestHandler.addHeaderEntry('Referer',Url_Search)
            #oRequestHandler.addParameters('do', 'search')
            oRequestHandler.addParameters('subaction', 'search')
            oRequestHandler.addParameters('search_start', '0')
            oRequestHandler.addParameters('full_search', '0')
            oRequestHandler.addParameters('result_from', '1')
            oRequestHandler.addParameters('story', sSearch)
			
            sHtmlContent = oRequestHandler.request()

    else:
        
        sUrl = oInputParameterHandler.getValue('siteUrl')
        
        #xbmc.log(sUrl)

        oRequestHandler = cRequestHandler(sUrl) 
        if URL_FAV in sUrl:
            cookies = GestionCookie().Readcookie('streamase.com')
            oRequestHandler.addHeaderEntry('Cookie',cookies)

        sHtmlContent = oRequestHandler.request()
        #xbmc.log(sHtmlContent)
    
    sCom = ''
    sQual = ''
    sYear = ''

    sPattern = '<h3 class="btl"><a href="([^"]+)">([^<]+?)</a></h3>.+?<div class="maincont">.+?src="([^"]+)".+?<br */>([^<]+?)<br */><br */>(.+?)<div class="clr"><\/div>'

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

    #cConfig().log(str(aResult))

    if (aResult[0] == True):
        total = len(aResult[1])
        for aEntry in aResult[1]:
            sQual = str(aEntry[3])
            sTitle = str(aEntry[1])
            sUrl2 = aEntry[0]
            sCom = aEntry[4]
            sCom = sCom.decode("unicode_escape").encode("latin-1")
            if aEntry[2].startswith('http'):
                sThumbnail=aEntry[2]
            else:
                sThumbnail=URL_MAIN + aEntry[2]
                
                
            #Si recherche et trop de resultat, on nettoye
            if sSearch and total > 2:
                if cUtil().CheckOccurence(sSearch,sTitle) == 0:
                    continue
            
            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', str(sUrl2)) 
            oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle)) 
            oOutputParameterHandler.addParameter('sThumbnail', sThumbnail)
            oOutputParameterHandler.addParameter('sCom', sCom)
            sDisplayTitle = cUtil().DecoTitle(sTitle + ' (' + sQual + ')')
            
            oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', sThumbnail, sCom, oOutputParameterHandler)

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

    #Passage en mode vignette sauf en cas de recherche globale
    #if not bGlobal_Search:
        #xbmc.executebuiltin('Container.SetViewMode(500)')
    
    if not sSearch:
        oGui.setEndOfDirectory()
示例#25
0
        #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]:
                    if 'deleted' in cook[1]:
                        continue
                    cookies = cookies + cook[0] + '=' + cook[1] + ';'

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

        self.DIALOG.VSinfo('Authentification reussie', self.__sDisplayName)
        VSlog('Auhentification reussie')

        return True

    def GetHtmlwithcookies(self, url, data, cookies):

        req = urllib2.Request(url, data, headers)

        if not (data == None):
            req.add_header('Referer', url)

        req.add_header('Cookie', cookies)
示例#26
0
def showMovies(sSearch=''):
    oGui = cGui()
    oParser = cParser()

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

    Cookie = GestionCookie().Readcookie('time2watch')

    oRequestHandler = cRequestHandler(sUrl)
    if Cookie:
        oRequestHandler.addHeaderEntry('Cookie', Cookie)
    sHtmlContent = oRequestHandler.request()

    # Connection pour passer la limite
    if not 'Déconnexion' in sHtmlContent and ADDON.getSetting(
            'hoster_time2watch_premium') == "true":
        VSlog("Connection")

        data = {
            'username': ADDON.getSetting('hoster_time2watch_username'),
            'pwd': ADDON.getSetting('hoster_time2watch_password')
        }

        data = urlEncode(data)

        opener = Noredirection()

        opener.addheaders = [('User-Agent', UA)]
        opener.addheaders.append(
            ('Content-Type', 'application/x-www-form-urlencoded'))
        opener.addheaders.append(('Accept-Encoding', 'gzip, deflate'))
        opener.addheaders.append(('Content-Length', str(len(data))))

        response = opener.open("https://time2watch.io/login/", data)
        head = response.info()

        # get cookie
        Cookie = ''
        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]:
                    if 'deleted' in cook[1]:
                        continue
                    Cookie = Cookie + cook[0] + '=' + cook[1] + ';'

        GestionCookie().SaveCookie('time2watch', Cookie)

        oRequestHandler = cRequestHandler(sUrl)
        oRequestHandler.addHeaderEntry('Cookie', Cookie)
        sHtmlContent = oRequestHandler.request()

    sPattern = '<div class="col-lg-4.+?<a href="([^"]+)">.+?affiche_liste" src="([^"]+)".+?alt="([^"]+)".+?<i class="fa fa-tv"></i>([^<]+)<.+?div class="synopsis_hover".+?>([^<]+)<'
    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

            sUrl2 = URL_MAIN + aEntry[0]
            sThumb = URL_MAIN + aEntry[1]
            sTitle = aEntry[2]
            sQual = aEntry[3].replace(' ', '')
            sDesc = aEntry[4]

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

            sDisplayTitle = ('%s [%s]') % (sTitle, sQual)

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

            if '/serie/' in sUrl2 or '/anime/' in sUrl2:
                oGui.addTV(SITE_IDENTIFIER, 'showSaisonEpisodes',
                           sDisplayTitle, '', sThumb, sDesc,
                           oOutputParameterHandler)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showMoviesLink', 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('/([0-9]+)', sNextPage).group(1)
            oGui.addNext(SITE_IDENTIFIER, 'showMovies',
                         '[COLOR teal]Page ' + number + ' >>>[/COLOR]',
                         oOutputParameterHandler)

        oGui.setEndOfDirectory()
示例#27
0
 def AddCookies(self):
     cookies = GestionCookie().Readcookie(self.__sHosterIdentifier)
     return 'Cookie=' + cookies
示例#28
0
def showMovies(sSearch=''):
    oGui = cGui()
    oInputParameterHandler = cInputParameterHandler()
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')

    if sSearch:
        sUrl = sSearch

        #Desactive pr le moment , mais on garde car ca bouge souvent
        if False:
            #need a cookie for search
            oRequestHandler = cRequestHandler(URL_MAIN)
            sHtmlContent = oRequestHandler.request()

            head = oRequestHandler.GetHeaders()

            c = re.search('Set-Cookie: PHPSESSID=(.+?);', str(head))
            if c:
                cookiesearch = 'PHPSESSID=' + c.group(1)

                #on recupere les cookie cloudflare
                oRequestHandler = cRequestHandler(sUrl)
                sHtmlContent = oRequestHandler.request()

                from resources.lib.config import GestionCookie
                cookies = GestionCookie().Readcookie('sokrostream_biz')

                #on ajoute les deux
                cookies = cookies + '; ' + cookiesearch

                #xbmc.log('NEW ****' + cookies, xbmc.LOGNOTICE)

            oRequestHandler = cRequestHandler(sUrl)
            oRequestHandler.addHeaderEntry('Cookie', cookies)
            oRequestHandler.addHeaderEntry('Referer', sUrl)
            oRequestHandler.addHeaderEntry(
                'Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4')
            oRequestHandler.addHeaderEntry(
                'Accept',
                'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
            )
            oRequestHandler.addHeaderEntry('Content-Type',
                                           'text/html; charset=utf-8')
            sHtmlContent = oRequestHandler.request()

        else:
            oRequestHandler = cRequestHandler(sUrl)
            oRequestHandler.addHeaderEntry('Referer', sUrl)
            sHtmlContent = oRequestHandler.request()

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

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

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

    sHtmlContent = sHtmlContent.replace(
        '<span class="tr-dublaj"></span>',
        '').replace('<span class="tr-altyazi"></span>',
                    '').replace('<small>', '').replace('</small>', '').replace(
                        '<span class="likeThis">', '').replace('</span>', '')

    if (sSearch or ('/series' in sUrl) or ('/search/' in sUrl)):
        sHtmlContent = sHtmlContent.replace("\n", "")
        sHtmlContent = re.sub('<div class="yazitip">Series similaires</div>.+',
                              '', sHtmlContent)
        sPattern = '<div class="moviefilm">\s+<a href=".+?">\s+<img src="([^<]+)" alt=".+?".+?<\/a>\s+<div class="movief"><a href="([^<]+)">(.+?)<\/a>'
    else:
        sPattern = '<div class="moviefilm"> *<a href=".+?"> *<img src="([^<]+)" alt=".+?" height=".+?" width=".+?" \/><\/a> *<div class="ozet">.+?</div> *<div class="movief"><a href="([^<]+)">([^<]+)<\/a><\/div> *<div class="movie.+?">(.+?)<\/div>'

    oParser = cParser()
    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)

            #on n'affiche pas les contenus similaires
            if (URL_MAIN + 'series/' in sUrl) and ('-saison-'
                                                   not in aEntry[1]):
                continue

            if (sSearch or ('categories/series' in sUrl)
                    or ('/series/' in sUrl) or ('/series-tv/' in sUrl)
                    or ('/search/' in sUrl)):
                sTitle = aEntry[2]
            else:
                sTitle = aEntry[2] + ' (' + aEntry[3] + ')'

            if sMovieTitle:
                sTitle = sMovieTitle + sTitle

            sDisplayTitle = cUtil().DecoTitle(sTitle)
            sUrl2 = str(aEntry[1])

            oOutputParameterHandler = cOutputParameterHandler()
            oOutputParameterHandler.addParameter('siteUrl', sUrl2)
            oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
            oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[0]))

            if ('-saison-' in sUrl2):
                oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, '',
                           aEntry[0], '', oOutputParameterHandler)
            elif ('/series/' in sUrl2):
                oGui.addTV(SITE_IDENTIFIER, 'showMovies', sDisplayTitle, '',
                           aEntry[0], '', oOutputParameterHandler)
            else:
                oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sDisplayTitle, '',
                              aEntry[0], '', 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()
示例#29
0
def showHosters():
    oGui = cGui()
    oParser = cParser()
    oInputParameterHandler = cInputParameterHandler()
    sUrl = oInputParameterHandler.getValue('siteUrl')
    sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
    sThumb = oInputParameterHandler.getValue('sThumb')

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

    sPattern = '<span class="(?:14|15)"><a href="([^"]+)"'
    aResult = oParser.parse(sHtmlContent, sPattern)

    if (aResult[0] == True):
        for aEntry in aResult[1]:

            if "ReviveLink" in aEntry:
                url2 = 'http://' + (
                    aEntry.split('/')[2]).lower() + '/qcap/Qaptcha.jquery.php'
                idUrl = aEntry.split('/')[3]

                # Make random key
                s = "azertyupqsdfghjkmwxcvbn23456789AZERTYUPQSDFGHJKMWXCVBN_-#@"
                RandomKey = ''.join(random.choice(s) for i in range(32))

                oRequestHandler = cRequestHandler(url2)
                oRequestHandler.setRequestType(1)
                oRequestHandler.addHeaderEntry('Host', 'revivelink.com')
                oRequestHandler.addHeaderEntry('User-Agent', UA)
                oRequestHandler.addHeaderEntry(
                    'Accept', 'application/json, text/javascript, */*; q=0.01')
                oRequestHandler.addHeaderEntry(
                    'Accept-Language', 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3')
                oRequestHandler.addHeaderEntry('Referer', aEntry)
                oRequestHandler.addHeaderEntry(
                    'Content-Type',
                    'application/x-www-form-urlencoded; charset=UTF-8')
                oRequestHandler.addHeaderEntry('X-Requested-With',
                                               'XMLHttpRequest')
                oRequestHandler.addParameters('action', 'qaptcha')
                oRequestHandler.addParameters('qaptcha_key', RandomKey)

                sHtmlContent = oRequestHandler.request()

                cookies = oRequestHandler.GetCookies()
                GestionCookie().SaveCookie('revivelink.com', cookies)
                # VSlog('result' + sHtmlContent)

                if not '"error":false' in sHtmlContent:
                    VSlog('Captcha rate')
                    VSlog(sHtmlContent)
                    return

                cookies = GestionCookie().Readcookie('revivelink.com')
                oRequestHandler = cRequestHandler(
                    'http://revivelink.com/slinks.php?R=' + idUrl + '&' +
                    RandomKey)
                oRequestHandler.addHeaderEntry('Host', 'revivelink.com')
                oRequestHandler.addHeaderEntry('Referer', aEntry)
                oRequestHandler.addHeaderEntry(
                    'Accept', 'application/json, text/javascript, */*; q=0.01')
                oRequestHandler.addHeaderEntry('User-Agent', UA)
                oRequestHandler.addHeaderEntry(
                    'Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4')
                oRequestHandler.addHeaderEntry(
                    'Content-Type',
                    'application/x-www-form-urlencoded; charset=UTF-8')
                oRequestHandler.addHeaderEntry('X-Requested-With',
                                               'XMLHttpRequest')
                oRequestHandler.addHeaderEntry('Cookie', cookies)

                sHtmlContent = oRequestHandler.request()

                result = re.findall('<td><a href="([^"]+)" title=\'([^<]+)\'>',
                                    sHtmlContent)
                for url, title in result:
                    sHosterUrl = url
                    oHoster = cHosterGui().checkHoster(sHosterUrl)
                    if (oHoster != False):
                        oHoster.setDisplayName(title)
                        oHoster.setFileName(title)
                        cHosterGui().showHoster(oGui, oHoster, sHosterUrl,
                                                sThumb)
            else:

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

    oGui.setEndOfDirectory()
示例#30
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 réussie 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 = 'url".+?"(.+?)".+?title.+?"(.+?)".+?thumb".+?"(.+?)"'
    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 = aEntry[0].replace('\\\/', '/').replace("\/", "/")
                sThumb = 'https:' + str(aEntry[2]).replace(
                    '\\\/', '/').replace('\/', '/')
                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.createContexMenuBookmark(oGuiElement,
                                              oOutputParameterHandler)
                oGui.addFolder(oGuiElement, oOutputParameterHandler)
            else:
                oGui.addDir(SITE_IDENTIFIER, 'showWeb', sTitle, '',
                            oOutputParameterHandler)

        progress_.VSclose(progress_)

    oGui.setEndOfDirectory()