seja $versao "8.1"

seja $nomecanais "c:\vox-tv\canais"
chama @inicio
@0
se $ultimalista = ""

chama @telaprincipal
senão
chama @carregalista
se $lista_encontrada = 0 desvia @menulistas
se $erro_no_arquivo_lista = 1 desvia @menulistas
se $porgrupo = 1 chama @telagrupos
se $porgrupo = 0 seja $numerocanal 1
se $porgrupo = 0 chama @telacanais
seja $ultimalista ""
chama @telaprincipal
fim se
chama @fim
se $confirmafim = "n" desvia @0
*

*Carrega configurações
@carregaconfiguracoes
seja $cfg "c:\vox-tv\vox-tv.cfg"
busca b $cfg
se b = ""
seja $ultimalista ""
seja $player  "c:\vox-tv\mplayer\mplayer.exe"
seja $upauto 1
seja $porgrupo 1
seja $RIPDIR "c:\vox-tv\downloads"
senão
chama @cfg_carregarultimalista
chama @cfg_player
chama @cfg_atualizarlista
chama @cfg_porgrupo
chama @cfg_ripdir
fim se
*

@cfg_carregarultimalista
abre #1 $cfg
le #1 $ultimalista
checa c
enquanto c = 0
copia z $ultimalista 1 7
seja z maiusc z
se z = "LSTURL=" desvia @achouultimalista
le #1 $ultimalista
checa c
fim enquanto
@achouultimalista
fecha #1
se c = 1
seja $ultimalista ""
senão
seja t tamanho $ultimalista
copia $ultimalista $ultimalista 8 t
seja p pos "@" $ultimalista
soma p 1
copia $ultimalista $ultimalista p t
fim se
retorna

@cfg_player
abre #1 $cfg
le #1 $player
checa c
enquanto c = 0
copia z $player 1 7
seja z maiusc z
se z = "PLAYER=" desvia @achouplayer
le #1 $player
checa c
fim enquanto
@achouplayer
fecha #1
se c = 1
seja $player "*"
senão
seja t tamanho $player
copia $player $player 8 t
seja p pos "@" $player
soma p 1
copia $player $player p t
fim se
retorna

@cfg_atualizarlista
abre #1 $cfg
le #1 $upauto
checa c
enquanto c = 0
copia z $upauto 1 7
seja z maiusc z
se z = "UPAUTO=" desvia @achouupauto
le #1 $upauto
checa c
fim enquanto
@achouupauto
fecha #1
se c = 1
seja $upauto 0
senão
seja t tamanho $upauto
copia $upauto $upauto 8 t
seja p pos "@" $upauto
soma p 1
copia $upauto $upauto p t
fim se
retorna

@cfg_porgrupo
abre #1 $cfg
le #1 $porgrupo
checa c
enquanto c = 0
copia z $porgrupo 1 9
seja z maiusc z
se z = "PORGRUPO=" desvia @achouporgrupo
le #1 $porgrupo
checa c
fim enquanto
@achouporgrupo
fecha #1
se c = 1
seja $porgrupo 1
senão
seja t tamanho $porgrupo
copia $porgrupo $porgrupo 9 t
seja p pos "@" $porgrupo
soma p 1
copia $porgrupo $porgrupo p t
fim se
retorna

@cfg_ripdir
abre #1 $cfg
le #1 $ripdir
checa c
enquanto c = 0
copia z $ripdir 1 7
seja z maiusc z
se z = "RIPDIR=" desvia @achouripdir
le #1 $ripdir
checa c
fim enquanto
@achouripdir
fecha #1
se c = 1
seja $ripdir "c:\vox-tv\downloads"
senão
seja t tamanho $ripdir
copia $ripdir $ripdir 7 t
seja p pos "@" $ripdir
soma p 1
copia $ripdir $ripdir p t
fim se
retorna

*

@inicio
Escreve "Vox-tv - versão "$versao
escreve ""
tela limpa
chama @carregaconfiguracoes
retorna

*
@telaprincipal
remove $nomecanais &
escreve "Menu principal."
escreve ""
escreve "Escolha sua opção:"
escreve ""
menu cria 1 1 30 3
menu adiciona "Listas de canais"
menu adiciona "Configurações"
menu adiciona "Sair"

