// ==UserScript== // @name 武恩赐影视-New // @namespace http://tampermonkey.net/ // @version 5.1.40 // @description 【❤️ 视频自动解析,体会拥有VIP的感觉❤️,适配PC+移动 】功能有:1、支持B站大会员番剧,全网独创自由选择自动解析接口;2、爱奇艺、腾讯、优酷、芒果等全网VIP视频免费解析去广告(免跳出观影特方便) // @author 武恩赐影视 // @icon data:image/png;base64,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 // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js // @tag VIP解析 // @tag 视频破解 // @tag 去广告 // @tag 屏蔽小窗 // @tag 全网通 // @match *://*/* // @connect * // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @run-at document-end // @grant GM_log // @antifeature referral-link 【武恩赐提醒您:此提示为GreasyFork、ScriptCat代码规范要求脚本必须添加,实际使用无任何强制跳转,代码可查,请知悉】 // @license MIT // ==/UserScript== /* ┏┓ ┏┓ ┏┛┻━━━━━━┛ ┻┓ ┃ ┃ ┃ ━ ┃ ┃ ┳┛ ┗┳ ┃ ┃ ┃ ┃ ┻ ┃ ┃ ┃ ┗━━━┓ ┏━┛Codes are far away from bugs with the animal protecting ┃ ┃ 神兽保佑,代码无bug ┃ ┃ ┃ ┗━━━┓ ┃ ┣┓ ┃ ┏┛ ┗┓┓┏━┳┓┏┛ ┃┫┫ ┃┫┫ ┗┻┛ ┗┻┛ */ (function() { 'use strict'; // ================= 关键修复:防多开机制 ================= // 如果当前窗口不是顶层窗口(是在iframe里),直接退出,不运行! if (window.top !== window.self) { return; } console.log('WuEnci-Video-Script: 正在主窗口启动...'); // ================= 配置中心 ================= const DEFAULT_APIS = [ { name: "虾米 (推荐)", url: "https://jx.xmflv.com/?url=" }, { name: "TXNP (推荐)", url: "https://bfq.txnp.cn/player?url=" }, { name: "SUPER (推荐)", url: "https://super.playr.top/?url=" }, { name: "DMFLV (推荐)", url: "https://jx.dmflv.cc/?url=" }, { name: "M1907 (推荐)", url: "https://video.isyour.love/html/html2/jiexi/m1907.html?m1907jx=" }, { name: "虾米2 (备用)", url: "https://jx.xmflv.cc/?url=" }, { name: "纯净解析", url: "https://im1907.top/?jx=" }, { name: "咸鱼云", url: "https://jx.xymp4.cc/?url=" }, { name: "爱豆", url: "https://jx.aidouer.net/?url=" }, { name: "CHok", url: "https://www.gai4.com/?url=" }, { name: "OK解析", url: "https://okjx.cc/?url=" }, { name: "思古3", url: "https://jsap.attakids.com/?url=" }, { name: "YT", url: "https://jx.yangtu.top/?url=" }, { name: "789", url: "https://jiexi.789jiexi.icu:4433/?url=" }, { name: "HLS", url: "https://jx.hls.one/?url=" }, { name: "极速", url: "https://jx.2s0.cn/player/?url=" }, { name: "Play", url: "https://jx.playerjy.com/?url=" }, { name: "冰豆", url: "https://bd.jx.cn/?url=" }, { name: "百域", url: "https://jx.618g.com/?url=" }, { name: "CK", url: "https://www.ckplayer.vip/jiexi/?url=" }, { name: "ckmov", url: "https://www.ckmov.vip/api.php?url=" }, { name: "H8", url: "https://www.h8jx.com/jiexi.php?url=" }, { name: "通用", url: "https://ckmov.ccyjjd.com/ckmov/?url=" }, { name: "MAO", url: "https://www.mtosz.com/m3u8.php?url=" }, { name: "M3U8", url: "https://jx.m3u8.tv/jiexi/?url=" }, { name: "诺讯", url: "https://www.nxflv.com/?url=" }, { name: "PM", url: "https://www.playm3u8.cn/jiexi.php?url=" }, { name: "4K", url: "https://jx.4kdv.com/?url=" }, { name: "8090", url: "https://www.8090g.cn/?url=" }, { name: "剖元", url: "https://www.pouyun.com/?url=" }, { name: "夜幕", url: "https://www.yemu.xyz/?url=" }, { name: "七七云", url: "https://jx.77flv.cc/?url=" }, { name: "芒果TV1", url: "https://video.isyour.love/player/getplayer?url=" }, { name: "七哥", url: "https://jx.nnxv.cn/tv.php?url=" }, { name: "云析(带选集)", url: "https://jx.yparse.com/index.php?url=" }, { name: "优质A", url: "https://json.fongmi.cc/web?url=" }, { name: "937解析", url: "https://bfq.937auth.vip?url=" }, { name: "jsonplayer", url: "https://jx.777jiexi.com/player/?url=" }, { name: "云解析", url: "https://yparse.ik9.cc/index.php?url=" } ]; const DEFAULT_CONFIG = { autoSnap: true, openInNewTab: true, embedMode: true, autoSync: true, antiMini: true, idleOpacity: true, shortcut: true, darkMode: 'auto', posPct: { x: 2, y: 30 }, lastApi: '', apis: DEFAULT_APIS, agreedDisclaimer: true, version: '5.1.40' }; // ================= 状态管理 ================= const State = { get: () => { try { const saved = GM_getValue('config', {}); if (!saved.posPct || isNaN(saved.posPct.x)) saved.posPct = { x: 2, y: 30 }; saved.agreedDisclaimer = true; return { ...DEFAULT_CONFIG, ...saved }; } catch (e) { return DEFAULT_CONFIG; } }, set: (newConfig) => GM_setValue('config', newConfig), update: (key, value) => { const config = State.get(); config[key] = value; State.set(config); return config; } }; // ================= UI 构建 ================= const CONTAINER_ID = 'WuEnci-Video'; let container = document.getElementById(CONTAINER_ID); if (!container) { container = document.createElement('div'); container.id = CONTAINER_ID; (document.documentElement || document.body).appendChild(container); } const shadow = container.attachShadow({ mode: 'open' }); const getStyles = (isDark) => ` :host { --primary: #3B82F6; --primary-grad: linear-gradient(135deg, #3B82F6 0%, #7C3AED 100%); --warn: #EF4444; --success: #10B981; --warning: #F59E0B; --bg-blur: ${isDark ? 'rgba(30, 30, 30, 0.95)' : 'rgba(255, 255, 255, 0.95)'}; --text-main: ${isDark ? '#F3F4F6' : '#1F2937'}; --text-sub: ${isDark ? '#9CA3AF' : '#6B7280'}; --border: ${isDark ? 'rgba(255,255,255,0.1)' : 'rgba(255,255,255,0.6)'}; --hover-bg: ${isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.04)'}; position: fixed; top: 0; left: 0; z-index: 2147483647; font-family: system-ui, -apple-system, sans-serif; font-size: 14px; pointer-events: none; color: var(--text-main); width: 100vw; height: 100vh; overflow: visible; display: block !important; } .wrapper { position: absolute; width: 50px; height: 50px; pointer-events: auto; display: block !important; z-index: 2147483647; /* 默认位置 */ top: 30%; left: 10px; } .float-ball { width: 50px; height: 50px; background: var(--primary-grad); border-radius: 50%; box-shadow: 0 4px 15px rgba(59, 130, 246, 0.4); cursor: pointer; display: flex; justify-content: center; align-items: center; transition: transform 0.2s, opacity 0.3s, filter 0.3s; border: 2px solid rgba(255,255,255,0.2); backdrop-filter: blur(4px); } .float-ball:hover { transform: scale(1.1); } .float-ball:active { transform: scale(0.95); } .float-ball.idle { opacity: 0.5; filter: grayscale(0.5); transform: scale(0.9); } .ball-icon { width: 24px; height: 24px; fill: white; transition: transform 0.3s; } .wrapper.active .ball-icon { transform: rotate(90deg); } .menu-panel { position: absolute; top: 0; width: 300px; background: var(--bg-blur); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: 18px; box-shadow: 0 10px 40px rgba(0,0,0,0.2); border: 1px solid var(--border); display: none; flex-direction: column; overflow: hidden; animation: menuIn 0.25s cubic-bezier(0.2, 0.8, 0.2, 1); } @keyframes menuIn { from { opacity: 0; transform: scale(0.95) translateY(-10px); } to { opacity: 1; transform: scale(1) translateY(0); } } .pos-right .menu-panel { right: 60px; left: auto; transform-origin: top right; } .pos-left .menu-panel { left: 60px; right: auto; transform-origin: top left; } .menu-header { padding: 16px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--hover-bg); } .app-name { font-weight: 800; font-size: 15px; background: var(--primary-grad); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .tools { display: flex; gap: 4px; } .icon-btn { width: 28px; height: 28px; border-radius: 8px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.2s; fill: var(--text-sub); } .icon-btn:hover { background: var(--hover-bg); fill: var(--primary); } .icon-btn.testing { animation: spin 1s linear infinite; fill: var(--primary); pointer-events: none; } @keyframes spin { 100% { transform: rotate(360deg); } } .content-view { display: none; padding: 15px; max-height: 360px; overflow-y: auto; } .content-view.active { display: block; animation: fadeIn 0.2s; } .alert-box { margin: 10px 12px 0 12px; padding: 10px; background: ${isDark ? 'rgba(239, 68, 68, 0.15)' : '#FEF2F2'}; border: 1px solid ${isDark ? 'rgba(239, 68, 68, 0.3)' : '#FECACA'}; border-radius: 10px; color: var(--warn); font-size: 12px; display: flex; gap: 8px; align-items: start; cursor: pointer; line-height: 1.4; } .api-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; } .api-item { padding: 12px 8px; border-radius: 10px; background: var(--hover-bg); border: 1px solid transparent; font-size: 13px; text-align: center; cursor: pointer; transition: all 0.2s; position: relative; color: var(--text-main) !important; font-weight: 500; display: flex; flex-direction: column; gap: 4px; } .api-item:hover { background: transparent; border-color: var(--primary); color: var(--primary) !important; transform: translateY(-2px); } .api-item.current { background: var(--primary-grad); color: white !important; } .ping-tag { font-size: 10px; font-weight: normal; opacity: 0.8; } .ping-green { color: var(--success); } .ping-yellow { color: var(--warning); } .ping-red { color: var(--warn); } .current .ping-tag { color: rgba(255,255,255,0.9); } .footer { padding: 10px; text-align: center; border-top: 1px solid var(--hover-bg); font-size: 11px; color: var(--text-sub); } .link { color: var(--primary); text-decoration: none; display: inline-flex; align-items: center; cursor: pointer; transition: 0.2s; } .link:hover { opacity: 0.8; } .set-row { display: flex; justify-content: space-between; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--hover-bg); } .toggle { width: 42px; height: 22px; background: ${isDark ? '#4B5563' : '#E5E7EB'}; border-radius: 20px; position: relative; cursor: pointer; transition: 0.3s; } .toggle::after { content: ''; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; background: white; border-radius: 50%; transition: 0.3s; box-shadow: 0 1px 2px rgba(0,0,0,0.2); } .toggle.checked { background: var(--primary); } .toggle.checked::after { transform: translateX(20px); } .mode-switch { display: flex; background: var(--hover-bg); padding: 3px; border-radius: 8px; } .mode-btn { flex: 1; text-align: center; padding: 4px; font-size: 12px; cursor: pointer; border-radius: 6px; color: var(--text-sub); transition: 0.2s; } .mode-btn.active { background: var(--bg-blur); color: var(--primary); font-weight: bold; } .toast { position: fixed; top: 40%; left: 50%; transform: translate(-50%, -50%); background: rgba(0,0,0,0.9); color: white; padding: 12px 24px; border-radius: 50px; opacity: 0; pointer-events: none; transition: 0.3s; z-index: 2147483647; } .toast.show { opacity: 1; transform: translate(-50%, -60%); } `; const styleElement = document.createElement('style'); shadow.appendChild(styleElement); function updateTheme() { const config = State.get(); let isDark = config.darkMode === 'auto' ? (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) : (config.darkMode === 'dark'); styleElement.textContent = getStyles(isDark); } const ICONS = { play: ``, close: ``, gear: ``, edit: ``, back: ``, cross: ``, speed: `` }; const wrapper = document.createElement('div'); wrapper.className = 'wrapper'; const ball = document.createElement('div'); ball.className = 'float-ball'; ball.innerHTML = ICONS.play; ball.title = 'VIP解析'; const menu = document.createElement('div'); menu.className = 'menu-panel'; const toast = document.createElement('div'); toast.className = 'toast'; // 强制注册命令 GM_registerMenuCommand("♻️ 重置悬浮球位置", () => { State.update('posPct', { x: 2, y: 30 }); location.reload(); }); GM_registerMenuCommand("🔨 强制渲染 UI", () => { launchUI(); showToast('已强制重新渲染'); }); function init() { console.log('WuEnci-VIP: Init...'); launchUI(); if (State.get().antiMini) injectAntiMiniStyles(); setupUrlListener(); } // ================= 测速核心逻辑 ================= function testLatency(url) { return new Promise(resolve => { const start = Date.now(); GM_xmlhttpRequest({ method: 'GET', url: url, timeout: 3000, headers: { 'Cache-Control': 'no-cache' }, onload: (res) => { const time = Date.now() - start; if (res.status >= 200 && res.status < 400) resolve(time); else resolve(-1); }, onerror: () => resolve(-1), ontimeout: () => resolve(-1) }); }); } async function runSpeedTest() { const btn = menu.querySelector('#btn-speed'); if(btn.classList.contains('testing')) return; btn.classList.add('testing'); showToast('🚀 开始智能测速...'); const items = menu.querySelectorAll('.api-item'); const tasks = Array.from(items).map(async (item) => { const url = item.dataset.url; const tag = item.querySelector('.ping-tag'); tag.textContent = '检测中...'; tag.className = 'ping-tag'; const testUrl = url.includes('?') ? url : (url + '?'); const ms = await testLatency(testUrl); if (ms === -1) { tag.textContent = '超时/故障'; tag.classList.add('ping-red'); } else { tag.textContent = ms + 'ms'; if(ms < 500) tag.classList.add('ping-green'); else if(ms < 1500) tag.classList.add('ping-yellow'); else tag.classList.add('ping-red'); } }); await Promise.all(tasks); btn.classList.remove('testing'); showToast('✅ 测速完成'); } // ================= 核心:全局天眼 & 防小窗系统 ================= let overlayUpdateTimer = null; function safeOpen(baseUrl, name) { const config = State.update('lastApi', baseUrl); const targetUrl = baseUrl + location.href; if (config.embedMode) { showToast(`📺 正在覆盖解析: ${name}`); toggleMenu(false); setTimeout(() => coverPlayerGlobal(targetUrl), 200); } else { showToast(`🚀 正在新标签页解析: ${name}`); setTimeout(() => { config.openInNewTab ? window.open(targetUrl, '_blank') : location.href = targetUrl; toggleMenu(false); }, 500); } } function findVideoElement() { const video = document.querySelector('video'); if (video) return video; const selectors = ['#player', '.player-container', '#mod_player', '#bilibili-player', '.iqp-player', '#mgtv-player-wrap']; for (let sel of selectors) { const el = document.querySelector(sel); if (el && el.clientWidth > 100) return el; } return null; } function injectAntiMiniStyles() { if (!document.getElementById('gemini-anti-mini-style')) { const style = document.createElement('style'); style.id = 'gemini-anti-mini-style'; style.textContent = ` .txp_player_mini, .txp_mini_player, .txp-pip-player, .txp-player-mini-container { display: none !important; } .bilibili-player-video-float, .mini-player, .bpx-player-container[data-screen="mini"] { display: none !important; } .mini-player, .yp-player-mini, .iqp-player-mini, .iqp-player.mini, .pip-mode, .float-player { display: none !important; } .mgtv-player-mini, .mgtv-pip-player, .mini-player-mask { display: none !important; } #mini-player, .player-mini { display: none !important; } `; document.head.appendChild(style); } } function removeAntiMiniStyles() { const s = document.getElementById('gemini-anti-mini-style'); if(s) s.remove(); } function coverPlayerGlobal(url) { const targetEl = findVideoElement(); if (!targetEl) { showToast('❌ 未找到播放器,尝试弹窗播放'); window.open(url, '_blank'); return; } if (State.get().antiMini) injectAntiMiniStyles(); if(window.muteInterval) clearInterval(window.muteInterval); window.muteInterval = setInterval(() => { document.querySelectorAll('video').forEach(v => { if (!v.muted || !v.paused) { v.muted = true; v.pause(); v.volume = 0; } }); }, 1500); let overlayId = 'gemini-global-overlay'; let overlay = document.getElementById(overlayId); if (!overlay) { overlay = document.createElement('div'); overlay.id = overlayId; overlay.style.cssText = ` position: absolute; z-index: 2147483646; background: #000; display: flex; flex-direction: column; overflow: hidden; `; const toolbar = document.createElement('div'); toolbar.style.cssText = `height: 0; position: absolute; top:0; right:0; z-index: 2147483648;`; toolbar.innerHTML = `