Marcos Santuario

Foi, viu e gostou

Filme Rapsódia em Agosto
Filme Rapsódia em Agosto Foto : Kurosawa Production / Reprodução / CP

Com a recente morte do Papa Francisco muito se publicou sobre que filmes ver na temática papal, conclaves e etc. O que pouco se tem falado é da visão deste Papa sobre o cinema. “Território de memórias e oficina de criatividade”, dizia. Esta foi uma das definições deixadas pelo pontífice argentino. O Jorge Mario Bergoglio, quando criança, no período pós-guerra, assistia com seus pais aos filmes neorrealistas italianos, que marcavam sua imaginação nos distantes momentos argentinos. Seu coração foi formado, em grande parte, pelos filmes que viu. Como qualquer mortal. Reforçou a ideia quando se encontrou com representantes do cinema. A força da tela foi resumida por ele como comunhão, criatividade e visão. Agregador e momento educativo e formativo, para reconectar relações desgastadas pelas tragédias vividas. Para Francisco, o cinema também foi sempre uma ferramenta para voltar a falar de “beleza”. “’La Strada’, de Fellini, é talvez o filme que mais amei”, teria revelado em 2013.

Outros filmes que ele disse ter amado foram “Roma, Cidade Aberta” e “As crianças nos Observam”, de Vittorio De Sica. Costumava também lembrar da cena feliz do filme “A Festa de Babette”, onde a generosa cozinheira recebe um abraço agradecido e um elogio: “Como você encantará os anjos!”. O filme de Gabriel Axel, baseado num conto de Karen Blixen, conta a história da generosidade de Babette, que, acolhida por Martina e Philippa, filhas de um pastor, anos depois decide usar o dinheiro que ganhou numa vitória para homenagear o pai das duas mulheres com um grande jantar. Ela gasta tudo, mas se alegra por ter feito os outros felizes.

Entre algumas revelações, Francisco contava que estava em Buenos Aires e, para explicar o diálogo entre avós e crianças, recomendava um filme de mais de 30 anos atrás, “Rapsódia em Agosto”, de Akira Kurosawa. O argentino também chamava de obra-prima “Andrei Rublëv”, de Tarkovsky, e se deixou conhecer mais, inclusive nos gostos culturais, com o diretor alemão Wim Wenders. O resultado foi um documentário de 2018 filmado na Cidade do Vaticano: “Papa Francisco. Um Homem de Palavra”. Valem os registros.

