// ==UserScript==
// @name 觅影
// @version 20.20.final
// @author (o˘◡˘o)
// @description 支持移动端;加速跳广告;VIP 视频解析;支持自动解析;隐藏视频水印;快捷跳转搜索源;自定义解析和搜索源;豆瓣·选影视 净化
// @namespace (o˘◡˘o)
// @icon https://p.pstatp.com/origin/fe690000c9141955bbac
// @license GPL License
// @include *
// @run-at document-start
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @grant unsafeWindow
// ==/UserScript==
!async function() {
function _tO() {
const e = _tTLL([ "", "" ]);
return _tO = function() {
return e;
}, e;
}
function _tTLL(e, t) {
return t || (t = e.slice(0)), e.raw = t, e;
}
function _tCA(e) {
return _aWH(e) || _iTA(e) || _uITA(e) || _nIS();
}
function _nIS() {
throw new TypeError("TypeError");
}
function _uITA(e, t) {
if (e) {
if ("string" == typeof e) return _aLTA(e, t);
var i = Object.prototype.toString.call(e).slice(8, -1);
return "Object" === i && e.constructor && (i = e.constructor.name), "Map" === i || "Set" === i ? Array.from(e) : "Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? _aLTA(e, t) : void 0;
}
}
function _iTA(e) {
if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e);
}
function _aWH(e) {
if (Array.isArray(e)) return _aLTA(e);
}
function _aLTA(e, t) {
(null == t || t > e.length) && (t = e.length);
for (var i = 0, n = Array(t); i < t; i++) n[i] = e[i];
return n;
}
var _Mathfloor = Math.floor, _Mathmin = Math.min, _Mathmax = Math.max;
function h(e) {
let t = "";
const i = {};
for (var n = arguments.length, a = Array(1 < n ? n - 1 : 0), o = 1; o < n; o++) a[o - 1] = arguments[o];
for (let n = 0; n < a.length; n++) if (a[n] instanceof HTMLElement) {
const o = "id" + n;
i[o] = a[n], t += e[n] + '<div append="' + o + '"></div>';
} else t += e[n] + a[n];
t += e[e.length - 1];
const r = document.createElement("template");
r.innerHTML = t;
const s = r.content;
return _tCA(s.querySelectorAll("[append]")).forEach((function(e) {
const t = i[e.getAttribute("append")];
e.parentNode.insertBefore(t, e), e.parentNode.removeChild(e);
})), s.collect = function() {
let {attr: e = "ref", keepAttribute: t, to: i = {}} = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
const n = s.querySelectorAll("[" + e + "]");
return _tCA(n).reduce((function(i, n) {
const a = n.getAttribute(e).trim();
return t || n.removeAttribute(e), i[a] = i[a] ? Array.isArray(i[a]) ? [].concat(_tCA(i[a]), [ n ]) : [ i[a], n ] : n,
i;
}), i);
}, s;
}
function DOM() {
const e = {};
let t = function(e) {
var t, i;
let n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
for (var a = arguments.length, o = Array(2 < a ? a - 2 : 0), r = 2; r < a; r++) o[r - 2] = arguments[r];
return {
$: e,
a: !n || n.$ || n.concat ? {
c: (t = []).concat.apply(t, [ n || [] ].concat(o))
} : (n.c = (i = []).concat.apply(i, o), n)
};
}, i = function() {
let e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : [], t = 1 < arguments.length ? arguments[1] : void 0, i = 2 < arguments.length ? arguments[2] : void 0;
return e.map((function(e) {
return e(t, i);
}));
}, n = function(e) {
return new Proxy(e, {
get: function(e, t, i) {
return n((function() {
return (i = e.apply(void 0, arguments)).a.className = (i.a.className || " ") + " " + t,
i;
}));
}
});
}, a = e.R = function(e, t) {
let n = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : t.childNodes, o = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : 0;
for ([].concat(e).map((function(r, s, l) {
let c = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : n[o++], d = 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : r.s = (c ? c.a == r.$ && (r.s || c.s) : r.s) || {}, p = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : {
a: r.$,
s: d,
m: [],
u: [],
d: []
};
for (;(r.$ || e).bind; ) r = r.$(r.a, d, (function(i) {
return Object.assign(d, i) && a(e, t);
}), p);
s = r.replace ? document.createTextNode(r) : document.createElement(r.$), s = c ? c.$ != r.$ && c.data != r ? (t.replaceChild(s, c),
s) : c : t.appendChild(s), l = c ? c.a == p.a ? p.d : (i(c.u), a([], c), p.m) : p.m,
Object.assign(s, r, p), r.replace ? s.data = r : Object.keys(r.a).map((function(e) {
return "style" == e ? Object.assign(s[e], r.a[e]) : s[e] !== r.a[e] && (s[e] = r.a[e]);
})) && p.r || a(r.a.c, s), i(l, s, c);
})); n[o]; ) i(n[o].u), a([], t.removeChild(n[o]));
};
return e.H = new Proxy(t, {
get: function(e, i) {
return e[i] || n(t.bind(e, i));
}
}), e;
}
function getVipPlayer() {
return $(PlayerSelector).get(0) || $("#player, .player").get(0);
}
function xString(e) {
return _D ? e : e.replace(/(\w)/g, (function(e, t) {
return xChar[t] || t;
}));
}
function M_VipUrl(e) {
if (!e || _D) return e;
const t = xString(e).replace(/·/g, ".").replace(/-/g, "/");
return "https://" + t + (t.includes("?") ? "" : (t.endsWith(".") ? "php" : /\/$/.test(t) ? "" : "/") + "?url") + "=";
}
function getKeywordFromUrl(e) {
const t = e && e.source, i = location.href.match(t ? e : CommonSearchKeywordRegex);
return i ? decodeURIComponent((t ? i[1] || i[2] : i[2] || i[4]) || "") : "";
}
function purifyKeyword(e) {
return e ? (PurifyKeywordRegex ? e.replace(PurifyKeywordRegex, "") || (e.startsWith("第") ? "" : e) : e).replace(/\s*:\s*$/, "").replace(/\s*([粤英日]语|\[.语\])\s*$/, "").replace(/(.*\S.*)\(.*\)\s*$/, "$1").replace(/.*《(.+)》.*/, "$1").replace(/\s+(bd|hd|\d+p)\s*$/i, "").replace(/[::]\s*$/, "").replace(/(.+)/, "").trim() : "";
}
function SyncState(e, t) {
e._sync || (t({
_sync: !0
}), States.push(t));
}
function SetState(e) {
States.forEach((function(t) {
return t(e);
}));
}
function get$() {
const e = {
on(e, t) {
var i = this;
return e.split(" ").forEach((function(e) {
return i.addEventListener(e, t);
})), this;
},
off(e, t) {
var i = this;
return e.split(" ").forEach((function(e) {
return i.removeEventListener(e, t);
})), this;
},
attr(e, t) {
return void 0 === t ? this.getAttribute(e) : (null == t ? this.removeAttribute(e) : this.setAttribute(e, t || ""),
this);
}
};
return function t(i) {
function n(e) {
return "string" == typeof e ? h(_tO(), e) : e[0] || e;
}
let a = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : document;
if (i instanceof Function) return "loading" == document.readyState ? document.addEventListener("DOMContentLoaded", i) : i();
let o = i instanceof NodeList || Array.isArray(i) ? i : i instanceof HTMLElement || i instanceof SVGElement ? [ i ] : a.querySelectorAll(i);
return o.length || (o = []), Object.assign(Array.from(o).map((function(t) {
return Object.assign(t, e);
})), {
on(e, t) {
return this.forEach((function(i) {
return i.on(e, t);
})), this;
},
off(e, t) {
return this.forEach((function(i) {
return i.off(e, t);
})), this;
},
attr(e, t) {
return "string" == typeof e && void 0 === t ? this[0].attr(e) : ("object" == typeof e ? this.forEach((function(t) {
return Object.entries(e).forEach((function(e) {
let [i, n] = e;
return t.attr(i, n);
}));
})) : "string" == typeof e && (t || null == t || "" == t) && this.forEach((function(i) {
return i.attr(e, t);
})), this);
},
get(e) {
return this[0 > e ? e + this.length : e];
},
eq(e) {
return t(this.get(e));
},
each(e) {
return this.forEach((function(t, i) {
e.bind(t)(t, i, this);
})), this;
},
remove() {
return this.each((function(e) {
return e.parentNode && e.parentNode.removeChild(e);
}));
},
empty() {
return this.each((function(e) {
for (;e.firstChild; ) e.removeChild(e.firstChild);
}));
},
hasClass(e) {
return this[0] && this[0].classList.contains(e);
},
addClass(e) {
var t = this;
return e.trim().split(/\s+/).forEach((function(e) {
return t.each((function(t) {
return t.classList.add(e);
}));
})), this;
},
removeClass(e) {
var t = this;
return e.split(/\s+/).forEach((function(e) {
return t.each((function(t) {
return t.classList.remove(e);
}));
})), this;
},
toggleClass(e) {
return this.each((function(t) {
return t.classList.toggle(e);
}));
},
css(e, t) {
if ("object" == typeof e) {
for (const t in e) this.each((function(i) {
i.style[t] = e[t];
}));
return this;
}
return t === []._ ? this[0].style[e] : this.each((function(i) {
i.style[e] = t;
}));
},
width(e) {
const t = this[0];
return void 0 === e ? parseFloat(getComputedStyle(t, null).width.replace("px", "")) : ("function" == typeof e && (e = e()),
t.style.width = "string" == typeof e ? e : e + "px", this);
},
height(e) {
const t = this[0];
return void 0 === e ? parseFloat(getComputedStyle(t, null).height.replace("px", "")) : ("function" == typeof e && (e = e()),
t.style.height = "string" == typeof e ? e : e + "px", this);
},
text(e) {
return e === []._ ? this[0].textContent : this.each((function(t) {
t.textContent = e;
}));
},
html(e) {
return e === []._ ? this[0].innerHTML : this.each((function(t) {
t.innerHTML = e;
}));
},
before(e) {
return this.each((function(t) {
return t.insertAdjacentHTML("beforebegin", e);
}));
},
after(e) {
return this.each((function(t) {
return t.insertAdjacentHTML("afterend", e);
}));
},
append(e) {
return this.each((function(t) {
return t.appendChild(n(e));
}));
},
prepend(e) {
return this.each((function(t) {
return t.insertBefore(n(e), t.firstChild);
}));
},
parent() {
return 0 < this.length ? t(this[0].parentNode) : [];
},
click() {
try {
this[0] && this[0].click && this[0].click();
} catch (e) {}
return this;
},
clickOutside(e) {
return this.each((function(t) {
document.addEventListener("click", (function(i) {
t.contains(i.target) || e();
}));
}));
}
});
};
}
function wait(e, t) {
let i = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 0;
const n = e instanceof Function ? e() : 0 < $(e).length;
return n ? void (t instanceof Function && t(n)) : void (100 < i || setTimeout((function() {
wait(e, t, i + 1);
}), 100));
}
function $$(e, t) {
return new Promise((function(i) {
wait(e, (function(e) {
t instanceof Function && t(e), i(e);
}));
}));
}
function emitter(e) {
return e = e || Object.create(null), {
on(t, i) {
(e[t] || (e[t] = [])).push(i);
},
off(t, i) {
e[t] && e[t].splice(e[t].indexOf(i) >>> 0, 1);
},
emit(t, i) {
(e[t] || []).slice().map((function(e) {
e(i);
})), (e["*"] || []).slice().map((function(e) {
e(t, i);
}));
}
};
}
function delay(e) {
return new Promise((function(t) {
setTimeout((function() {
t();
}), e);
}));
}
function Is(e, t) {
return t || (t = location.href.replace(/=https?:.+/g, "=miying")), !!e && (e instanceof Function ? e(t) : "string" == typeof e ? e.split("|").some((function(e) {
return t.includes(e);
})) : e.test(t));
}
function IsNot(e, t) {
return !Is(e, t);
}
function getGlobal(e) {
return (hasUnsafeWindow ? unsafeWindow : window)[e];
}
function setGlobal(e, t) {
window[e] = t, hasUnsafeWindow && (unsafeWindow[e] = t);
}
function parseStoreData(e) {
let t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : null;
if ("string" == typeof e) try {
e = JSON.parse(e);
} catch (e) {}
return null === e ? t : e;
}
function getCdnUrl(e) {
return "https://cdn.bootcdn.net/ajax/libs" + e;
}
async function fetchCdnUrl(e, t) {
let i;
const n = /^\/\w/.test(e);
if (e = n ? getCdnUrl(e) : e, !t && n) {
const t = e.match(/.*\/([^\/]+)\/([^\/]+)$/);
i = t[2];
} else i = t && t.name || e;
const a = GlobalStore.get(i);
let o;
return o = a && "20.20.final" === a.version ? a.data : await window.fetch(e).then((function(e) {
return e.text();
})).then((function(e) {
return GlobalStore.set(i, {
data: e,
version: VERSION
}), e;
})), o;
}
async function addJs(url, opts) {
const data = await fetchCdnUrl(url, opts);
return eval(data);
}
async function addCssUrl(e) {
addCss(await fetchCdnUrl(e));
}
function addCss(e) {
let t;
return /^(http|\/)/.test(e) ? addCssUrl(e) : (e = e.replace(/\n+\s*/g, " "), t = document.createElement("style"),
t.styleSheet ? t.styleSheet.cssText = e : t.appendChild(document.createTextNode(e)),
t.type = "text/css", void document.getElementsByTagName("head")[0].appendChild(t));
}
function prefixCss(e, t) {
let i, n, a, o, r = t.length;
t += " ", e = (e = (e = e.replace(/\/\*(?:(?!\*\/)[\s\S])*\*\/|[\r\n\t]+/g, "")).replace(/}(\s*)@/g, "}@")).replace(/}(\s*)}/g, "}}");
for (let s = 0; s < e.length - 2; s++) i = e[s], n = e[s + 1], "@" === i && (a = !0),
a || "{" !== i || (o = !0), o && "}" === i && (o = !1), !o && "@" !== n && "}" !== n && ("}" === i || "," === i || ("{" === i || ";" === i) && a) && (e = e.slice(0, s + 1) + t + e.slice(s + 1),
s += r, a = !1);
return 0 !== e.indexOf(t) && 0 !== e.indexOf("@") && (e = t + e), e;
}
function ensureArray(e) {
return Array.isArray(e) ? e : e.trim().split(/[\n\s]*\n+[\n\s]*/);
}
function toggleViewport() {
let e = document.querySelector("meta[name=viewport]");
e || (e = document.createElement("meta"), e.name = "viewport", document.getElementsByTagName("head")[0].appendChild(e));
const t = allowScale ? "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" : "width=device-width, initial-scale=1.0, user-scalable=yes";
e.setAttribute("content", t), allowScale = !allowScale;
}
function parseUrl(e, t) {
let i, n, a = e.trim().split(/[\s@]+/);
const o = a.filter((function(e) {
return /https?:\/\//.test(e);
}));
a = a.filter((function(e) {
return !/https?:\/\//.test(e);
})), o.forEach((function(e) {
/\/\/m\.|\/m\/|\/\/msou/.test(e) ? i = e : n = e;
}));
let r = (isMobile ? i : n) || o[0];
t && (r = toSearchUrl(r, t));
const s = 0 < a.length ? a.join(" ") : r.match(/\/\/(.+\.)?([^\/]+)\.\w+\//)[2].replace(/^(\w)/, (function(e) {
return e.toUpperCase();
}));
return {
url: r,
name: s
};
}
function getCdnImageUrl(e) {
return "https://p.pstatp.com/origin/" + e;
}
function closeMY() {
let e = !(0 < arguments.length && void 0 !== arguments[0]) || arguments[0];
$(".MY").hasClass("is-active") && (e && pauseMYPlay(), $(".MY").attr("data-scroll", null),
$(".MY").removeClass("is-active"));
}
function updatePlayerBox() {
playerBox = isMobile ? null : getVipPlayer(), playerBox ? ($(playerBox).addClass("MY-player"),
$("html").addClass("MY-pip"), $(playerBox).on("click", (function() {
closeMY(!1);
})), playerBox.scrollIntoView({
behavior: "smooth",
block: "start"
})) : playerBox = document.querySelector(".MY-player");
}
function pauseMYPlay() {
const e = document.querySelector(".MY .MY-player video");
e && !e.paused && e.pause();
}
function pausePlay() {
try {
$("body video, body audio").each((function(e) {
e.paused || e.pause();
}));
const e = Date.now(), t = setInterval((function() {
const i = Date.now() - e, n = getGlobal("playerObject") || getGlobal("MGTVPlayer") && getGlobal("MGTVPlayer").player || getGlobal("videoPlayer") || getGlobal("PLAYER");
n && n.pause instanceof Function && n.pause(), (!n || i > 9e4) && clearInterval(t);
}), 60);
} catch (e) {}
}
async function playVideo(e) {
if (pausePlay(), $(".MY-play-list .MY-button").removeClass("is-active"), SetState({
currentVideoUrl: e
}), playingVideoUrl = e, $(".MY-player").removeClass("is-loaded"), $(".MY-video-urls").removeClass("is-play-fail"),
/=https?:.+/.test(e)) {
const t = '<div class="MY-player-bg" style="background-image: url(' + getCdnImageUrl(PLCs[parseInt(Date.now() / 1e3) % PLCs.length]) + ');"><div class="MY-player-mask"></div><div class="MY-sign">(o˘◡˘o)<span class="MY-version">v 20.20.final</span></div><div class="MY-slogan"><strong>觅</strong><div class="MY-loader">' + Icon.loader + '</div><strong>影</strong></div><div class="MY-error-text">解析失败,更换解析播放,或在其它正版网站上解析</div></div>';
updatePlayerBox(), $(playerBox).html('<div class="MY-player-box is-iframe">' + t + '<iframe id="MY-player-iframe" style="width: 100%; height: 100%; border: none; outline: none;" width="100%" height="100%" allowtransparency="true" frameborder="0" scrolling="no" sandbox="allow-scripts allow-same-origin allow-forms" allowfullscreen="allowfullscreen" mozallowfullscreen="mozallowfullscreen" msallowfullscreen="msallowfullscreen" oallowfullscreen="oallowfullscreen" webkitallowfullscreen="webkitallowfullscreen" src="' + e + '"></iframe></div>'),
setTimeout((function() {
$(playerBox).addClass("is-loaded");
}), 2e3), player && player.destroy && player.destroy(), player = null;
} else {
updatePlayerBox(), await playBefore();
let t = document.querySelector(".MY-player video");
(!t || document.querySelector(".MY-player > .MY-player-box")) && ($(playerBox).html('<div class="MY-player-box is-video"><video controls autoplay preload="auto" src="' + e + '" poster="' + PPC + '"></video></div>'),
t = document.querySelector(".MY-player video"));
const i = getGlobal("Plyr"), n = getGlobal("Hls") || getGlobal("hls");
if (!player && i && (player = new i(t, {
invertTime: !1,
autoplay: !0,
volume: .75,
speed: {
selected: 1,
options: [ .5, .75, 1, 1.25, 1.5, 2 ]
},
storage: {
enabled: !0,
key: "觅影.plyr"
}
}), player.on("enterfullscreen", (function() {
$("html").addClass("MY-fullscreen");
})), player.on("exitfullscree", (function() {
$("html").removeClass("MY-fullscreen");
})), player.on("error", (function() {
$(".MY-video-urls").addClass("is-play-fail"), playFailedUrl = playingVideoUrl;
}))), /\.m3u8/.test(e) && n && n.isSupported()) {
const i = new n;
i.loadSource(e), i.attachMedia(t), i.on(n.Events.MANIFEST_PARSED, (function() {
t.play();
}));
} else t.src = e, t.addEventListener("loadedmetadata", (function() {
t.play();
}));
}
}
function getTargetUrl() {
return decodeURI(location.href.replace(/&?\w+=http[^&]+/, "").replace(/.+(https?:)/, "$1"));
}
function playVipUrl(e, t) {
if (!e) return;
let i = getTargetUrl();
t && t.vip && t.vip.fixUrl && (i = t.vip.fixUrl instanceof Function ? t.vip.fixUrl(i) : fixVipUrl(i));
const n = e + (e.includes("blob:") ? "" : i);
settings.pip && !/http:/.test(e) ? playVideo(n) : (pausePlay(), setTimeout((function() {
window.open(n, "_blank");
}), 100));
}
function getVideoType(e) {
return e.startsWith("blob:") ? "blob" : e.match(videoExtRegex)[1];
}
function getVideoShortName(e, t, i) {
const n = getVideoType(e);
let a = nums[t];
if (!i) {
const t = e.match(/\/\/.*?([^.]+)\.[^.]+\//), i = e.replace(/\?.+/, "").split(/[\/-]/).pop().split(".");
a = (t ? t[1] + "/" : "") + i[0].slice(0, 8);
}
return a + (n ? '<span class="MY-ext">' + n + "</span>" : "");
}
async function playBefore() {
isLoadPlayer || (await addJs("/hls.js/0.13.2/hls.min.js"), addCss("/plyr/3.6.2/plyr.css"),
await addJs("/plyr/3.6.2/plyr.min.js"), await addJs("/dplayer/1.25.1/DPlayer.min.js"),
isLoadPlayer = !0);
}
function iSniff() {}
function hikerSniff() {
let resource = eval(window.fy_bridge_app.getNetworkRecords());
resource = resource.filter((function(e) {
return e.timestamp > sniffTimestamp && isValidVideoUrl(e.url);
})), isSniffing && (resource.forEach((function(e) {
getSniffVideoUrl(e.url);
})), setTimeout((function() {
hikerSniff();
}), 200));
}
function mixiaSniff() {
let e = [], t = window.mx_browser_obj.getweblogs("http");
"error" !== t && (e = t.trim().split(/\s*\n[\n\s]*/), e = e.filter((function(e) {
return isValidVideoUrl(e);
}))), isSniffing && (e.forEach((function(e) {
getSniffVideoUrl(e);
})), setTimeout((function() {
mixiaSniff();
}), 200));
}
function addIframe(e) {
let t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : ".MY-iframes";
const i = document.createElement("iframe");
return i.frameborder = "0", i.scrolling = "no", i.seamless = !0, i.sandbox = "allow-scripts allow-same-origin allow-forms",
i.src = e, $(t).append(i), i;
}
function removeIframe(e) {
if (e) try {
e.src = "about:blank", $(e).remove();
} catch (e) {}
}
function emptyIframes() {
$(".MY-iframes > iframe").each((function(e) {
removeIframe(e);
})), $(".MY-iframes").empty();
}
function updateSettings(e, t) {
settings[e] = t, Store.set("settings", settings);
}
function sniffStart() {
pausePlay(), sniffTimestamp = Date.now(), isSniffing = !0, isIframePlayCheck = !1,
sniffIndex = -1, iframes = {}, $(".MY-vip-sniff").removeClass("is-fail is-done").addClass("is-sniffing");
let e = 0;
const t = sniffVipUrls.length, i = setInterval((function() {
const n = $(".MY-iframes > iframe").length, a = $(".MY-vip-list .MY-button.is-success").length, o = videoUrls.length, r = (o + a) / 17, s = Date.now() - sniffTimestamp;
(0 === n && sniffIndex >= t - 1 || 5e4 < s && (10 <= o || 8 <= o && 5 <= a || 15 <= a) || 8e4 < s && r >= .99) && (sniffDone(),
0 === o && 0 === a && sniffFail()), isSniffing ? (e = _Mathmin(_Mathmax(_Mathmin(_Mathmax(sniffIndex + 1, 1) / (t + 2 * n), 1), r, e + .0025), .99),
$(".MY-bg-progress").css({
width: 100 * e + "%"
})) : clearInterval(i);
}), 250);
}
function sniffDone() {
$(".MY-vip-sniff").removeClass("is-fail is-sniffing").addClass("is-done"), isSniffing = !1,
emptyIframes(), iframes = {}, $(".MY-vip-sniff").addClass("is-done"), $(".MY-bg-progress").css({
width: document.querySelector(".MY-vip-list").scrollWidth + "px"
});
}
function sniffFail() {
sniffDone(), $(".MY-vip-sniff").addClass("is-fail"), $(".MY-player-bg").addClass("is-fail");
}
function sniff() {
if (isSniffing && sniffDone(), sniffStart(), !isAutoSniffing) if (isAutoSniffing = !0,
isAllowIframeSniff) iSniff(); else if (isAllowHikerSniff) hikerSniff(); else {
if (!isAllowMixiaSniff) return void sniffDone();
mixiaSniff();
}
sniffGo();
}
function sniffGo() {
if (!isSniffing) return;
const e = sniffVipUrls[++sniffIndex];
if (!e) {
const e = setInterval((function() {
0 === $(".MY-iframes > iframe").length && (clearInterval(e), sniffDone(), 0 === videoUrls.length && 0 === $(".MY-vip-list .MY-button.is-success.is-active").length && sniffFail());
}), 1e3);
return;
}
let t = $(".MY-iframes > iframe").length;
const i = addIframe(e.url + location.href);
iframes[e.url] = i, i.mute && i.mute(), i.onload = function() {
setTimeout((function() {
removeIframe(i, "TIMEOUT");
}), 12e3);
}, setTimeout((function() {
removeIframe(i, "MAX TIMEOUT");
}), 15e3), function e() {
if (t = $(".MY-iframes > iframe").length, t > MAX_SNIFF_LIMIT - 1) setTimeout((function() {
e();
}), 100); else {
const e = player && player.ready && 0 < player.duration, i = _Mathmin(videoUrls.length * (e ? 200 : 150) + 100 * _Mathmax(MAX_SNIFF_LIMIT - t, 0) + _Mathmin(50 * sniffIndex, 1e3), 3e3);
setTimeout((function() {
sniffGo();
}), i);
}
}();
}
function activeMiying(e) {
function t(e) {
return {
x: e.touches ? e.touches[0].pageX : e.clientX,
y: e.touches ? e.touches[0].pageY : e.clientY
};
}
function i(e) {
e.preventDefault(), e.stopPropagation(), h = !0, b = !1;
const {x: i, y: n} = t(e);
m = i - f.offsetLeft, u = n - f.offsetTop, g = Date.now();
}
function n(e) {
if (!(200 > Date.now() - g) && (b = !0, h)) {
$(".MY-fab").addClass("is-moving");
const {x: i, y: n} = t(e), a = _Mathmin(_Mathmax(0, i - m), window.innerWidth - f.offsetWidth), o = _Mathmin(_Mathmax(0, n - u), window.innerHeight - f.offsetHeight);
f.style.left = a + "px", f.style.top = o + "px", Store.set("fabLeft", a), Store.set("fabTop", o);
}
}
function a() {
h = !1, $(".MY-fab").removeClass("is-moving"), b || ($(".MY").addClass("is-active"),
isAllowSniff && !$(".MY-vip-sniff").hasClass("is-done") && settings.autoJiexi && setTimeout((function() {
sniff();
}), 1e3));
}
if (document.querySelector("miying")) return;
const o = window.innerHeight, r = window.innerWidth;
let s = 0, l = 0;
r > o ? (l = parseInt(2 * o / 3) - 6, s = parseInt(16 * l / 9)) : (s = r, l = parseInt(9 * s / 16));
let c = window.innerWidth - (isMobile ? 70 : 80), d = .65 * window.innerHeight;
addCss(".MY {position: fixed;top: 0;left: 0;width: 100%;height: 100%;z-index: 2147483647;display: flex;flex-direction: column;justify-content: flex-end;pointer-events: none;font-size: 14px;}.MY-m {font-size: 12px;}.MY > * {pointer-events: auto;z-index: 1;}.MY-hide {display: none !important;visibility: hidden !important;width: 0 !important;height: 0 !important;max-width: 0 !important;max-height: 0 !important;overflow: hidden !important;position: absolute !important;left: -99999px !important;opacity: 0 !important;pointer-events: none !important;}.MY svg {width: 100%;min-width: 1em;}.MY-main {position: relative;}.MY-fab {position: fixed;left: " + _Mathmin(Store.get("fabLeft", c), c) + "px;top: " + _Mathmin(Store.get("fabTop", d), d) + "px;font-size: 18px;width: 100%;height: 100%;max-width: " + (isMobile ? "2em" : "1.5em") + ";max-height: " + (isMobile ? "2em" : "1.5em") + ';display: flex;justify-content: center;align-items: center;cursor: pointer;padding: 5px 5px 3px;border-radius: 50%;background: #e0e5ec;box-shadow: 0 3px 20px -3px #455A64;color: #455A64;pointer-events: auto;animation: my-zoom-in-up .85s ease;}.MY-fab:not(.is-moving) {transition: top .75s, left .75s;}.MY-fab svg {display: block;}.MY.is-active .MY-fab, .MY[data-scroll="down"] .MY-fab {animation: my-zoom-out-down 1s ease-in-out;top: 103vh !important;left: 103vw !important;transition: top .75s, left .75s;}.MY-fab-border {position: absolute;left: -11px;top: -11px;right: -11px;bottom: -11px;opacity: .75;color: #455A64;}.MY-rotate {animation: my-rotate 6s linear infinite;}.MY-fab:not(.has-vip) .MY-ying {display: none;}.MY-fab.has-vip .MY-mi {display: none;}.MY-fab-tip {display: none;word-break: keep-all;top: -2.25em;padding: 2px 5px;border-radius: 3px;position: absolute;font-size: .75em;background-color: #f7ede2;color: #455A64;}.MY-fab:hover .MY-fab-tip {display: block;}.MY-close, .MY-fullscreen {position: absolute;width: 24px;height: 24px;cursor: pointer;border-radius: 50%;padding: 5px;background: #EEEEEE;box-shadow: 0 0 8px 4px rgb(216,216,216);color: #607D8B;display: flex;justify-content: center;align-items: center;z-index: 10;transition: all .5;}.MY-close {right: .5em;top: -1.5em;}.MY-fullscreen {top: -1.15em;right: 4em;padding: 5px;width: 16px;height: 16px;border-radius: 3px;}.MY-tiny .MY-fullscreen {right: 0;top: -1.65em;}.MY-m .MY-fullscreen {display: none;}.MY-fullscreen > * {display: flex;}.MY:not(.MY-tiny) .MY-icon-shrink {display: none;}.MY-tiny .MY-icon-expand {display: none;}.MY-close:hover {color: #e56b6f;}.MY-fullscreen:hover {color: #2a9d8f;}.MY-edit-close {position: absolute;right: -.5em;top: -1em;width: 1.5em;height: 1.5em;cursor: pointer;border-radius: 50%;padding: 5px;background: #EEEEEE;box-shadow: 0 0 8px 1px rgba(192,192,192,0.75);color: #607D8B;display: flex;justify-content: center;align-items: center;}.MY-m .MY-edit-close {font-size: 14px;padding: 1px;right: -.25em;top: -.5em;}.MY-tip {margin: .25em 1em;font-size: .9em;border-top: 1px solid rgba(135, 135, 135, 0.25);border-bottom: 1px solid rgba(135, 135, 135, 0.25);padding: .5em 0;color: #5b5b67;letter-spacing: 1px;text-shadow: none;text-align: center;line-height: 1.5;}.MY-dark-theme .MY-tip {color: inherit;}.MY-tip strong {color: #FF7043;}.MY-page {width: 100%;position: relative;box-shadow: 0 0 10px 16px #e0e5ec;background-color: #e0e5ec;color: #455A64;animation: my-zoom-out-down .5s ease-in-out;opacity: 0;visibility: hidden;}.MY.is-loaded .MY-page {visibility: visible;}.MY.is-active .MY-page {opacity: 1;transition: opacity .5s;animation: my-zoom-in-down .2s ease-in-out;}.MY:not(.is-active) .MY-main {pointer-events: none;}.MY-iframes {visibility: hidden;pointer-events: none;position: fixed;bottom: 0;left: 0;max-width: 320px;display: block;}.MY-iframes > iframe {max-width: 105px;max-height: 60px;display: inline-block;}.MY-panel {position: relative;padding: 1.5em 0 .5em;}.MY-buttons {letter-spacing: 1px;display: flex;overflow-x: auto;box-shadow: 0 1px 8px 0 rgba(0,0,0,0.2);padding: 6px .75em 5px 0;margin-top: 10px;position: relative;background: #eff1f3;}.MY-play-list.MY-buttons {padding: 10px .75em 6px 0;margin-bottom: 5px;}.MY-buttons > *:not(.MY-bg-progress) {z-index: 1;}.MY-button {display: inline-flex;justify-content: center;align-items: center;white-space: nowrap;cursor: pointer;padding: .35em .5em .45em;position: relative;margin: 0 .25em;border: none;border-radius: 3px;transition: all .5s;color: #084c61;background-color: #f7ede2;box-shadow: 0 -2px 0 rgba(0, 0, 0, 0.15) inset;}.MY-search .MY-button {color: #2c6e49;}.MY-search .MY-button.is-vip {color: #ee6c4d;}.MY-search .MY-button.is-anime {color: #ef476f;}.MY-button.is-mp4 .MY-ext {color: #588b8b;}.MY-button:hover,.MY-button:active,.MY-label:hover,.MY-button.is-mp4:hover .MY-ext {color: #fef9ef !important;background-color: #4c956c !important;box-shadow: none !important;}.MY-button.is-success {color: #0ead69;font-weight: bold;}.MY-button.is-fail {opacity: .65;color: #f38375;}.MY-button.is-active {font-weight: bold;color: #e76f51;}.MY-button.is-success,.MY-button.is-active,.MY-button.is-done {box-shadow: 0 -2px 0 currentColor inset;}.MY-button.is-sniffing {background-color: #4c956c;color: #f2e9e4;margin: 0 .35em;}.MY-button:not(.is-sniffing) .MY-sniffing-text {display: none;}.MY-button.is-sniffing svg {display: none;}.MY-button.is-done {border: 1px solid;color: #4c956c;}.MY-button.is-pop.is-active {color: #e29578;}.MY-buttons .MY-padding {pointer-events: none;}.MY-button svg {width: 1em;height: 1em;}.MY-buttons .MY-padding {display: inline-block;padding: 0 .5em;}.MY-play-list.is-short .MY-button {min-width: 2em;}.MY-vip-list:not(.is-allow-sniff) .MY-vip-sniff {display: none;}.MY-vip-list .MY-button,.MY-m .MY-play-list .MY-button {order: 1;}.MY-vip-list .MY-button.is-success,.MY-m .MY-play-list .MY-button.is-active {order: 0;}.MY-vip-list .MY-padding, .MY-play-list .MY-padding {order: 9;}.MY-vip-sniff {order: 0 !important;min-width: 2em;}.MY-vip-list .MY-vip-sniff.is-done ~ .MY-padding {display: none;}.MY-ext {position: absolute;top: -.5em;right: -.75em;background: inherit;z-index: 1;padding: 1px 3px;border-radius: 3px;transform: scale(.6) rotateZ(15deg);}.MY-status-beat {position: relative;padding: .35em .5em .45em;margin: 0 .25em;pointer-events: none;opacity: .5;}.MY-status-beat::after {content: "";position: absolute;left: 50%;top: 50%;width: 4px;height: 4px;transform: translate(-50%, -50%);box-sizing: border-box;transition: all 0.3s;border-radius: 50%;background: #607D8B;border: 1px solid #607D8B;animation: my-pulse-positive 2.5s ease infinite;}.MY-bg-progress {position: absolute;width: 0;height: 100%;left: 0;top: 0;background-color: #60b963;background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);opacity: 0.5;pointer-events: none;transition: width 2s;}.MY-vip-sniff .MY-bubble {position: absolute;top: 10%;left: 55%;width: 4px;height: 4px;border-radius: 50%;background-color: #eef6fc;opacity: 0;visibility: hidden;}.MY-vip-sniff.is-sniffing .MY-bubble {visibility: visible;}.MY-vip-sniff .MY-bubble.MY-b1 {animation: my-bubble1 1.2s linear infinite;}.MY-vip-sniff .MY-bubble.MY-b2 {animation: my-bubble2 1.2s linear infinite;}.MY-vip-sniff .MY-bubble.MY-b3 {animation: my-bubble3 1.2s linear infinite;}.MY-vip-sniff.is-sniffing {animation: my-beat 0.4s infinite alternate;}.MY-play-fail-text {text-align: center;padding: .5em;color: #fe5f55;}.MY-play-fail-text a {cursor: pointer;color: #0077b6;font-weight: bold;margin: 0 .25em;text-decoration: underline;}.MY strong {font-weight: bold;}.MY-video-urls:not(.is-play-fail) .MY-play-fail-text {display: none;}.MY-scrollbar::-webkit-scrollbar {background-color: #eee;height: 4px;width: 6px;}.MY-scrollbar::-webkit-scrollbar-thumb {border-radius: 3px;background-color: #4CAF50;background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);}.MY-player {position: relative;z-index: 100;margin-top: .5em;}.MY-player:not(:empty) {padding: 0 3px;}.MY-player-box {max-width: ' + s + "px;width: 100%;height: " + l + "px;margin: 0 auto;box-shadow: 9px 9px 16px rgba(163, 177, 198, 0.6), -9px -9px 16px rgba(255, 255, 255, 0.5);border-radius: 8px;overflow: hidden;position: relative;display: flex;justify-content: center;align-items: center;}.MY-player-box video {height: 100%;width: 100%;background-color: black;}.MY-player-box video,.MY-player-box iframe {height: 100%;width: 100%;min-height: " + l + 'px;}.MY-player .plyr__progress input[type=range] {cursor: pointer;}.MY-player:not(.is-loaded) iframe {display: none;}.MY-player-bg {position: absolute;top: 0;bottom: 0;left: 0;right: 0;display: flex;justify-content: center;align-items: center;flex-direction: column;font-size: 16px;color: #f1f3f5;overflow: hidden;background-color: #01081a;background-position: center;background-size: cover;background-repeat: no-repeat;transition: all 3.5s;}.MY-player.is-loaded .MY-player-bg {visibility: hidden;opacity: 0;}.MY-m .MY-player-bg {font-size: 12px;}.MY-player-mask {background-color: #282828;position: absolute;top: 0;right: 0;bottom: 0;left: 0;opacity: 0.35;transition: all 2.5s;}.MY-player-bg.is-fail .MY-player-mask {opacity: 0.9;}.MY-sign {opacity: .25;text-shadow: 1px 1px 2px #000000;width: 96%;display: flex;justify-content: space-between;position: absolute;bottom: 1em;font-size: .8em;pointer-events: none;}.MY-version {font-size: .8em;opacity: .9;}.MY-slogan {letter-spacing: 2px;color: #f8964c;display: flex;justify-content: space-evenly;align-items: center;width: 100%;max-width: 480px;}.MY-slogan strong {font-size: 2.5em;text-shadow: 0 0 5px #ffa500, 0 0 5px #ffa500, 0 0 15px #ffa500, 0 0 20px #ffa500, 0 0 6px #ff0000, 0 0 10px #ff8d00, 0 0 9px #ff0000;color: #fff6a9;opacity: .8;transform: scale(0.9);display: inline-block;margin: 0 5px;}.MY-slogan strong:first-child {animation: my-bopA .5s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards infinite alternate, MY-blink 6s infinite;}.MY-slogan strong:last-child {animation: my-bopB .5s 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards infinite alternate, MY-blink 6s 1.5s infinite;}.MY-error-text {display: none;padding-top: 1em;letter-spacing: 1px;box-shadow: 0 -10px 8px 0 #fff4e6;padding: .25em .5em .4em;position: absolute;bottom: 0;left: -5%;right: -5%;width: 110%;text-align: center;background-color: #fff4e6;color: #FF5722;}.MY-player-bg.is-fail .MY-slogan {color: #f76707;}.MY-player-bg.is-fail .MY-slogan strong {color: rgb(255,243,224,0.5);text-shadow: none;}.MY-player-bg.is-fail .MY-loader,.MY-player-bg.is-fail + .MY-vip-play {display: none;}.MY-player-bg.is-fail .MY-error-text {display: block;}.MY-loader {border: 3.6px solid #ff974d;box-sizing: border-box;overflow: hidden;width: 2em;height: 2em;left: 50%;top: 50%;animation: my-loader-spin 2s linear infinite reverse;filter: url(#MY-l-f);box-shadow: 0 0 0 1px #ff974d inset;}.MY-loader:before {content: "";position: absolute;animation: my-loader-spin 2s cubic-bezier(0.59, 0.25, 0.4, 0.69) infinite;background: #ff974d;transform-origin: top center;border-radius: 50%;width: 150%;height: 150%;top: 50%;left: -12.5%;}.MY-label {display: inline-block;white-space: nowrap;padding: .35em .5em .45em;margin: 0 .5em;font-weight: bold;border-radius: 3px;letter-spacing: 3px;box-shadow: 0 -3px 0 rgba(0, 0, 0, 0.2) inset;cursor: pointer;background-color: #f2e9e4;color: #8a5a44;}.MY-detail {position: absolute;width: 100%;top: -0.25em;left: .5em;z-index: 2;display: flex;align-items: center;padding: .25em .5em .5em;}.MY-title {letter-spacing: 1px;font-weight: bold;max-width: 75%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}.MY-detail i {display: inline-block;width: 2px;background-color: currentColor;height: 1em;border-radius: 50%;margin: 0 1em;opacity: .25;}.MY-mode-switch {cursor: pointer;}.MY-light, .MY-dark {display: flex;justify-content: center;align-items: center;}.MY:not(.MY-dark-theme) .MY-dark {display: none;}.MY.MY-dark-theme .MY-light {display: none;}.MY-mode-switch svg {width: 1em;}.MY-settings {padding: 1em;letter-spacing: 1px;}.MY-player:not(:empty) ~ .MY-tip {display: none;}.MY-settings .MY-item {border: 1px solid;padding: .25em .5em;cursor: pointer;border-radius: 3px;}.MY-settings .MY-item:hover {background-color: #339af0;color: #fafafa;box-shadow: 0 -2px 0 rgba(0, 0, 0, 0.2) inset;border-color: #3582c3;}.MY-settings .MY-item.is-active {font-weight: bold;color: #fafafa;box-shadow: 0 -2px 0 rgba(0, 0, 0, 0.2) inset;background-color: #2a9d8f;border-color: #2a9d8f;}.MY-settings .MY-item + .MY-item {margin-left: .5em;}.MY-edit {position: fixed;width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;overflow: hidden;}.MY-edit:not(.is-active) {display: none;}.MY-overlay {bottom: 0;left: 0;position: absolute;right: 0;top: 0;background-color: rgba(10,10,10,.86);}.MY-edit-panel {z-index: 1;background-color: #fafafa;padding: 1em;border-radius: 5px;position: relative;max-width: 600px;width: 100%;margin: 0 .5em;}.MY-edit-hint {padding: 0 .5em 1em .5em;}.MY-edit textarea {padding: .75em;font-size: 16px;line-height: 1.4;letter-spacing: 1px;border-radius: 5px;width: calc(100% - 1.5em);min-height: 60vh;box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);border: 1px solid #eee;overflow-y: auto;word-break: break-all;}.MY-dark-theme .MY-bg-progress {background-color: #f7fff7;}.MY-dark-theme .MY-fab-border {color: #f5deb3;}.MY-dark-theme .MY-fab {background: #25272ae6;box-shadow: 0 3px 20px -3px #f5deb3;color: #f5deb3;}.MY-dark-theme .MY-page {background-color: #25272a;box-shadow: 0 0 10px 16px rgb(37,39,42);color: wheat;}.MY-dark-theme .MY-close,.MY-dark-theme .MY-fullscreen {background: rgb(37,39,42);box-shadow: 0 0 8px 4px rgb(53,59,63);color: wheat;}.MY-dark-theme .MY-player-box {box-shadow: 9px 9px 16px rgb(53,59,63);}.MY-dark-theme .MY-buttons {background: #253237;}.MY-dark-theme .MY-status-beat::after {background: #EEEEEE;border-color: #EEEEEE;animation: my-pulse-positive-dark 2.5s ease infinite;}.MY-tiny .MY-detail,.MY-tiny .MY-close,.MY-tiny .MY-tip,.MY-tiny .MY-settings,.MY-tiny .MY-search {display: none !important;}.MY-tiny .MY-panel {padding-top: 0;padding-bottom: 0;}.MY-pip .MY-player:not(:empty) {padding: 0;}.MY-pip .MY-player {position: relative;height: 100%;max-height: 100%;background-color: #01081a;overflow: hidden;z-index: 2147483647;}.MY-pip .MY-player-box {border-radius: 0;box-shadow: none;width: 100%;height: 100%;max-width: 100%;min-height: auto;}.o--vip, .o--jump {display: none !important;visibility: hidden !important;width: 0 !important;height: 0 !important;max-width: 0 !important;max-height: 0 !important;overflow: hidden !important;position: absolute !important;left: -99999px !important;opacity: 0 !important;pointer-events: none !important;}' + KEYFRAMES_STYLES);
let p = "";
if (e.vip) {
const e = [ {
key: "pip",
text: (isMobile ? "本" : "原网") + "页解析"
} ];
isMobile || e.push({
key: "skipAd",
text: "加速跳广告"
}, {
key: "hideWatermark",
text: "去视频水印"
}), isAllowSniff && e.unshift({
key: "autoJiexi",
text: "自动解析"
}), p = '<div class="MY-settings">' + e.map((function(e) {
return '<span class="MY-item' + (settings[e.key] ? " is-active" : "") + '" key="' + e.key + '">' + e.text + "</span>";
})).join("") + "</div>";
}
$("html").append('<miying class="MY' + (isDarkMode ? " MY-dark-theme" : "") + (hasTinyMode && isTinyMode ? " MY-tiny" : "") + '"><div class="MY-fab"><span class="MY-fab-tip">可拖拽</span><span class="MY-fab-border">' + Icon.encircle + '</span><span class="MY-mi">' + Icon.mi + '</span><span class="MY-ying">' + Icon.ying + '</span></div><div class="MY-main"><div class="MY-page MY-scrollbar"><div class="MY-detail"><span class="MY-mode-switch"><span class="MY-dark">' + Icon.moon + '</span><span class="MY-light">' + Icon.sun + '</span></span><i></i><span class="MY-version">v20.20.final</span></div><div class="MY-panel"><div class="MY-fullscreen' + (hasTinyMode ? "" : " MY-hide") + '"><span class="MY-icon-shrink">' + Icon.shrink + '</span><span class="MY-icon-expand">' + Icon.expand + '</span></div><div class="MY-close">' + Icon.x + "</div>" + p + '<div class="MY-player"></div><div class="MY-tip' + (Is(isVipSiteRegex) ? "" : " MY-hide") + '"><div>点击<strong>解析</strong>和<strong>搜索</strong>可以自定义' + (isMobile ? "<br>多数解析会在移动端显示<strong>图片广告</strong>,需手动拦截。<br>配合浏览器的<strong>嗅探功能</strong>使用,体验更佳。" : "") + '</div></div><div class="MY-video-urls"></div></div></div></div><div class="MY-edit"><div class="MY-overlay"></div><div class="MY-edit-panel"><div class="MY-edit-close">' + Icon.x + '</div><div class="MY-edit-hint"></div><textarea placeholder="清空会使用默认值"></textarea></div></div><div class="MY-iframes"></div></miying>'),
$(".MY-mode-switch").on("click", (function() {
$(this).toggleClass("is-dark"), $(".MY").toggleClass("MY-dark-theme"), isDarkMode = !isDarkMode,
Store.set("isDarkMode", isDarkMode);
})), $(".MY-settings .MY-item").on("click", (function() {
$(this).toggleClass("is-active"), updateSettings($(this).attr("key"), $(this).hasClass("is-active"));
})), $(".MY-edit textarea").off("input").on("input", (function() {
const e = $(this).attr("key"), t = $(this).get(0).value;
editData[e] = t, GlobalStore.set(e, t);
})), $(".MY-edit-close, .MY-edit .MY-overlay").on("click", (function() {
$(".MY-edit").removeClass("is-active");
}));
const f = document.querySelector(".MY-fab");
let m, u, h = !1, b = !1, g = Date.now();
f.addEventListener("touchstart", i), f.addEventListener("mousedown", i), window.addEventListener("touchmove", n),
window.addEventListener("mousemove", n), window.addEventListener("touchend", a),
window.addEventListener("mouseup", a), $(".MY").clickOutside((function() {
$(".MY").hasClass("is-active") && closeMY();
})), $(".MY-close").on("click", closeMY), $("body").on("click", closeMY);
let v = GlobalStore.get("displayVideoShortName", !0);
setGlobal("MY_clickVideoUrl", (function(e, t, i) {
return e.preventDefault(), e.stopImmediatePropagation(), $(t).hasClass("is-active") ? (pauseMYPlay(),
isHiker && window.fy_bridge_app.playVideo ? window.fy_bridge_app.playVideo(i) : window.open(i, "_blank")) : ($(".MY-vip-list .MY-button.is-pip").removeClass("is-active"),
void playVideo(i));
})), setGlobal("MY_clickPlaylistLabel", (function(e) {
e.preventDefault(), e.stopImmediatePropagation(), v = !v, SetState({
DisplayVideoShortName: v
}), GlobalStore.set("displayVideoShortName", v);
})), setGlobal("MY_clickNewTabPlay", (function() {
window.open($(".MY-play-list .MY-button.is-active").attr("_href"), "_blank");
})), R(H((function(e, t, i, n) {
SyncState(t, i), n.r = 1;
const {videoUrls: a, currentVideoUrl: o, DisplayVideoShortName: r = !0} = t;
return a && 0 < a.length ? H("div", {
className: "MY-list-box",
innerHTML: '<div class="MY-play-fail-text"><strong>播放失败!</strong>该线路可能无法在当前页面播放,可以再次点击该线路,在<a onclick="MY_clickNewTabPlay()">新窗口打开</a>播放或下载</div><div class="MY-play-list MY-buttons MY-scrollbar' + (r ? " is-short" : "") + '"><span class="MY-label" onclick="MY_clickPlaylistLabel(event)">线路</span>' + a.map((function(e, t) {
return '<span class="MY-button is-' + getVideoType(e) + (o === e ? " is-active" : "") + '" _href="' + e + '" onclick="MY_clickVideoUrl(event, this, \'' + e + "')\">" + getVideoShortName(e, t, r) + "</span>";
})).join("") + '<span class="MY-padding"></span></div>'
}) : "";
})), document.querySelector(".MY-video-urls"));
let y = 0, M = isMobile ? 200 : 250;
const x = throttle((function() {
const e = window.pageYOffset || document.documentElement.scrollTop;
let t = "";
e < M || (t = e > y ? "down" : "up"), y = 0 >= e ? 0 : e, $(".MY").attr("data-scroll", t);
}));
setTimeout((function() {
window.addEventListener("scroll", x, {
passive: !0
});
}), 2e3), $(".MY").addClass((isMobile ? "MY-m" : "MY-pc") + (_D ? " MY-debug" : "")),
setTimeout((function() {
$(".MY").addClass("is-loaded");
}), 1e3), document.addEventListener("fullscreenchange", (function() {
document.querySelector(".MY .MY-player") || (document.fullscreenElement ? $(".MY").addClass("MY-hide") : $(".MY").removeClass("MY-hide"));
}));
}
function getUrlName(e) {
return e.match(/\/\/(.+\.)?([^\/]+)\.\w+\//)[2].replace(/^(\w)/, (function(e) {
return e.toUpperCase();
})).slice(0, 5);
}
function parseToUrls(e) {
return ensureArray(e).map((function(e) {
let t = e.split(/\s+/);
return e = t.pop(), /^http.+=/.test(e) ? {
url: e,
name: 0 < t.length ? t.join(" ") : getUrlName(e)
} : {};
})).filter((function(e) {
return e.url;
}));
}
function fixVipUrl(e) {
return e.replace(/[\?#].+/g, "");
}
function skipAd(e) {
let t = !1;
if ($("video source[src], video[src]").each((function(e) {
"VIDEO" !== e.tagName && (e = $(e).parent()), e.paused || (t = !0);
})), !t) return void setTimeout((function() {
skipAd(e);
}), 500);
const i = e.adPlaybackRate || 16, n = setInterval((function() {
settings.skipAd || clearInterval(n), $("video source[src], video[src]").each((function(e) {
"VIDEO" !== e.tagName && (e = $(e).parent()), !e || isNaN(e.duration) || 90 < e.duration || e.currentTime > e.duration - 2 || (e.currentTime,
e.playbackRate = i, e.paused && e.play());
})), e.skipAd && e.skipAd();
}), 100);
}
function openEdit(e, t) {
$(".MY-edit").addClass("is-active");
const i = $(".MY-edit textarea");
i.get(0).value = (editData[e] || "").trim(), i.attr("key", e), $(".MY-edit-hint").html(t ? "刷新生效,清空恢复默认," + t : defaultHint);
}
function activeVip(e) {
if (!document.querySelector(".MY-vip-list")) {
if (activeMiying(e), !isMobile && settings.skipAd && skipAd(e), settings.hideWatermark && e.vip.watermark && addCss(e.vip.watermark + " {display: none !important;visibility: hidden !important;width: 0 !important;height: 0 !important;max-width: 0 !important;max-height: 0 !important;overflow: hidden !important;position: absolute !important;left: -99999px !important;opacity: 0 !important;pointer-events: none !important;}"),
$(".MY-fab").addClass("has-vip"), !isAllowIframeSniff) {
const e = addIframe(SniffCheckUrl);
setTimeout((function() {
removeIframe(e);
}), 5e3);
}
let t = (GlobalStore.get("VipUrls") || "").trim() || V_U;
vipUrls = t, editData.VipUrls = t, vipUrls = parseToUrls(vipUrls), Arr.chunks(D_V_U.replace(/=\s.+/g, "=").trim().split(/,|\n/), 7).forEach((function(e) {
Arr.shuffle(e).forEach((function(e) {
const t = _D ? e : M_VipUrl(e);
sniffVipUrls.push({
url: t,
_url: sniffVipUrls.length,
name: getUrlName(t)
});
}));
})), vipUrls = vipUrls.concat(sniffVipUrls), $(".MY-panel").append('<div class="MY-vip-list MY-buttons MY-scrollbar' + (isAllowSniff ? " is-allow-sniff" : "") + '"><span class="MY-bg-progress"></span><span class="MY-label">解析</span><span class="MY-button MY-vip-sniff"><span class="MY-sniffing-text">停</span>' + Icon.vip + '<i class="MY-bubble MY-b1"></i><i class="MY-bubble MY-b2"></i><i class="MY-bubble MY-b3"></i></span>' + vipUrls.map((function(e) {
return '<span class="MY-button ' + (e.url.startsWith("https") ? "is-pip" : "is-pop") + '" _href="' + (e._url || e.url) + '">' + e.name + "</span>";
})).join("\n") + '<span class="MY-padding"></span></div>'), $(".MY-fullscreen").on("click", (function() {
$(".MY").toggleClass("MY-tiny"), isTinyMode = !isTinyMode, Store.set("isTinyMode", isTinyMode);
})), $(".MY-vip-list .MY-button").on("click", (function() {
const t = $(this).hasClass("is-active");
if ($(".MY-vip-list .MY-button.is-pip").removeClass("is-active"), $(this).hasClass("MY-vip-sniff")) return $(this).hasClass("is-sniffing") ? sniffDone() : sniff();
SetState({
currentVideoUrl: null
}), playingVideoUrl = null;
let i = $(this).attr("_href"), n = !1;
return i.includes("http") || (i = sniffVipUrls[i].url, n = !0), !t || !_D && n ? ($(this).hasClass("is-pop") ? $(".MY-vip-list .MY-button.is-pop").removeClass("is-active") : $(".MY-vip-list .MY-button").removeClass("is-active"),
$(this).addClass("is-active"), void playVipUrl(i, e)) : (pauseMYPlay(), $(".MY-player").empty(),
window.open(i + getTargetUrl(), "_blank"));
})), $(".MY-vip-list .MY-label").on("click", (function() {
openEdit("VipUrls", "原网页解析只支持 https 解析");
}));
}
}
function insertSearch(e, t) {
if (!e || document.querySelector(".MY-search")) return;
activeMiying(t);
let i = (GlobalStore.get("SearchUrls") || "").trim() || SEARCH_URLS;
editData.SearchUrls = i, IsNot(/douban\.com/) && (i = "觅影 https://movie.douban.com/tag/\n\n" + i),
i = ensureArray(i).map((function(e) {
const {url: t, name: i} = parseUrl(e), n = Is(isAnimeSiteRegex, t), a = Is(isVipSiteRegex, t);
return {
url: t,
name: i,
weight: /douban.com/.test(t) ? 10 : (Is(/bilibili.com/) || Is(isAnimeSiteRegex)) && n ? 5 : (Is(isVipSiteRegex) || Is(/douban.com/)) && a ? 3 : n ? 1 : a ? 0 : 2
};
})), i.sort((function(e, t) {
return t.weight - e.weight;
})), $(".MY-panel").append('<div class="MY-search MY-buttons MY-scrollbar"><span class="MY-label">搜索</span>' + function() {
const e = Href.match(/\/\/.*?(\w+)\.\w+\//)[1];
return i.map((function(t) {
const i = isVipSiteRegex.test(t.url) ? "is-vip" : isAnimeSiteRegex.test(t.url) ? "is-anime" : "", n = t.url.match(/\/\/.*?(\w+)\.\w+\//)[1];
return t.url.includes(e) || Href.includes(n) ? '<span class="MY-status-beat"></span>' : '<span class="MY-button ' + i + '" ' + (_D ? 'data-weight="' + t.weight + '" ' : "") + '_href="' + t.url + '">' + t.name + "</span>";
})).join("\n");
}() + '<span class="MY-padding"></span></div>'), $(".MY-detail").append('<i></i><span class="MY-title">' + e + "</span>"),
$(".MY-search .MY-button").on("click", (function() {
let t = $(this).attr("_href").replace("**", e);
window.open(t, "_blank");
})), $(".MY-search .MY-label").on("click", (function() {
openEdit("SearchUrls", "** 表示搜索词");
})), $("title").html(e);
}
function activeSearch(e) {
let t = getKeywordFromUrl(e.search);
const i = e.search;
$$((function() {
if (!t) if ("string" == typeof i) $(i).each((function(e) {
t = $(e).text() || t;
})); else if (i instanceof Function) t = i(); else {
const e = document.querySelector("h1.title") || document.querySelector("h1");
e && (t = e.textContent);
}
return t = purifyKeyword(t), t;
}), (function() {
insertSearch(t, e);
}));
}
function fixM3u8Playing() {
function e(e) {
e.from = Href, e.origin = Href, e.url = n, isNotTop && window.parent.postMessage(Object.assign({}, e, {
_id: MESSAGE_ID,
action: "MY:log",
parent: !0
}), "*");
}
const t = Date.now();
let i, n;
const a = setInterval((function() {
const o = Date.now() - t;
n = "", i = document.querySelector("video source[src], video[src]"), i && (n = i.src),
"VIDEO" !== i.tagName && (i = $(i).parent()), /(\.m3u8|\/m3u8play)[^\/]*$/.test(n) ? (clearInterval(a),
setTimeout((async function() {
if (0 === i.readyState) {
let t = getGlobal("Hls");
if (t || (await addJs("/hls.js/0.13.2/hls.min.js"), t = getGlobal("Hls")), t.isSupported()) {
i.pause();
const a = new t;
a.loadSource(n), a.attachMedia(i), a.on(t.Events.MANIFEST_PARSED, (function() {
i.play();
})), e({
text: "✔ Fix m3u8 play"
});
}
}
}), 1500)) : o >= 15e3 && (clearInterval(a), e({
text: "× Fix m3u8 play failed"
}));
}), 100);
}
function isValidVideoUrl(e) {
return isVideoUrlRegex.test(e) && !isInvalidSniffUrlRegex.test(e);
}
function getSniffVideoUrl(e) {
if (e = decodeURIComponent(e.trim()).replace(/^(http:)?\/\//, "https://"), !sniffVideoUrls.includes(e)) if (sniffVideoUrls.push(e),
isNotTop || /^blob:/.test(e)) window.parent.postMessage({
url: e.trim(),
pageInfo: pageInfo,
_id: MESSAGE_ID,
action: "MY:sniff.video",
from: Href,
origin: Href,
parent: isNotTop,
dplayer: document.querySelectorAll(".dplayer").length
}, "*"); else {
if (isSniffing && !document.querySelector(".MY-play-list .MY-button.is-active, .MY-vip-list .MY-button.is-pip.is-active")) {
$(".MY-vip-list .MY-button.is-pip").removeClass("is-active"), playVideo(e);
let t, i = 0, n = 0;
setTimeout((function e() {
if (t = document.querySelector(".MY-play-list .MY-button.is-active + .MY-button"),
(!(0 < n) || t) && document.querySelector(".MY-play-list .MY-button.is-active")) {
if ($(".MY-play-list .MY-button.is-active").each((function() {
$(this).attr("_href") !== playingVideoUrl && $(this).removeClass("is-active");
})), playFailedUrl !== playingVideoUrl && player && player.ready) {
if (isMobile && 0 < player.duration || player.currentTime > (isMobile ? 3 : 10)) return;
if (!isSniffing && !t || 0 < player.currentTime && i !== player.currentTime) return i = player.currentTime,
void setTimeout(e, 3e3);
}
i = 0, t ? t.click() : 1 < videoUrls.length && (t = document.querySelector(".MY-play-list .MY-button"),
t && t.click(), n++), setTimeout(e, 4500);
}
}), 4e3);
}
videoUrls.push(e), SetState({
videoUrls: videoUrls
});
}
}
function muteSniffVideo(e) {
e && "VIDEO" !== e.tagName && (e = $(e).parent()), e && (/^blob:/.test(e.src) && (e.__src = e.src,
e.src = ""), e.muted = !0, e.volume = 0, e.autoplay = !1, e.preload = "none", e.pause && e.pause(),
e.play = function() {});
}
function sniffVideo() {
let e;
isSniffIframe ? (e = localStorage.getItem("dplayer-volume"), localStorage.setItem("dplayer-volume", 0),
localStorage.setItem("MY.dplayer-volume", e), $("video source[src], video[src]").each((function(e) {
muteSniffVideo(e);
}))) : (e = +localStorage.getItem("MY.dplayer-volume"), localStorage.removeItem("MY.dplayer-volume"),
0 < e ? localStorage.setItem("dplayer-volume", e) : localStorage.removeItem("dplayer-volume"));
const t = setInterval((function() {
$("video source[src], video[src]").each((function(e) {
isSniffIframe && muteSniffVideo(e);
let i = e.__src || e.src;
if (i) {
"VIDEO" !== e.tagName && (e = $(e).parent()), /^\/[^\/]/.test(i) && (i = location.origin + i);
const n = /^blob:/.test(i);
if (isSniffIframe) e.src = "", clearInterval(t), $("video, iframe").remove(), $("body").html(""); else if (n && (isNaN(e.duration) || 180 > e.duration)) return;
n || isValidVideoUrl(i) ? getSniffVideoUrl(i) : window.parent.postMessage({
pageInfo: pageInfo,
text: "NOT MATCH VIDEO URL",
_id: MESSAGE_ID,
action: "MY:log",
from: location.href,
origin: location.href,
url: i,
parent: !0
}, "*");
}
}));
const e = document.querySelector("iframe[src]");
if (e) {
const t = e.scr, i = decodeURIComponent(t).match(/=(http[^&=]+\.(m3u8|mp4))/);
(/dplayer/.test(t) || isVideoUrlRegex.test(t)) && window.parent.postMessage({
pageInfo: pageInfo,
text: "iframe player url",
_id: MESSAGE_ID,
action: "MY:log",
from: location.href,
origin: location.href,
url: i ? i[1] : t,
isMatch: i && isValidVideoUrl(i[1]),
parent: !0
}, "*"), i && isValidVideoUrl(i[1]) && ($("iframe").remove(), getSniffVideoUrl(i[1]));
}
}), 100);
}
function getVideoInfo(e) {
return {
src: e.src,
duration: e.duration,
paused: e.paused,
currentTime: e.currentTime,
playbackRate: e.playbackRate
};
}
function urlDetect() {
setInterval((function() {
!function() {
if (Href !== window.location.href) {
const e = Href;
Href = window.location.href, E.emit("url.change", {
newUrl: Href,
oldUrl: e
});
}
}();
}), 250);
}
function RULES_GO() {
let e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : RULES;
for (const t of e) if (Is(t.match)) {
if (!1 === t.enable) break;
let e = "";
if (t.hide && (e += "\n" + t.hide + " {display: none !important;visibility: hidden !important;width: 0 !important;height: 0 !important;max-width: 0 !important;max-height: 0 !important;overflow: hidden !important;position: absolute !important;left: -99999px !important;opacity: 0 !important;pointer-events: none !important;}"),
t.css && (e += t.css), addCss(e), t._js instanceof Function && t._js(), t.js instanceof Function && $((function() {
t.js();
})), t.rules && RULES_GO(t.rules, !1), t.result) {
const e = "string" == typeof t.result ? {
title: t.result,
url: t.result
} : t.result;
if (1 === $(e.title).length) {
const t = $(e.title).text();
if (!/第.{1,3}[季集话部].*$/.test(t)) {
const t = $(e.url).eq(0).attr("href");
t && (location.href = t);
}
}
}
$((function() {
t.vip && activeVip(t), t.search && activeSearch(t), isUrlDetect || (isUrlDetect = !0,
urlDetect());
}));
}
}
const VERSION = "20.20.final", NAME = "觅影";
if (document.querySelector("miying")) return;
const _D = !1, hasUnsafeWindow = "undefined" != typeof unsafeWindow, isGM = "undefined" != typeof GM && hasUnsafeWindow, isTop = window.top === window.self, isNotTop = !isTop, screenWidth = window.screen.width;
let Href = location.href;
const isMobile = 600 >= screenWidth || /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || !1, MAX_Z_INDEX = 2147483647;
if (isTop && Is(/vwecam.tc.qq.com|\.titan.mgtv.com/) && !document.querySelector("video")) return void (IsNot(/miying/) && (location.href = Href + (Href.includes("?") ? "&" : "?") + "miying=" + (new Date).getFullYear()));
const RULES = [ {
name: "豆瓣",
match: "movie.douban.com",
rules: [ {
name: "详情",
match: "/subject/",
search: "title"
} ]
}, {
name: "豆瓣·移动端",
match: "m.douban.com",
rules: [ {
name: "详情",
match: "/movie/subject/",
search: ".sub-title"
} ],
hide: ".score-write, a[href*='to_app']:not(.sub-honor):not(.sub-cover), a[href*='doubanapp'], div[id*='BAIDU'], div[id*='google'], section + .center, .bottom_ad_download, .sub-vendor, .to_pc, .sub-detail .mark-movie, .sub-detail .mark-tv, .subject-banner, .bottom_ad_download, .cover-count, #google_esf, .adsbygoogle, .Advertisement, .TalionNav-primary .nav-btns.cancel",
css: ".page .subject-header-wrap .sub-honor {font-size: 12px;}.page .subject-header-wrap .sub-honor .info-rank {padding: 0 5px;min-width: auto;}.page .subject-header-wrap .sub-honor .info-scope {padding: 0 5px;min-width: auto;}.subject-intro {margin-top: 15px;}"
}, {
name: "哔哩哔哩",
match: ".bilibili.com",
rules: [ {
name: "搜索",
match: /\/search|search\./,
search: !0
}, {
name: "播放",
match: /\/bangumi\/play\//,
search: ".media-title, .ep-info-title"
} ],
hide: ".index__openAppBtn__src-commonComponent-topArea-, .index__container__src-commonComponent-bottomOpenApp-, .bili-app, .recom-wrapper, .b-footer, .open-app-bar, .open-app-float, .more-review-wrapper, #bannerAd, .banner-card, #slide_ad"
}, {
name: "腾讯视频",
match: "v.qq.com",
rules: [ {
name: "搜索",
match: "/search",
search: !0
}, {
name: "播放",
match: /\/cover\/|\/play/,
vip: {
watermark: ".txp-watermark",
fixUrl(e) {
if (e.includes("cid=")) {
const t = e.match(/cid=(\w+)/)[1];
let i = e.match(/vid=(\w+)/);
return i = i ? "/" + i[1] : "", "https://v.qq.com/x/cover/" + t + i + ".html";
}
return e.includes("/x/cover") ? e.replace(/\.html.*/, ".html") : e;
}
},
search: ".mod_video_info .video_title, ._main_title, .player_title",
skipAd() {
$('txpdiv[data-role="hd-ad-adapter-adlayer"] video[src]').each((function(e) {
e.muted = !0;
}));
}
} ],
hide: '.mod_source, .video_function, .mod_promotion, #vip_privilege, #vip_activity, .U_bg_b, .btn_open_v, .btn_openapp, #vip_header, .btn_user_hd, .mod_sideslip_privileges, .mod_game_rec, .mod_source, .mod_promotion, .mod_sideslip_h, .btn_open, .btn_pay, .mod_box_lastview, .mod_vip_popup, .mod_vip_popup + .mask_layer, txpdiv[data-role="hd-ad-adapter-interactivelayer"], .mod_ad, .tvp_app_bar, .mod_recommend',
css: "\nbody, #vip_title {padding-bottom: 0 !important;}.mod_episodes_numbers.is-vip .item {width: auto;padding: 0 1em;}.U_html_bg .container {padding-bottom: 30px;}.mod_play .mod_player_viptips .btn_try {left: 30%;}.mod_box .mod_video_info {margin-top: 1em;}"
}, {
name: "爱奇艺",
match: ".iqiyi.com",
rules: [ {
name: "搜索",
match: /\/search|so\.iqiyi/,
search: !0
}, {
name: "播放",
match: "/v_",
vip: {
watermark: ".iqp-logo-box",
fixUrl: e => e.replace(/\.html.*/, ".html").replace("tw.", "www.")
},
search: "#widget-videotitle, .video-title, .c-title-link, .player-title a, .tw-play-title .drama-name, .tw-play-title",
skipAd() {
$("video[src]").each((function(e) {
91 > e.duration && $(".skippable-after").click();
}));
}
} ],
hide: '.m-iqyDown, .header-login + div, .m-video-action, div[name="m-vipRights"], div[name="m-extendBar"], .m-iqylink-diversion, .m-iqylink-guide, .c-openVip, .c-score-btn, .m-videoUser-spacing, .m-pp-entrance, .m-hotWords-bottom, div[template-type="ALBUM"] .m-player-tip, .iqp-box-integral, .btn-ticket, .btn-yuyue, .btn-download, .m-iqyDown, .iqp-player div[adid], .detail-sd, .scroll-anchor > *:not(:last-child), #iProgress ~ div[style]'
}, {
name: "优酷",
match: "youku.com",
rules: [ {
name: "搜索",
match: "/search_video",
vip: !0,
search: !0
}, {
name: "播放",
match: /\/v_|\/video\/|alipay_video\/id_/,
vip: {
fixUrl: !0,
watermark: ".youku-layer-wuliao"
},
search: ".player-title .subtitle a, .module-name h1, .anthology-title-wrap .title, .title-link",
skipAd() {
document.querySelector(".h5-ext-layer video[src]") && ($(".h5-ext-layer").empty(),
!$(".h5player-dashboard .control-play-icon").hasClass("control-pause-icon") && $(".h5player-dashboard .control-play-icon").click(),
$(".information-tips").css("display", "none"));
},
js() {
isMobile || $$(".quality-dashboard .youku_vip_pay_btn, .quality-dashboard .login-canuse", (function() {
$(".quality-dashboard .youku_vip_pay_btn, .quality-dashboard .login-canuse").removeClass("youku_vip_pay_btn disable login-canuse"),
$(".quality-item").on("click", (function() {
setTimeout((function() {
$(".h5player-dashboard .control-play-icon").hasClass("control-pause-icon") || $(".h5player-dashboard .control-play-icon").click();
}), 1500);
}));
}));
}
} ],
hide: '.h5-detail-guide, .h5-detail-ad, .brief-btm, .smartBannerBtn, .cmt-user-action, #right-title-ad-banner, .Corner-container, .qr-wrap, .quality-item[class*="p"] .vip-label, .award-pass, .iconshoucang ~ div .modal-position-container, .js-top-icon'
}, {
name: "芒果",
match: ".mgtv.com",
rules: [ {
name: "搜索",
match: "/so",
search: /k[-=]([^&\?\/\.]+)/
}, {
name: "播放",
match: /\/[bl]\//,
vip: {
fixUrl: !0
},
search: ".v-panel-title, .vt-txt, .m-player-open .control-left .title",
skipAd() {
$(".as_icon--unmute").click();
}
} ],
hide: ".ad-banner, .video-area-bar, .video-error .btn, .m-vip-list, .m-vip-list + div:not([class]), .toapp, .video-comment .ft, .mg-app-swip, mango-plugin-ad, mango-control-tip, .MY-player .m-player-error, .MY-player container > *:not(.plyr)"
}, {
name: "搜狐",
match: /(film|tv)\.sohu\.com/,
rules: [ {
name: "搜索",
match: /(key|wd)=/,
search: !0
}, {
name: "播放",
match: /\/(v|album\/|phone_play_film|\d+\/n\d+.shtml)/,
vip: {
fixUrl(e) {
if (/phone_play_film.+channeled=/.test(e)) {
const t = e.match(/channeled=(\w+)/)[1];
return "https://film.sohu.com/album/" + e.match(/aid=(\w+)/)[1] + ".html?channeled=" + t;
}
return e;
}
},
search: "#vinfobox h2, .t-info, .movie-t h3",
skipAd() {
$(".x-video-adv video").each((function(e) {
e.muted = !0;
}));
}
} ],
hide: ".actv-banner, .btn-xz-app, .twinfo_iconwrap, .btn-comment-app, #ad_banner, .advertise, .main-ad-view-box, .foot.sohu-swiper, .app-star-vbox, .app-guess-vbox, .main-rec-view-box, .app-qianfan-box, .comment-empty-bg, .copyinfo, .ph-vbox, .btn_m_action, .btn-xz-app, #film_top_banner, .btn-comment-app, .adv, .x-adv-pause-nonlinear-panel"
}, {
name: "乐视",
match: ".le.com",
rules: [ {
name: "搜索",
match: /\/search|so.le.com\/s/,
search: !0
}, {
name: "播放",
match: /\/(ptv\/vplay\/|vplay_)/,
vip: {
fixUrl: !0
},
search: ".briefIntro_info .info_tit, #j-introduction h2",
adPlaybackRate: 4,
skipAd() {
const e = document.querySelector("#video video");
e && 90 >= e.duration ? e.muted = !0 : !window.__skipAd && (e.muted = !1, window.__skipAd = !0);
}
} ],
hide: ".gamePromotion, .gamePromotionTxt, #j-leappMore, .lbzDaoliu, .arkBox"
}, {
name: "咪咕",
match: "miguvideo.com",
rules: [ {
name: "搜索",
match: "search.html",
search: /keywords=([^&\?\/\.]+)|\?.*#([^&\?\/\.]+)/
}, {
name: "播放",
match: "detail.html",
vip: !0,
search: ".left-box .title, .episodeTitle, .video_title"
} ],
hide: '.group-item[name*="广告"], .openClient'
}, {
name: "PPTV",
match: ".pptv.com",
rules: [ {
name: "搜索",
match: /sou.+(kw|keyword)=/,
search: !0
}, {
name: "播放",
match: "/show/",
vip: {
fixUrl: !0
},
search: "#video-info h1, .vod-tit-in span, .tit"
} ],
hide: '.w-video-vastad, #video-download-game, div[class*="openapp"], div[class*="side-adv"], div[id*="afp_"], div[id*="-afp"], iframe[src*="/game/"], .afpPosition, .download-iconbar'
}, {
name: "华数",
match: "wasu.cn",
rules: [ {
name: "搜索",
match: /Search\/.+k=/,
search: !0
}, {
name: "播放",
match: /[pP]lay\/show\//,
vip: {
fixUrl: !0
},
search: ".movie_title h2"
} ],
hide: 'div[id*="BAIDU"], .player_menu_con, body > div[style*="fixed"]'
}, {
name: "1905",
match: "1905.com",
rules: [ {
name: "搜索",
match: /\/search/i,
search: !0
}, {
name: "播放",
match: "/v_",
vip: {
fixUrl: !0
},
search: "#movie_info .infoInner .title, .movie-title, .tv_title"
} ],
hide: "#app_store, .openMembershipBtn, body > div[id]:not([class]) > iframe, .pv2-advertisement, .open-app"
}, {
name: "1080影视",
match: "k1080.net",
rules: [ {
name: "搜索",
match: "wd=",
search: !0,
result: ".detail .btn-warm"
}, {
name: "详情",
match: "/voddetail/",
search: !0
}, {
name: "播放",
match: "/vodplay",
search: ".myui-player__data h3 a, .col-pd > .myui-panel__head h3"
} ],
hide: "body > *:not(script) + script ~ *[id]"
}, {
name: "1090影视",
match: /1090ys\d?.com/,
rules: [ {
name: "搜索",
match: "c=search",
search() {
const e = location.href.match(/wd=([^-&]+)/);
return e ? e[1] : document.querySelector(".more + .title").textContent;
},
result: "h3.title a"
}, {
name: "详情",
match: "/show/",
search: ".stui-content__detail h3.title"
}, {
name: "播放",
match: "/play",
search() {
const e = document.querySelector("h4 font");
return e && e.textContent.replace(/-.+/, "");
}
} ],
hide: ".container ~ *[id], body > .container > p[style], .row > p[style]"
}, {
name: "完美看看",
match: "wanmeikk.me",
rules: [ {
name: "搜索",
match: "/so/",
search: !0,
result: "h3.title a"
}, {
name: "详情",
match: "/project",
search: () => document.querySelector("h1.title").childNodes[0].nodeValue
}, {
name: "播放",
match: "/play",
search: "h1 a"
} ],
hide: ".container ~ *[id]"
}, {
name: "在线之家",
match: "zxzj.me",
rules: [ {
name: "搜索",
match: "wd=",
search: !0,
result: ".stui-vodlist .title a"
}, {
name: "详情",
match: "/detail",
search: !0
}, {
name: "播放",
match: "/video",
search: "h1"
} ],
hide: 'body > div[class^="AD"], body > *:not(script) + script ~ *[id]'
}, {
name: "91美剧",
match: "91mjw.com",
rules: [ {
name: "搜索",
match: "s=",
search: /s=(.+)/,
result: {
title: ".m-movies .u-movie h2",
url: ".m-movies .u-movie a"
}
}, {
name: "详情",
match: "/video",
search: () => document.querySelector(".article-title a").textContent.match(/《(.+?)》/)[1]
}, {
name: "播放",
match: "/vplay",
search: ".vtitle a"
} ],
hide: "body > *:not(script) + script ~ *[id], div:not([id]) > iframe, a > iframe, .ads"
}, {
name: "神马",
match: "shenma4480.com",
rules: [ {
name: "搜索",
match: "/search",
search: !0,
result: ".stui-vodlist__title a"
}, {
name: "详情",
match: "/detail",
search: !0
}, {
name: "播放",
match: "/play",
search: "h1 a"
} ]
}, {
name: "TVB",
match: "hktvyb.com",
rules: [ {
name: "搜索",
match: "/search",
search: !0,
result: ".searchkey"
}, {
name: "播放",
match: "/vod/play",
search: "h3 a"
} ],
hide: "body > iframe, body > div[style]:not([class]), body > div[id]:not([class]), .myui-panel ~ div[id], .nav-menu > .hidden-md, script + a[id], a[id] + div[style]:not([class])"
}, {
name: "飞极速",
match: "feijisu8.com",
rules: [ {
name: "搜索",
match: "/search",
search: !0,
result: "#result h2 a"
}, {
name: "播放",
match: /acg\/\d+\/\d+/,
search: "h1 a"
} ],
hide: ".index-top ~ div, .v-top ~ div, .footer ~ div, .footer ~ brde, body > div:not([class])"
}, {
name: "东方城动漫",
match: "dfcdm.com",
rules: [ {
name: "搜索",
match: "/search",
search: () => document.querySelector("#key_result").textContent.match(/.*?"(.+)".*/)[1]
}, {
name: "详情+播放",
match: "/tv/",
search: () => location.href.includes(".html") ? Array.from(document.querySelectorAll(".h2 a")).slice(-1)[0].textContent : document.querySelector(".name").childNodes[0].nodeValue
} ]
}, {
name: "真不卡",
match: "zhenbuka.com",
rules: [ {
name: "搜索",
match: "/vodsearch",
search() {
const e = location.href.match(/wd\/([^\/]+)/);
return e ? e[1] : document.querySelector("h3").textContent;
},
result: ".stui-vodlist__media h3.title a"
}, {
name: "详情",
match: "/voddetail/",
search: !0
}, {
name: "播放",
match: "/vodplay",
search: ".detail h1",
hide: "body > div[id]:not([class]), .stui-player__item ~ div[style]"
} ],
hide: ".container > a, body > div[style]"
}, {
name: "碟影",
match: /dvdhd.me|952780.com/,
rules: [ {
name: "搜索",
match: "/search",
search: !0,
result: {
title: ".m-movies .u-movie h2",
url: ".m-movies .u-movie a"
}
}, {
name: "播放",
match: "/video",
search: ".vtitle a",
hide: 'body > brde, body > div[id]:not([class]), body > a, .header ~ div[class*="ad"], .widget_ads'
} ]
}, {
name: "ZzzFun",
match: /www.zzzfun.com/,
rules: [ {
name: "搜索",
match: "/vod-search",
search: !0,
result: ".show-list h2 a"
}, {
name: "详情",
match: "/vod-detail",
search: !0
}, {
name: "播放",
match: "/vod-play",
search() {
const e = document.querySelector(".bread-crumb-nav, .leo-bg-a h1");
return e ? e.textContent.replace(/.*当前播放:(.+?) -.*/, "$1") : "";
}
} ],
hide: "#navbar + div[style]",
js() {
$("input[onclick]").each((function() {
this.value.includes("继续访问") && this.click();
}));
}
}, {
name: "迅播",
match: "xbdm.org",
rules: [ {
name: "搜索",
match: "/search",
search: !0
}, {
name: "播放",
match: "/video",
search: ".myui-panel__head h3 a"
} ],
hide: "body > div"
}, {
name: "哔咪哔咪",
match: "bimibimi.me",
rules: [ {
name: "搜索",
match: "/search",
search() {
const e = location.href.match(/wd\/([^\/]+)/);
return e ? e[1] : document.querySelector(".p_tab strong, .leo-search-wd").textContent;
},
result: {
title: ".info a, .leo-detail-media h1",
url: ".info a, .leo-detail-media .leo-po-ab a"
}
}, {
name: "详情",
match: "/bi/",
search: "h1"
}, {
name: "播放",
match: "/play/",
search: ".v_path .current, header a + font, h1.leo-fs-l"
} ],
hide: "body > div[id]:not([class]), body > div[style]:not([class]), .tuiguang, body > .leo-container ~ [id], .ssr1, .ssr1 + div:not([class]), ins[id], section + div[id]",
css: ".leo-detail-wrap {background-color: #6ea7b8;margin-bottom: 10px;border-radius: 5px;box-shadow: 0 2px 2px 0 rgba(0,0,0,0.2);}"
}, {
name: "妮可",
match: /nicotv\.(me|club)/,
rules: [ {
name: "搜索",
match: "/search",
search: !0,
result: "h2 a"
}, {
name: "详情",
match: "/video/detail/",
search: ".media-body .ff-text"
}, {
name: "播放",
match: "/play/",
search: () => document.querySelector("title").text.match(/《(.+?)》/)[1]
} ],
hide: "body > brde, body > div[id]:not([class]), body > div[style]:not([class]), body > a, .ff-ads, body > div[classname], #ff-totop ~ div[id]"
}, {
name: "AGE",
match: "agefans.tv",
rules: [ {
name: "搜索",
match: "/search",
search: !0,
result: ".cell_imform_name"
}, {
name: "详情",
match: "/detail",
search: ".detail_imform_name"
}, {
name: "播放",
match: /\/play\/.+playid=/,
search: "#detailname a"
} ],
hide: "div[style]:not([class]) > a",
css: "\ndiv, span {color: inherit;}"
}, {
name: "次元",
match: "cyloli.com",
rules: [ {
name: "搜索",
match: "/vodsearch",
search() {
const e = location.href.match(/vodsearch\/([^-]+)/);
return e ? e[1] : document.querySelector(".main-head .title b, .re-info b").textContent;
},
result: ".search .title"
}, {
name: "详情",
match: /\/cy\d+/,
search: ".drama-tit h3"
}, {
name: "播放",
match: /\/yv\d+/,
search: ".u-title a, .title a"
} ],
hide: ".column-rgt #play"
}, {
name: "Mikan",
match: "mikanani.me",
rules: [ {
name: "搜索",
match: "/Search",
search: !0
} ]
}, {
name: "茶杯狐",
match: "cupfox.com/search",
search: !0
}, {
match: "m1907.cn",
hide: "#s-player + .show > div[title], #s-controls + div > div:nth-child(n+5):not(:last-child)",
_js() {
let e = 0;
const t = setInterval((function() {
(document.querySelector("#s-player + .show") || 30 < e++) && (clearInterval(t),
document.querySelector("#s-controls > div img + span").click());
}), 100);
window.alert = function() {};
}
}, {
match: "okjx.cc",
hide: ".WANG-WANG"
}, {
name: "北极xs",
match: /beijixs\.cn.*url=http/,
js() {
if (isMobile && toggleViewport(), document.querySelector("#TextBox1").value) {
$("#form1").prepend($(".video-js").parent());
let e = 0;
const t = setInterval((function() {
const i = document.querySelector("video");
if (i && 390 > i.duration) {
i.pause();
const e = document.querySelector("#TextBox2").value || "", n = document.querySelector("video");
n.classList.add("MY-fail"), n.innerHTML = "<div><div>解析失败</div>" + (e ? "<div>" + e + "</div>" : "") + "</div>",
clearInterval(t);
}
100 < e++ && clearInterval(t);
}), 100);
} else {
let e = Href.split("url=")[1];
if (e) {
e = decodeURI(e), document.querySelector("#TextBox1").value = e;
const t = document.querySelector("#Button1");
t && (document.querySelector(".video-js").style.display = "none !important", t.click());
}
let t = 0;
const i = setInterval((function() {
const e = document.querySelector("video");
e && 360 > e.duration ? e.pause() : e.play(), 100 < t++ && clearInterval(i);
}), 100);
}
},
css: "\nbody > form {position: absolute !important;left: 0 !important;right: 0 !important;top: 0 !important;bottom: 0 !important;background: #eee8d3 !important;z-index: " + MAX_Z_INDEX + " !important;}div,input,form {max-width: 100% !important;}form #divcss5 {height: auto;padding: 0 1em;border: none;width: auto;}.MY-fail {height: auto !important;}.MY-fail > div {text-align: center;border-top: 1px solid #495057;border-bottom: 1px solid #495057;padding: 1em;color: #d9480f;font-weight: bold;font-size: 16px;background-color: #fff4e6;}.MY-fail > div > div + div {margin-top: 1em;}" + (isMobile ? '\nh5 input[type="text"] {width: 90% !important;margin: .5em 0 !important;padding: 0 .5em !important;}.video-js {width: 100% !important;height: 100vh !important;}' : "\nform #divcss5 {max-width: 570px !important;}")
} ], PurifyStyle = "display: none !important;visibility: hidden !important;width: 0 !important;height: 0 !important;max-width: 0 !important;max-height: 0 !important;overflow: hidden !important;position: absolute !important;left: -99999px !important;opacity: 0 !important;pointer-events: none !important;", V_U = "\nhttps://z1.m1907.cn/?jx=\n北极 http://beijixs.cn/?url=\n", SEARCH_URLS = "\n豆瓣 https://search.douban.com/movie/subject_search?search_text=** https://m.douban.com/search/?type=movie&query=**\n\n腾讯 https://m.v.qq.com/search.html?act=0&keyWord=** https://v.qq.com/x/search/?q=**\n\n爱奇艺 https://m.iqiyi.com/search.html?source=default&key=** https://so.iqiyi.com/so/q_**\n\n优酷 https://search.youku.com/search_video?keyword=** https://so.youku.com/search_video/q_**\n\n芒果 https://m.mgtv.com/so?k=** https://so.mgtv.com/so?k=**\n\n1905 https://vip.1905.com/Search?q=**\n\n搜狐 https://m.tv.sohu.com/upload/h5/m/mso.html?key=** https://so.tv.sohu.com/mts?wd=**\n\n茶杯狐 https://www.cupfox.com/search?key=**\n\n1080 https://www.k1080.net/vodsearch/-------------.html?wd=**\n\n1090 https://1090ys.com/?c=search&sort=addtime&order=desc&page=1&wd=**\n\n完美 https://www.wanmeikk.me/so/-------------.html?wd=**\n\n在线 https://www.zxzj.me/vodsearch/-------------.html?wd=**\n\n神马 https://www.shenma4480.com/search/-------------/?wd=**\n\n飞极速 http://m.feijisu8.com/search/** http://feijisu8.com/search/**\n\n真不卡 https://www.zhenbuka.com/vodsearch/-------------/?wd=**\n\n碟影 https://dvdhd.me/search.php?searchword=**\n\n美剧 https://91mjw.com/?s=**\n\nTVB https://www.hktvyb.com/vod/search.html?wd=**\n\n哔哩哔哩 https://m.bilibili.com/search?keyword=** https://search.bilibili.com/all?keyword=**\n\n迅播 https://www.xbdm.org/search.php?searchword=**\n\nZzzFun http://www.zzzfun.com/vod-search.html?wd=**\n\n妮可 http://www.nicotv.me/video/search/**.html\n\nAGE https://www.agefans.tv/search?page=1&query=**\n\n次元 https://cyloli.com/vodsearch/**----------1---/\n\n哔咪 http://bimibimi.me/vod/search/wd/**/page/1/\n\nMikan https://mikanani.me/Home/Search?searchstr=**\n", D_V_U = "ix·xja01augynu·c0w,ijexj·pw6jg·cu,0kix·cc,vjb·52ijexj·t0b,idaaa·c0w-ix·,ix·y0nyjtv·c0w,mmm·xqja0sj·c0w-vjb,ix·ijnp0ix·c0w-vjb·,ix·nr1ki·c0w,mmm·uxf1v·c0w,ix·98a·juk,mmm·h8ix·c0w-ijexj·,b1ay·f097·cu,mmm·baugnijexj·cc-ijexj·,mmm·8o9og·cu-ijexj,abj·ijexj·1a,mmm·b1ayw3n8·cu-ijexj·,abj·927ix·c0w-vjb,66oe·c0w,ix·1ache·we-cc,ix·6l8g·c0w,vjb·wb0s·reu-v,ix·ta0fj1w·cu-vjb,ix·e1mtc·c0w-vjb,mmm·l7l7ynu·c0w-ix-ty·,abj·3ix·t0b-vjb,cqu·yaugin·vjb-k,ix·oool8o·t0b-ix,abj·65352o·t0b-vjb,ix·ta0fj1w·cu-ijexj,ix·99yym·c0w,ijexj·38ok·c0w,v·7cyq·c0w-vjb,abj·tv92o·c0w-ix,abj·sjgnix·c0w,ix·ap33·t0b-vjb,ix·kw58·t0b-ix,mmm·ya0s0n·cc-ijexj-?v,ijexjabj·yj1aus·uet-ijexj,peaacc·c0w-abj·,ix·ta0fj1w·cu-ix", PlayerSelector = "#iframaWrapper, #sohuplayer .x-player, .c-player-video, #wPlayer, #video-box, #playerbox, .td-h5__player, .td-playbox, .iqp-player, .g-play .video-area, #mod_player, #playBox, #j-player, #video, .m-video-player, .site_player", isVipSiteRegex = /(v\.qq|tv\.sohu|iqiyi|youku|mgtv|1905|pptv|le)\.(com|cn)/, isAnimeSiteRegex = /(bilibili|cyloli|nicotv|zzzfun|mikanani|xbdm|agefans|bimibimi)\.(com|me|org|tv|video)/, Dom = DOM(), R = Dom.R, H = Dom.H, Arr = {
shuffle(e) {
for (let t = e.length; 0 < t; ) {
const i = _Mathfloor(Math.random() * t);
t--;
const n = e[t];
e[t] = e[i], e[i] = n;
}
return e;
},
chunks: (e, t) => e.reduce((function(e, i, n) {
const a = _Mathfloor(n / t);
return e[a] = [].concat(e[a] || [], i), e;
}), [])
}, xChar = {
b: "p",
p: "b",
d: "q",
q: "d",
i: "j",
j: "i",
l: "1",
1: "l",
m: "w",
w: "m",
n: "u",
u: "n",
o: "0",
0: "o"
}, PurifyKeywordRegex = /.*《|》.*|[-\s]*第.{1,3}[季集话部].*|\s+\d{2,3}\s*$/g, CommonSearchKeywordRegex = /(wd|key|keyword|searchword|query|kw|q|searchstr)=([^&\?\/\.-]+)|(search\/|seacher-|[\W]q_)([^&\?\/\.-]+)/i, States = [], throttle = function(e) {
let t, i = null;
const n = function(n) {
return function() {
i = null, e.apply(n, t);
};
}, a = function() {
for (var e = arguments.length, a = Array(e), o = 0; o < e; o++) a[o] = arguments[o];
t = a, null === i && (i = requestAnimationFrame(n(this)));
};
return a.cancel = function() {
cancelAnimationFrame(i), i = null;
}, a;
}, $ = get$(), E = emitter();
let winW = window.innerWidth || 0;
for (const e = Date.now(); 3e3 > Date.now() - e && 0 === (winW = window.innerWidth || 0); ) await delay(100);
const maxSniffIframeWidth = 105, isSniffIframe = 0 < winW && 110 >= winW;
pageInfo = {
isSniffIframe: isSniffIframe,
winW: winW,
screenWidth: screenWidth
}, E.on("MY:log", (function() {})), E.on("enable.sniff", (function(e) {
e.from === SniffCheckUrl && $(".MY-iframes > iframe").each((function(e) {
e.src === SniffCheckUrl && removeIframe(e);
})), isAllowIframeSniff || (isAllowIframeSniff = !0, isAllowSniff = !0, GlobalStore.set("isAllowIframeSniff", !0),
$(".MY-vip-list").addClass("is-allow-sniff"));
})), E.on("MY:sniff.video", (function(e) {
const t = e.from.replace(/=https?:.+/, "=");
removeIframe(iframes[t], "SNIFF SUCCESS"), e.url.startsWith("blob:") ? $(".MY-vip-list .MY-button[_href]").each((function(e) {
let i = $(this).attr("_href");
i && !i.includes("http") && (i = sniffVipUrls[i].url), i === t && ($(e).addClass("is-success"),
isSniffing && !isIframePlayCheck && (isIframePlayCheck = !0, setTimeout((function() {
0 === videoUrls.length && 0 === $(".MY-vip-list .MY-button.is-success.is-active").length && document.querySelector(".MY-vip-list .MY-button.is-success").click();
}), 11e3)));
})) : getSniffVideoUrl(e.url);
}));
const storePrefix = NAME + ".", Store = {
get(e) {
let t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : null;
return parseStoreData(window.localStorage.getItem(storePrefix + e), t);
},
set(e) {
let t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : null;
window.localStorage.setItem(storePrefix + e, JSON.stringify(t));
},
remove(e) {
window.localStorage.removeItem(storePrefix + e);
}
}, GlobalStore = {
get(e) {
let t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : null;
return isGM ? parseStoreData(GM_getValue(storePrefix + e, t), t) : Store.get(e, t);
},
set(e) {
let t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : null;
isGM ? GM_setValue(storePrefix + e, JSON.stringify(t)) : Store.set(e, t);
},
remove(e) {
isGM ? GM_deleteValue(e) : Store.remove(e);
}
};
let allowScale = !0;
const day = new Date, SniffCheckUrl = getCdnImageUrl("fe23000139a023cedc4c"), PPCs = "fe8d0001e71b421af470;fe9d0001a23fa4ba12e6;febc0001f7dca601acaa;fed8000143c1c9977f0a;fedd0001f8dbf113a9e4;ff15000173e7a91b2bdf;ff1800015827bd5a70fc;ff19000149336b0edadc;ff3400021ad5dc99bcba;ff810001019d7b986cd3;ff980000a0bdd0ffac71;ffa00002c7b08703a79c".trim().split(/;|\n/), PPC = getCdnImageUrl(PPCs[(day.getDay() + day.getHours()) % PPCs.length]), PLCs = "1000000008c00c6f9096f;10003000093941116d81a;dc0e00062b2c5eb493bd;dc0f00054064f8c380f5;dc1000045c075dd30656;dc110005e8b72a1ce583;fe2300013baa4cde2890;fe2f000129d006c2a139;fe34000135a421254486;fe360001ec336a96d0bc;fe3b0000eb53f8449038;fe3c00015043d37d7be5;fe42000218b9f7f5a55b;fe42000218c5f11c2ed9;fe430001043448994846;fe460000b3fae6aa1bb1;fe4d00010cf5c48c9b6b;fe510000f1fb19801e38;fe5f000154a794261138;fe630001b222d8a6eb7e;fe6d000226452faaf640;fe720001f24f9e93046f;fe7a00015706929e1d37;fe7d0002548cfd1152bb;fe8b0001c2706bfe3e77;fe8f00027fdd79dda7fd;fe960001b1ea0aa7e463;fea40002bfaa57d0ede4;fea6000127426b4d3bda;fea70000881c53694724;fea80002b0fd162e79fa;fea900012ca6c49d658e;feaa0002c59ed8a9dedf;fead000117ca9fd25054;feb000014b98fae777af;feb000014e2c84228ef9;feb100014198ca804c96;feb3000155028619db92;feb90000fab0c934c7cc;febc000164174a579b12;fec500013cb3f2492087;fec6000146799db82ddc;fec8000107f04dd9bea1;fece000145c7e8ab38ac;fecf0001f1c37ba62e0a;fed20001d74b7e6ef17c;fedb0000b2fb0630d6ec;fee10000fcf9e0f8a0ea;fee20000cbfe1d94035a;fee20000cbff18b0fa78;fee90001664117078084;fef500022fa8b5e54884;fef900011ed65de1bf72;fefa0000c8f25fbf889b;fefd000255b6928f4a32;ff000001080380c127ab;ff000001576d6d164dd5;ff08000171884e2e46c0;ff080001718cebbe8501;ff080001718eb948b1b4;ff1300010f3da17290d5;ff160001cb3fcc952e68;ff1700009db11e2d3555;ff1c00011675a444a9af;ff2400017249d15b1b83;ff250001a8dc0c4b1e37;ff2600020854079038ec;ff270001ec2048e95669;ff280001b41f37c4f5ac;ff2d0000c217f776cd0f;ff2f0003a17605741222;ff32000120ffbfa379d7;ff33000098bc3e5c764e;ff360000b232c77947c5;ff44000292bbf8164af2;ff55000105c2c5f00b6a;ff5e00017f49a36b2736;ff5e00018310eb5829ca;ff640000e2bd55b26e27;ff650001343066b7a407;ff6a0001f3bb184d6b00;ff7300009d5dbef7f5eb;ff7300009d5fb1c0a7ea;ff77000188c8c124297d;ff8d00018e87f58fcbec;ff940001c74763521d5e;ff960000c1e181a4de0e;ff980000c0a203eb34bb;ff9a0001c79480443798;ffa00001c50ada56505b;ffa40000e75742e72d7c;ffa40000e931066afc47;ffa90000e7d6f9c8319e;ffad0001246ecc8dc1c6;ffba00017bed9148a744;ffca0000bb9fb5e59f1f;ffcc0000de1c18886223;ffcd00017ed0bd476aaf;ffd1000086050c452015;ffd2000090b39567fed5;ffd4000133a992d6feaa;ffd50000a6a3c08f2f65;ffd70000ef199c32dc7b;ffdb0000848a6ac113f5;ffe20001218b3ce6ccff;ffe30000a3fc4e84210c;ffe90000daf1b7bf726d;ffec00017021c028b3fd;fff40000e4f8f277a6bd;fff90001a7d7337447cf".trim().split(/;|\n/).map((function(e) {
return e.replace(/\s.+/g, "");
}));
let player, playerBox, playFailedUrl;
const videoExtRegex = /\.(mp4|m3u8)/, nums = "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳";
let isLoadPlayer = !1, isSniffing = !1, sniffTimestamp = Date.now(), isAllowIframeSniff = GlobalStore.get("isAllowIframeSniff") || !1;
const isHiker = !!window.fy_bridge_app, isMixia = !!window.mx_browser_obj, isAllowHikerSniff = isHiker && !!window.fy_bridge_app.getNetworkRecords, isAllowMixiaSniff = isMixia && !!window.mx_browser_obj.getweblog;
let isAllowSniff = isAllowHikerSniff || isAllowMixiaSniff || isAllowIframeSniff, settings = {
pip: !isMobile || isAllowSniff,
skipAd: !0,
hideWatermark: !0,
autoJiexi: !0
};
Object.assign(settings, Store.get("settings", {}));
let vipUrls = [], isAutoSniffing = !1, sniffIndex = 0;
const MAX_SNIFF_LIMIT = isMobile ? 6 : 5;
let isIframePlayCheck = !1;
const KEYFRAMES_STYLES = "\n@keyframes my-pulse-positive {0% {box-shadow: 0 0 0 0 #607D8B;}100% {box-shadow: 0 0 0 5px transparent;}}@keyframes my-pulse-positive-dark {0% {box-shadow: 0 0 0 0 #EEEEEE;}100% {box-shadow: 0 0 0 5px transparent;}}@keyframes my-beat {to {transform: scale(1.2);}}@keyframes my-bubble1 {40% {transform: translate(2px,2px) scale(.79);opacity: .8;}to {transform: translate(6px,-4px) scale(.57);opacity: 0;}}@keyframes my-bubble2 {0% {transform: translate(4px,3px);}16% {transform: translate(4px,3px);opacity: 0;}28% {transform: translate(7px);opacity: .8;}60% {transform: translate(11px,-2px);}72% {transform: translate(14px,-3px) scale(.57);opacity: 0;}}@keyframes my-bubble3 {0% {transform: translate(10px,-4px) scale(.71)\n}16% {transform: translate(10px,-4px) scale(.71);opacity: 0;}28% {transform: translate(10px,-4px) scale(.71);opacity: .5;}72% {transform: translate(14px,-9px) scale(.57);opacity: 0;}}@keyframes my-rotate {\t100% {\t\ttransform: rotate(1turn);\t}}@keyframes my-zoom-in-up {from {opacity: 0;transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);}60% {opacity: 1;transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);}}@keyframes my-zoom-in-down {from {opacity: 0;transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);}60% {opacity: 1;transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);}}@keyframes my-zoom-out-down {40% {opacity: 1;transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);}to {opacity: 0;transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);}}@keyframes my-bopA {0% {transform: scale(0.9);opacity: .8;}50%,100% {transform: scale(1);opacity: 1;}}@keyframes my-bopB {0% {transform: scale(0.9);opacity: .8;}80%,100% {transform: scale(1) rotateZ(-3deg);opacity: 1;}}@keyframes my-loader-spin {0% {transform: rotate(0deg);}100% {transform: rotate(360deg);}}";
let isDarkMode = Store.get("isDarkMode", !1);
const hasTinyMode = Is(isVipSiteRegex) && !isMobile;
let isTinyMode = Store.get("isTinyMode", !1), sniffVipUrls = [];
const editData = {}, defaultHint = "刷新生效,清空恢复默认", Icon = {
vip: '<svg fill="currentColor" viewBox="0 0 18 18"><path d="M17.731,6.27l-2.771-4.464c-0.332-0.534-0.906-0.852-1.538-0.852h-2.364c-0.553,0-1,0.448-1,1s0.447,1,1,1h2.261l2.628,4.232l-6.955,7.58L2.053,7.187l2.628-4.233h2.33c0.552,0,1-0.448,1-1s-0.448-1-1-1H4.577c-0.623,0-1.212,0.327-1.537,0.853L0.267,6.272c-0.416,0.671-0.346,1.521,0.189,2.133l7.475,8.167c0.275,0.313,0.663,0.475,1.056,0.475c0.324,0,0.651-0.11,0.92-0.336l7.648-8.321C18.077,7.794,18.148,6.943,17.731,6.27z"></path><path d="M4.517,6.167C4.108,6.538,4.078,7.171,4.45,7.58l3.81,4.19c0.189,0.208,0.458,0.327,0.739,0.327c0,0,0,0,0,0c0.281,0,0.55-0.118,0.739-0.327l3.81-4.184c0.372-0.409,0.343-1.041-0.066-1.413c-0.407-0.372-1.039-0.342-1.412,0.066L9,9.612L5.929,6.234C5.558,5.826,4.926,5.796,4.517,6.167z"></path></svg>',
x: '<svg fill="currentColor" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>',
sun: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>',
moon: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>',
encircle: '<svg viewBox="-65 -65 130 130"><defs><filter id="MY-blur"><feGaussianBlur stdDeviation="3"></feGaussianBlur></filter></defs><g fill="currentColor"><g class="MY-rotate"><g fill="currentColor" stroke="none"><path filter="url(#MY-blur)" opacity="0.5" d="M 0 40 a 35 35 0 0 1 0 -70 10 10 0 0 0 0 -20 45 45 0 0 0 0 90"></path><path d="M 0 40 a 39 39 0 0 1 0 -78 2 2 0 0 0 0 -4 41 41 0 0 0 0 82"></path></g></g></g></svg>',
mi: '<svg fill="currentColor" viewBox="0, 0, 400,400"><path d="M154.254 14.333 C 153.940 14.883,152.922 17.733,151.990 20.667 C 151.059 23.600,148.034 30.530,145.268 36.066 C 140.349 45.912,133.801 64.912,134.936 66.047 C 135.250 66.361,140.216 62.415,145.970 57.276 C 151.724 52.138,160.535 44.805,165.549 40.981 C 176.057 32.967,176.095 32.845,170.333 25.572 C 163.893 17.443,155.733 11.739,154.254 14.333 M211.355 47.667 C 205.748 77.222,195.547 93.580,160.121 129.823 C 137.251 153.221,128.493 160.099,117.303 163.451 C 102.523 167.878,99.483 173.870,103.832 190.000 C 106.461 199.754,105.602 208.492,100.522 223.647 C 93.357 245.026,95.481 256.562,109.268 271.140 L 116.019 278.278 113.958 284.139 C 110.224 294.755,105.849 299.682,92.626 308.163 C 85.682 312.616,80.001 316.352,80.001 316.464 C 80.010 317.988,87.974 345.752,88.575 346.353 C 91.518 349.296,117.453 317.470,131.482 293.700 C 136.379 285.403,144.565 273.076,149.674 266.307 L 158.964 254.000 158.082 262.000 C 157.598 266.400,155.652 279.280,153.758 290.623 C 149.081 318.642,153.727 338.115,167.194 346.943 C 169.649 348.553,172.335 351.740,173.162 354.027 C 178.630 369.149,199.749 381.937,224.901 385.356 C 251.286 388.942,339.653 380.573,349.333 373.572 C 365.191 362.103,367.379 284.231,352.074 276.040 C 345.059 272.285,344.677 273.176,344.531 293.673 C 344.281 328.842,333.851 351.750,313.939 360.866 C 298.747 367.821,226.734 373.275,209.333 368.789 C 177.347 360.541,170.044 351.439,170.186 320.000 C 170.278 299.633,179.282 250.667,182.935 250.667 C 186.085 250.667,196.877 260.122,206.830 271.602 C 225.075 292.646,226.145 292.359,231.860 264.890 C 249.332 180.902,246.510 146.440,219.986 119.900 L 209.892 109.800 216.198 102.027 C 227.515 88.077,236.290 65.777,233.426 58.243 C 228.865 46.246,213.061 38.674,211.355 47.667 M149.667 71.482 C 144.064 73.970,150.588 94.369,160.373 104.960 C 163.613 108.465,166.898 112.509,167.674 113.947 C 170.438 119.063,171.156 104.978,168.876 90.365 C 166.275 73.688,159.563 67.090,149.667 71.482 M89.333 102.474 C 89.333 109.649,112.734 130.930,120.000 130.364 C 131.381 129.477,119.838 109.851,104.667 104.294 C 98.340 101.977,89.333 100.908,89.333 102.474 M211.321 141.667 C 219.376 148.631,219.059 182.276,210.730 204.279 C 205.652 217.697,206.147 217.484,186.199 214.815 C 167.304 212.287,168.157 212.806,163.318 200.877 C 160.709 194.446,154.315 187.908,152.454 189.769 C 151.946 190.276,151.107 195.936,150.590 202.346 C 148.695 225.837,123.703 282.814,117.857 276.968 C 115.217 274.328,128.449 187.632,132.855 178.705 C 144.411 155.288,171.079 140.397,204.259 138.836 C 206.269 138.741,209.380 139.988,211.321 141.667"></path></svg>',
ying: '<svg fill="currentColor" viewBox="0, 0, 400,400"><path d="M158.667 18.741 C 148.033 22.336,136.620 26.528,133.304 28.058 L 127.274 30.838 116.800 27.419 C 103.989 23.237,99.838 23.233,94.893 27.399 C 94.650 27.603,98.196 32.472,102.771 38.218 C 118.196 57.592,123.973 75.045,124.029 102.451 C 124.063 119.054,125.903 124.346,134.508 132.604 C 143.838 141.558,141.706 148.142,128.667 150.637 C 124.267 151.479,115.267 153.690,108.667 155.552 C 102.067 157.413,81.727 161.855,63.467 165.423 C 36.647 170.663,29.665 172.476,27.134 174.854 C 24.108 177.696,22.941 181.272,25.000 181.391 C 25.550 181.423,28.700 181.983,32.000 182.635 C 36.787 183.581,44.739 182.713,71.333 178.338 C 116.823 170.855,116.133 170.543,117.486 199.268 C 118.485 220.479,121.409 229.479,130.139 238.209 C 140.570 248.640,148.000 243.574,148.000 226.029 C 148.000 213.920,150.602 208.000,155.156 209.747 C 158.839 211.161,159.232 214.627,156.593 222.393 C 153.312 232.044,153.516 241.851,157.144 248.963 C 160.679 255.891,160.707 257.614,157.333 260.667 C 153.945 263.733,153.981 266.110,157.536 274.147 C 163.414 287.436,161.994 313.598,154.955 321.667 C 151.330 325.823,128.567 324.205,114.287 318.776 C 109.010 316.770,111.585 312.363,127.939 295.413 C 145.665 277.041,148.571 272.591,141.519 274.613 C 135.725 276.275,132.781 278.119,124.874 285.038 C 107.160 300.539,91.120 302.678,75.150 291.667 C 64.272 284.166,62.363 283.956,57.001 289.667 C 39.590 308.208,50.889 328.267,82.000 334.052 C 99.687 337.341,114.769 342.022,126.376 347.825 C 163.534 366.406,175.674 369.781,182.130 363.325 L 185.472 359.983 184.536 321.581 C 183.143 264.385,186.604 244.889,197.360 249.345 C 201.234 250.949,220.000 269.936,220.000 272.250 C 220.000 274.413,230.223 273.369,232.240 271.000 C 237.404 264.935,240.384 257.761,242.216 246.986 C 245.313 228.767,250.515 215.184,267.871 180.000 C 286.203 142.838,292.000 135.252,292.000 148.425 C 292.000 160.756,301.747 179.707,306.560 176.733 C 310.234 174.462,306.609 190.314,300.792 201.955 C 293.490 216.569,292.869 223.417,297.870 234.158 C 303.041 245.263,309.081 248.001,314.768 241.819 C 326.766 228.776,345.348 226.859,350.486 238.135 C 358.988 256.795,320.002 321.748,278.667 357.791 C 251.392 381.574,248.054 385.333,254.212 385.333 C 255.341 385.333,265.656 379.739,277.133 372.902 C 288.610 366.065,302.219 358.016,307.376 355.015 C 353.237 328.329,389.727 258.885,372.915 230.285 C 368.008 221.937,358.997 215.549,347.177 212.040 C 333.726 208.047,333.059 207.061,335.424 194.663 C 339.087 175.457,337.854 165.982,330.619 157.742 C 325.348 151.738,325.571 149.812,333.126 136.118 C 347.442 110.168,354.883 87.378,356.673 64.000 C 357.206 57.033,358.539 49.586,359.635 47.450 C 373.351 20.704,316.946 14.266,300.447 40.694 C 298.368 44.024,295.093 48.817,293.170 51.344 C 291.246 53.872,288.674 59.916,287.453 64.776 C 284.810 75.300,279.094 88.295,273.588 96.297 C 271.394 99.485,267.649 106.740,265.265 112.419 C 259.879 125.249,253.750 131.338,247.479 130.088 C 235.178 127.635,229.787 127.835,216.854 131.223 C 203.243 134.788,194.072 135.608,192.696 133.381 C 191.355 131.211,198.231 112.829,206.715 95.904 C 232.811 43.845,228.031 20.125,190.088 13.402 C 179.471 11.521,180.583 11.332,158.667 18.741 M147.861 40.095 C 151.524 40.880,161.303 42.230,169.594 43.095 C 183.775 44.574,184.692 44.849,185.102 47.740 C 185.783 52.543,183.045 54.667,176.170 54.666 C 172.777 54.666,166.381 55.964,161.957 57.550 C 151.676 61.237,147.932 60.339,142.934 52.989 C 133.819 39.580,134.701 37.272,147.861 40.095 M188.745 135.376 C 185.871 137.549,171.313 138.125,170.070 136.114 C 168.895 134.211,171.896 133.549,182.000 133.481 C 190.486 133.424,191.098 133.596,188.745 135.376 M244.000 148.172 C 244.000 149.000,236.430 166.698,227.178 187.500 L 210.356 225.322 203.053 229.890 C 182.873 242.513,175.012 242.398,182.337 229.586 C 198.714 200.941,202.274 186.880,194.611 181.112 C 189.527 177.285,168.872 174.944,159.685 177.154 C 143.721 180.993,138.084 179.788,132.559 171.355 C 129.239 166.289,130.451 165.968,151.487 166.341 C 172.582 166.715,176.048 165.937,184.987 158.825 C 193.552 152.009,203.061 149.014,219.333 148.007 C 242.792 146.555,244.000 146.563,244.000 148.172 M148.612 269.422 C 147.048 271.952,149.329 272.576,151.651 270.254 C 153.729 268.175,153.733 268.000,151.698 268.000 C 150.484 268.000,149.095 268.640,148.612 269.422"></path></svg>',
loader: '<svg><defs><filter id="MY-l-f"><feGaussianBlur in="SourceGraphic" stdDeviation="2" result="blur" /><feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 5 -2" result="gooey" /><feComposite in="SourceGraphic" in2="gooey" operator="atop"/></filter></defs></svg>',
expand: '<svg fill="currentColor" viewBox="0 0 64 64" fill="#012e52"><path d="m48 8h-26c-1.104 0-2 .896-2 2s.896 2 2 2h26c2.206 0 4 1.794 4 4v32c0 2.206-1.794 4-4 4h-32c-2.206 0-4-1.794-4-4v-26c0-1.104-.896-2-2-2s-2 .896-2 2v26c0 4.411 3.589 8 8 8h32c4.411 0 8-3.589 8-8v-32c0-4.411-3.589-8-8-8z"/><path d="m29 42c0 1.104.896 2 2 2h11c1.104 0 2-.896 2-2v-11c0-1.104-.896-2-2-2s-2 .896-2 2v6.172l-16.586-16.586c-.78-.781-2.048-.781-2.828 0-.781.781-.781 2.047 0 2.828l16.586 16.586h-6.172c-1.104 0-2 .896-2 2z"/></svg>',
shrink: '<svg fill="currentColor" viewBox="0 0 64 64"><path d="m48 8h-32c-4.411 0-8 3.589-8 8v32c0 4.411 3.589 8 8 8h26c1.104 0 2-.896 2-2s-.896-2-2-2h-26c-2.206 0-4-1.794-4-4v-32c0-2.206 1.794-4 4-4h32c2.206 0 4 1.794 4 4v26c0 1.104.896 2 2 2s2-.896 2-2v-26c0-4.411-3.589-8-8-8z"/><path d="m35 22c0-1.104-.896-2-2-2h-11c-1.104 0-2 .896-2 2v11c0 1.104.896 2 2 2s2-.896 2-2v-6.172l16.586 16.586c.39.391.902.586 1.414.586s1.024-.195 1.414-.586c.781-.781.781-2.047 0-2.828l-16.586-16.586h6.172c1.104 0 2-.896 2-2z"/></svg>'
}, isJiexiRegex = /(jx|url|v)=https?:/i;
let m3u8Video;
!isSniffIframe && (Is(isJiexiRegex) && Is(isVipSiteRegex, Href.replace(/.+=(https?:)/, "$1")) || isNotTop && (Is(/=https?:.+\.m3u8/) || (m3u8Video = document.querySelector("video source[src], video[src]")) && /\.m3u8/.test(m3u8Video.src))) && (addCss("\nbody > *:not(script) + script ~ *[id]:not([class]) {" + PurifyStyle + "}"),
fixM3u8Playing());
const MESSAGE_ID = NAME + "20.20.final";
if (window.addEventListener("message", (function(e) {
const t = e.data;
t && t._id === MESSAGE_ID && (isNotTop && t.parent ? (t.from = location.href, window.parent.postMessage(t, "*")) : isTop && t.action && E.emit(t.action, t));
})), isNotTop && location.href === SniffCheckUrl) return void window.top.postMessage({
_id: MESSAGE_ID,
action: "enable.sniff",
from: location.href
}, "*");
const isVideoUrlRegex = /^(http|\/\/).+(\.(mp4|m3u8)|m3u8play.php)/, isInvalidSniffUrlRegex = /btrace.video.qq.com|lmsjy.qq.com|vlive.qqvideo.tc.qq.com|qzonestyle.gtimg.cn|img.baidu.com|dplayer\/\w+.mp4|vip.fwwmy1.cn|com-t-iqiyi.com|hz189cloud.oos-hz.ctyunapi.cn|video.da.mgtv.com|(titan.mgtv.com|cdn.oss-cn.aliyuncs.com.gms-lighting.com).+m3u8|jieshuo-okzy.com|manhoo.cn|\/{3}|\.(js|css)/, videoUrls = [], sniffVideoUrls = [];
let iframes = {};
isNotTop && sniffVideo();
let isUrlDetect = !1;
E.on("url.change", (function(e) {
let {oldUrl: t, newUrl: i} = e;
RULES_GO();
})), RULES_GO(), Is(/movie\.douban\.com\/tag\//) && (addCss(".aside, .extra,.dale_movie_tag_bottom_banner {" + PurifyStyle + "}" + prefixCss(".grid-16-8 .article {width: auto;float: unset;}h1 {display: none;}#db-nav-movie {margin-bottom: 20px;}#db-nav-movie .MY-nav-item-a {background-color: #27a;color: #fafafa;padding: 3px 5px;border-radius: 3px;}.list-wp {display: flex;flex-wrap: wrap;justify-content: space-between;margin-top: 25px;}a.item {width: 118px;margin: 0 8px;}div.item {width: 100%;margin-left: 8px;margin-right: 8px;margin-bottom: 16px;}a.item p {padding-right: 0;text-align: center;}a.item .cover-wp, div.item .poster {overflow: hidden;border-radius: 3px;box-shadow: 0 1px 4px rgba(0, 0, 0, 0.39);border: 3px solid #f1eded;height: auto;}@media only screen and (max-width: 320px) {a.item .cover-wp {border-width: 0;}}a.item .cover-wp:hover, div.item .poster:hover {box-shadow: 0 5px 10px rgba(0, 0, 0, 0.5);}a.item .pic img {width: 100%;height: 163px;object-fit: cover;}a.item .cover-wp:after {display: none;}.tag-nav {margin-right: 0;}.MY-item-divider {width: 100%;}.MY-item-divider + .MY-item-divider {display: none;}", ".MY-miying") + prefixCss(".category {width: 100%;white-space: nowrap;overflow-x: auto;}.tags {margin-bottom: 1em !important;}.tags, .MY-douban-search {padding-left: 6px;padding-right: 6px;}.checkbox__input {vertical-align: text-top;}.tag-nav {margin: 0 auto;font-size: 12px;width: 100%;}.tag-nav .tabs, .tag-nav .check {display: flex;justify-content: space-around;width: 100%;}.tag-nav .tabs a {padding: 7.5px 5px 5px;}.tabs a:not(.tab-checked) {border: 1px solid #dfdfdf;}.tabs .tab-checked {border: 1px solid #258dcd!important;}.tab-checked:after {display: none;}.checkbox, .range {margin-right: 5px;}.check {float: none;margin-top: 5px;}.list-wp {margin-top: 40px;justify-content: space-evenly;}.list-wp, .item .cover-wp {overflow: unset;}a.item {width: calc((100% - 15px) / 3);text-align: center;margin: 0 2px;}a.item p {padding-right: 0;}a.item .cover-wp:after, .poster:after {display: none;}.tag-nav .range-dropdown {left: 0 !important;width: auto !important;right: 0 !important;top: -4em !important;}.article .more {margin: 1em !important;}", ".MY") + (isMobile ? prefixCss("\nbody > *:not(.MY) {" + PurifyStyle + "}#app .article, .article.MY {position: absolute;top: 0;left: 0;right: 0;padding: 10px 0;transition: all 0.8s;}.category::-webkit-scrollbar {width: 1px;height: 1px;background-color: rgba(223, 223, 223, 0.25);}.category::-webkit-scrollbar-track {background: transparent;border: 0px none #ffffff;border-radius: 50px;}.category::-webkit-scrollbar-thumb {-webkit-box-shadow: inset 0 0 2.5px rgba(0, 0, 0, 0.1);box-shadow: inset 0 0 2.5px rgba(0, 0, 0, 0.1);border-radius: 2.5px;background-color: rgba(223, 223, 223, 0.25);opacity: 0.7;transition: opacity ease-in-out 200ms;}.category::-webkit-scrollbar-thumb:hover {opacity: 1;background-color: rgba(223, 223, 223, 0.25);}.MY-douban-search {position: relative;display: flex;margin-bottom: 5px;}.MY-douban-search .inp {height: 34px;text-align: center;cursor: text;width: 90%;border-top: 1px solid #dedede;border-left: 1px solid #dedede;border-top-left-radius: 3px;border-bottom-left-radius: 5px;}.MY-douban-search .inp input {background: #fff;width: 96%;margin: 0;text-align: left;height: 30px;padding-left: 10px;outline: none;}.MY-douban-search input {-webkit-appearance: none;border: none;background: transparent;}.MY-douban-search .inp-btn {position: relative;width: 37px;height: 34px;}.MY-douban-search .inp-btn input {width: 100%;height: 100%;font-size: 0;padding: 35px 0 0 0;overflow: hidden;color: transparent;cursor: pointer;}.MY-douban-search .inp-btn input:focus {outline: none;}.MY-douban-search .inp {background-image: url(//img3.doubanio.com/dae/accounts/resources/a4a38a5/movie/assets/nav_mv_bg.png?s=1);}.MY-douban-search .inp-btn input {background: url(//img3.doubanio.com/dae/accounts/resources/a4a38a5/movie/assets/nav_mv_bg.png?s=1) no-repeat 0 -40px;}.MY-item-balancer {margin-left: 11%;margin-right: 11%;}", "html") : "")),
$("html").addClass("MY-miying"), $((function() {
const e = document.querySelector(".list-wp");
let t = !1, i = !1;
new MutationObserver((function(e) {
if (i) i = !1; else {
for (const i of e) "childList" == i.type && (t = !0);
t && (i = !0, $(".list-wp").append('<div class="MY-item-divider"></div>'));
}
})).observe(e, {
attributes: !0,
childList: !0
}), $(".nav-items li a").each((function(e) {
$(e).text().includes("分类") && $(e).addClass("MY-nav-item-a").html(NAME);
})), $("title").html(NAME), isMobile && ($("#app .article .tags").before('<div class="MY-douban-search"><div class="inp"><input size="22" maxlength="60" placeholder="搜索电影、电视剧、综艺、影人" value="" autocomplete="off"></div><div class="inp-btn"><input type="submit" value="搜索"></div></div>'),
$("body").prepend($("#app .article").addClass("MY")), $(".MY-douban-search input").on("keyup", (function(e) {
13 === e.keyCode && (e.preventDefault(), location.href = "https://m.douban.com/search/?query=" + e.target.value + "&type=movie");
})), $(".MY-douban-search .inp-btn input").on("click", (function(e) {
e.preventDefault();
const t = $(".MY-douban-search input").val();
location.href = "https://m.douban.com/search/?query=" + t + "&type=movie";
})), setInterval((function() {
$(".list-wp [href]").each((function(e) {
const t = $(e).attr("href");
t.includes("movie.douban.com") && $(e).attr("href", t.replace("movie.douban.com", "m.douban.com/movie")).attr("target", "_blank");
}));
}), 500));
})));
}();