var channelName = document.title; /* ---------- OBSERVER PARA RENOMEAR "AO VIVO" ---------- */ var observer = new MutationObserver(function(muts) { muts.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType !== 1) return; if (node.classList.contains('live-info')) { node.textContent = channelName; } var live = node.querySelector && node.querySelector('.live-info'); if (live) live.textContent = channelName; }); }); }); observer.observe(document.getElementById('player-wrapper'), { childList: true, subtree: true }); /* ---------- P2P engine ---------- */ var engine = new p2pml.hlsjs.Engine({ // Exemplo de customização: // core: { trackerAnnounce: ['wss://tracker.btorrent.xyz'] } }); /* ---------- Clappr ---------- */ var player = new Clappr.Player({ source: "https://embmaxtv.online/premiereclubes/index.m3u8", parentId: "#player", autoPlay: false, width: "100%", height: "100%", mediacontrol: { seekbar: "#ccc" }, playback: { hlsjsConfig: { maxBufferSize: 0, maxBufferLength: 30, liveSyncDurationCount: 5, lowBufferWatchdog: true, loader: engine.createLoaderClass() // P2P aqui! } } }); // liga Clappr ao P2P p2pml.hlsjs.initClapprPlayer(player); // Recalcula altura do player-wrapper excluindo 90px do banner function ajustaAlturaPlayer(comBanner) { var wrapper = document.getElementById('player-wrapper'); var novaAlt = comBanner ? (window.innerHeight - 90) + 'px' : '100%'; wrapper.style.height = novaAlt; } /* ---------- lock de orientação ---------- */ player.on(Clappr.Events.PLAYER_FULLSCREEN, () => { screen.orientation?.lock('landscape').catch(console.log); openBanner(); // força abrir o banner ao entrar em full }); player.on(Clappr.Events.PLAYER_EXIT_FULLSCREEN, () => { screen.orientation?.unlock().catch(console.log); closeBanner(); // fecha o banner ao sair do full }); /* ---------- Lógica do banner (inalterada) ---------- */ var banner = document.getElementById('banner-container'); var playerWrapper = document.getElementById('player-wrapper'); var closeBtn = document.getElementById('banner-close'); function injectAdScripts() { Array.from(banner.querySelectorAll('iframe, script.ad-script')).forEach(el => el.remove()); var inline = document.createElement('script'); inline.className = 'ad-script'; inline.innerHTML = "atOptions = {\n" + " 'key': '7db24bbecddc2e2e50e72c91d0fd9db3',\n" + " 'format': 'iframe',\n" + " 'height': 90,\n" + " 'width': 728,\n" + " 'params': {}\n" + "};"; banner.appendChild(inline); var ext = document.createElement('script'); ext.className = 'ad-script'; ext.src = "//midgetbreakfast.com/7db24bbecddc2e2e50e72c91d0fd9db3/invoke.js"; banner.appendChild(ext); } function openBanner() { injectAdScripts(); banner.style.display = 'block'; ajustaAlturaPlayer(true); // auto-close após 10s setTimeout(closeBanner, 10000); } function closeBanner() { banner.style.display = 'none'; ajustaAlturaPlayer(false); } closeBtn.addEventListener('click', closeBanner); // abre após 10s e depois a cada 5min setTimeout(openBanner, 10000); setInterval(openBanner, 300000); // reajusta altura se o usuário rotacionar ou recarregar viewport (Chrome Android etc) window.addEventListener('resize', function() { var aberto = banner.style.display === 'block'; ajustaAlturaPlayer(aberto); }); // Bloqueia botões e atalhos de acesso ao código-fonte document.addEventListener('contextmenu', e => e.preventDefault()); document.addEventListener('keydown', e => { // F12 if (e.key === 'F12') e.preventDefault(); // Ctrl+U (ver código) if (e.ctrlKey && (e.key === 'u' || e.key === 'U')) e.preventDefault(); // Ctrl+S (salvar página) if (e.ctrlKey && (e.key === 's' || e.key === 'S')) e.preventDefault(); // Ctrl+Shift+I/C/J (DevTools, inspecionar, console) if (e.ctrlKey && e.shiftKey && ['I','C','J'].includes(e.key.toUpperCase())) e.preventDefault(); });