def info_servidores(): #tvgentelink= clean(abrir_url_cookie(CanalHDURL,erro=False)) #print tvgentelink #tvgentefinal='\n'.join(re.compile('<h2(.+?)><img src="').findall(tvgentelink)) #savefile('canalhd', tvgentefinal) if selfAddon.getSetting("fontes-tvgente") == "true": try: tvgentelink= clean(abrir_url_cookie(TVGenteURL + '/front.php',erro=False)) tvgentefinal='\n'.join(re.compile('onclick="window.open(.+?)/></a>').findall(tvgentelink)) savefile('tvgente', tvgentefinal) #savefile('tvgente', tvgentelink) except: savefile('tvgente', '')
def todosact(parametro): LOLI=['<item>\n<title>Actualizado: ' + horaportuguesa(True).replace('%20',' ') + '</title>\n<link>nada</link>\n<thumbnail>nada</thumbnail>\n</item>'] dialog = xbmcgui.Dialog() mensagemprogresso.create('TV Portuguesa', 'A criar lista.','Por favor aguarde...') if re.search('Lista Completa',parametro): canaison= openfile(('canaison')) canaison=canaison.replace('[','') lista=re.compile('B](.+?)/B]').findall(canaison) tamanhototal=int(len(lista)) tamanho=int(-1) for nomes in lista: tamanho=tamanho+1 tamanhoenviado=(tamanho*100)/tamanhototal print "Lista completa: Canal " + nomes global activadoextra activadoextra=[] SIM= request_servidores('ignore','[B]' + nomes + '[/B]',tamanho=tamanhoenviado) LOLI.append(SIM) AGORA='\n\n'.join(LOLI) else: SIM= request_servidores('ignore',parametro) LOLI.append(SIM) AGORA='\n\n'.join(LOLI) mensagemprogresso.close() debugfinal='\n'.join(debug) savefile('problema',debugfinal) keyb = xbmc.Keyboard('', 'Nome do ficheiro da lista') keyb.doModal() if (keyb.isConfirmed()): nomelista = keyb.getText() if nomelista=='': nomelista='lista' else: nomelista='lista' pastafinal = dialog.browse(int(0), "Local para guardar xml/m3u", 'myprograms') if not pastafinal: sys.exit(0) savefile(nomelista + '.xml',AGORA,pastafinal=pastafinal) m3uprep=['#EXTM3U#EXTM3U'] openedfile= clean(AGORA) ya=re.compile('<item>(.+?)</item>').findall(openedfile) for lol in ya: chname=re.compile('<title>(.+?)</title>').findall(lol)[0] allstreams=False if allstreams==True: streams=re.compile('<link>(.+?)</link>').findall(lol) for umporum in streams: m3uprep.append('\n#EXTINF:-1,%s\n%s' % (chname,umporum)) else: streams=re.compile('<link>(.+?)</link>').findall(lol)[0] m3uprep.append('\n#EXTINF:-1,%s\n%s' % (chname,streams)) m3uprep='\n'.join(m3uprep) savefile(nomelista + '.m3u',m3uprep,pastafinal=pastafinal) xbmc.executebuiltin("XBMC.Notification(TV Portuguesa, Lista xml/m3u gravada,'100000'," + tvporpath + art + "icon32-ver1.png)")
def correrdump(args, nomecanal, pathso, siglacanal, directo, script=False): import subprocess info = infocanal(siglacanal) escolha = 0 #### inicializador mensagemprogresso.close() if info != False and directo != 'listas': escolha = listadeprogramas(info) #### se ha programacao, mostra lista if escolha == 0: if info != False and directo != 'listas': #### ha programacao fimprograma = calculafinalprograma(info) tituloprograma = ' - ' + re.compile( '<Title>(.+?)</Title>').findall(info)[0] #nomecanal = nomecanal + tituloprograma minutosrestantes = fimprograma / 60 opcao = xbmcgui.Dialog().yesno( "TV Portuguesa", 'Faltam ' + str(minutosrestantes) + ' minutos para o fim do programa', "Deseja gravar o resto do programa ou", "definir um tempo de gravação?", 'Definir tempo', 'Gravar restante') if opcao == 1: if selfAddon.getSetting("acrescentogravacao") == "0": segundos = fimprograma elif selfAddon.getSetting("acrescentogravacao") == "1": segundos = fimprograma + 120 elif selfAddon.getSetting("acrescentogravacao") == "2": segundos = fimprograma + 300 elif selfAddon.getSetting("acrescentogravacao") == "3": segundos = fimprograma + 600 else: segundos = fimprograma + 120 minutos = segundos / 60 else: minutos = -1 while minutos < 1: minutos = int(xbmcgui.Dialog().numeric( 0, "Num de minutos de gravacao")) segundos = minutos * 60 else: minutos = -1 while minutos < 1: minutos = int(xbmcgui.Dialog().numeric( 0, "Num de minutos de gravacao")) segundos = minutos * 60 nomecanal = limpar(re.sub('[^-a-zA-Z0-9_.()\\\/ ]+', '', nomecanal)) horaactual = horaportuguesa(False) if pathso == 'alternativo': caminhodump = selfAddon.getSetting("rtmpdumpalternativo") else: caminhodump = os.path.join(gravadorpath, pathso) if xbmc.getCondVisibility('system.platform.linux'): st = os.stat(caminhodump) os.chmod(caminhodump, st.st_mode | stat.S_IEXEC) args = args.split(' ') typeargs = [] for types in args: if len(types) != 2: typeargs.append('"' + types + '"') else: typeargs.append(types) args = ' '.join(typeargs) argumentos = args + ' -o "' + downloadPath + horaactual + ' - ' + nomecanal + '.flv" -B ' + str( segundos) #argumentos=args + ' -o "' + downloadPath + horaactual + '.flv" -B ' + str(segundos) if script: conteudoscript = script + xbmc.translatePath( os.path.join(gravadorpath, pathso)) + ' $1 ' + argumentos savefile('script.sh', conteudoscript, pastafinal=gravadorpath) caminhodump = xbmc.translatePath( os.path.join(gravadorpath, 'script.sh')) st = os.stat(caminhodump) os.chmod(caminhodump, st.st_mode | stat.S_IEXEC) try: #proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) if script: proc = subprocess.Popen(caminhodump, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) else: #proc = subprocess.Popen(argumentos, executable=caminhodump + '.exe', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmd = '"%s" %s' % (caminhodump, argumentos) proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) print "RTMPDump comecou a funcionar" xbmc.executebuiltin( "XBMC.Notification(TV Portuguesa, Gravação de " + str(minutos) + " minutos iniciou,'10000'," + tvporpath + "/resources/art/icon32-ver1.png)") (stdout, stderr) = proc.communicate() print "RTMPDump parou de funcionar" stderr = normalize(stderr) if u'Download complete' in stderr: print 'stdout: ' + str(stdout) print 'stderr: ' + str(stderr) print "Download Completo!" xbmc.executebuiltin( "XBMC.Notification(TV Portuguesa, Gravação efectuada com sucesso,'10000'," + tvporpath + "/resources/art/icon32-ver1.png)") else: print 'stdout: ' + str(stdout) print 'stderr: ' + str(stderr) print "Download Falhou!" xbmc.executebuiltin( "XBMC.Notification(TV Portuguesa, Gravação falhou,'10000'," + tvporpath + "/resources/art/icon32-ver1.png)") except Exception: print("Nao conseguiu abrir o programa") xbmc.executebuiltin( "XBMC.Notification(TV Portuguesa, Erro ao abrir programa de gravação,'10000'," + tvporpath + "/resources/art/icon32-ver1.png)") (etype, value, traceback) = sys.exc_info() print "Erro etype: " + str(etype) print "Erro valor: " + str(value) print "Erro traceback: " + str(traceback)