Equador

Busca Global

Generic selectors
Apenas correspondências exatas
Pesquisar no título
Pesquisar no conteúdo
Post Type Selectors
TV ao vivo

Equador

Canais publicos organizados por categoria. Escolha uma transmissao e assista sem sair da pagina.

84 canais
Selecione um canal O player sera aberto aqui.
Nenhum canal encontrado com esse filtro.

C77TV Equador Compartilhe com seus amigos body{font-family:Arial,Helvetica,sans-serif;margin:0;padding:18px;background:#f7f7f8;color:#222} .wrap{max-width:480px;margin:0 auto;text-align:center} h1{font-size:20px;margin-bottom:4px} p.lead{color:#444;margin-top:0;font-size:14px} #qrcode{margin:14px auto;padding:6px;background:white;display:inline-block;border-radius:8px} #reader{width:100%;max-width:360px;margin:10px auto;display:none} button{display:inline-block;margin:8px 6px;padding:12px 16px;border-radius:8px;border:0;cursor:pointer;font-size:15px} #startBtn{background:#007BFF;color:white} #installBtn{background:#28a745;color:white;display:none} footer{margin-top:18px;font-size:12px;color:#666} .note{font-size:13px;color:#555;margin-top:8px}

C77TV Equador — Compartilhe com seus amigos

Escanear o QR para https://c77.tv.br/equador Aponte outra câmera para este QR ou imprima-o.

QR Code C77TV
OBS: Após o atalho criado (Chrome/Android) a página é aberta via HTTPS. No iOS (Safari) o botão automático não aparece — use Compartilhar → Adicionar à Tela de Início.
(function(){ // Link alvo do QR const targetUrl = ‘https://c77.tv.br/equador’; // ——- 1) GERAR QR CODE VISÍVEL ——– try{ new QRCode(document.getElementById(‘qrcode’), { text: targetUrl, width: 220, height: 220, colorDark: “#000000”, colorLight: “#ffffff”, correctLevel: QRCode.CorrectLevel.H }); }catch(err){ console.warn(‘Erro gerando QR:’, err); } // ——- 2) CRIAR MANIFEST DINÂMICO (para PWA) ——– function makeSvgIcon(size){ const svg = “+ “+ `C77`; return ‘data:image/svg+xml;utf8,’+encodeURIComponent(svg); } const manifestObj = { name: ‘C77TV Equador’, short_name: ‘C77TV Equador’, start_url: window.location.href, // o PWA iniciará nesta URL display: ‘standalone’, background_color: ‘#ffffff’, theme_color: ‘#007BFF’, icons: [ { src: makeSvgIcon(192), sizes: ‘192×192’, type: ‘image/svg+xml’ }, { src: makeSvgIcon(512), sizes: ‘512×512’, type: ‘image/svg+xml’ } ] }; const manifestBlob = new Blob([JSON.stringify(manifestObj)], {type: ‘application/json’}); const manifestURL = URL.createObjectURL(manifestBlob); const link = document.createElement(‘link’); link.rel = ‘manifest’; link.href = manifestURL; document.head.appendChild(link); // ——- 3) SERVICE WORKER DINÂMICO (básico) ——– const swCode = `self.addEventListener(‘install’, function(e){self.skipWaiting();});n`+ `self.addEventListener(‘activate’, function(e){self.clients.claim();});n`+ `self.addEventListener(‘fetch’, function(e){ e.respondWith(fetch(e.request).catch(()=>{})); });`; const swBlob = new Blob([swCode], {type: ‘text/javascript’}); const swUrl = URL.createObjectURL(swBlob); if(‘serviceWorker’ in navigator){ navigator.serviceWorker.register(swUrl).then(function(reg){ console.log(‘Service Worker registrado (dinâmico):’, reg); }).catch(function(err){ console.warn(‘Falha ao registrar Service Worker:’, err); }); } // ——- 4) PWA: antes do prompt (capturar evento) ——– let deferredPrompt = null; window.addEventListener(‘beforeinstallprompt’, function(e){ // previne prompt automático e.preventDefault(); deferredPrompt = e; // guarda para disparar só quando o usuário clicar no botão document.getElementById(‘installBtn’).style.display = ‘inline-block’; }); document.getElementById(‘installBtn’).addEventListener(‘click’, async function(){ if(!deferredPrompt) return; deferredPrompt.prompt(); const choice = await deferredPrompt.userChoice; console.log(‘Escolha do usuário:’, choice); deferredPrompt = null; this.style.display = ‘none’; }); // ——- 5) LEITOR QR (ativa ao clicar) ——– let scannerAtivo = false; let html5QrcodeScanner = null; function onScanSuccess(decodedText, decodedResult){ console.log(‘QR lido:’, decodedText); // Se for o link alvo, abre diretamente if(decodedText && decodedText.indexOf(targetUrl) !== -1){ // Limpar scanner (para liberar câmera) e redirecionar if(html5QrcodeScanner){ html5QrcodeScanner.clear().then(()=>{ window.location.href = decodedText; }).catch(()=>{ window.location.href = decodedText; }); }else{ window.location.href = decodedText; } } else { // Se quiser, abrir qualquer outro link detectado try{ const u = new URL(decodedText); if(html5QrcodeScanner){ html5QrcodeScanner.clear().then(()=>window.open(decodedText, ‘_blank’)).catch(()=>window.open(decodedText, ‘_blank’)); } else { window.open(decodedText, ‘_blank’); } }catch(err){ console.log(‘Conteúdo do QR (não URL):’, decodedText); } } } function onScanError(errorMessage){ // leitura falhou por um frame — ignoramos // console.warn(‘Scan error:’, errorMessage); } document.getElementById(‘startBtn’).addEventListener(‘click’, function(){ if(scannerAtivo) return; document.getElementById(‘reader’).style.display = ‘block’; scannerAtivo = true; html5QrcodeScanner = new Html5QrcodeScanner(‘reader’, { fps: 10, qrbox: 250 }, false); html5QrcodeScanner.render(onScanSuccess, onScanError); }); // Pequena dica caso algo falhe console.log(‘Página pronta. Para testar: 1) abra este HTML em um host HTTPS; 2) clique “Ativar Leitor QR Code” em um celular; 3) aponte para o QR exibido aqui (ou para outro QR).’); })();