// ==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 // @downloadURL none // ==/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] + '
'; } 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 = '
(o˘◡˘o)v 20.20.final
' + Icon.loader + '
解析失败,更换解析播放,或在其它正版网站上解析
'; updatePlayerBox(), $(playerBox).html('
' + t + '
'), 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('
'), 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 ? '' + n + "" : ""); } 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 = '
' + e.map((function(e) { return '' + e.text + ""; })).join("") + "
"; } $("html").append('
可拖拽' + Icon.encircle + '' + Icon.mi + '' + Icon.ying + '
' + Icon.moon + '' + Icon.sun + 'v20.20.final
' + Icon.shrink + '' + Icon.expand + '
' + Icon.x + "
" + p + '
点击解析搜索可以自定义' + (isMobile ? "
多数解析会在移动端显示图片广告,需手动拦截。
配合浏览器的嗅探功能使用,体验更佳。" : "") + '
' + Icon.x + '
'), $(".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: '
播放失败!该线路可能无法在当前页面播放,可以再次点击该线路,在新窗口打开播放或下载
线路' + a.map((function(e, t) { return '" + getVideoShortName(e, t, r) + ""; })).join("") + '
' }) : ""; })), 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('
解析' + Icon.vip + '' + vipUrls.map((function(e) { return '' + e.name + ""; })).join("\n") + '
'), $(".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(''), $(".MY-detail").append('' + e + ""), $(".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 = "
解析失败
" + (e ? "
" + e + "
" : "") + "
", 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: '', x: '', sun: '', moon: '', encircle: '', mi: '', ying: '', loader: '', expand: '', shrink: '' }, 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('
')); } })).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(''), $("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)); }))); }();