;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Ricardo Feltrin

Caríssima, TV Justiça registrou zero de ibope em maio

Luís Roberto Barroso, ministro do STF, em ação na TV Justiça - Reprodução/YouTube
Luís Roberto Barroso, ministro do STF, em ação na TV Justiça Imagem: Reprodução/YouTube

Colunista do UOL

24/06/2020 00h18

Uma façanha triste: apesar de ser exibida obrigatoriamente na TV aberta (em sinal digital) e estar presente em todos os pacotes de operadoras de TV paga, a TV Justiça conseguiu dar zero de ponto e de share no mês de maio.

Share é a participação (em porcentagem) de uma emissora ou programa de TV no universo de TVs ligadas.

A TV Justiça, uma emissora pública, caríssima, com centenas de funcionários estáveis e com salários generosos, conseguiu dar zero tanto em pontos como em share no mês ado.

Em outras palavras, ninguém sintonizou a emissora, segundo dados consolidados de audiência mensurados pela Kantar Ibope Media, obtidos com exclusividade pela coluna.

Claro que nem só pelo ibope pode se analisar a existência e necessidade de o país ter TVs públicas (leia mais abaixo). Mas a equação entre gastos e efetividade poderiam ser melhores e maiores.

As outras TVs legislativas também não estão em melhores condições em termos de público: em maio a TV Câmara marcou 0,01 ponto de média e 0,02% de share. Exatamente a mesma "marca" (sic) que outra emissora inútil, a TV Senado.

Esta coluna já fez a sugestão racional para a redução de custos: bastaria unir as três emissoras numa só, sob uma só infra-estrutura.

O problema é o espírito corporativista de funcionários que trabalham pouco e ganham muito para qualquer comparação que seja feita com a categoria dos jornalistas, cinegrafistas ou produtores em emissoras comerciais.

As três emissoras na verdade são três caixas pretas de gastos milionários, protegidas pelo corporativismo e provavelmente interesses oportunistas.

Até a TV Brasil nada de braçadas quando comparada com esses três ralos televisivos de dinheiro: em maio marcou 0,25 ponto e 0,63% de share.

Convenhamos: nenhuma dessas TVs não faz a menor falta ao país ou à população.

Cada ponto nessa medição representa cerca de 250 mil domicílios sintonizados nas 15 maiores regiões metropolitanas do país. Todas as TVs com medições abaixo de 0,4 ponto de audiência já podem, ser consideradas "traços de audiência".

Mas zero é um número cardinal que corresponde a um conjunto vazio.

É a conquista literal do zero absoluto de público. Uma espécie de sucesso, só que num mundo paralelo —o das "autoridades" brasileiras.

Sim, tem função pública

A despeito de seu ibope irrisório, uma emissora como a TV Justiça tem valor social e educativo.

É um canal importantíssimo em tempos de dúvidas legais, julgamentos e mobilizações de causas nacionais.

Afinal e o STF quem dá a palavra final sobre a legislação que rege nossas vidas. Além disso a TV Justiça tem seu sinal franqueado para quem quiser transmiti-lo sem qualquer ônus.

No entanto, a qualidade de sua programação além das sessões deixa muito a desejar em termos de conteúdo. Pelo seu custo, poderia ser algo muito melhor.

Ricardo Feltrin no Twitter, Facebook, Instagram e site Ooops