(function() { 'use strict'; // 等待页面加载完成 function waitForElement(selector, timeout = 5000) { return new Promise((resolve) => { const start = Date.now(); const check = () => { const el = document.querySelector(selector); if (el) return resolve(el); if (Date.now() - start >= timeout) return resolve(null); setTimeout(check, 200); }; check(); }); } // 解析播放源:从页面 script 或 video 标签中提取真实视频地址 function extractVideoSource() { const video = document.querySelector('video'); if (video && video.src) { return { type: 'direct', url: video.src }; } // 尝试从配置变量中读取 if (window.playerConfig && window.playerConfig.url) { return { type: 'config', url: window.playerConfig.url }; } // 寻找 m3u8 链接 const scripts = Array.from(document.querySelectorAll('script')); for (let script of scripts) { const content = script.textContent || script.innerText; if (content && (content.includes('.m3u8') || content.includes('.mp4'))) { const match = content.match(/(https?:[^"'\s]+\.(m3u8|mp4)[^"'\s]*)/i); if (match) return { type: 'script', url: match[1] }; } } return null; } // 添加浮动工具栏 function addFloatingToolbar() { if (document.getElementById('bdtv-toolbar')) return; const toolbar = document.createElement('div'); toolbar.id = 'bdtv-toolbar'; toolbar.innerHTML = ` 就绪 `; document.body.appendChild(toolbar); document.getElementById('bdtv-extract').addEventListener('click', () => { const source = extractVideoSource(); const statusSpan = document.getElementById('bdtv-status'); if (source) { statusSpan.innerHTML = `✅ 获取到: ${source.url.substring(0, 60)}...`; // 可以弹窗或直接播放 const video = document.querySelector('video'); if (video && source.url !== video.src) { video.src = source.url; video.load(); video.play(); statusSpan.innerHTML = '🎉 已切换播放源'; } else if (!video) { statusSpan.innerHTML = '⚠️ 未找到 video 标签,可复制链接手动播放'; navigator.clipboard.writeText(source.url); alert('视频链接已复制到剪贴板'); } } else { statusSpan.innerHTML = '❌ 未检测到播放源'; } }); document.getElementById('bdtv-fullscreen').addEventListener('click', () => { const video = document.querySelector('video'); if (video) { if (video.requestFullscreen) video.requestFullscreen(); else if (video.webkitRequestFullscreen) video.webkitRequestFullscreen(); else alert('当前浏览器不支持全屏'); } else { alert('未找到视频元素'); } }); } // 自动运行:检测播放页才显示工具栏 function init() { if (window.location.pathname.includes('/play/') || window.location.pathname.includes('/vod/')) { addFloatingToolbar(); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();