@fixotelaprincipal
menu executa $numeroprincipal $letraprincipal $textoprincipal
se $letraprincipal = "#13"
menu termina
se $numeroprincipal = 1 chama @menulistas
se $numeroprincipal = 2 chama @menuconfiguracoes
se $numeroprincipal = 3 retorna
senão
se $letraprincipal = "#27"
menu termina
retorna
fim se
desvia @telaprincipal
*

@menulistas
chama @cfg_player
chama @cfg_atualizarlista
chama @cfg_porgrupo
seja $ultimalista ""
seja $tentatrazerlista 0
seja $numerogrupo 1
remove $nomecanais &

escreve "Menu listas de canais."
escreve ""
escreve "Selecione com setas"
menu cria 1 1 80 80
menu adiciona "Adicionar nova lista"
menu adiciona "Remover lista"
chama @obtemnomelistas

@fixomenulistas
menu executa $numerolista $letralista $textolista
se $letralista = "#13"
menu termina
se $numerolista = 1 chama @novalista
se $numerolista = 1 desvia @menulistas
se $numerolista = 2 chama @apagalista
se $numerolista = 2 desvia @menulistas

chama @carregalista
se $lista_encontrada = 0 desvia @menulistas
se $erro_no_arquivo_lista = 1 desvia @menulistas
se $porgrupo = 1 chama @telagrupos
se $porgrupo = 0 chama @telacanais
senão
se $letralista = "#27"
menu termina
 retorna
fim se
menu termina
desvia @menulistas
*

@novalista
escreve "Informe um nome para a lista"
le $nomelista
se $nomelista = "" retorna
escreve "Informe a url ou o caminho do arquivo da  lista:"
le $caminholista
se $caminholista = "" retorna

abre #1 $arqlista &
escreve #1 $nomelista &
escreve #1 "="&
escreve #1 $caminholista
fecha #1
escreve "Lista adicionada"


retorna

@apagalista
menu cria 1 1 30 50
chama @obtemnomelistas
Escreve "Selecione a lista a apagar"
@fixomenuapagalista
menu executa $numlistaremove $letralistaremove $textolistaremove
se $letralistaremove = "#13" chama @acaoapagarlista
se $letralistaremove = "#27" retorna
desvia @apagalista

@acaoapagarlista
seja $copialista "copia-lista.vtv"
@confirmaapagarlista
escreve "Confirma a remoção de "$textolistaremove"?"
le mudo  $opcaoremovelista &
se $opcaoremovelista = "n"
 retorna
senão
se $opcaoremovelista = "s"
remove $copialista &
abre #1 $copialista &
abre #2 $arqlista
le #2 l
checa c
enquanto c = 0
se não l *=* $textolistaremove escreve #1 l
le #2 l
checa c
fim enquanto
fecha #2
fecha #1
remove $arqlista
renomeia $copialista $arqlista
escreve "Lista apagada."
se $numlistaremove <> 0 subtrai $numlistaremove 1
retorna
senão
desvia @confirmaapagarlista
fim se
*

@menuconfiguracoes
seja $linhaconfig 0
abre #1 $cfg
menu cria 1 1 60 30
le #1 l
checa c
enquanto c = 0
soma $linhaconfig 1
seja p pos "=" l
se p > 0 chama @montaformconfig
le #1 l
checa c
fim enquanto
fecha #1

Escreve "Configurações."
escreve ""
escreve "Use as setas para navegar. Tecle enter para alterar valores."
@fixomenuconfig
menu executa $numeromenuconfig $letramenuconfig $textomenuconfig
se $letramenuconfig = "#13"
 chama @alteraitemconfig
desvia @menuconfiguracoes
fim se
se $letramenuconfig = "#27" retorna
desvia @fixomenuconfig

@montaformconfig
*pegando texto que aparece para o usuário
seja p pos "|" l
se p = 0 seja p pos "@" l
subtrai p 1
seja t pos "=" l
soma t 1
copia $textomenuconfig l t p
chama @obtemvalorconfig
concatena $textomenuconfig ": "
se $valor = 0 substitui $valor "0" "NÃO"
se $valor = 1 substitui $valor "1" "SIM"
se $valor = "" substitui $valor "" "em branco"

concatena $textomenuconfig $valor
menu adiciona $textomenuconfig
retorna

*pegando valor do ítem
@obtemvalorconfig
abre #2 $cfg
repete r $linhaconfig

le #2 l
fim repete
fecha #2

seja p pos "@" l
soma p 1
seja t tamanho l
copia $valor l p t
retorna