*/ function logDebug(message, level = 'log') { const scriptConfig = window.pageScriptConfig || {}; if (scriptConfig.debug) { const prefix = 'CWV Optimizer:'; if (level === 'warn' && console.warn) { console.warn(`${prefix} ${message}`); } else if (level === 'log' && console.log) { console.log(`${prefix} ${message}`); } } // Erros (console.error) não passam por aqui e são sempre exibidos. } /** * Função principal que carrega todos os scripts. * Esta função é "à prova de falhas" e só executa uma vez. */ function loadAllThirdPartyScripts(triggerType = 'unknown') { // 1. Cláusula de Guarda: Se os scripts já foram carregados, não faz nada. if (scriptsLoaded) { return; } scriptsLoaded = true; // 2. Limpa os 'listeners' para não disparar novamente clearTimeout(pageLoadTimeoutHandle); // Limpa o timeout de 'load' INTERACTION_EVENTS.forEach(event => { window.removeEventListener(event, triggerScriptLoad); }); // 3. Log de Debug: logDebug(`Carregando scripts de terceiros AGORA. (Disparado por: ${triggerType})`); const scriptConfig = window.pageScriptConfig || {}; // --- 4. ÁREA DE CARREGAMENTO DE SCRIPTS --- // Chame aqui suas funções para carregar cada script. loadGoogleTagManager(); if (scriptConfig.loadads !== false) { loadPremiumads(); loadGoogleAds(); } else { logDebug('Script Premiumads não carregado (desabilitado via pageScriptConfig).'); } loadArena(); loadTailcmp(); loadCapaJornal(); loadPaywall(); if (scriptConfig.loadTaboola !== false) { loadTaboola(); } else { logDebug('Script Taboola não carregado (desabilitado via pageScriptConfig).'); } loadNewsletters(); setupAutoRefreshLogic(); // ... adicione outras funções aqui } /** * Handler unificado que simplesmente chama a função principal. * Usado pelos 'listeners' de evento. */ function triggerScriptLoad(event) { // Define o tipo de gatilho para o log const triggerType = event ? event.type : 'timeout_load'; loadAllThirdPartyScripts(triggerType); } // --- 5. DEFINIÇÃO DAS FUNÇÕES DE CARREGAMENTO --- // Crie uma função separada para cada script/tag que você quer carregar. // Isso mantém o código organizado. /** * Carrega script GoogleTagManager */ function loadGoogleTagManager() { logDebug('Carregando GoogleTagManager...'); (function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-MFKL3B'); } /** * Carrega script Premiumads */ function loadPremiumads() { logDebug('Carregando Premiumads...'); const premiumAdsScript = document.createElement('script'); // Define os atributos. premiumAdsScript.setAttribute('data-cfasync', 'false'); premiumAdsScript.defer = true; premiumAdsScript.async = true; premiumAdsScript.src = 'https://tags.premiumads.com.br/dfp/51bfc46f-52ca-4595-0cf6-08dbb887d008'; // Adiciona o script ao final do do documento. document.body.appendChild(premiumAdsScript); } /** * Carrega script GoogleAds */ function loadGoogleAds() { logDebug('Carregando GoogleAds e definindo slots...'); const googleAdsScript = document.createElement('script'); // Define os atributos. googleAdsScript.defer = true; googleAdsScript.async = true; googleAdsScript.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'; // Adiciona o script ao final do do documento. document.body.appendChild(googleAdsScript); // Lógica do Google AdSense (mantida como no original) window.googletag = window.googletag || { cmd: [] }; googletag.cmd.push(function () { let adSlot; if (window.innerWidth >= 949) { adSlot = googletag.defineSlot('/75894840,1840275/CORREIO_DO_POVO_INTERSTITIAL', [[949, 600], [400, 250], [300, 250]], 'Interstitial_ad_premium'); } else { adSlot = googletag.defineSlot('/75894840,1840275/CORREIO_DO_POVO_INTERSTITIAL', [[300, 250]], 'Interstitial_ad_premium'); } adSlot.setTargeting('editoria', [ad_editoria]) .setTargeting('tags', tagsmart.replaceAll("tag=", "").split(";")) .setTargeting("pp_excl", ["pd", "ob", "adx"]) .addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.enableServices(); }); // Solicita a exibição do anúncio googletag.cmd.push(function () { googletag.display('Interstitial_ad_premium'); }); } /** * Carrega script Tailcmp */ function loadTailcmp() { logDebug('Carregando Tailcmp...'); const tailcmpScript = document.createElement('script'); // Define os atributos. tailcmpScript.setAttribute('data-config', 'tailcmpConfig'); tailcmpScript.setAttribute('data-style-prefix', 'tailcmp'); tailcmpScript.defer = true; tailcmpScript.async = true; tailcmpScript.src = 'https://tags.cmp.tail.digital/3394c06d-2aae-41be-b792-9bcbfc13a839.js'; // Adiciona o script ao final do do documento. document.body.appendChild(tailcmpScript); } /** * Carrega script CapaJornal */ function loadCapaJornal() { // 1. Tenta selecionar a div onde o conteúdo será inserido const targetDiv = document.querySelector('.capa-jornal'); // 2. Verifica se a div realmente existe na página if (targetDiv) { logDebug("Encontrada a div '.capa-jornal'. Buscando dados..."); // Se a div existe, prossegue com a busca dos dados const proxyUrl = 'https://portal.correiodopovo.com.br/includes/input/capajornal-novo.aspx'; fetch(proxyUrl) .then(response => { if (!response.ok) { throw new Error('A resposta da rede não foi bem-sucedida.'); } return response.text(); }) .then(html => { // Defer the DOM update to avoid blocking the main thread // requestIdleCallback is preferred for non-essential, deferred tasks. requestIdleCallback(() => { logDebug("Dados da 'capa-jornal' recebidos, inserindo no DOM."); targetDiv.innerHTML = html; }); }) .catch(error => { console.error('Erro ao buscar o conteúdo:', error); requestIdleCallback(() => { targetDiv.innerHTML = '

Ocorreu um erro ao carregar a capa do jornal. Verifique o console para mais detalhes.

'; }); }); } else { // Opcional: você pode adicionar uma mensagem no console para debug, se quiser logDebug("A div com a classe 'capa-jornal' não foi encontrada. A busca de dados foi ignorada."); } } /** * Carrega script Arena */ function loadArena() { logDebug('Verificando condições para carregar Arena...'); const isArticlePage = !!document.querySelector('meta[property="og:type"][content="article"]'); // 1. Condição: Verifica se a página é um artigo if (isArticlePage) { logDebug('Condição Arena atendida (URL é artigo).'); // 2. Ação DOM: Tenta encontrar o artigo e inserir os elementos var artigo = document.querySelector(".article"); if (artigo && artigo.parentNode) { logDebug("Encontrado '.article'. Inserindo Arena comments widget..."); // Criando a div Arena const arenaDiv = document.createElement('div'); arenaDiv.classList.add('arena-comments-widget'); arenaDiv.dataset.siteId = '66c747f47af6f5b0777f9400'; arenaDiv.dataset.siteSlug = 'correio-do-povo-16726'; // Inserindo a div Arena depois do artigo. artigo.parentNode.insertBefore(arenaDiv, artigo.nextSibling); } else { logDebug("Elemento '.article' não foi encontrado. As divs não puderam ser inseridas.", 'warn'); } // 3. Ação Script: Adicionar o script da Arena no const scriptUrl = "https://fast.arena.im/script.js?siteId=66c747f47af6f5b0777f9400"; // Boa prática: Verifica se o script já não foi adicionado if (!document.querySelector(`script[src="${scriptUrl}"]`)) { logDebug('Inserindo script Arena no .'); var scriptTag = document.createElement('script'); scriptTag.src = scriptUrl; scriptTag.defer = true; scriptTag.async = true; // Carrega o script de forma assíncrona document.head.appendChild(scriptTag); } } } /** * Carrega script Paywall */ function loadPaywall() { logDebug('Carregando Paywall...'); const paywallScript = document.createElement('script'); const IS_VISITOR = true; var IS_FREEMIUM = true; var IS_CUSTOMER = true; const url = 'https://paywall.correiodopovo.com.br/wid/script/1?tags=' + tagm + '&loc=' + location.href + '&is_visitor=' + IS_VISITOR + "&is_freemium=" + IS_FREEMIUM + "&is_customer=" + IS_CUSTOMER; // Define os atributos. paywallScript.setAttribute('data-config', 'tailcmpConfig'); paywallScript.setAttribute('data-style-prefix', 'tailcmp'); paywallScript.defer = true; paywallScript.async = true; paywallScript.src = url; // Adiciona o script ao final do do documento. document.body.appendChild(paywallScript); } /** * Carrega script Newsletters */ function loadNewsletters() { logDebug('Inserindo container de Newsletters...'); try { const isArticlePage = !!document.querySelector('meta[property="og:type"][content="article"]'); if (isArticlePage) { // Seleciona todos os parágrafos dentro do corpo do artigo const paragrafos = document.querySelectorAll('.article__body p'); // Verifica se existem parágrafos if (paragrafos.length === 0) { logDebug('Não foi possível encontrar parágrafos em .article__body para inserir o container.', 'warn'); return; } // Seleciona o último parágrafo const ultimoParagrafo = paragrafos[paragrafos.length - 1]; // Cria o novo elemento const novaDiv = document.createElement('div'); novaDiv.className = 'container-max adsconteiner'; novaDiv.innerHTML = `
`; // Insere a nova div *antes* do último parágrafo if (ultimoParagrafo && ultimoParagrafo.parentNode) { ultimoParagrafo.parentNode.insertBefore(novaDiv, ultimoParagrafo); logDebug('Container de Newsletters inserido com sucesso antes do último parágrafo.'); } else { logDebug('Não foi possível inserir o container (elemento-pai não encontrado).', 'warn'); } } else { logDebug('Página não é um artigo. Container de Newsletters não será inserido.'); } } catch (e) { console.error('Erro ao tentar inserir o container no artigo:', e); } } /** * Carrega script Refresh */ function setupAutoRefreshLogic() { logDebug('Configurando lógica de auto-refresh (verificação a cada 10s)...'); const REFRESH_AFTER_SECONDS = 5 * 60; // 5 minutos const CHECK_INTERVAL_SECONDS = 10; // Verifica a cada 10 segundos let timeElapsedWithoutBlockers = 0; // Tempo acumulado em segundos // Usamos setInterval para verificar periodicamente const refreshIntervalHandle = setInterval(() => { try { // Verifica se alguma das condições de "pausa" existe const fallbackDiv = document.querySelector('.video-fallback'); const specificIframe = document.querySelector('.article__body iframe[src*="youtube.com"], .article__body iframe[src*="facebook.com"], .article__body iframe[src*="24liveblog.com"]'); if (fallbackDiv || specificIframe) { // Se um bloqueador existe, reseta o contador. logDebug('Auto-refresh: Pausado. Bloqueador encontrado (vídeo/fallback). Resetando contador.', 'log'); timeElapsedWithoutBlockers = 0; return; // Não faz mais nada neste ciclo } // Se NENHUM bloqueador existe, incrementa o tempo timeElapsedWithoutBlockers += CHECK_INTERVAL_SECONDS; // Se o tempo acumulado atingir o limite, recarrega if (timeElapsedWithoutBlockers >= REFRESH_AFTER_SECONDS) { clearInterval(refreshIntervalHandle); // Para o loop logDebug('Auto-refresh: Limite atingido, recarregando página...'); location.reload(); } } catch (e) { console.error('Erro na lógica de auto-refresh:', e); clearInterval(refreshIntervalHandle); // Para o loop em caso de erro } }, CHECK_INTERVAL_SECONDS * 1000); // Converte segundos para milissegundos } /** * Carrega scripts Taboola */ function loadTaboola() { // Verifica se é a home page (ex: "/") // Ajuste '==' se a sua home for outra (ex: "/index.html") const isHomePage = window.location.pathname === '/'; // Verifica se é página de artigo pela meta tag const isArticlePage = !!document.querySelector('meta[property="og:type"][content="article"]'); if (isHomePage) { logDebug('Carregando scripts Taboola (Home: Newsroom + Loader + Push Thumbnails-A)...'); // --- HOME: REGRA 1 --- // 1. Carrega o Newsroom (Versão Home) window._newsroom = window._newsroom || []; window._newsroom.push({ pageTemplate: 'home' }); window._newsroom.push({ pageDashboard: 'home' }); window._newsroom.push('auditClicks'); window._newsroom.push('trackPage'); !function (e, f, u) { e.async = 1; e.src = u; f.parentNode.insertBefore(e, f); }(document.createElement('script'), document.getElementsByTagName('script')[0], '//c2.taboola.com/nr/correiodopovo/newsroom.js'); // --- HOME: REGRA 2 --- // 2. Prepara o push do Loader (Versão Home) window._taboola = window._taboola || []; _taboola.push({ home: 'auto' }); // 3. Cria e injeta o Loader (loader.js) manualmente para adicionar o callback 'onload' const firstScript = document.getElementsByTagName('script')[0]; if (!document.getElementById('tb_loader_script')) { const loaderScript = document.createElement('script'); loaderScript.async = 1; loaderScript.src = '//cdn.taboola.com/libtrc/correiodopovo/loader.js'; loaderScript.id = 'tb_loader_script'; // --- HOME: REGRA 3 --- // 4. Define o que fazer QUANDO o loader carregar (o push 'thumbnails-a') loaderScript.onload = () => { logDebug('Taboola Loader (Home) carregado. Executando push thumbnails-a...'); window._taboola = window._taboola || []; _taboola.push({ mode: 'thumbnails-a', container: 'taboola-mid-article-thumbnails', placement: 'Mid Article Thumbnails', target_type: 'mix' }); if (window.performance && typeof window.performance.mark == 'function') { window.performance.mark('tbl_ic'); } _taboola.push({ flush: true }); }; firstScript.parentNode.insertBefore(loaderScript, firstScript); } } else if (isArticlePage) { logDebug('Carregando scripts Taboola (Artigo: Newsroom + Loader + Push Thumbnails-B)...'); // --- ARTIGO: REGRA 1 --- // 1. Carrega o Newsroom (Versão Artigo) window._newsroom = window._newsroom || []; !function (e, f, u) { e.async = 1; e.src = u; f.parentNode.insertBefore(e, f); }(document.createElement('script'), document.getElementsByTagName('script')[0], '//c2.taboola.com/nr/correiodopovo/newsroom.js'); // --- ARTIGO: REGRA 2 --- // 2. Prepara o push do Loader (Versão Artigo) window._taboola = window._taboola || []; _taboola.push({ article: 'auto' }); // 3. Cria e injeta o Loader (loader.js) manualmente para adicionar o callback 'onload' const firstScript = document.getElementsByTagName('script')[0]; if (!document.getElementById('tb_loader_script')) { const loaderScript = document.createElement('script'); loaderScript.defer = true; loaderScript.async = 1; loaderScript.src = '//cdn.taboola.com/libtrc/correiodopovo/loader.js'; loaderScript.id = 'tb_loader_script'; // --- ARTIGO: REGRA 3 --- // 4. Define o que fazer QUANDO o loader carregar (o push 'thumbnails-b') loaderScript.onload = () => { logDebug('Taboola Loader (Artigo) carregado. Executando push thumbnails-b...'); window._taboola = window._taboola || []; _taboola.push({ mode: 'thumbnails-b', container: 'taboola-below-article-thumbnails', placement: 'Below Article Thumbnails', target_type: 'mix' }); if (window.performance && typeof window.performance.mark == 'function') { window.performance.mark('tbl_ic'); } _taboola.push({ flush: true }); }; firstScript.parentNode.insertBefore(loaderScript, firstScript); } } else { // --- OUTRAS PÁGINAS (Não-Home, Não-Artigo) --- logDebug('Carregando script Taboola (Outras: Apenas Loader)...'); window._taboola = window._taboola || []; _taboola.push({ article: 'auto' }); !function (e, f, u, i) { if (!document.getElementById(i)) { e.async = 1; e.src = u; e.id = i; f.parentNode.insertBefore(e, f); } }(document.createElement('script'), document.getElementsByTagName('script')[0], '//cdn.taboola.com/libtrc/correiodopovo/loader.js', 'tb_loader_script'); if (window.performance && typeof window.performance.mark == 'function') { window.performance.mark('tbl_ic'); } _taboola.push({ flush: true }); } } // --- 6. CONFIGURAÇÃO DOS TRIGGERS (GATILHOS) --- // Trigger 1: Timeout após o 'load' completo da página // Usamos 'load' (ao invés de DOMContentLoaded) porque o 'load' espera // por imagens e outros recursos, que é o que mais impacta o CWV. window.addEventListener('load', () => { // Se os scripts já foram carregados por interação, não faz nada if (scriptsLoaded) { return; } // Caso contrário, agenda o carregamento // Passar 'null' (ou nenhum argumento) fará com que triggerScriptLoad use 'timeout_load' pageLoadTimeoutHandle = setTimeout(triggerScriptLoad, TIMEOUT_DELAY_MS); }, { once: true }); // Trigger 2: Primeira interação do usuário // Usamos { once: true } para que o listener seja removido automaticamente // após disparar pela primeira vez. // Usamos { passive: true } para não bloquear o scroll (boas práticas). // No mobile, a interação não ativará o carregamento, sendo feito apenas pelo timeout. const isMobile = window.innerWidth <= 768 || /Mobi|Android/i.test(navigator.userAgent); if (!isMobile) { INTERACTION_EVENTS.forEach(event => { // Passar o 'event' para o handler nos permite saber qual evento disparou window.addEventListener(event, triggerScriptLoad, { once: true, passive: true }); }); } else { logDebug('Dispositivo mobile detectado: eventos de interação ignorados. Usando apenas timeout.'); } }); // Fim do DOMContentLoaded