;(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; // 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(); })();
Topo
Entretenimento

Taylor Swift obtém controle de seu catálogo de músicas

30/05/2025 15h50

Por Lisa Richwine

LOS ANGELES (Reuters) - A estrela pop Taylor Swift disse nesta sexta-feira que comprou as gravações principais de seus seis primeiros álbuns, dando-lhe o controle sobre todas as suas músicas após uma disputa com sua antiga gravadora.

As gravações originais de Swift foram vendidas em 2019 e a cantora disse que não teve a oportunidade de comprá-las na época. Ela regravou quatro dos álbuns com o subtítulo "Taylor's Version".

Swift comprou as gravações originais da atual proprietária Shamrock Capital, no que ela chamou de seu "maior sonho realizado". Não foram divulgados os termos financeiros.

"Estou explodindo em lágrimas de alegria em intervalos aleatórios desde que descobri que isso está realmente acontecendo", disse ela em uma declaração em seu site. "Eu realmente posso dizer essas palavras: toda música que já fiz... agora pertence... a mim."

A cantora de "Fortnight" também disse que havia regravado seu álbum de estreia autointitulado de 2006 e partes do lançamento de 2017 "Reputation". Ela disse que os lançaria "quando fosse a hora certa, se isso fosse algo que os entusiasmasse."

Swift ganhou 14 Grammys, incluindo quatro troféus sem precedentes para álbum do ano, e recentemente concluiu a turnê de shows de maior bilheteria de todos os tempos.

A cantora, de 35 anos, gravou seus seis primeiros álbuns, que incluíram sucessos como "Shake It Off" e "You Belong With Me", com o Big Machine Label Group, antes de sair em 2018 para o Universal Music Group.

O executivo musical Scooter Braun comprou a Big Machine em 2019 e Swift o acusou publicamente de intimidá-la e de se recusar a dar a ela a chance de comprar suas gravações originais. Swift disse em 2020 que a BMG havia vendido suas músicas para a Shamrock. Reportagens da mídia na época disseram que o negócio valia mais de US$300 milhões.

Representantes de Braun não responderam imediatamente a um pedido de comentário.

Swift elogiou os executivos da Shamrock, fundada por Roy E. Disney, sobrinho de Walt Disney, por serem "honestos, justos e respeitosos".

Entretenimento