@alteraitemconfig
*pegando a chave
abre #1 $cfg
repete r $numeromenuconfig
le #1 l
fim repete
fecha #1
seja p pos "=" l
subtrai p 1
copia $chave l 1 p

*pegando valor do item
seja p pos "@" l
soma p 1
seja t tamanho l
copia $valor l p t

*pegando opções de múltipla escolha, se houver
seja $multiplaescolha ""
seja p pos "|" l
se p > 0
soma p 1
seja x tamanho l
copia $multiplaescolha l p x
seja p pos "@" $multiplaescolha
subtrai p 1
copia $multiplaescolha $multiplaescolha 1 p
fim se

se $multiplaescolha <> ""
menu termina
chama @menumultiplaescolha
seja $valor $textomultiplaescolha
seja $valor maiusc $valor
se $valor = "SIM" seja $valor 1
se $valor = "NÃO" seja $valor 0
chama @trocavalorconfig
senão
escreve "Edite o valor:"
fala $valor
le edita $valor
chama @trocavalorconfig
fim se
retorna

@menumultiplaescolha
seja $letramultiplaescolha ""
menu cria 1 1 20 10
seja p pos "|" $multiplaescolha
enquanto p > 0
subtrai p 1
copia x $multiplaescolha 1 p
menu adiciona x
soma p 2
seja t tamanho $multiplaescolha
copia $multiplaescolha $multiplaescolha p t
seja p pos "|" $multiplaescolha
fim enquanto
menu adiciona $multiplaescolha

escreve "Selecione: "
@fixomenumultiplaescolha
menu executa $numeromultiplaescolha $letramultiplaescolha $textomultiplaescolha
se $letramultiplaescolha = "#13"
menu termina
retorna
senão
se $letramultiplaescolha = "#27"
menu termina
 retorna
fim se
desvia @fixomenumultiplaescolha

@trocavalorconfig
se $letramultiplaescolha = "#27" retorna
seja $aprocurar $textomenuconfig
seja p pos ": " $aprocurar
subtrai p 1
copia $aprocurar $aprocurar 1 p

seja $cfgt "c:\vox-tv\troca-config"
remove $cfgt &
abre #1 $cfgt &
abre #2 $cfg
le #2 l
checa c
enquanto c = 0
se l *=* $aprocurar
seja p pos "@" l
copia l l 1 p
concatena l $valor
fim se
escreve #1 l
le #2 l
checa c
fim enquanto
fecha #2
fecha #1
remove $cfg
renomeia $cfgt $cfg
escreve "Valor alterado."
chama @carregaconfiguracoes
retorna

*
@obtemnomelistas
seja $existe_favoritos 0
seja $fav "c:\vox-tv\listas\favoritos"
busca b $fav
se b <> ""
 menu adiciona "Canais favoritos"
seja $existe_favoritos 1
fim se
seja $arqlista "c:\vox-tv\lista.vtv"

busca b $arqlista
se b = ""
abre #1 $arqlista &
fecha #1
fim se

abre #1 $arqlista
le #1 $entrada
checa c
enquanto c = 0
seja p pos "=" $entrada
subtrai p 1
copia $entrada $entrada 1 p
menu adiciona $entrada
le #1 $entrada
checa c
fim enquanto
fecha #1
retorna
*

@carregalista
soma $tentarazerlista 1
seja $lista_encontrada 1
seja $quantosgrupos 0
seja $arqlista "c:\vox-tv\lista.vtv"
abre #1 $arqlista
se $textolista = "Canais favoritos"
fecha #1
seja $arquivolista $fav
desvia @checa_lista
fim se

se $ultimalista = ""
se $existe_favoritos = 0 subtrai $numerolista 2
se $existe_favoritos = 1 subtrai $numerolista 3
repete r $numerolista
le #1 $entrada
fim repete
se $existe_favoritos = 0 soma $numerolista 2
se $existe_favoritos = 1 soma $numerolista 3
seja p pos "=" $entrada
soma p 1
copia $entrada $entrada p 999999
seja $arquivolista "c:\vox-tv\listas\"
concatena  $arquivolista $textolista
concatena $arquivolista ".tv"
senão
seja $entrada $ultimalista
le #1 $linha
checa w
enquanto w = 0
se $linha *=* $entrada desvia @paradeprocurarultimalista
le #1 $linha
checa w
fim enquanto
@paradeprocurarultimalista
se w = 1 escreve "Erro: a lista configurada para iniciar o vox-tv deve estar incluída no arquivo listas.vtv"
se w = 1 seja $lista_encontrada 0
se w = 1 retorna

