
*Radiovox - programa de sintonia de emissoras de rádio pela internet;
*Por Fabiano Ferreira;
*Versão 1.0 em 21/01/2023;
*Versão 1.1 em 17/06/2023;
****************************************
*Programa principal
****************************************
dir troca "c:\radiovox"
seja $versao "1.2"

chama @inicia
@PularParaATelaPrincipal
chama @telaprincipal
chama @finaliza
desvia @PularParaATelaPrincipal

****************************************
*Rotinas
****************************************

*--*
@inicia
titulo "Radiovox"
escreve "Radiovox - versão "$versao
escreve ""
Escreve "Se precisar de ajuda, pressione a tecla f1."
retorna

*--*
@telaprincipal
seja $listalocal 0
seja $idtela 1

seja o ""
tela limpa
escreve "Radiovox"
escreve ""

existeprog "ffmpeg.exe" f
existeprog "mpv.exe" p
se f = 1 executa "taskkill /f /im ffmpeg.exe"
se p = 1executa "taskkill /f /im mpv.exe"
seja $gravando 0
escreve "Qual sua opção?"
le mudo o &
se o == "#0#80" chama @menuprincipal
se o == "#0#72" chama @menuprincipal
se o == "#0#75" chama @menuprincipal
se o == "#0#77" chama @menuprincipal
se o == "#0#59" chama @ajuda
se o == "b" chama @buscaderadios
se o == "s"
seja $tipobusca "s"
 chama @radiosporsegmento
se $tipobusca = ""desvia @telaprincipal
chama @acao_buscar_e_mostrar_radios
fim se
se o == "l" chama @listasderadios
se o == "n" chama @rnews
se o == "#27" retorna
seja $tipobusca ""
desvia @telaprincipal

*--*
@menuprincipal
seja $numero 1
menu cria 1 1 30 10
menu adiciona "Busca de rádios"
menu adiciona "Rádios por segmento"
menu adiciona "Listas de rádios"
menu adiciona "notícias do portal tudoradio.com"
menu executa $numero $letra $texto
se $letra = "#13"
se $numero = 1 seja o "b"
se $numero = 2 seja o "s"
se $numero = 3 seja o "l"
se $numero = 4 seja o "n"
senão
se $letra = "#27"
*não faz nada
senão
seja o $letra
fim se
menu termina
 retorna

*--*
@buscaderadios
escreve "Digite sua busca:"
le $abuscar
se $abuscar = "" retorna

@acao_buscar_e_mostrar_radios
seja $numpagatual 0
chama @enviabusca
chama @processabusca
se $quantasencontradas = 0
escreve "Nenhum resultado encontrado."
retorna
fim se

escreve $quantasencontradas" ítens encontrados."
escreve ""
chama @exiberesultbusca
retorna

*--*
@enviabusca
escreve "Aguarde"

seja $arqtemp "temp\busca.tmp"
se $tipobusca <> "s"
 seja $url "https://www.radios.com.br/busca?q="
seja q $abuscar
ansiparautf8 q
concatena $url q
substitui $url " " "+"
concatena $url $filtro
fim se

se $numpagatual > 0
se $tipobusca = "s" concatena $url "?"
se $tipobusca <> "s" concatena $url "&"
concatena $url "pg="
concatena $url $numpagatual
fim se
remove $arqtemp &

seja $ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"

seja $comando "wget -O """
concatena $comando $arqtemp
concatena $comando """ --user-agent="""
concatena $comando $ua
concatena $comando """ --no-check-certificate "
concatena $comando $url
*trazdarede $url $arqtemp 0 "" "Mozilla" x
executa $comando &&
espera 1
existeprog "wget.exe" x
enquanto x = 1
espera ms 500
existeprog "wget.exe" x
fim enquanto
retorna

*--*
@processabusca
se $numpagatual = 0
abre #1 $arqtemp
le #1 l
enquanto não l *=* """>Mostrando"
le #1 l
fim enquanto
fecha #1
seja p pos " de " l
soma p 4
seja t tamanho l
copia l l p t
seja p pos " " l
subtrai p 1
copia $quantasencontradas l 1 p

se $quantasencontradas = 0 retorna

seja $ultimapagina ($quantasencontradas/22)
seja $sobroupagina ($ultimapagina*22)
se $sobroupagina < $quantasencontradas soma $ultimapagina 1

