Importação de EPG/XMLTV

A base de dados EPG é preenchida a partir de fontes de três tipos:

  • EIT dos fluxos recebidos — a configuração «Extrair EIT para a base de dados EPG» do fluxo (SPTS e MPTS, Modificação do fluxo);

  • EIT dos adaptadores DVB — a configuração «Exportar EPG» do adaptador (Receptor DVB);

  • fontes XMLTV externas — por um link para um recurso web ou a partir de um arquivo local.

A EIT extraída dos fluxos e dos adaptadores DVB se acumula em uma fonte integrada comum, «importação de fluxos»; cada fonte XMLTV externa mantém a sua própria base de dados. O identificador do canal é único dentro da sua fonte; os nomes dos canais e os textos dos eventos são armazenados em vários idiomas.

Configuração das fontes

As fontes são configuradas na tela «Configurações EPG» (Configurações EPG). A aba «Importação» contém os parâmetros gerais: «Ativar importação», «Manter histórico, dias» (profundidade de retenção dos eventos passados) e «Limpeza automática de canais órfãos» (remoção dos canais que não têm mais eventos).

As fontes XMLTV externas são adicionadas na aba «Fontes»: nome, «URL / caminho da fonte», «Ativada», «Intervalo de atualização, s» (uma vez por hora por padrão), «Codificação do conteúdo» (detecção automática ou GZip forçado), credenciais e Cookies para fontes web de acesso restrito, «Salvar cópia baixada» para diagnóstico. A fonte é um endereço http ou https ou um caminho absoluto para um arquivo no nó; os Cookies são enviados no cabeçalho Cookie e somente ao host da fonte. Após a alteração de uma fonte ativada (por exemplo, do seu endereço), os dados são carregados imediatamente, sem esperar o intervalo de atualização.

Desde a versão 2.0.2.418, uma fonte tem um tempo limite de download — o parâmetro fetch-timeout da fonte no arquivo de configuração ou pela API (de 0 a 3600 segundos, 0 = os 30 segundos de antes); desde a versão 2.0.2.419, ele é definido pelo campo «Tempo limite de download, s» (Configurações EPG). Ele limita a espera de cada envio e de cada recebimento de dados: o primeiro byte da resposta e qualquer pausa na transferência. Ele serve para fontes lentas que montam o arquivo sob demanda. A conexão é estabelecida em no máximo 30 segundos, e a transferência inteira dura no máximo 30 minutos (ou dois tempos limite, se isso for maior). Um tempo limite esgotado é um download malsucedido: ele é registrado no log e exibido no erro da fonte.

Fila de downloads e novas tentativas

Desde a versão 2.0.2.418, as fontes externas são baixadas, analisadas e aplicadas uma de cada vez: enquanto uma está em andamento, as demais aguardam a vez, e a aba «Estado das fontes» mostra essa fonte como em espera, com a posição na fila (Queued: position N); desde a versão 2.0.2.419, ela também é marcada com um ponto azul. Vários «Atualizar agora» seguidos para uma fonte em espera se fundem em um único download. Após o início do serviço, as fontes não começam o download ao mesmo tempo, mas em sequência, com intervalo: a primeira após 10 segundos, cada uma das seguintes um segundo depois. Por isso, o pico de memória ao reiniciar um nó com vários arquivos XMLTV grandes fica no nível de um único arquivo, e após o download a memória é devolvida ao sistema.

Um download malsucedido é repetido não após o intervalo de atualização completo, mas após 2, 5 e 15 minutos e, depois, a cada 30 minutos (mas não com menos frequência que o intervalo de atualização); a hora da próxima tentativa é exibida no campo «Próxima atualização». Desde a versão 2.0.2.419, durante as falhas esse campo passa a se chamar «Próxima tentativa», e ao lado é exibido o campo «Downloads com falha seguidos» (Base de dados EPG). A contagem de falhas é zerada por um download bem-sucedido, uma alteração da fonte e uma reinicialização do serviço. A partir desta versão, uma resposta vazia da fonte também conta como erro.

Base de dados EPG

O guia de programação acumulado é consultado na tela «Base de dados EPG» (Base de dados EPG). Na aba «Base de dados» é selecionada a fonte, e ficam disponíveis a pesquisa de canais e o filtro por conjunto de canais; a programação do canal é percorrida por dias, e o programa atual fica destacado. Para cada canal é possível alterar:

  • «Nome do canal» — o nome utilizado na exportação XMLTV;

  • «Fuso horário» — se as horas dos eventos não foram associadas a UTC na importação;

  • «URL do ícone» — o ícone do canal;

  • «Conjuntos de canais» — participação nos conjuntos fornecidos a consumidores externos (EPG para middleware OTT).

As alterações manuais podem ser substituídas na atualização seguinte da fonte — a interface web avisa sobre isso.

A aba «Estado das fontes» mostra o progresso da importação: a hora da última e da próxima atualização, o número de canais e de eventos, os erros; o botão «Atualizar agora» inicia a atualização da fonte imediatamente, sem aguardar o agendamento.

Desde a versão 2.0.2.420, as alterações da programação nas fontes externas são reconhecidas de forma mais confiável: a troca de texto entre dois campos de um programa também conta como alteração. Um arquivo XMLTV que não mudou desde a última atualização não é analisado de novo, mas seus canais continuam sendo considerados atualizados, por isso a «Limpeza automática de canais órfãos» não os remove; antes da versão 2.0.2.420, esses canais podiam desaparecer. A primeira atualização após a migração para 2.0.2.420 não regrava nada no banco de dados, e as edições de nomes de canais feitas na interface web são preservadas.