seja p pos "=" $linha
subtrai p 1
copia $linha $linha 1 p
seja $arquivolista "c:\vox-tv\listas\"
concatena $arquivolista $linha
concatena $arquivolista ".tv"
fim se
fecha #1

se $upauto = 0 desvia @checa_lista

seja $listatemporaria "c:\vox-tv\listas\"
seja d data
concatena $listatemporaria d
concatena $listatemporaria "-"
seja h hora
concatena $listatemporaria h
concatena $listatemporaria ".tmp"
substitui $listatemporaria "/" "_"
substitui $listatemporaria ":" "_"
substitui $listatemporaria "_\" ":\"

se $entrada *=* "://"
seja $ua "M Util"
seja $trazdarede "c:\vox-tv\wget.exe --no-check-certificate --user-agent="
concatena $trazdarede """"
concatena $trazdarede $ua
concatena $trazdarede """ -O """
concatena $trazdarede $listatemporaria
concatena $trazdarede """ "
concatena $trazdarede $entrada
remove $listatemporaria &
escreve "Baixando lista"
executa $trazdarede &&
espera 2
existeprog "wget.exe" x
enquanto x = 1
espera ms 500
existeprog "wget.exe" x
fim enquanto
desvia @checa_lista_temp
senão
seja $arquivolista $entrada
fim se

@checa_lista
busca b $arquivolista
se b = ""
se $upauto = 1 escreve "Erro: não foi possível baixar esta lista."
se $upauto = 1 seja $lista_encontrada 0
se $upauto = 1 retorna
se $tentatrazerlista < 2 seja $upauto 1
se $tentatrazerlista < 2 desvia @carregalista

escreve "Erro: não foi possível baixar esta lista."
seja $lista_encontrada 0
retorna
fim se
desvia @continua_carrega_lista

@checa_lista_temp
busca b $listatemporaria
se b <> ""
tamarq $listatemporaria t
se t > 0remove $arquivolista &
se t > 0renomeia $listatemporaria $arquivolista
se t = 0 remove $listatemporaria &
se t = 0 seja $lista_encontrada 0
se t = 0 escreve "Erro: a lista veio vazia."
se t = 0 retorna
senão
seja $lista_encontrada 0
escreve "Erro: a lista não foi criada"
retorna
fim se
@continua_carrega_lista
abre #1 $arquivolista
escreve "Carregando lista"
seja $tipo_m3u_plus 1
seja $acumulador_grupos ""
seja $acumulador_canais ""
seja $acmurl ""
le #1 $linha
le #1 $linha
checa c
enquanto c = 0
se $linha = "" le #1 $linha
se não $linha =* "#" le #1 $linha

se $porgrupo = 1 chama @obtemnomegrupos
chama @obtemnomecanais
se $erro_no_arquivo_lista = 1
fecha #1
retorna
fim se
 toca "c:\vox-tv\som\carregando.wav"&
chama @insereurlcanais
le #1 $linha
checa c
fim enquanto
fecha #1
se $porgrupo = 1
escreve $quantosgrupos &
escreve "grupos."
fim se
retorna
*

@insereurlcanais
le #1 $linha
seja $nomecanal maiusc $nomecanal
concatena $acmurl $nomecanal
concatena $acmurl "ª"
concatena $acmurl $linha
concatena $acmurl "º"
retorna

@obtemnomegrupos
seja $erro_no_arquivo_lista 0
seja $nomegrupo $linha
seja p pos "group-title=" $nomegrupo
se p = 0
 seja $nomegrupo "Grupo sem nome"