subtrai $ultimapagina 1
fim se
seja $listaderadios "temp\radios.lst"
remove $listaderadios &
abre #1 $arqtemp
abre #2 $listaderadios &
se $numpagatual < $ultimapagina
seja x 22
senão
seja x ($quantasencontradas-(22*$numpagatual))
fim se

repete r x
le #1 l
enquanto não l *=* "<a class=""thumbnail"""
le #1 l
fim enquanto

seja p pos "href=""" l
soma p 6
seja t tamanho l
copia $linkradio l p t
seja p pos """" $linkradio
subtrai p 1
copia $linkradio $linkradio 1 p

seja p pos "alt=""" l
soma p 5
seja t tamanho l
copia $nomeradio l p t
seja p pos """" $nomeradio
subtrai p 1
copia $nomeradio $nomeradio 1 p
utf8paraansi $nomeradio

enquanto não l *=* "<a class=""localizacao"
le #1 l
fim enquanto
utf8paraansi l

seja p pos "title=""" l
soma p 14
seja t tamanho l
copia $localradio l p t
seja p pos """" $localradio
subtrai p 1
copia $localradio $localradio 1 p

seja $segradio ""

enquanto não l *=* "<a class=""btn btn-default btn-xs segmento"""
le #1 l
fim enquanto

enquanto não  l *=* "</p>
seja p pos "title=""" l
soma p 15
seja t tamanho l

se $segradio = ""
copia $segradio l p t
seja p pos """" $segradio
subtrai p 1
copia $segradio $segradio 1 p
senão

copia $aux l p t
seja p pos """" $aux
subtrai p 1
copia $aux $aux 1 p
concatena $segradio " / "
concatena $segradio $aux
fim se
le #1 l
fim enquanto
utf8paraansi $segradio

escreve #2 $nomeradio", "$localradio", "$segradio
escreve #2 $linkradio
fim repete

fecha #2
fecha #1
retorna

*--*
@exiberesultbusca
seja $idtela 2
menu cria 1 1 60 22
abre #1 $listaderadios
le #1 l
checa c
enquanto c = 0
menu adiciona l
le #1 l
le #1 l
checa c
fim enquanto
fecha #1

Escreve "Página "($numpagatual+1)" de "($ultimapagina+1)

@fixomenulistaderadios
menu executa $numradioselec $teclapressionada $nomeradioselec
se $teclapressionada = "#13" chama @ouvirradio
se $teclapressionada = "#3" chama @copclipfonteradio
se $teclapressionada = "g" chama @gravarradio

se $teclapressionada = "l"
menu termina
 chama @gravaradioemlistalocal
desvia @exiberesultbusca
fim se
se $teclapressionada = "#9"
se $numpagatual = $ultimapagina bipa
se $numpagatual = $ultimapagina desvia @fixomenulistaderadios

bipa 1
soma $numpagatual 1
chama @enviabusca
chama @processabusca
menu termina
seja $numradioselec 1
desvia @exiberesultbusca
fim se

se $teclapressionada = "#8"
se $numpagatual = 0 bipa
se $numpagatual = 0 desvia @fixomenulistaderadios
bipa 1
subtrai $numpagatual 1
chama @enviabusca
chama @processabusca
menu termina
seja $numradioselec 1
desvia @exiberesultbusca
fim se

se $teclapressionada = "#0#59" chama @ajuda
se $teclapressionada = "#27" retorna
desvia @fixomenulistaderadios

*--*
@radiosporsegmento
seja $idtela 3
seja $numsegselec 1
seja $seglist "segmentos.lst"

busca b $seglist
se b = ""
Escreve "O arquivo segmentos.lst não foi achado."
escreve "Não é possível exibir a listagem de segmentos."
seja $tipobusca ""
retorna
fim se

abre #1 $seglist
menu cria 1 1 30 80

le #1 l
checa c
enquanto c= 0
menu adiciona l
le #1 l
le #1 l
checa c
fim enquanto
fecha #1

Escreve "Lista de segmentos"
escreve ""
escreve "Escolha com as setas"

@fixomenuseg
menu executa $numsegselec $teclapressionada $nomesegselec

se $teclapressionada = "#13"
abre #1 $seglist
seja x $numsegselec
multiplica x 2
repete r x
le #1 $url
fim repete
fecha #1
menu termina
retorna
fim se

