;(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

Bolsonaro gasta para divulgar TV que prometeu fechar

Propaganda nas ruas de SP informando sobre a mudança de número digital da TV Brasil - Arquivo Pessoal
Propaganda nas ruas de SP informando sobre a mudança de número digital da TV Brasil Imagem: Arquivo Pessoal

Colunista do UOL

30/06/2020 00h18

Ao contrário do que prometeu diversas vezes na campanha eleitoral, todo mundo já sabe que o presidente Jair Bolsonaro não vai fechar a TV Brasil. Pelo contrário: está até gastando dinheiro público para divulgá-la.

O governo está investindo em publicidade em displays para divulgar o novo número de sintonia na TV Brasil na TV digital.

No último dia 22, em São Paulo, da atual posição 62.1 no "dial", a TV Brasil ou a ser sintonizada no 1.1.

O objetivo desse tipo de mudança é a busca por mais ibope —facilitando o o dos telespectadores à emissora e colocando-a na posição mais privilegiada possível no "dial".

"TV Brasil agora é canal 1 - Alegria em Primeiro Lugar" diz a propaganda com uma menininha feliz, exposta em relógios termômetros nas ruas de São Paulo —Estado governado pelo arquiinimigo João Dória (PSDB).

Bolsonaro não apenas deixou de cumprir a promessa de fechar o que chamava (com razão, diga-se) de cabide de emprego petista. Ele duplicou a TV Brasil ao criar um segundo canal com o mesmo nome na antiga NBR.

Além disso ou a aparelhar a emissora com filhos de apoiadores, como esta coluna publicou com exclusividade no início do ano.

Ou seja, ou a fazer exatamente aquilo que acusava o PT.

Não há dados precisos, mas estima-se que só a TV Brasil original custe de R$ 600 milhões por ano, sendo que a produção de conteúdo próprio é ínfimo.

A maioria absoluta dos programas é adquirido de outras emissoras (como desenhos e séries) e seu jornalismo é irrelevante.

No ibope, a TV Brasil está em 7º lugar no Nacional de Televisão entre as TVs abertas, atrás da TV Cultura.

Sua audiência média nacional em maio nas 24 horas do dia foi de 0,25 ponto e 0,63% de share. Em São Paulo é ainda menor: 0,10 ponto e 0, 21% de share, atrás da RecordNews (0,15 e 0,31%)

Isso representa tecnicamente traço de ibope. A TV Brasil 2 (ex-NBR) nem aparece nas medições mais recentes.

Não há dados dos valores investidos na campanha publicitária sobre a mudança de posição na TV digital.

Por que não fechou

O presidente Jair Bolsonaro prometeu o que não poderia cumprir. A TV Brasil foi criada por meio de lei e conta com uma estrutura gigantesca, que inclui centenas de funcionários concursados.

Essa estrutura inclui a Agência Brasil, sites e emissoras de rádio, sem falar na NBR que virou TV Brasil 2.

O desmonte mesmo que de parte dessa imensa parafernália teria um custo imenso e Bolsonaro teria problemas imensos para demitir não só os concursados ("aqueles petistas"), mas também colaboradores.

É como diz o novo ditado democrático que tem sido dolorosamente aprendido dia a dia por Bolsonaro: um presidente da República até pode, mas não pode tudo.

Ricardo Feltrin no Twitter, Facebook, Instagram e site Ooops