senão
soma p 13
copia $nomegrupo $nomegrupo p 999999
seja p pos """" $nomegrupo
subtrai p 1
copia $nomegrupo $nomegrupo 1 p
fim se

se $nomegrupo = "" seja $nomegrupo "grupo sem nome"
seja $cpnomegrupo $nomegrupo
utf8paraansi $nomegrupo
se $nomegrupo = "" seja $nomegrupo $cpnomegrupo
substitui $nomegrupo "<" ""
substitui $nomegrupo ">" ""
substitui $nomegrupo "|" "-"
substitui $nomegrupo ":" ""
substitui $nomegrupo "\" ""
substitui $nomegrupo "/" ""
substitui $nomegrupo "?" ""

se não $acumulador_grupos *=* $nomegrupo
concatena $acumulador_grupos "<"
 concatena $acumulador_grupos $nomegrupo
concatena $acumulador_grupos ">"
soma $quantosgrupos 1
fim se
retorna

@obtemnomecanais
seja $erro_no_arquivo_lista 0
seja $nomecanal $linha
se $tipo_m3u_plus = 1
seja p pos """," $nomecanal
senão
seja p pos "," $nomecanal
fim se

se p = 0
le #1 $nomecanal
checa w
enquanto w = 0
se $tipo_m3u_plus = 1 seja p pos """," $nomecanal
se $tipo_m3u_plus = 0 seja p pos "," $nomecanal
se p > 0 desvia @acabouprocuralinhavalida
se w = 1 desvia @acabouprocuralinhavalida

le #1 $nomecanal
checa w
fim enquanto
@acabouprocuralinhavalida
se w = 1 escreve "Erro. Não foi possível carregar a lista."
se w = 1 escreve "Última linha lida:"
se w = 1 escreve $nomecanal
se w = 1 fecha #1
 se w = 1seja $erro_no_arquivo_lista 1
se w = 1retorna
fim se

se $tipo_m3u_plus = 1
soma p 2
senão
soma p 1
fim se
copia $nomecanal $nomecanal p 999999
substitui $nomecanal "<" ""
substitui $nomecanal ">" ""
substitui $nomecanal "|" "-"
substitui $nomecanal ":" ""
substitui $nomecanal "\" ""
substitui $nomecanal "/" ""
substitui $nomecanal "?" ""
seja $cpnomecanal $nomecanal
utf8paraansi $nomecanal
se $nomecanal = "" seja $nomecanal $cpnomecanal
*escreve #9 $nomecanal
concatena $acumulador_canais "<"
se $porgrupo = 0
concatena $acumulador_canais "--"
senão
concatena $acumulador_canais $nomegrupo
fim se
concatena $acumulador_canais ">"
substitui $nomecanal ">" ""
substitui $nomecanal "<" ""
substitui $nomecanal ":" ""
substitui $nomecanal "|" ""
concatena $acumulador_canais $nomecanal
*fecha #9
retorna
*

@telagrupos
seja $repor_canais 0
menu cria 1 1 80 80
seja $acumulador_grupos_aux $acumulador_grupos
seja p pos ">" $acumulador_grupos
enquanto p > 0
subtrai p 1
copia l $acumulador_grupos 2 p
menu adiciona l
soma p 2
copia $acumulador_grupos $acumulador_grupos p 999999

seja p pos ">" $acumulador_grupos
fim enquanto
toca "c:\vox-tv\som\carregou.wav"&

escreve "Menu de grupos de canais."
escreve ""
escreve "Selecione com setas"
@fixotelagrupos
menu executa $numerogrupo $letragrupo $textogrupo
se $letragrupo = "#13"
menu termina
se $removeu_canal = 1 chama @carregalista
toca "c:\vox-tv\som\entrou.wav"&
chama @telacanais
desvia @telagrupos
senão

se $letragrupo = "d"
menu termina
se $removeu_canal = 1 chama @carregalista
toca "c:\vox-tv\som\entrou.wav"&
chama @telacanais
desvia @telagrupos
senão
se $letragrupo = "c"
menu termina
chama @menuconfiguracoes
menu termina
seja $acumulador_grupos $acumulador_grupos_aux
desvia @telagrupos
senão
se $letragrupo = "p"
menu termina
chama @procurar
se $quantoscanais = 0 seja $acumulador_grupos $acumulador_grupos_aux
se $quantoscanais = 0 desvia @telagrupos
chama @fixotelacanais
desvia @telagrupos
fim se
se $letragrupo = "#27"
 retorna
fim se
desvia @fixotelagrupos
*

@telacanais
seja $listadelinks $ripdir
concatena $listadelinks "\"
concatena $listadelinks $textogrupo
concatena $listadelinks ".txt"
seja $removeu_canal 0
seja $repor_canais 0
seja $quantoscanais 0
seja $tentapegarurlcanal 0
se $letragrupo = "#13"
menu cria 1 1 80 80
senão
se $letragrupo = "d"
remove $listadelinks &
abre #1 $listadelinks &
fim se

seja $filtrocanal "<"
se $porgrupo = 1
concatena $filtrocanal $textogrupo
senão
concatena $filtrocanal "--"
fim se
concatena $filtrocanal ">"
*
seja $acumulador_canais_aux $acumulador_canais
seja t tamanho $filtrocanal
soma t 1
seja p pos $filtrocanal $acumulador_canais_aux
enquanto p > 0
seja u tamanho $acumulador_canais_aux
copia $acumulador_canais_aux $acumulador_canais_aux p u
copia $acumulador_canais_aux $acumulador_canais_aux t u
seja p pos "<" $acumulador_canais_aux
se p > 0
subtrai p 1
senão
seja p tamanho $acumulador_canais_aux
fim se
copia l $acumulador_canais_aux 1 p
se $letragrupo = "#13"
 menu adiciona l
senão
seja $textocanal l
chama @obtemurlcanal
escreve #1 $textocanal ".mp4"
escreve #1 $urlcanal
fim se
seja h hora
copia h h 8 8
 se h = 0 toca "c:\vox-tv\som\carregando.wav"&
soma $quantoscanais 1
seja t tamanho $acumulador_canais_aux
se t > p
soma p 1
copia $acumulador_canais_aux $acumulador_canais_aux p t
senão
seja $acumulador_canais_aux ""
fim se
seja t tamanho $filtrocanal
soma t 1
seja p pos $filtrocanal $acumulador_canais_aux
fim enquanto
se $letragrupo = "d"
fecha #1
escreve "Iniciando download de "$textogrupo
seja $cmdbaixa "c:\vox-tv\vtvrip - -d="
concatena $cmdbaixa $ripdir
concatena $cmdbaixa " -l="
concatena $cmdbaixa $listadelinks
executa $cmdbaixa

seja $numerocanal 1
seja $acumulador_grupos $acumulador_grupos_aux
toca "c:\vox-tv\som\saiu.wav"&

retorna
fim se

escreve $quantoscanais &
escreve " canais."
escreve ""

@fixotelacanais
escreve "Menu de seleção de canais"
escreve ""
escreve "Selecione com setas"
menu executa $numerocanal $letracanal $textocanal

se $letracanal = "#13" chama @assistir
se $letracanal = "f" chama @favoritar
se $letracanal = "p"
menu termina
 chama @procurar
se $quantoscanais = 0 desvia @telacanais
seja $repor_canais 1
desvia @fixotelacanais
fim se

se $letracanal = "r"
 chama @deletar
retorna
fim se
se $letracanal = "c"
menu termina
chama @menuconfiguracoes
menu termina
desvia @telacanais
fim se
se $letracanal = "#3"
chama @obtemurlcanal
transfere de $urlcanal
bipa 1
se $obteveurlcanal = 1 escreve "Url do canal copiada para a área de transferência"
fim se
se $letracanal = "#27"
menu termina
se $repor_canais = 1 escreve "Repondo canais"
se $repor_canais = 1 toca "c:\vox-tv\som\repor.wav"
se $repor_canais = 1 desvia @telacanais
seja $numerocanal 1
seja $acumulador_grupos $acumulador_grupos_aux
toca "c:\vox-tv\som\saiu.wav"&

retorna
fim se
desvia @fixotelacanais
*

@assistir
chama @obtemurlcanal
seja $vtvnoconsole 0
se $player = "*" desvia @controlaplayerinterno
seja $exibecanal $player
se $exibecanal *=* " --vtvnoconsole"
substitui $exibecanal " --vtvnoconsole" ""
seja $vtvnoconsole 1
fim se
se não $exibecanal *=* """"
seja $aspas """"
concatena $aspas $exibecanal
concatena $aspas """"
seja $exibecanal $aspas
fim se
concatena $exibecanal " "
concatena $exibecanal $urlcanal
se $vtvnoconsole = 1
executa $exibecanal &&
espera 5
captura ativa j
enquanto não j *=* "vox-tv"
espera 1
captura ativa j
fim enquanto
senão
executa $exibecanal
fim se
retorna
*