se $teclapressionada = "#0#59" chama @ajuda
se $teclapressionada = "#27"
seja $tipobusca ""
menu termina
retorna
fim se
desvia @fixomenuseg

*--*
@ouvirradio
Escreve "Aguarde"
escreve ""

chama @obtemfonteradio
se $encontroufonte = 1
chama @executaradio
senão
@perguntasequerabrirnavegador
escreve "Esta rádio usa um player externo."
Escreve "Não foi possível resolver a fonte de transmissão para reprodução no player do radiovox."
Escreve ""
Escreve "Quer tentar reproduzir esta rádio em seu navegador?"
le mudo $opcao &
se $opcao = "s" executa $fonteradio
se $opcao = "s" retorna
se $opcao = "n" retorna
desvia @perguntasequerabrirnavegador
fim se
Escreve ""
espera 3
captura ativa j
enquanto j <> "Radiovox"
espera ms 500
captura ativa j
fim enquanto
retorna

@gravarradio
Escreve "Aguarde"
escreve ""

se $gravando = 1
escreve "Parando gravação"
executa "taskkill /f /im ffmpeg.exe"
executa "taskkill /f /im mpv.exe"
seja $gravando 0
retorna
fim se

chama @obtemfonteradio
se $encontroufonte = 1
chama @execradiogravando
senão
escreve "Não é possível gravar a programação desta rádio por que o link direto da transmissão não pode ser obtido."
escreve "Use a opção 'enter' para ouvir esta rádio via navegador."
fim se
espera 3
captura ativa j
enquanto j <> "Radiovox"
espera ms 500
captura ativa j
fim enquanto
retorna

@copclipfonteradio
Escreve "aguarde"
escreve ""
chama @obtemfonteradio
transfere de $fonteradio
se $encontroufonte = 1
escreve "Link da fonte copiada para a área de transferência."
senão
escreve "Link do player externo copiado para a área de transferência."
fim se
retorna

@gravaradioemlistalocal
dir troca "listas"

menu cria 1 1 60 80

busca b "*.*"
enquanto b <> ""
menu adiciona b
busca b proximo
fim enquanto

escreve "Escolha a lista que deseja gravar esta rádio"
menu executa $numloclista $letloclista $textloclista
se $letloclista = "#27" retorna
se $letloclista = "#13"
dir troca ".."
chama @obtemfonteradio
dir troca "listas"
abre #1 $textloclista &
escreve #1 $nomeradioselec
se $encontroufonte = 0 escreve #1 "EXT:"&
escreve #1 $fonteradio
fecha #1
Escreve "Ok, salvo."
dir troca ".."
retorna

