26 novembro 2006

Instalando o TVxb no KnoppMyth

Um problema que sempre ataca brasileiros que tentam montar um PVR (usando ou não o KnoppMyth) ou simplesmente utilizar um guia eletrônico de programação de TV em seus PCs é descobrir de onde tirar os dados dos programas que são exibidos pelas emissoras.

O projeto xmltv tem, dentre seus inúmeros scripts, dois ou três grabbers para os canais brasileiros de TV. Porém a estabilidade dessas ferramentas deixa muito a desejar, e um sistema pode perder sua funcionalidade de uma hora para outra. Isto ocorre devido à própria natureza dos grabbers.

Um grabber é um programa que baixa o texto de uma página html e, baseado em um lay-out conhecido, "interpreta" seu conteúdo, extraindo as informações que queremos dela. Como exitem alguns sites brasileiros que publicam a programação de quase todos os canais de TV exibidos no país, o autor do grabber escolhe um deles e faz um programa que entende como o site está organizado, buscando as informações necessárias à compilação de um guia personalizado pelo usuário.

O problema ocorre quando o site decide mudar de lay-out, seja por qual motivo for. O grabber simplesmente "quebra", parando de funcionar. Ele deixa de encontrar as informações nos lugares esperados, e não consegue se adaptar sozinho ao novo lay-out.

Daí temos que tomar alguma ação, que pode ir desde "colocar a mão na massa" e "consertar" o grabber (readaptá-lo ao site), até ficarmos sentados esperando que o autor (ou outra pessoa) faça isso e lance uma nova versão.

Para minimizar esse problema, um desenvolvedor chamado Bill Dickens criou o TVxb, um grabber configurável através de arquivos .ini. Assim, ao invés de ter as informações sobre o lay-out das páginas html fixas no código do grabber (como ocorre nos scripts do projeto xmltv), o mesmo grabber pode baixar informações de vários sites e pode ser usado em vários países através de alterações num (quase) simples arquivo de configurações. Uma idéia genial, sem dúvida.

O grande problema do TVxb, ao menos para nós, é que ele só possui versão para Windows. No entanto, como a comunidade não pára, através do projeto wine podemos executar o TVxb no KnoppMyth sem nenhum problema. Mas, antes do caminho das pedras, vamos falar sobre ética:

Quando uma empresa (ou pessoa) decide criar um site contendo a programação de todos os canais de TV de um país, com certeza espera ganhar alguma coisa com isso. Alguns vendem o conteúdo a outras empresas, outros colocam banners nas páginas para terem o retorno do investimento e do trabalho que têm ao reunir essas informações.

Ao criar um grabber que visite de forma invisível ao usuário um site desses, o desenvolvedor e o usuário estão utlizando as informações de uma forma que não era exatamente aquela que o criador do site imaginou. Não existe retorno nenhum para o site e, em alguns casos, o consumo de banda aumenta tanto que o usuário do grabber acaba dando prejuízo real ao site.

É como se o usuário do grabber fosse um "parasita" sugando as informações do site de uma forma indesejada. E, como sabemos das aulas de biologia, se o parasita matar o hospedeiro, acabará morrendo também.

Portanto, se quiserem usar um grabber (não importa qual seja), criem uma relação de simbiose "saudável" com o hospedeiro: descubram de qual site o grabber busca as informações e façam visitas regulares a ele. Cliquem em alguns banners publicitários. Assinem a newsletter do site. Visitem e escrevam no fórum. Ou seja, mantenham o site "vivo". Do contrário, ficaremos sem grade de programação do mesmo jeito.

Agora, o tutorial, que é baseado num artigo escrito pelo mac no fórum do KnoppMyth. Eu fiz algumas modificações no script, mas a base é a mesma:

  1. Baixe o arquivo zipado da página de downloads do TVxb;
  2. Crie uma pasta chamada TVxb sob /home/mythtv;
  3. Descompacte o conteúdo do arquivo nessa pasta;
  4. Baixe o arquivo de configuração e salve-o como TVxb.ini na pasta ini que fica debaixo da TVxb;
  5. Edite o arquivo de cofiguração, transformando em comentários ("!" no início da linha) os comandos referentes aos canais dos quais você não quer obter informações. Sugiro que você estude a documentação do TVxb para adaptar o arquivo às suas necessidades;
  6. como root, dê os comandos "apt-get install sysutils" e "apt-get install wine";
  7. Usando o mythtv-setup (alt-s), inclua os canais no Mythtv (channel editor). Atenção para o campo XMLTV ID, que deve conter exatamente o mesmo conteúdo do código que aparece entre colchetes ("[" e "]") no arquivo .ini. É através desse código que o mythfilldatabase fará a correspondência entre o conteúdo do arquivo xmltv e os canais do banco de dados do Mythtv;
  8. Copie o script abaixo criando o arquivo grabber.sh na pasta TVxb (atenção às quebras de linha). Torne o arquivo executável com "chmod +x grabber.sh". Verifique, na última linha, se os parâmetros passados ao mythfilldatabase estão de acordo com sua instalação. "1" significa a primeira fonte de sinal. Verifique pelo mythweb (a partir de outra máquina), se está correto.
