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)")
示例#3
0
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)