@executaradio
seja $comando "cmd /c mpv\mpv.exe """
concatena $comando $fonteradio
concatena $comando """"
executa $comando &&
retorna

@execradiogravando
seja $gravando 0
seja $nomeradiomp3 "mp3\"
concatena $nomeradiomp3 $nomeradioselec
seja p pos "," $nomeradiomp3
se p > 0
subtrai p 1
copia $nomeradiomp3 $nomeradiomp3 1 p
fim se
chama @subscaracinvalidos
concatena $nomeradiomp3 ".mp3"

seja $gravando "ffmpeg\ffmpeg -i """
concatena $gravando $fonteradio
concatena $gravando """ -ar 44100 -ac 2 -ab 128000 -y """
concatena $gravando $nomeradiomp3
concatena $gravando """"

seja $comando "cmd /c ffmpeg\ffplay.exe """
concatena $comando $nomeradiomp3
concatena $comando """"

Escreve "A gravação vai começar em instantes"
executa $gravando &&
espera 10
escreve "Gravação iniciada"
executa $comando &&
seja $gravando 1
retorna
*--*
@listasderadios
seja $idtela 4
seja $numloclista 1
menu cria 1 1 30 80

menu adiciona "Criar nova lista"
menu adiciona "Baixar uma lista"
dir troca "listas"
busca b "*.*"
enquanto b <> ""
menu adiciona b
busca b proximo
fim enquanto

Escreve ""
escreve "Listas de rádios."
escreve ""
Escreve "Selecione a lista desejada"
escreve ""

@fixomenuloclista
menu executa $numloclista $letloclista $textloclista
se $letloclista = "#0#59"
dir troca ".."
chama @ajuda
dir troca "listas"
fim se

se $letloclista = "#13"
se $numloclista = 1 chama @novalista
se $numloclista = 1 menu termina
se $numloclista = 1 dir troca ".."
se $numloclista = 1 desvia @listasderadios

se $numloclista = 2 menu termina
se $numloclista = 2 dir troca ".."
se $numloclista = 2 chama @baixalista
se $numloclista = 2 desvia @listasderadios

se $numloclista > 2 chama @carregalista
se $numloclista > 2 menu termina
se $numloclista > 2 desvia @listasderadios
fim se

se $letloclista = "e"
se $numloclista > 2 chama @editalista
fim se

se $letloclista = "r"
se $numloclista > 2 chama @renomeialista
se $numloclista > 2 menu termina
se $numloclista > 2 dir troca ".."
se $numloclista > 2 desvia @listasderadios
fim se

se $letloclista = "a"
se $numloclista > 2 chama @apagalista
se $numloclista > 2 menu termina
se $numloclista > 2 dir troca ".."
se $numloclista > 2 desvia @listasderadios
fim se

se $letloclista = "#27"
dir troca ".."
 retorna
fim se
desvia @fixomenuloclista

*--*
@baixalista
Escreve "Aguarde"
seja $baseurllista "https://fabiano-ferreira.com/programas/radiovox/listas"
seja i "temp\index.html"
remove i &
trazdarede $baseurllista i 0 "" "radiovox" x

menu cria 1 1 60 80

abre #1 i
le #1 l
checa c
enquanto c = 0
se l *=* "data-sort="""
seja p pos "data-sort=""" l
soma p 11
seja t tamanho l
copia l l p t
seja p pos """" l
subtrai p 1
copia l l 1 p
substitui l "_" " "
utf8paraansi l
menu adiciona l
fim se
le #1 l
checa c
fim enquanto
fecha #1


@fixomenuindex
Escreve "Escolha a lista que deseja baixar e pressione enter."
menu executa $numindex $letindex $textindex

se $letindex = "#27" retorna
se $letindex = "#13" chama @acao_baixar_lista
desvia @fixomenuindex

*--*
@acao_baixar_lista
seja $urllista $baseurllista
seja $nomelistaabaixar $textindex
ansiparautf8 $nomelistaabaixar
http $nomelistaabaixar

concatena $urllista "/"
seja $nomelistaabaixar maiusc $nomelistaabaixar
concatena $urllista $nomelistaabaixar
dir troca "listas"

busca b $textindex
se b <> ""
 escreve "Já existe uma lista com este nome."
 escreve "Deseja substituir?"
le mudo s &
se s = "n" chama @preservalistalocal

se $textindex = "" retorna
fim se

Escreve "Baixando lista"
trazdarede $urllista $textindex 0 "" "radiovox" x

escreve "Lista baixada."
dir troca ".."
retorna

*--*
@preservalistalocal
escreve "Informe um novo nome para a lista:"
le edita $textindex
retorna


*--*
@editalista
escreve "Abrindo lista para edição"

seja $edlista "c:\winvox\edivox.exe """
concatena $edlista $textloclista
concatena $edlista """"
executa $edlista
retorna

*--*
@renomeialista
Escreve "Informe o novo nome da lista "$textloclista":"
le $novonomelista
se $novonomelista = "" retorna

renomeia $textloclista $novonomelista

Escreve "Nome mudado."
retorna

*--*
@apagalista
Escreve "Confirma exclusão da lista "$textloclista"?"
escreve "Isto apagará a lista com todas as rádios nela incluída."

le $confirmadellista &
se $confirmadellista = "s"
remove $textloclista
escreve "Lista apagada."
senão
se $confirmadellista = "n"
*não faz nada
senão
desvia @apagalista
fim se
retorna

*--*
@novalista
Escreve ""
Escreve "Nova lista."
@informenomelista
Escreve "Informe o nome da lista a ser criada"
le $nomelista

se $nomelista = "" retorna

busca b $nomelista
se b <> ""
escreve "Já existe uma lista com esse nome."
escreve "Você deve escolher outro nome ou apagar a lista existente primeiro."
desvia @informenomelista
fim se

abre #1 $nomelista &
fecha #1
busca b $nomelista
se b <> ""
escreve "Lista criada com sucesso!"
senão
Escreve "Erro. Houve algum problema e a lista não foi criada."
fim se
retorna

*--*
@carregalista
seja $listaderadios "temp\radios.lst"
seja $arquivolistalocal "listas\"
concatena $arquivolistalocal $textloclista
dir troca ".."
remove $listaderadios &

replica $arquivolistalocal $listaderadios

seja $numpagatual 0
seja $ultimapagina 0
seja $listalocal 1
chama @exiberesultbusca
retorna

*--*
@finaliza
Escreve "Deseja sair?"
le mudo o &
se o = "s"
Escreve "Até logo!"
termina mudo
senão
Se o = "n"
retorna
senão
Desvia @finaliza
fim se

*****************************
*Funções auxiliares
*****************************

*--*
@obtemfonteradio

seja $tempradio "temp\fonteradio.tmp"
abre #1 $listaderadios
seja x $numradioselec
multiplica x 2
repete r x
le #1 l
fim repete
fecha #1
se $listalocal = 1
se l =* "EXT:" seja $encontroufonte 0
se não l =* "EXT:" seja $encontroufonte 1
se l =* "EXT:" copia l 4 999999

seja $fonteradio l
retorna
fim se

seja p pos "/" l
enquanto p > 0
soma p 1
seja t tamanho l
copia l l p t
seja p pos "/" l
fim enquanto

seja $linkradio "http://play.radios.com.br/"
concatena $linkradio l

remove $tempradio &
trazdarede $linkradio $tempradio 0 "" "webvox" x

abre #1 $tempradio
le #1 $fonteradio
checa c
enquanto c = 0
se  $fonteradio *=* "src:  """ desvia @extraifonteradio
se $fonteradio *=* "player-audio-external""" desvia @extraifonteradio
le #1 $fonteradio
checa c
fim enquanto
@extraifonteradio
fecha #1

