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!

07 novembro 2006

Usar máquina também para outras distros

Vou escrever uma nota rápida para acabar com uma confusão que existe entre Mythtv e KnoppMyth e o objetivo do KnoppMythBR:

  • Mythtv é um sistema desenvolvido para Linux que permite ao usuário de qualquer distribuição que já tenha uma placa de TV funcionando utilizar uma série de facilidades. Será necessário instalar o back-end e o front-end (que podem ficar em máquinas separadas, mas a configuração é mais complicada), além de várias dependências, como banco de dados, bibliotecas, etc...
  • KnoppMyth é uma distribuição baseada no Knoppix que foi masterizada para criar uma máquina dedicada ao Mythtv, seja como back-end, front-end ou os dois. Será necessário, após a instalação, configurar o sistema para reconhecer a placa de TV e baixar a programação dos canais, entre outras coisas.
O objetivo do KnoppMythBR é divulgar no Brasil o uso do KnoppMyth pois, por experiência própria, instalar o Mythtv é algo bem complicado e pouco documentado. Instalar o KnoppMyth, por sua vez, é algo bem mais simples. E o investimento em uma máquina dedicada ao sistema compensa.

Alguns interessados estão tentando instalar o KnoppMyth em máquinas que já possuem outras distribuições. Eu já fiz isso, e a fórmula que usei foi: instalar tudo o que não for do KnoppMyth num HD separado, que não seja o hda. Depois instalar o KnoppMyth no hda (opção de auto-instalação) e, quando tudo estiver configurado, alterar o lilo.conf para exibir o menu de seleção de sistema. Com certeza esta fórmula vai evitar um monte de dores de cabeça causadas pela contaminação de uma distribuição pela outra.

E sejamos livres, sempre!

04 novembro 2006

R5D1 no ar (ufa!)

Com um pouco de atraso, resolvi aproveitar o feriado para atualizar meu PVR para a versão R5D1 do KnoppMyth. O changelog era promissor. Dentre as diversas alterações, o maior destaque (ao menos para mim) era a nova versão do kernel, cujo bttv tem suporte "oficial" para minha Pixelview PlayTV MPEG2. Mas eu não fazia idéia no que estava me metendo...

Como de praxe, mythbackup e vamos para a festa! Com uma atração especial: nesta versão meu PVR ganhou um gravador de DVD da Samsung, indicado pela ProTeste como o de melhor custo-benefício do mercado. Espero poder usá-lo para tudo o que eu pretendo.

Boot pelo CD, auto-upgrade, perguntas de sempre respondidas, reboot. Mythrestore e... cadê o conteúdo do meu home? Primeiro susto: até a versão anterior, o home do usuário mythtv era /myth/mythtv. Nesta versão passou a ser /home/mythtv. E o mythrestore não sabia disso... Solução: copiei os arquivos manualmente para o lugar certo.

Wine instalado e TVxb funcionando, fui tentar melhorar o sistema. Neste kernel a Pixelview PlayTV MPEG2 passou a ser a placa com cardnumber 139. Então, como de costume, alterei o arquivo /etc/mythtv/modules/bttv para refletir o novo valor. Um update-modules e um boot depois e o dmesg apontava minha placa como UNKNOWN/GENERIC!

Mexi em tudo o que vocês podem imaginar. Pesquisei em uma dúzia de sites e não encontrei a solução. Apelei, então, para o excelente fórum do KnoppMyth e, em menos de 24 horas, veio a resposta: nesta versão, o arquivo a mexer é o /etc/modprobe.conf. Simples assim. Basta alterar o arquivo certo e pronto! Placa corretamente reconhecida. (Sinceramente, não notei nenhuma diferença.)

Agora vamos ao lirc. Recompilei a versão 0.8.0 (que eu já usava na versão anterior do KnoppMyth) e, ao carregar os drivers, um erro: a placa 139 não é suportada por esta versão. Cheio de coragem, baixei a versão do CVS, compilei e instalei. Os módulos subiam, mas nada de controle remoto. Aliás, nem o .lircrc estava no /home/mythtv. Copiei o arquivo da versão anterior, adaptei os nomes das teclas para os do arquivo que veio com o lirc e... nada!

Depois de mais algumas horas de briga, resolvi colocar o arquivo em /home/mythtv/.mythtv/lircrc. Ufa! Controle remoto funcionando!

Ainda faltam alguns ajustes. E espero que o mythburn funcione como eu gostaria. Mas esta versão veio com pelo menos um bônus: na Galeria Multimídia agora temos mais uma opção: Internet Stream. Um aplicativo para assistir (ou ouvir) streams diretamente da internet, incluindo podcasts. Vou aprender a usá-lo e ver se tiro algum proveito dele.

E vamos tocar em frente! Tenho alguns projetos referentes ao KnoppMyth parados por aqui esperando tempo livre para serem tocados. Quem sabe nos próximos feriados?