@favoritar
seja $inclui_cabecalho_m3u 0
seja $fav "c:\vox-tv\listas\favoritos"
chama @obtemurlcanal
busca b $fav
se b = "" seja $inclui_cabecalho_m3u 1
abre #1 $fav &
se $inclui_cabecalho_m3u = 1 escreve #1 "#EXTM3U"
escreve #1 "#EXTINF:-1,"&
escreve #1 $textocanal
escreve #1 $urlcanal
fecha #1
escreve "Canal incluído na lista de favoritos"
retorna
*

@procurar
escreve "Digite sua busca"
le $buscarpor
escreve "Aguarde"
seja $buscarpor maiusc $buscarpor
menu cria 1 1 80 80
seja $removeu_canal 0
seja $quantoscanais 0
busca b $nomecanais
se b = ""
abre #1 $nomecanais &
seja l $acumulador_canais
seja p pos ">" l
enquanto p > 0
soma p 1
seja t tamanho l
copia l l p t
seja p pos "<" l
subtrai p 1
copia m l 1 p
escreve #1 m
seja p pos ">" l
fim enquanto
fecha #1
fim se
abre #1 $nomecanais
le #1 m
checa c
enquanto c = 0
seja l maiusc m
se l *=* $buscarpor
menu adiciona m
soma $quantoscanais 1
fim se
le #1 m
checa c
fim enquanto
fecha #1
se $quantoscanais = 0
escreve "Nenhum resultado encontrado."
menu termina
retorna
fim se