seja p pos "src:  """ $fonteradio
se p = 0
seja $encontroufonte 0
seja p pos "player-audio-external""" $fonteradio
soma p 29
senão
seja $encontroufonte 1

soma p 7
fim se

seja t tamanho $fonteradio
copia $fonteradio $fonteradio p t
seja p pos """" $fonteradio
subtrai p 1
copia $fonteradio $fonteradio 1 p
retorna

*--*
@ajuda
seja $tagajuda "@"
seja $arqajuda "radiovox.ajd"
abre #1 $arqajuda
concatena $tagajuda $idtela
le #1 l
enquanto l <> $tagajuda
le #1 l
fim enquanto

le #1 l
enquanto l <> "--"
escreve l
le #1 l
fim enquanto
fecha #1
retorna
*--*
*---------------------------------------*
@rnews
seja $idtela 5
seja $numpagatualnews 1
Escreve "Carregando página de notícias, aguarde"
chama @carregapagnoticias
chama @preparalistanoticias
@prog_ativo
chama @criaemostralistanoticias
retorna

@carregapagnoticias
seja w "wget-log"
seja $baseurl "https://tudoradio.com/noticias"
seja $url $baseurl
concatena $url "/index/page:"
concatena $url $numpagatualnews
seja $nomearq "temp\radio.html"

remove $nomearq &

remove w &

seja $trazdarede "wget -b -O """
concatena $trazdarede $nomearq
concatena $trazdarede """ "
concatena $trazdarede $url

executa $trazdarede &&
existeprog "wget.exe" $chk
enquanto $chk = 1
espera ms 500
existeprog "wget.exe" $chk
fim enquanto
retorna

@preparalistanoticias
seja a "temp\noticia.tmp"
remove a &
abre #2 a &

*Busca o número total de páginas;
abre #1 $nomearq
le #1 l
checa c
enquanto c = 0
se l = "<div class=""paginas"">" chama @extraipagtotal
*Obtem os títulos e links das notícias;
se  l *=* "a href=""/noticias/ver/" chama @extraititlinknoticia
le #1 l
checa c
fim enquanto
fecha #2
fecha #1
retorna

@criaemostralistanoticias
seja $numeronews 1
menu cria 1 1 60 40
abre #1 a
*Monta a lista com os títulos das notícias
le #1 l
checa c
enquanto c = 0
menu adiciona l
le #1 l
le #1 l
checa c
fim enquanto
fecha #1

Escreve "Ok!"
escreve ""
Escreve "Página "$numpagatualnews" de "$numpagtotal
escreve ""
@fixomenunoticia
menu executa $numeronews $letranews $textonews

se $letranews = "#13" chama @lenoticia
se $letranews = "#9"
se $numpagatualnews = $numpagtotal desvia @fixomenunoticia
chama @proxpagnoticias
desvia @criaemostralistanoticias
fim se

se $letranews = "#8"
se $numpagatualnews = 1 desvia @fixomenunoticia
 chama @antpagnoticias
desvia @criaemostralistanoticias
fim se

se $letranews = "#0#59" chama @ajuda
se $letranews = "#27" retorna
desvia @fixomenunoticia

@extraipagtotal
le #1 l
seja p pos " de " l
soma p 4
seja t tamanho l
copia l l p t
seja p pos " " l
subtrai p 1
copia l l 1 p
seja $numpagtotal l
retorna

@proxpagnoticias
soma $numpagatualnews 1
menu termina
chama @carregapagnoticias
chama @preparalistanoticias
retorna

@antpagnoticias
subtrai $numpagatualnews 1
menu termina
chama @carregapagnoticias
chama @preparalistanoticias
retorna

@extraititlinknoticia
seja p pos "a href=""/noticias/ver/" l
soma p 8
seja t tamanho l
copia l l p t
seja p pos """" l
subtrai p 1
copia l l 1 p
seja $urlnoticia "https://tudoradio.com"
concatena $urlnoticia l
le #1 l
seja p pos " - " l
soma p 3
seja t tamanho l
copia l l p t
seja p pos "</a>" l
subtrai p 1
copia l l 1 p
seja $titulonoticia l
utf8paraansi $titulonoticia
escreve #2 $titulonoticia
escreve #2 $urlnoticia
retorna

