Esempio n. 1
0
def programacao_canal():
    titles=[]
    sigla=name.replace('[','-')
    sigla=re.compile('B](.+?)/B]').findall(sigla)[0]
    siglacanal=sigla.replace('SPORTTV 1-','SPTV1').replace('SPORTTV 2-','SPTV2').replace('SPORTTV 3-','SPTV3').replace('SPORTTV 4-','SPTV4').replace('SPORTTV 5-','SPTV5').replace('SPORTTV LIVE-','SPTVL').replace('Discovery Channel-','DISCV').replace('AXN Black-','AXNBL').replace('AXN White-','AXNWH').replace('FOX Crime-','FOXCR').replace('FOX Life-','FLIFE').replace('FOX Movies-','FOXM').replace('Eurosport-','EURSP').replace('Hollywood-','HOLLW').replace('Canal Panda-','PANDA').replace('Benfica TV 1-','SLB').replace('Benfica TV 2-','SLB2').replace('Porto Canal-','PORTO').replace('SIC K-','SICK').replace('SIC Mulher-','SICM').replace('SIC Noticias-','SICN').replace('SIC Radical-','SICR').replace('TVI24-','TVI24').replace('TVI Ficção-','TVIFIC').replace('Mais TVI-','SEM').replace('Syfy-','SYFY').replace('Odisseia-','ODISS').replace('História-','HIST').replace('National Geographic Channel-','NGC').replace('MTV-','MTV').replace('CM TV-','CMTV').replace('RTP Informação-','RTPIN').replace('Disney Channel-','DISNY').replace('Motors TV-','MOTOR').replace('ESPN America-','SEM').replace('Fashion TV-','FASH').replace('MOV-','SEM').replace('A Bola TV-','ABOLA').replace('Panda Biggs-','BIGGS').replace('RTP 1-','RTP1').replace('RTP 2-','RTP2').replace('RTP Açores-','RTPAC').replace('RTP Madeira-','RTPMD').replace('RTP Memória-','RTPM').replace('Disney Junior-','DISNYJ').replace('RTP Africa-','RTPA').replace('Económico TV-','ETVHD').replace('Chelsea TV-','CHELS').replace('TV Globo-','GLOBO').replace('TV Record-','TVREC').replace('Eurosport 2-','EURS2').replace('Discovery Turbo-','DISCT').replace('Toros TV-','TOROTV').replace('Caça e Pesca-','CAÇAP').replace('Sporting TV-','SCP').replace('TPA Internacional-','TPA')
    siglacanal=siglacanal.replace('-','')
    dia= horaportuguesa(True)
    diaseguinte= horaportuguesa('diaseguinte')
    url='http://services.sapo.pt/EPG/GetChannelListByDateIntervalJson?channelSiglas='+siglacanal+'&startDate=' + dia +':01&endDate='+ diaseguinte + ':02'
    ref=int(0)
    link=abrir_url(url)
    titles.append('No ar: %s\n\n[B][COLOR white]Programação:[/COLOR][/B]' % name)

    programas=re.compile('{"Actor":.+?"Description":"(.+?)".+?"StartTime":".+?-.+?-(.+?) (.+?):(.+?):.+?".+?"Title":"(.+?)"').findall(link)
    for descprog,dia, horas,minutos, nomeprog in programas:
        ref=ref+1
        if dia==datetime.datetime.now().strftime('%d'): dia='Hoje'
        else: dia='Amanhã'
        titles.append('\n[B][COLOR blue]%s %s:%s[/COLOR][/B] - [B][COLOR gold]%s[/COLOR][/B] - %s' % (dia,horas,minutos,nomeprog,descprog))
    programacao='\n'.join(titles)

    try:
        xbmc.executebuiltin("ActivateWindow(10147)")
        window = xbmcgui.Window(10147)
        xbmc.sleep(100)
        window.getControl(1).setLabel('TV Portuguesa')
        window.getControl(5).setText(programacao)
    except: pass
Esempio n. 2
0
def infocanal(siglacanal):
    if siglacanal == 'SEM':
        print "Canal sem programacao."
        return False
    try:
        dia = horaportuguesa(True)
        diaseguinte = horaportuguesa('diaseguinte')
        url = 'http://services.sapo.pt/EPG/GetChannelListByDateInterval?channelSiglas=' + siglacanal + '&startDate=' + dia + ':01&endDate=' + diaseguinte + ':02'
        link = clean(abrir_url(url))
        return link
    except:
        print "Nao conseguiu capturar programacao."
        return False
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)")
Esempio n. 4
0
def p_todos():
    if selfAddon.getSetting("prog-lista3") == "false": return ''
    else:
        try:
            dia= horaportuguesa(True)

            listacanais='RTP1,RTP2,SIC,TVI,SPTV1,SPTV2,SPTV3,SPTV4,SPTV5,SLB,SLB2,PORTO,CMTV,RTPIN,SICK,SICM,SICN,SICR,TVI24,TVIFIC,HOLLW,AXN,AXNBL,AXNWH,FOX,FOXCR,FLIFE,FOXM,SYFY,DISNY,PANDA,MOTOR,DISCV,ODISS,HIST,NGC,EURSP,FASH,VH1,MTV,ABOLA,RTPAC,RTPA,RTPM,RTPMD,BIGGS,ETVHD,DISNYJ,CHELS,CAÇAP,TOROTV,DISCT,GLOBO,TVREC,EURS2,SCP,TPA,EURN,ARTV,TRACE'
            url='http://services.sapo.pt/EPG/GetChannelListByDateInterval?channelSiglas='+listacanais+'&startDate=' + dia +':01&endDate='+ dia + ':02'
            link= clean(abrir_url(url,erro=False))

            listas=re.compile('<Sigla>(.+?)</Sigla>.+?<Title>(.+?)</Title>.+?<Description>(.+?)</Description>').findall(link)
            canais={}
            for nomecanal, nomeprog, descricao in listas:
                canais[nomecanal]={'nomeprog':'(' + nomeprog + ')','descprog':descricao}
            return canais
        except: pass
Esempio n. 5
0
def calculafinalprograma(link):
    fim = re.compile('<EndTime>(.+?)-(.+?)-(.+?) (.+?):(.+?):.+?</EndTime>'
                     ).findall(link)[0]
    agora = horaportuguesa(False)
    inicio = re.compile('(.+?)-(.+?)-(.+?) (.+?)-(.+?)-').findall(agora)[0]
    start = datetime.datetime(year=int(inicio[0]),
                              month=int(inicio[1]),
                              day=int(inicio[2]),
                              hour=int(inicio[3]),
                              minute=int(inicio[4]))
    end = datetime.datetime(year=int(fim[0]),
                            month=int(fim[1]),
                            day=int(fim[2]),
                            hour=int(fim[3]),
                            minute=int(fim[4]))
    diff = end - start
    segundos = (diff.microseconds +
                (diff.seconds + diff.days * 24 * 3600) * 10**6) / 10**6
    return segundos
Esempio n. 6
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)