def AdulteSources( self, Url='aHR0cHM6Ly93d3cubXJzZXhlLmNvbS9jYXQvNjIvc29kb21pZS8='): print "Recherche de la liste de chaine..." Page = str(cDL().TelechargPage(url=b64decode(Url))) ret = [] if not Page.startswith("Erreur"): match = re.compile('thumb-list(.*?)<ul class="right pagination">', re.DOTALL | re.IGNORECASE).findall(Page) #xbmc.log("Resulta 1 tri: "+str(match)) match1 = re.compile( r'<li class="[^"]*">\s<a class="thumbnail" href="([^"]+)">\n<script.+?([^;]+);</script>\n<figure>\n<img id=".+?" src="([^"]+)".+?/>\n<figcaption>\n<span class="video-icon"><i class="fa fa-play"></i></span>\n<span class="duration"><i class="fa fa-clock-o"></i>([^<]+)</span>\n(.+?)\n', re.DOTALL | re.IGNORECASE).findall(match[0]) for url, Timage, image, Temp, Descript in match1: ret.append( (url, "https:" + image, Timage.split("(")[1][:-1].replace( "'", "").split(","), Descript + " " + Temp)) print "Recherche OK..." try: nextp = re.compile( r'<li class="arrow"><a href="(.+?)">suivant</li>').findall( Page) ret.append(('https://www.mrsexe.com' + nextp[0], "", [], "Page Suivante...")) except: pass else: dialog = Dialog() ok = dialog.ok("Telechargement impossible...", Page) return ret
def ListTv(self, Adress, Re1, Re2, NumM3u, TelLien, CheminxAmAx=""): Cmp = 0 ListeRet = [] try: #print Adress ret2 = cDL().TelechargPage(url=Adress) #print ret2 TabLien = re.compile(Re1, re.I + re.M + re.S).findall( self.ConvText(ret2)) print TabLien TabLien2 = [] for Url, Nom in TabLien: if (("France" in Nom)): # or ("French" in Nom)): ret2 = cDL().TelechargPage(url=Url) #print ret2 TabLien2 = re.compile(Re2, re.I + re.M + re.S).findall( self.ConvText(ret2)) break if len(TabLien2) > 0: print str(TabLien2) if TelLien: if TabLien2[0][1][-4:] == ".zip": udata = os.path.join(CheminxAmAx, "Telecharg") dest = os.path.join(udata, 'm3u.zip') if not os.path.exists(udata): os.makedirs(udata) cDL().TelechargementZip(TabLien2[0][1], dest, DPAff=False, Nom="Téléchargement Liste") from resources.ziptools import ziptools unzipper = ziptools() unzipper.extract(dest, udata) os.remove(dest) dir = os.listdir(udata) for a in dir: if a.endswith('.m3u'): print "Ouverture de :" + os.path.join(udata, a) with open(os.path.join(udata, a), 'r') as fm3u: ListM3u = fm3u.read() ListeRet = self.TabM3u(ListM3u, True, True) os.remove(os.path.join(udata, a)) else: ret2 = cDL().TelechargPage(url=TabLien2[0][NumM3u]) print ret2 ListeRet = self.TabM3u(ret2, F4m=True, cvNom=True) else: #print TabLien2[0] ret2 = TabLien2[0].replace('<br />', '') ListeRet = self.TabM3u( ret2, F4m=True, cvNom=True, reComp='EXTINF.+?:-?[0-9]*(.*?),FR(.*?)http:(.*?).ts', AjoutHttp="http:", AjoutFin=".ts") #print str(TabLien2[0][1]) except: return ListeRet, "Erreur de Recherche des chaines de la liste!" return ListeRet, "OK"
def RechercheChaine(self, CheminxAmAx): i = 0 j = 0 ListeEffacer = False dbxAmAx = os.path.join(CheminxAmAx, "xAmAx.db") M3uxAmAx = os.path.join(CheminxAmAx, "M3uTV.m3u") print "Ouverture de la Base de donnée xAmAx: " + dbxAmAx DBxAmAx = db(dbxAmAx) IdLP = 0 liste = [] liste.append([ 'Iptv4Sat', "https://www.iptv4sat.com/dl-iptv-french/", '"https://www.iptv4sat.com/download-attachment/([^"]+)".+?class="attachment-caption">([^<]+)<', '', 0, False ]) """liste.append( ['Iptv Gratuit', 'https://iptvgratuit.com/iptv-france/', '<h2 class="entry-title"><a href="(.+?)" rel="bookmark">(.+?)</a>', '<a class="more-link" title="(.+?)".+?href="(.+?)"', 0, False])""" NbMaj = len(liste) self.MajDiv = 100 / NbMaj self.TotMaj = 0 self.dp = DialogProgress() sleep(0.5) self.dp.create("Telechargement de la liste de chaine:") sleep(0.5) NbMajEc = 1 NbRecherche = 0 print "Liste de chaine 1 a afficher" ListeEffacer = True DivisionRech = (self.MajDiv - self.TotMaj) TxtFinal = "" for Nom, Url, Re1, Re2, NumM3u, TelLien in liste: NbRecherche += 1 if self.adn.getSetting(id="MajList" + str(NbRecherche)) == "true": log( '\t[PLUGIN] xAmAx-Mod: Recherche Liste de chaine ' + str(Nom), LOGNOTICE) #print "Recherche Liste de chaine "+str(Nom) self.dp.update(self.TotMaj, "Recherche Liste de chaine " + str(NbRecherche)) sleep(0.5) if Nom != "Iptv4Sat": Retour2, Erreur2 = self.ListTv(Url, Re1, Re2, NumM3u, TelLien, CheminxAmAx) log( '\t[PLUGIN] xAmAx-Mod: Nombre de résultat de la Liste de chaine ' + str(len(Retour2)), LOGNOTICE) #print "Nombre de résultat de la Liste de chaine "+str(len(Retour2)) if len(Retour2) > 0 and Erreur2 == "OK": try: DBxAmAx.Delete(Table="List" + str(NbRecherche)) except: pass DBxAmAx.CreerTable( Table="List" + str(NbRecherche), colonnes= "`IDLP` INTEGER PRIMARY KEY AUTOINCREMENT, `Nom` TEXT, `Url` TEXT, `Entete` TEXT" ) for NomTv, UrlTV in Retour2: IdLP += 1 DBxAmAx.Insert( Table="List" + str(NbRecherche), Colonnes="IDLP,Nom,Url", Valeurs=(IdLP, NomTv + " [COLOR gold](" + str(NbRecherche) + ")[/COLOR]", UrlTV)) #+"&name="+NomTv)) elif Erreur2 != "OK": executebuiltin( "XBMC.Notification(Mise à jour Liste TV " + str(NbRecherche) + " Impossible!!! ," + Erreur2 + ",5000,'')") else: Page = cDL().TelechargPage2(url=Url) #print Page try: part = re.compile(Re1, re.I + re.M + re.S).findall( self.ConvText(Page)) except: part = '' log('\t[PLUGIN] xAmAx-Mod: part = ' + str(part), LOGNOTICE) try: zip = 'https://www.iptv4sat.com/download-attachment/' + str( part[0][0][:-1]) #).group(1) except: zip = '' #Page = cDL().TelechargPage2(url=Url) #log('\t[PLUGIN] xAmAx-Mod: page = '+self.ConvText(Page), LOGNOTICE) try: udata = os.path.join(CheminxAmAx, "Telecharg") dest = os.path.join(udata, 'iptv4sat.zip') if not os.path.exists(udata): os.makedirs(udata) cDL().TelechargementZip(zip, dest, DPAff=False, Nom="Téléchargement Liste 1") #Page = cDL().TelechargPage2(url=Url) #log('\t[PLUGIN] xAmAx-Mod: page = '+self.ConvText(Page), LOGNOTICE) from resources.ziptools import ziptools unzipper = ziptools() unzipper.extract(dest, udata) os.remove(dest) dir = os.listdir(udata) for a in dir: if a.endswith('.m3u'): print "Ouverture de :" + os.path.join(udata, a) with open(os.path.join(udata, a), 'r') as fm3u: ListM3u = fm3u.read() Retour3 = self.TabM3u(ListM3u, True, True) os.remove(os.path.join(udata, a)) log( '\t[PLUGIN] xAmAx-Mod: Nombre de résultat de la Liste de chaine ' + str(len(Retour3)), LOGNOTICE) #print "Nombre de résultat de la Liste de chaine "+str(len(Retour3)) if len(Retour3) > 0: try: DBxAmAx.Delete(Table="List" + str(NbRecherche)) except: pass DBxAmAx.CreerTable( Table="List" + str(NbRecherche), colonnes= "`IDLP` INTEGER PRIMARY KEY AUTOINCREMENT, `Nom` TEXT, `Url` TEXT, `Entete` TEXT" ) for NomTv, UrlTV in Retour3: IdLP += 1 DBxAmAx.Insert( Table="List" + str(NbRecherche), Colonnes="IDLP,Nom,Url", Valeurs=( IdLP, NomTv + " [COLOR gold](" + str(NbRecherche) + ")[/COLOR]", UrlTV)) #+"&name="+NomTv)) else: executebuiltin( "XBMC.Notification(Mise à jour Liste TV " + str(NbRecherche) + " Impossible!!! ," + "Pas fichier dans la liste!" + ",5000,'')") else: os.remove(os.path.join(udata, a)) except: executebuiltin( "XBMC.Notification(Mise à jour Liste TV " + str(NbRecherche) + " Impossible!!! ," + "Pas fichier dans la liste!" + ", ,5000,'')") else: DBxAmAx.Delete(Table="List" + str(NbRecherche)) DBxAmAx.CreerTable( Table="List" + str(NbRecherche), colonnes= "`IDLP` INTEGER PRIMARY KEY AUTOINCREMENT, `Nom` TEXT, `Url` TEXT, `Entete` TEXT" ) DBxAmAx.FinEnregistrement() self.TotMaj = self.MajDiv * NbRecherche print "Telechargement de la liste de chaine:" + str( self.TotMaj) + "%" if NbRecherche < 4: for i in range(NbRecherche + 1, 5): DBxAmAx.Delete(Table="List" + str(i)) DBxAmAx.CreerTable( Table="List" + str(i), colonnes= "`IDLP` INTEGER PRIMARY KEY AUTOINCREMENT, `Nom` TEXT, `Url` TEXT, `Entete` TEXT" ) DBxAmAx.FinEnregistrement() self.dp.update( 100, "Nombre de résultat sur les " + str(NbRecherche) + " listes de chaines: " + str(IdLP)) sleep(1) self.dp.close() executebuiltin("XBMC.Notification(" + str(IdLP) + " Chaînes à jour,,,5000,'')") return "OK"