#!/bin/bash
find /home/mythtv/TVxb/html -type f -mtime +7 -exec rm "{}" ";"
cd /home/mythtv/TVxb/bin
mv -f /home/mythtv/TVxb/bin/xmltv.xml /home/mythtv/TVxb/bin/xmltv.xml.old
rm /home/mythtv/TVxb/listings.xml
export DISPLAY=:0.0
wine TVxb.exe > /home/mythtv/TVxb/log/wine-output 2>&1
sleep 2
dos2unix /home/mythtv/TVxb/bin/xmltv.xml
cat /home/mythtv/TVxb/bin/xmltv.xml | sed s/\ +0000//g > /home/mythtv/TVxb/listings.xml
mythfilldatabase --file 1 -1 /home/mythtv/TVxb/listings.xml --update > /home/mythtv/TVxb/filldb-output 2>&1

Desta forma, se tudo estiver ok, ao executar /home/mythtv/TVxb/grabber.sh você verá uma janela com a log do TVxb e, quando ela se fechar, a grade de programação será importada para o Mythtv. Se algo não der certo, verifique as logs do sistema (e os arquivos criados com o desvio de saída padrão ">" no script) para saber o que ocorre.

No meu PVR, eu coloquei esse comando na crontab do usuário mythtv com freqüência diária. No mesmo horário, criei uma janela no MythWelcome para que a máqina seja ligada automaticamente pouco antes do início da execução do grabber e desligue-se uma hora depois. Assim eu garanto que a grade de programação está atualizada e não perco os programas que gosto de assistir, mesmo que eu não esteja em casa no horário em que são exibidos.

E essa liberdade é ótima. Seja livre você também!

9 comentários:

Anônimo disse...

Eu montei um PVR semelhante usando Windows XP, com uma placa pixelview Play-TV pro Ultra. O software eh o GB-PVR e tem funcionalidades semelhantes ao Myth.

O tvxb funciona muito bem (e rapido) com as listas do www.2jovem.com.

Vc sabe de algum "lugar" ou site que venda um IR-Blaster. Eh so o que falta para completar o meu PVR.

Talvez ateh algum programa que consiga mudar os canais da Sky pela porta serial que tem na traseira do recptor, ja vi coisa semelhante mas para os decodificadores da DirecTV americana.

Davi Dalben disse...

Não, marcelo. Não sei onde tem um à venda. Mas vá em http://www.lirc.org e baixe os diagramas dos ir-blasters que tem lá. O mais simples deles deve funcionar bem e qualquer amigo que entenda o básico de eletrônica será capaz de montá-lo para você.

Wendel Scardua disse...

eu não tive muita sorte com o tvxb ...

Não seria possível você (ou qualquer outra pessoa que tenha sempre um xml ok) colocá-lo disponível para que os outros baixem ?

Davi Dalben disse...

Wendel,

Tem alguns xmls disponíveis no site do TVxb, em "Country .ini files". O que eu uso está em http://www.tvxb.com/country/Brazil/TVxb-uol.ini. Boa sorte!

Anônimo disse...

Não me referia aos arquivos .ini - me referia aos xml gerados. Dado que uma pessoa consiga gerar o xml usando o tvxb, ela poderia deixá-lo disponível para as outras pessoas :-)

Davi Dalben disse...

Wendel,

A saída a ser gerada pelo TBxb só será realmente útil se nela estiverem todos os canais que você recebe em sua casa, e somente eles.

A meu ver, não seria produtivo gerar um xmltv de todos os canais existentes no país nem de qualquer subconjunto aleatório deles. O arquivo tem que ser personalizado para cada usuário.

Dessa forma, acho melhor que qualquer interessado instale o TVxb e baixe o arquivo .ini do site, personalizando-o de acordo com suas necessidades.

Um abraço!

Anônimo disse...

Terminei de escrever um grabber que puxa os dados do site www.tvplus.com.br. Está lento, leva 1 hora p/ baixar os canais da TVA, mas traz todos os dados disponíveis no site.

Ainda não submeti ao pessoal do XMLTV, mas se tiver interesse de testar me dê um toque.

Ceilo Croiss disse...

Davi está ocorrendo um erro quando tento rodar o comando $sudo ./grabber.sh .
---------------
:2009/05/20: [REC] : 0 shows processed
Downloading this page again...
:2009/05/20: [REC] : 0 shows processed
WARNING: No shows loaded for [REC]
------------------------------------------------------
Analyzing page to identify valid times, titles, and descriptions
Failed to understand schedule format
ERROR: Giving up on [REC]


O que pode ser ?

Davi Dalben disse...

Célio,

Eu não uso mais o TVxb há bastante tempo. Estou baixando o arquivo gerado pela Revista Eletronica. Cadastre-se no site e receba-o por e-mail. Funciona muito bem no KnoppMyth.