@lenoticia
Escreve ""
Escreve "Carregando notícia, aguarde."
abre #1 a
seja n ($numeronews*2)
repete r n
le #1 $urlnoticia
fim repete
fecha #1
seja $arqnoticia "temp\lernoticia.tmp"
remove $arqnoticia &

trazdarede $urlnoticia $arqnoticia 0 "" "webvox" x

abre #1 $arqnoticia
le #1 l
enquanto não  l *=* "<p class=""data"">"
le #1 l
fim enquanto
 chama @convertenoticia
fecha #1

seja $abrearqnoticia "c:\winvox\edivox.exe /L "
concatena $abrearqnoticia $txtnoticia
executa $abrearqnoticia
retorna

@convertenoticia
seja $txtnoticia "temp\txtnoticia"
remove $txtnoticia &
abre #2 $txtnoticia &
le #1 l
seja p pos "<" l
subtrai p 1
copia l l 1 p
chama @subscaracs
escreve #2 l
escreve #2 ""
le #1 l
seja p pos ">" l
soma p 1
seja t tamanho l
copia l l p t
seja p pos "<" l
subtrai p 1
copia l l 1 p
utf8paraansi l
escreve #2 l

repete r 3
le #1 l
fim repete

chama @convertelinhaeescreve

enquanto não l *=* "pubinternanoticia"
le #1 l
fim enquanto

repete r 2
le #1 l
fim repete

chama @convertelinhaeescreve
repete r 2
le #1 l
fim repete
enquanto não l =* "<font style=""color: #044074;font: bold 11px Arial,Helvetica,sans-serif"">"
chama @convertelinhaeescreve
le #1 l
fim enquanto

chama @escreveinfoautorefonte
fecha #2
retorna

@convertelinhaeescreve
seja s ""
se l =* "<p>"
escreve #2 ""
senão
se l =* "<p style="
seja p pos "src=" l
soma p 5
seja t tamanho l
copia l l p t
seja p pos """" l
subtrai p 1
copia l l 1 p
seja s l
le #1 l
chama @subscaracs
fim se
chama @subscaracs

enquanto l *=* "<a href="
seja p pos "<a href=" l
subtrai p 1
copia $linha_antes l 1 p
soma p 10
seja t tamanho l
copia $hiperlink l p t
copia l l p t
seja p pos """" $hiperlink
subtrai p 1
copia $hiperlink $hiperlink 1 p