escreve $quantoscanais &
escreve " canais."
escreve ""
seja $numerocanal 1
retorna

@deletar
escreve "Confirma a remoção do canal "$textocanal"?"
le mudo o &
se o = "n"
 retorna
senão
se o = "s"
desvia @removecanal
senão
desvia @deletar
fim se

@removecanal
seja $arquivolistatemp "c:\vox-tv\listas\ltemp"
abre #1 $arquivolista
abre #2 $arquivolistatemp &
le #1 l
escreve #2 l
le #1 l
checa c
enquanto c = 0
se l *=* $textocanal
le #1 l
le #1 l
fim se
escreve #2 l
le #1 l
checa c
fim enquanto
fecha #2
fecha #1
remove $arquivolista
renomeia $arquivolistatemp $arquivolista

seja $nomecanais2 "c:\vox-tv\canais2"
remove $nomecanais2 &

abre #1 $nomecanais
abre #2 $nomecanais2 &
le #1 l
checa c
enquanto c = 0
se l <> $textocanal escreve #2 l
le #1 l
checa c
fim enquanto
fecha #1
fecha #2
remove $nomecanais
renomeia $nomecanais2 $nomecanais

escreve "Canal removido"
seja $removeu_canal 1
retorna

@obtemurlcanal
seja $obteveurlcanal 0
seja $textocanal maiusc $textocanal
seja $posix pos $textocanal $acmurl
se $posix = 0
escreve "Erro - Não obteve a url do canal."
escreve "O nome deste canal não foi achado na lista de url."
retorna
fim se
seja $posiy tamanho $acmurl
copia $urlcanal $acmurl $posix $posiy
seja $posix pos "ª" $urlcanal
se $posix = 0
escreve "Erro: não obteve a url do canal."
escreve "Não achou o primeiro caracter separador de url."
retorna
fim se
soma $posix 1
seja $posiy pos "º" $urlcanal
se $posiy = 0
escreve "Erro: não obteve a url do canal."
escreve "Não achou o segundo caracter separador de url."
retorna
fim se
subtrai $posiy 1
copia $urlcanal $urlcanal $posix $posiy
seja $obteveurlcanal 1
retorna

@fim
Escreve "Deseja sair?"
le mudo $confirmafim &
se $confirmafim = "s"
escreve "Até logo."
termina mudo
senão
se $confirmafim = "n"
retorna
senão
desvia @fim
fim se

@controlaplayerinterno
seja $tocando 0
handle $handle
seja $cima "#0#72"
seja $baixo "#0#80"
seja $esquerda "#0#75"
seja $direita "#0#77"
seja $enter "#13"
seja $home "#0#71"
seja $end "#0#79"
seja $espaco " "
seja $esc "#27"
seja $f1 "#0#59"

chama @miniplay.cmd
se $tocando = 0 retorna
@comandosplayerinterno
le mudo $opcao &
se $opcao = $f1 chama @ajudaplayerinterno
se $opcao = $cima chama @aumentavolume
se $opcao = $baixo chama @abaixavolume
se $opcao = $esquerda chama @voltar
se $opcao = $direita chama @avancar
se $opcao = $home chama @inicmusica
se $opcao = $end chama @fimmusica
se $opcao = $espaco chama @playpause
*se $opcao = "d" chama @downloadrapido
se $opcao = "s" chama @coplinkstreaming
se $opcao = $esc
mci r "close musica"
retorna
fim se
desvia @comandosplayerinterno
*

