// ==UserScript==
// @name 奇讯影视解析 (2025最新优化版) - 悬浮面板 - 多源增强 - 单源替换
// @namespace qx-vip-video
// @version 1.7.0
// @description 优酷、爱奇艺、腾讯、B站等视频网站VIP视频解析,悬浮面板,多源解析(可选6/4/1个源),单源放大并替换
// @author qixun
// @icon data:image/webp;base64,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
// @match *://*.youku.com/*
// @match *://*.iqiyi.com/*
// @match *://*.iq.com/*
// @match *://v.qq.com/*
// @match *://*.bilibili.com/*
// @match *://*.mgtv.com/*
// @match *://*.le.com/*
// @match *://*.tudou.com/*
// @match *://*.pptv.com/*
// @match *://*.1905.com/*
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// @license GPLv3
// @downloadURL none
// ==/UserScript==
(function () {
'use strict';
const isMobile = /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent);
// 解析线路配置
const parseUrls = [
"https://jx.dmflv.cc/?url=",
"https://www.yemu.xyz/?url=",
"https://jx.nnxv.cn/tv.php?url=",
"https://jx.playerjy.com/?ads=0&url=",
"https://jx.xmflv.com/?url=",
"https://videocdn.ihelpy.net/jiexi/m1907.html?m1907jx=",
// "https://im1907.top/?jx=",
// "https://jx.jsonplayer.com/player/?url=",
// "https://jx.yangtu.top/?url=",
// "https://vip.bljiex.com/?v=",
// "https://www.ckplayer.vip/jiexi/?url=",
// "https://jx.m3u8.tv/jiexi/?url="
];
// 网站与解析规则的映射
const siteRules = {
'v.qq.com': { node: ['.player__container', '#player-container'], area: 'playlist-list' },
'iqiyi.com': { node: ['.m-video-player-wrap', '.intl-video-wrap'], area: 'qy-episode-num' },
'iq.com': { node: ['.intl-video-wrap'], area: 'm-sliding-list' },
'youku.com': { node: ['#player'], area: 'new-box-anthology-items' },
'bilibili.com': { node: ['#bilibili-player', '.bpx-player-primary-area'], area: 'video-episode-card' },
'mgtv.com': { node: ['#mgtv-player-wrap'], area: 'episode-items' },
'le.com': { node: ['#le_playbox'], area: 'juji_grid' },
'tudou.com': { node: ['#player'], area: '' },
'pptv.com': { node: ['#pptv_playpage_box'], area: '' },
'1905.com': { node: ['#player', '#vodPlayer'], area: '' },
};
let originalVideoContainer = null;
let originalVideoContainerSelector = null;
let currentIframeContainer = null;
let videoContainerWidth = null;
let videoContainerHeight = null;
let hidePanelTimeout = null; // 隐藏面板的定时器
function getSiteRule(host) {
return siteRules[Object.keys(siteRules).find(key => host.includes(key))] || null;
}
function createParseElements() {
const iconSize = isMobile ? 40 : GM_getValue('iconWidth', 40);
const iconTop = isMobile ? 360 : GM_getValue('iconTop', 360);
const iconPosition = isMobile ? 'left' : GM_getValue('iconPosition', 'left');
const iconStyle = `
#vipParseIcon {
position: fixed;
top: ${iconTop}px;
${iconPosition}: 5px;
z-index: 999999;
cursor: pointer;
display: flex;
flex-direction: ${iconPosition === 'left' ? 'row' : 'row-reverse'};
}
#vipParseIcon img {
width: ${iconSize}px;
height: ${iconSize * 1.5}px;
opacity: ${isMobile ? 1 : GM_getValue('iconOpacity', 100) / 100};
transition: transform 0.3s ease;
}
#vipParseIcon:hover img {
transform: scale(1.2);
}
#parsePanel {
position: absolute; /* 绝对定位 */
top: ${iconSize * 1.5}px; /* 图标高度+5px的间距*/
${iconPosition === 'left' ? 'left: 0;' : 'right: 0;'} /* 根据图标位置调整 */
z-index: 999998;
background-color: #fff;
border: 1px solid #ccc;
padding: 15px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
border-radius: 5px;
width: 280px; /* 调整面板宽度 */
display: none; /* 初始隐藏 */
}
#parsePanel button {
margin: 8px 0;
padding: 10px 18px;
background-color: #2871a6;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s;
width: 100%;
box-sizing: border-box;
}
#parsePanel button:hover {
background-color: #1e5a88;
}
#configPanel {
margin-top: 15px;
padding-top: 10px;
border-top: 1px solid #eee;
}
#configPanel label {
display: block;
margin-bottom: 8px;
color: #333;
}
#configPanel input[type="radio"] {
margin-right: 6px;
}
#saveConfigBtn {
background-color: #4CAF50 !important;
}
#saveConfigBtn:hover {
background-color: #45a049 !important;
}
#aboutPanel {
margin-top: 15px;
padding: 15px;
background-color: #f8f9fa;
border-radius: 4px;
}
#aboutPanel h3 {
margin-top: 0;
color: #2c3e50;
}
#aboutPanel p {
color: #34495e;
line-height: 1.6;
}
#telegramLink {
color: #007bff;
text-decoration: underline;
cursor: pointer;
}
/* ... 其他样式保持不变 ... */
.iframe-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, auto);
grid-gap: 1px;
width: 100%;
height: 100%;
}
.iframe-container iframe {
width: 100%;
height: 400px;
border: 1px solid #ddd;
}
.iframe-wrapper {
position: relative;
}
.expand-button {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background-color: rgba(0, 0, 0, 0.5);
color: white;
text-align: center;
padding: 5px 0;
cursor: pointer;
opacity: 0;
transition: opacity 0.3s;
}
.iframe-wrapper:hover .expand-button {
opacity: 1;
}
`;
const styleEl = document.createElement('style');
styleEl.textContent = iconStyle;
document.head.appendChild(styleEl);
const iconHtml = `