seja p pos """>" l
soma p 2
seja t tamanho l
copia $linha_depois l p t
copia l l p t

seja p pos "<" $linha_depois
subtrai p 1
copia $linha_depois $linha_depois 1 p

seja p pos "</a>" l
soma p 4
seja t tamanho l
copia l  l p t

seja $linha_antes trim $linha_antes
seja $linha_depois trim $linha_depois
seja l trim l
se $linha_depois = $hiperlink
escreve #2 $linha_antes" "$linha_depois&
senão
escreve #2 $linha_antes" " $linha_depois" ["$hiperlink"]"&
fim se

se não  l *=* "<a href="
escreve #2 l
seja l ""
fim se
fim enquanto
se l <> "" escreve #2 l
se s <> "" escreve #2 s
retorna

@escreveinfoautorefonte
escreve #2 "------------------------------"
Escreve #2 "Esta matéria foi extraída do portal tudoradio.com e convertida para texto automaticamente pelo programa Radiovox."
Escreve #2 ""
Escreve #2 "O Radiovox foi escrito por Fabiano Ferreira (fabiano-ferreira[arroba]fabiano-ferreira[ponto]com)"
Escreve #2 "Este programa pode ser baixado gratuitamente em https://fabiano-ferreira.com/programas"
Escreve #2 "Este programa foi feito para funcionar com o Sistema Dosvox, uma ferramenta de acessibilidade para pessoas cegas e com baixa visão."
escreve #2 ""
Escreve #2 "Fonte da matéria: "$urlnoticia
Escreve #2 ""
escreve #2 "Todos os direitos são reservados ao Portal tudoradio.com, conforme a lei nº 9.610/98."
escreve #2 " A publicação, redistribuição, transmissão e reescrita são permitidas, desde que contenham os devidos créditos ao Portal tudoradio.com."
escreve #2 ""

enquanto não l = "<span class=""tit"">"
le #1 l
fim enquanto
le #1 l
seja p pos "<" l
subtrai p 1
copia l l 1 p
utf8paraansi l
seja l trim l
escreve #2 "Autor: "l
escreve #2 ""

se l = "Redação tudoradio.com"
seja x 2
senão
seja x 3
fim se
repete r x
le #1 l
fim repete
utf8paraansi l
chama @convertelinhaeescreve
retorna

@subscaracs
substitui l "&aacute;" "á"
substitui l "&eacute;" "é"
substitui l "&iacute;" "í"
substitui l "&oacute;" "ó"
substitui l "&uacute;" "ú"
substitui l "&atilde;" "ã"
substitui l "&otilde;" "õ"
substitui l "&acirc;" "â"
substitui l "&ecirc;" "ê"
substitui l "&ocirc;" "ô"
substitui l "&ccedil;" "ç"
substitui l "&agrave;" "à"

substitui l "&Aacute;" "Á"
substitui l "&Eacute;" "É"
substitui l "&Iacute;" "Í"
substitui l "&Oacute;" "Ó"
substitui l "&Uacute;" "Ú"
substitui l "&Atilde;" "Ã"
substitui l "&Otilde;" "Õ"
substitui l "&Acirc;" "Â"
substitui l "&Ecirc;" "Ê"
substitui l "&Ocirc;" "Ô"
substitui l "&Ccedil;" "Ç"
substitui l "&Agrave;" "À"

substitui l "&ordm;" "º"
substitui l "&ndash;" "-"
substitui l "&gt;" ">"
substitui l "&ldquo;" """"
substitui l "&rdquo;" """"
substitui l "&quot;" """"

substitui l "<small>" ""
substitui l "</small>" ""
substitui l "<p>" ""
substitui l "</p>" ""
substitui l "<strong>" ""
substitui l "</strong>" ""
substitui l "<span>" ""
substitui l "</span>" ""
substitui l "<div>" ""
substitui l "</div>" ""

substitui l "&nbsp;" " "
substitui l "<em>" ""
substitui l "</em>" ""
substitui l "<br />" ""
retorna

@subscaracinvalidos
substitui $nomeradiomp3 ":" " -"
substitui $nomeradiomp3 "?" " "
substitui $nomeradiomp3 "/" " -"
substitui $nomeradiomp3 "<" " "
substitui $nomeradiomp3 ">" " "
substitui $nomeradiomp3 "|" " "
substitui $nomeradiomp3 """" " -"
substitui $nomeradiomp3 "*" ""
retorna
