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

Quem é Bruna Louise, primeira brasileira a apresentar stand-up na Netflix

Bruna Louise fará história na Netflix - Marcos Ribas/Brazil News
Bruna Louise fará história na Netflix Imagem: Marcos Ribas/Brazil News

De Splash, em São Paulo

24/06/2022 10h13Atualizada em 24/06/2022 14h04

A comediante Bruna Louise, de 37 anos, é a primeira brasileira a ter um espetáculo de stand-up na Netflix. Em "Demolição", ela fala — e faz piada — sobre suas relações amorosas e familiares.

Ontem, Bruna projetou uma imagem de si mesma com a hashtag #Fogo no Patriarcado em São Paulo, próximo à Av. Paulista.

Galvão Bueno da put****

Essa não é a primeira vez que a curitibana ganha destaque na plataforma de streaming. Ela foi a apresentadora e narradora de "Brincando com Fogo", reality onde os participantes têm como única função não transar para conquistarem o prêmio.

Mas o desafio é difícil: Brenda Paixão e Matheus Sampaio, hoje no "Power Couple 6" (RecordTV), quebraram a regra cinco vezes em uma única noite e perderam R$ 200 mil.

Em uma de suas apresentações de stand-up, Bruna disse que um de seus maiores sonhos era participar de um "reality de pegação", mas, por não atender ao perfil que a maioria dos participantes têm, ela se "contentou" em ser narradora.

Era meu sonho. Fui para um reality de pegação. Mas como sou eu, ninguém me pegou. Eu fui, mas não fui inteira. Fui como comentarista. Foi a minha voz. As tetas [os seios] que paguei R$ 15 mil não foram. Eu fui de narradora, de Galvão Bueno da putaria. Eu estou muito feliz. Bruna Louise

"Fui narrando com um tesão. Eu dei em cima de todos os participantes. A Netflix até agora não sabe se contratou uma narradora ou uma assistente de pedreiro", brincou ainda a comediante.

Formada em artes cênicas, Bruna contou que se inspirou em Dercy Gonçalves em sua carreira. "Ela mudou o meu jeito de ver a comédia. Percebi que podia usar meus problemas para rir de mim mesma e transformar tristeza em humor", disse em entrevista à Veja.

Hoje, a comediante acumula mais de 12 milhões de seguidores em suas redes sociais. Foi nessas plataformas que ela teve o primeiro espaço para fazer comédia. Nos primeiros anos, sua principal parceira era Kéfera, com quem ela chegou a apresentar uma peça Brasil afora.

As duas, no entanto, acabaram se afastando. "Nunca existiu uma briga. Eu tenho um carinho e torço muito por ela", disse Bruna sobre o fim da amizade.

A comediante explicou que as duas acabaram se distanciando de tanto serem comparadas pelos próprios fãs. "Existiu muito uma pressão externa porque as pessoas não conseguiam acreditar em uma amizade entre duas mulheres onde uma realmente torcesse pela outra", comentou no podcast "Mais que 8 Minutos", apresentado por Rafinha Bastos.

Apesar de hoje ser considerada uma das maiores vozes da comédia feminina brasileira, Bruna afirma que ainda há dificuldades na área.

Sempre vai ter alguém desmerecendo o meu trabalho, duvidando do que eu posso fazer, tentando entender como eu cheguei tão longe e tentando colocar o mérito em outras pessoas ou algum acaso, ou sorte, ou eu estava no lugar certo fazendo a coisa certa. Bruna Louise ao Estado de Minas

"Mas também tem essa representatividade, porque hoje eu tenho um público muito feminino que gosta muito do meu trabalho, e eu fico muito feliz com isso", declara.