@miniplay.cmd
seja $volumecentral 1000
seja $volumedireito 1000
seja $volumeesquerdo 1000

@inicia
seja $ouvindo a

seja $cmdmci "open ""mpegvideo!"
concatena $cmdmci $urlcanal
concatena $cmdmci """ alias musica"
mci r $cmdmci
se r <> 1
escreve "Não consegui carregar o conteúdo solicitado: " $urlcanal
retorna
fim se

*evita reproduzir vídeos em janela separada;
seja $mcijanela "window musica handle "
concatena $mcijanela $handle
mci w $mcijanela

mci $tocando "play musica"
seja $tocando 1
mci $tempomusica "status musica length"
retorna

@voltar
chama @vesetocando
se r = "" retorna
seja r maiusc r
mci $posmusica "status musica position"
se $posmusica > 5000
subtrai $posmusica 5000
senão
seja $posmusica 1
fim se
seja $voltamusica "seek musica to "
concatena $voltamusica $posmusica
mci r $voltamusica
mci $tocando "play musica"
seja $tocando 1
retorna

@avancar
chama @vesetocando
se r = "" retorna
mci $posmusica "status musica position"
soma $posmusica 5000
seja $avancamusica "seek musica to "
concatena $avancamusica $posmusica
mci r $avancamusica
mci $tocando "play musica"
seja $tocando 1
retorna

@parar
chama @vesetocando
se r = "" retorna
seja $tocando 0
mci $parado "stop musica"
seja $parado 1
retorna

@playpause
chama @vesetocando
se r = "" retorna
se $tocando = 1
 mci $posmusica "status musica position"
mci $pausado "pause musica"
seja $parado 0
seja $tocando 0
senão
seja $retoma "play musica"
se $parado = 1 seja $posmusica 1
se $posmusica > 0 concatena $retoma " from "
se $posmusica > 0 concatena $retoma $posmusica
mci r $retoma
seja $tocando 1
fim se
retorna

@aumentavolume
chama @vesetocando
se r = "" retorna
se $volumecentral < 1000
soma $volumecentral 20
soma $volumeesquerdo 20
soma $volumedireito 20
seja r "setaudio musica left volume to "
concatena r $volumeesquerdo
mci v r
seja r "setaudio musica right volume to "
concatena r $volumedireito
mci v r
fim se
retorna

@abaixavolume
chama @vesetocando
se r = "" retorna
se $volumecentral > 0
subtrai $volumecentral 20
subtrai $volumeesquerdo 20
subtrai $volumedireito 20
seja r "setaudio musica left volume to "
concatena r $volumeesquerdo
mci v r
seja r "setaudio musica right volume to "
concatena r $volumedireito
mci v r
fim se
retorna

@inicmusica
chama @vesetocando
se r = "" retorna
mci r "stop musica"
mci r "play musica from 1"
retorna

@fimmusica
chama @vesetocando
se r = "" retorna
seja $vaparafim $tempomusica
subtrai $vaparafim 4000
mci r "stop musica"
seja f "play musica from "
concatena f $vaparafim
mci r f
retorna

@ajudaplayerinterno
Escreve "Opções do player:"
Escreve "Espaço: play/pause."
Escreve "Seta esquerda: recuar 5 segundos."
Escreve "Seta direita: avançar 5 segundos."
escreve "Home: vai para o início"
escreve "end: vai para o fim"
*escreve "d: tenta fazer download do que você está assistindo"
escreve "s: copiar endereço do streaming para a área de transferência"
Escreve "F1: mostrar esta ajuda."
Escreve "Esc: terminar a execução."
retorna

@downloadrapido
escreve "Qual o nome do arquivo a gravar?"
le $nomearquivo
se $nomearquivo <> ""
toca "DoDoop9.wav"&
 trazdarede $urlcanal $nomearquivo 0 "" "scripvox" x

toca "msn_switching.wav"&
fim se
retorna

@coplinkstreaming
transfere de $urlcanal
escreve "Copiado para o clipboard"
retorna

@vesetocando
mci r "status musica mode"
retorna
