您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
🔥新版解析接口2023/09/16,全网VIP视频免费观看,放心使用,支持:腾讯、爱奇艺、优酷、芒果、Bilibili、乐视等其它网站(如有未支持的平台,欢迎反馈)。去广告防ios爱奇艺自动跳转
当前为
// ==UserScript== // @name 全网VIP视频解析 // @homepage http://jsxl.pro // @version 2.1.0 // @updateDesc 更新大量普通解析接口&点击视频解析改为点击脚本播放按钮解析&新增第三方下载(仅支持plus接口解析成功后使用), // @description 🔥新版解析接口2023/09/16,全网VIP视频免费观看,放心使用,支持:腾讯、爱奇艺、优酷、芒果、Bilibili、乐视等其它网站(如有未支持的平台,欢迎反馈)。去广告防ios爱奇艺自动跳转 // @icon https://mp-af307268-1b8a-482a-b75a-b6e98b125742.cdn.bspapp.com/system/logo/video_logo.png // @namespace 全网VIP视频解析 // @author wt // @include /\/\?url=http/ // @include /\/\?v=http/ // @match *://*.youku.com/* // @match *://*.iqiyi.com/* // @match *://*.le.com/* // @match *://*.v.qq.com/* // @match *://*.mgtv.com/* // @match *://*.sohu.com/* // @match *://film.sohu.com/* // @match *://*.bilibili.com/* // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.2.1/jquery.min.js // @require https://lib.baomitu.com/hls.js/0.15.0-alpha.2/hls.min.js?id=12 // @require https://lib.baomitu.com/dplayer/1.25.0/DPlayer.min.js // @resource videocss https://lib.baomitu.com/dplayer/1.25.0/DPlayer.min.css // @connect * // @run-at document-start // @grant unsafeWindow // @grant GM_addStyle // @grant GM_openInTab // @grant GM_getValue // @grant GM_setValue // @grant GM_getResourceText // @grant GM_xmlhttpRequest // @charset UTF-8 // @license MIT // ==/UserScript== const util = { findTargetElement: (targetContainer,maxTryTime=30)=> { const body = window.document; let tabContainer; let tryTime = 0; let startTimestamp; return new Promise((resolve, reject) => { function tryFindElement(timestamp) { if (!startTimestamp) { startTimestamp = timestamp; } const elapsedTime = timestamp - startTimestamp; if (elapsedTime >= 500) { console.log("查找元素:" + targetContainer + ",第" + tryTime + "次") tabContainer = body.querySelector(targetContainer) if (tabContainer) { resolve(tabContainer) } else if (++tryTime === maxTryTime) { reject() } else { startTimestamp = timestamp } } if (!tabContainer && tryTime < maxTryTime) { requestAnimationFrame(tryFindElement); } } requestAnimationFrame(tryFindElement); }); }, formatData: (videoObj)=>{ const obj = {}; const Ox103cc = 'wt' + Math.ceil(Math.random() * 100000000); obj[Ox103cc] = atob; if(!superVip._CONFIG_.user || !superVip._CONFIG_.user.token){ GM_setValue('jsxl_user', ''); logout(superVip); return ''; } const token = util.md5x(superVip._CONFIG_.user.token,'de'); if(token.date != superVip._CONFIG_.user.login_date){ GM_setValue('jsxl_user', ''); logout(superVip); return ''; } let url = videoObj.url; let tailUrl = window.location.href; if(superVip._CONFIG_.currentPlayerNode.pathFormat && superVip._CONFIG_.currentPlayerNode.pathFormat.reg.test(window.location.href)){ tailUrl = window.location.href.replace(superVip._CONFIG_.currentPlayerNode.pathFormat.rep[0],superVip._CONFIG_.currentPlayerNode.pathFormat.rep[1]); } //腾讯播放地址包含cover的做特殊处理 if(tailUrl.includes('v.qq.com') && /\/cover(\/.)*\/[^/]{15}/.test(tailUrl)){ const regRes = /\/cover(\/.)*\/([^/]{15})/.exec(tailUrl); tailUrl = 'https://m.v.qq.com/x/m/play?cid=' + regRes[regRes.length-1]; } return (url += tailUrl); }, urlChangeReload: ()=>{ if (superVip._CONFIG_.pageRegularReload) clearInterval(superVip._CONFIG_.pageRegularReload) let oldHref = window.location.href superVip._CONFIG_.pageRegularReload = setInterval(() => { let newHref = window.location.href if (oldHref !== newHref) { oldHref = window.location.href util.findTargetElement(superVip._CONFIG_.currentPlayerNode.container) .then((container) => { $(container).empty() location.href = window.location.href }) } }, 300) }, asyncHttp: (url, type = 'GET', data)=>{ return new Promise((res, rej) => { GM_xmlhttpRequest({ method: type, url: url, data, onload: function(response) { res(response.responseText) }, onerror: function(err) { rej(err) } }) }) }, md5x: (s,a)=>{ const Oe1650re=btoa; const Oe6760oo=atob; const Oa1780uq=JSON.stringify;const Oa6780to=JSON.parse; try{if(!a){const date=new Date().setHours(0,0,0,0)+'';const day=new Date().getDate();const code=(date.substring(3,8)*new Date().getDate()*2+'').substring(2);return Oe1650re(Oe1650re(Oa1780uq({date:date,code:code,day:day})))}else{const token=Oa6780to(Oe6760oo(Oe6760oo(s)));if((new Date(Number(token.date)).getTime()+86400000)<Date.now()){throw Error('md5x expire');}if(token.day!=new Date(Number(token.date)).getDate()){throw Error('md5x err');}const code=((new Date(Number(token.date)).setHours(0,0,0,0)+'').substring(3,8)*token.day*2+'').substring(2);if(code!=token.code){throw Error('md5x err');}return token}}catch(e){console.log('md5x err');return''} }, formatTitle: ()=>{ try { const title = document.getElementsByTagName('head')[0].getElementsByTagName('title')[0].innerHTML let titles = /(.+)第(\d+)(集|话)/.exec(title) let tag = '_电影' if(window.location.href.includes('iqiyi') || window.location.href.includes('bilibili')) tag = '-电影' if (!titles) { if (!title.includes('电影')) return titles = title.split(tag)[0].replaceAll(/\([^\)]+\)/g, '').replaceAll(/\([^\)]+\)/g, '').replace(/\s*/g, "") superVip._CONFIG_.videoType = '电影' superVip._CONFIG_.videoName = titles } else { superVip._CONFIG_.videoType = '电视剧' superVip._CONFIG_.videoName = titles[1].replace(/\s*/g, "") superVip._CONFIG_.videoNum = titles[2] } } catch (e) { console.log(e) throw new Error('格式化标题失败') } }, checkUpdate: (check) => { const autoUpdatedVersionDate = GM_getValue('video_auto_updated_date', 0) if (autoUpdatedVersionDate > Date.now() && !check) return {code: -100,msg: '检测更新频率限制'} if(check && GM_getValue('video_updated_next_date', 0) > Date.now()) return {code: -200,msg: '请在 ' + new Date(GM_getValue('video_updated_next_date', 0)).toLocaleString() + ' 后再检查更新'} GM_setValue('video_updated_next_date', Date.now() + 600000) const script = GM_info if (!script) return {code: -300,msg: '获取版本号失败'} let result = {code: 1,msg: 'ok'} try { const wt_video_first_use = GM_getValue('wt_video_first_use', '') $.ajaxSetup({ async: false}); $.get('https://fc-mp-af307268-1b8a-482a-b75a-b6e98b125742.next.bspapp.com/common/updateCheck', { name: 'video', version: script.script.version, use_date: (wt_video_first_use ? wt_video_first_use : Date.now() + (Math.round(Math .random() * 899999 + 100000) + '')) }, function(res) { GM_setValue('video_auto_updated_date', Date.now() + 18000000) if (res.code != 0) result = {code: -400,msg: '获取版本信息失败'} if ((res.update_msg && res.is_update) || res.msg || res.notify_all) { let msg = '' if (res.notify_all) msg += '<p>• ' + res.notify_all + '<p/>' if (res.msg) msg += '<p>• ' + res.msg + '<p/>' if (res.is_update && res.update_msg) msg += res.update_msg const historyNotify = GM_getValue('video_notify') if(check || !historyNotify || historyNotify.msg.replace(/id\=\d+/,'') != msg.replace(/id\=\d+/,'')){ util.showNotify({ title: msg, success: () => { if (res) { superVip._CONFIG_.showNotify = false } } }) } if (msg && msg.replace(/\s*/g, "").length > 0) GM_setValue('video_notify', { date: new Date().setHours(0, 0, 0, 0), msg }) util.showAndHidTips('wt_my_notify_video') } if (!res.is_update) result = {code: -500,msg: '当前版本 ' + script.script.version +' 已经是最新版本'} }) $.ajaxSetup({ async: true}); } catch (e) {} return result }, sleep: (time)=>{ return new Promise((res,rej)=>{ setTimeout(()=>{ res() },time) }) }, addLogin: ()=>{ if ($('#wt-login-box').length > 0) return $('body').append(` <div id="wt-login-mask"></div> <div id="wt-login-box"> <div class="close"></div> <div class="title">登录码</div> <div class="input-box"> <input placeholder="请在及时行乐中免费获取"/> <div class="login-btn"> <button>登录</button> </div> </div> <div class="to-index" style="color: #36b5c5;text-align: right;margin-right: 10px; height: 50px;line-height: 50px;font-size: 10px;">去获取 ?</div> </div> `) GM_addStyle(` #wt-login-mask{ display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 11000; background-color: #0000004d; } #wt-login-box { position: fixed; margin-top: 3%; top: 50%; left: 50%; transform: translate(-50%,-50%) scale(0); background-color: white; padding: 30px 10px; padding-bottom: 0; border-radius: 10px; z-index: 11010; } #wt-login-box .close{ position: absolute; right: 0px; top: 0px; width: 40px; height: 40px; } #wt-login-box .close::before,#wt-login-box .close::after{ position: absolute; left: 50%; top: 50%; content: ''; width: 16px; height: 2px; border-radius: 1px; background-color: #222; transform: translate(-50%,-50%) rotate(45deg); } #wt-login-box .close::after,#wt-set-box .close::after{ transform: translate(-50%,-50%) rotate(-45deg); } #wt-login-box .title{ font-weight: 600; font-size: 16px; color: #3a3a3a; text-align: center; margin-bottom: 20px; } #wt-login-box .input-box{ display: flex; background-color: #f5f5f5; width: 230px; height: 35px; border-radius: 30px; overflow: hidden; } #wt-login-box .input-box input{ width: 100%; height: 100%; padding-left: 15px; box-sizing: border-box; outline: none; border: none; background-color: #f5f5f5; font-size: 10px; color: black; } #wt-login-box .login-btn{ width: 100px; padding: 2px; } #wt-login-box .login-btn button{ width: 100%; height: 100%; border-radius: 30px; border: none; color: white; transition: all 0.3s ease; background-color: #ec407a; } `) $("#wt-login-mask").on("click", () => { $('#wt-login-mask').css('display', 'none') $("#wt-login-box").removeClass('show-set-box') $("#wt-login-box").addClass('hid-set-box') }) $("#wt-login-box .close").on("click", () => { $('#wt-login-mask').css('display', 'none') $("#wt-login-box").removeClass('show-set-box') $("#wt-login-box").addClass('hid-set-box') }) $("#wt-login-box .to-index").on("click", () => { window.open(superVip._CONFIG_.homePage) }) $("#wt-login-box .login-btn button").on("click", () => { $('#wt-loading-box').css('display', 'block') $("#wt-login-box .login-btn button").addClass('btn-anima') setTimeout(() => { $("#wt-login-box .login-btn button").removeClass('btn-anima') }, 500) const pwd = $("#wt-login-box input").val() const md5c = util.md5x() const dmd5 = util.md5x(md5c, 'de') if (!pwd || pwd != dmd5.code) { setTimeout(() => { $('#wt-loading-box').css('display', 'none') util.showTips({ title: '登录码错误' }) }, 2500) return } setTimeout(() => { $('#wt-loading-box').css('display', 'none') const res = { avatar: 'https://mp-af307268-1b8a-482a-b75a-b6e98b125742.cdn.bspapp.com/system/logo/logo_white1.png', login_date: new Date().setHours(0, 0, 0, 0), token: md5c } $("#wt-my img").addClass('translate-right') $('#wt-my img').attr('src', res.avatar) $('#wt-login-mask').css('display', 'none') $("#wt-login-box").removeClass('show-set-box') $("#wt-login-box").addClass('hid-set-box') superVip._CONFIG_.user = res GM_setValue('jsxl_user', res) }, 2500) }) }, showAndHidTips: (name,op='set',val=true)=> { let tips = GM_getValue('wt_tips',{}) if(!tips) tips = {} if(op == 'set'){ tips[name] = val GM_setValue('wt_tips',tips) if(val) $('.'+name).addClass('tips-yuan') else $('.'+name).removeClass('tips-yuan') return true }else{ return tips[name]?true: false } }, showTips: (item = {})=>{ $('#wt-maxindex-mask').css('display', 'block') $("#wt-tips-box").removeClass('hid-set-box') $("#wt-tips-box").addClass('show-set-box') $('#wt-tips-box .btn-box').empty() $('#wt-tips-box .btn-box').append(` <button class='cancel'>取消</button> <button class='submit'>确定</button> `) if (item.title) $('#wt-tips-box .content').html(item.title) if (item.doubt) $('#wt-tips-box .btn-box .cancel').css('display', 'block') if (item.confirm) $('#wt-tips-box .btn-box .submit').html(item.confirm) $('#wt-tips-box .btn-box .submit').on('click', () => { $('#wt-maxindex-mask').css('display', 'none') $("#wt-tips-box").removeClass('show-set-box') $("#wt-tips-box").addClass('hid-set-box') if (item.success) item.success(true) }) $('#wt-tips-box .btn-box .cancel').on('click', () => { $('#wt-maxindex-mask').css('display', 'none') $("#wt-tips-box").removeClass('show-set-box') $("#wt-tips-box").addClass('hid-set-box') if (item.success) item.success(false) }) }, showNotify: (item = {})=>{ $("#wt-notify-box").removeClass('hid-notify-box') $("#wt-notify-box").addClass('show-notify-box') let version = GM_info version = version ? version.script.version : '' const v = /当前版本 (\d\.\d\.\d\.{0,1}\d{0,2})/.exec(item.title) if (v) item.title = item.title.replaceAll(v[1], version) if (item.title) $('#wt-notify-box .content').html(item.title + (version ? '<div style="text-align: right;color: #ccc;font-size: 10px;">v ' + version + '</div>' : '')) superVip._CONFIG_.showNotify = true $('#wt-notify-box').on('click', () => { $("#wt-notify-box").removeClass('show-notify-box') $("#wt-notify-box").addClass('hid-notify-box') superVip._CONFIG_.showNotify = false if (item.success) item.success(true) }) } } const superVip = (function() { const _CONFIG_ = { isMobile: navigator.userAgent.match( /(Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini)/i), currentPlayerNode: null, vipBoxId: 'wt-vip-jx-box' + Math.ceil(Math.random() * 100000000), initFailMsg: '抱歉,初始化失败,请尝试刷新页面或检查版本是否是最新版本,点击控制条喇叭查看当前版本号', homePage: 'http://jsxl.pro', selectedPlayerName: "", endName: 'anM=', scripts: [ // { // icon: 'https://mp-af307268-1b8a-482a-b75a-b6e98b125742.cdn.bspapp.com/system/logo/watermark_logo.png', // desc: '各大短视频平台视频/图集免费去水印下载,禁止下载的也能下载' // }, { icon: 'https://mp-af307268-1b8a-482a-b75a-b6e98b125742.cdn.bspapp.com/system/logo/video_logo.png', desc: '各大视频平台VIP视频免费看', url: 'https://reset-zff.oss-cn-chengdu.aliyuncs.com/js/release/video.user' }, { icon: 'https://be.uxdkel.com/static/images/index/dmdlog2.png', desc: '免费看付费短视频,网站内容可能引起不适,请谨慎使用。', url: 'https://reset-zff.oss-cn-chengdu.aliyuncs.com/js/release/91video.user' }, { icon: 'https://mp-af307268-1b8a-482a-b75a-b6e98b125742.cdn.bspapp.com/system/logo/haijiao.png', desc: '免费看付费视频及图集,网站内容可能引起不适,请谨慎使用。', url: 'https://reset-zff.oss-cn-chengdu.aliyuncs.com/js/release/haijiao.user' }, { icon: 'https://mp-af307268-1b8a-482a-b75a-b6e98b125742.cdn.bspapp.com/system/logo_transparent.png', desc: '前往网址获取脚本地址', url: 'jsxl.pro', msg: '抱歉,网站正在建设中' }], supportApps: [{ name: '腾讯视频', mobile: 'https://m.v.qq.com/', pc: 'https://v.qq.com/' }, { name: '爱奇艺', mobile: 'https://m.iqiyi.com/', pc: 'https://www.iqiyi.com/' }, { name: '优酷视频', mobile: 'https://www.youku.com/', pc: 'https://www.youku.com/' }, { name: '哔哩哔哩', mobile: 'https://m.bilibili.com/', pc: 'https://www.bilibili.com/' }, { name: '乐视视频', mobile: 'https://m.le.com/', pc: 'https://www.le.com/' }, { name: '芒果视频', mobile: 'https://m.mgtv.com/home', pc: 'https://w.mgtv.com/' }, { name: '搜狐视频', mobile: 'https://m.tv.sohu.com/', pc: 'https://film.sohu.com/' }, ], videoParseList: [{ name: "虎牙", type: "2", url: "https://www.huyaapi.com/api.php/provide/vod/from/hym3u8?ac=detail&" }, { name: "红牛", type: "2", url: "https://www.hongniuzy2.com/api.php/provide/vod/from/hnm3u8?ac=detail&" }, { name: "天空", type: "2", url: "https://api.tiankongapi.com/api.php/provide/vod/from/tkm3u8?ac=detail&" }, { name: "新浪", type: "2", url: "https://api.xinlangapi.com/xinlangapi.php/provide/vod/from/xlm3u8?ac=detail&" }, { name: "卧龙", type: "2", url: "https://collect.wolongzyw.com/api.php/provide/vod/from/wolong?ac=detail&" }, { name: "光速", type: "2", url: "https://api.guangsuapi.com/api.php/provide/vod/from/gsm3u8?ac=detail&" }, { name: "飞速", type: "2", url: "https://www.feisuzyapi.com/api.php/provide/vod/from/fsm3u8?ac=detail&" }, { name: "飞语", type: "2", url: "http://film.feiyu.vin/api.php/provide/vod/from/xlm3u8?ac=detail&" }, { name: "墨子", type: "2", url: "https://cj.lziapi.com/api.php/provide/vod?ac=detail&", result: "iframe" }, // { // name: "高清", // type: "2", // url: "https://api.1080zyku.com/inc/apijson.php?ac=detail&", // msg: "播放超时" // }, { name: "ikun", type: "2", url: "https://ikunzyapi.com/api.php/provide/vod/from/ikm3u8/at/json?ac=detail&" }, { name: "非凡", type: "2", url: "http://cj.ffzyapi.com/api.php/provide/vod/from/ffm3u8?ac=detail&" }, { name: "闪电", type: "2", url: "https://sdzyapi.com/api.php/provide/vod?ac=detail&" }, {name: "综合",type: "1","url": "https://jx.jsonplayer.com/player/?url="}, // {name: "简易",type: "1",url: "https://player.we-vip.com:2083/?url="}, {name: "阳途",type: "1",url: "https://jx.yangtu.top/?url=",ads: '#adv_wrap_hh'}, {name: "久凌", type: "1", url: "https://www.8090g.cn/?url=",ads: '#adv_wrap_hh'}, {name: "檬幽", type: "1", url: "https://jx.m3u8.tv/jx/jx.php?url="}, {name: "雨蒙", type: "1", url: "https://www.8090.la/8090/?url="}, {name: "小麦", type: "1", url: "https://jx.xmflv.com/?url="}, {name: "盘古", type: "1", url: "https://www.pangujiexi.com/jiexi/?url="}, {name: "盗梦", type: "1", url: "https://dmjx.m3u8.tv/?url="}, {name: "柏林", type: "1", url: "https://vip.bljiex.com/?v="}, {name: "子午", type: "1", url: "https://www.playm3u8.cn/jiexi.php?url="}, {name: "夜幕", type: "1", url: "https://www.yemu.xyz/?url="}, {name: "player", type: "1", url: "https://jx.playerjy.com/?url="}, {name: "we", type: "1", url: "https://jx.we-vip.com/?url="}, // {name: "爱豆",type: "1","url": "https://jx.aidouer.net/?url="}, {name: "创客", type: 1, url: "https://www.ckplayer.vip/jiexi/?url="}, // {name: "1717", type: 1, url: "https://www.1717yun.com/jx/ty.php?url="}, 0 // {name: "ivito", type: 1, url: "https://jx.ivito.cn/?url="} 0 ], playerContainers: [{ hostReg: /m.v.qq.com/, container: ".mod_player,.player", pathFormat: { reg: /&vid=.+/, rep: ['&vid=', '/'] }, playerPageReg: /m.v.qq.com\/x\/m\/play|v.qq.com\/cover\//, hidAds: '.open-app,.at-app-banner,#ad_m-site' }, { hostReg: /(?<!m\.)v.qq.com/, container: "#player-container", playerPageReg: /v.qq.com\/x\/cover|v.qq.com\/x\/cover\//, stubbornPlayerProperty: {key: 'playsinline',val: 'isiPhoneShowPlaysinline'}, hidAds: '.panel-tip-pay-video' }, { hostReg: /iqiyi.com/, container: ".m-video-player-wrap,#flashbox", playerPageReg: /iqiyi.com\/v/, hidAds: '.m-iqyGuide-layer,.ChannelHomeBanner_hbd_eiF93,.m-iqylink-guide' }, { hostReg: /youku.com/, container: "#player,.h5-detail-player", playerPageReg: /m.youku.com\/alipay_video|v.youku.com\/v_show/, hidAds: '.wtad' }, { hostReg: /mgtv.com/, container: ".video-area,#mgtv-player-wrap", playerPageReg: /mgtv.com\/b/, hidAds: '.wtad' }, { hostReg: /bilibili.com/, container: ".player-wrapper,.bpx-player-video-area", playerPageReg: /bilibili.com\/bangumi\/play/, hidAds: '.wtad' }, { hostReg: /le.com/, container: ".playB,#fla_box", playerPageReg: /le.com\/(ptv\/)*vplay/, hidAds: '.wtad' }, { hostReg: /sohu.com/, container: "#player,.x-player", playerPageReg: /sohu.com\/v/, hidAds: '.wtad' } ] }; class BaseConsumer { constructor(body) { this.parse = () => { try { if(window.location.href.includes('iqiyi')){ Object.defineProperty(navigator, 'userAgent', { get: () => "Mozilla/5.0 (Linux; Android 8.1.0; Pixel Build/OPM4.171019.021.D1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36 EdgA/42.0.0.2057" }) } } catch (e) { console.log(e) } util.findTargetElement('body').then((container) => this.generateElement(container)).then(( container) => { //检测更新 util.checkUpdate() this.bindEvent(container) }) } } generateElement(container) { GM_addStyle(` @font-face { font-family: 'iconfont'; /* Project id 3913561 */ src: url('//at.alicdn.com/t/c/font_3913561_cpe13fwca8.woff2?t=1696210493672') format('woff2'), url('//at.alicdn.com/t/c/font_3913561_cpe13fwca8.woff?t=1696210493672') format('woff'), url('//at.alicdn.com/t/c/font_3913561_cpe13fwca8.ttf?t=1696210493672') format('truetype'); } .iconfont { font-family: "iconfont" !important; font-size: 16px; font-style: normal; font-weight: 400 !important; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @keyframes showSetBox { 0% { transform: translate(-50%,-50%) scale(0); } 80% { transform: translate(-50%,-50%) scale(1.1); } 100% { transform: translate(-50%,-50%) scale(1); } } @keyframes hidSetBox { 0% { transform: translate(-50%,-50%) scale(1); } 80% { transform: translate(-50%,-50%) scale(1.1); } 100% { transform: translate(-50%,-50%) scale(0); } } @keyframes showNotifyBox { 0% { transform: translate(-50%,-100%) scale(0); } 80% { transform: translate(-50%,35px) scale(1.1); } 100% { transform: translate(-50%,35px) scale(1); } } @keyframes hidNotifyBox { 0% { transform: translate(-50%,35px) scale(1.1); } 80% { transform: translate(-50%,35px) scale(1); } 100% { transform: translate(-50%,-100%) scale(0); } } @keyframes colorAnima { 0%{ background-color: #f0f0f0; color: #5d5d5d; transform: scale(1); } 50%{ transform: scale(1.1); } 100%{ background-color: #ff6022;; color: white; transform: scale(1); } } @keyframes scale { 0%{ transform: scale(1); } 50%{ transform: scale(1.1); } 100%{ transform: scale(1); } } @keyframes circletokLeft { 0%,100% { left: 0px; width: 12px; height: 12px; z-index: 0; } 25% { height: 15px; width: 15px; z-index: 1; left: 8px; transform: scale(1) } 50% { width: 12px; height: 12px; left: 22px; } 75% { width: 10px; height: 10px; left: 8px; transform: scale(1) } } @keyframes circletokRight { 0%,100% { top: 3px; left: 22px; width: 12px; height: 12px; z-index: 0 } 25% { height: 15px; width: 15px; z-index: 1; left: 24px; transform: scale(1) } 50% { width: 12px; height: 12px; left: 0px } 75% { width: 10px; height: 10px; left: 24px; transform: scale(1) } } .color-anima{ animation: colorAnima .3s ease 1 forwards; } .btn-anima{ animation: scale .3s ease 1 forwards; } .video-desc{ margin-top: 45px;} ${_CONFIG_.currentPlayerNode.hidAds}{display: none!important;height: 0!important;width: 0!important;} .translate-right{ transform: translateX(-2px) !important;} .show-set-box{ animation: showSetBox 0.3s ease 1 forwards;} .hid-set-box{ animation: hidSetBox 0.3s ease 1 forwards;} .show-notify-box{ animation: showNotifyBox 0.3s ease 1 forwards;} .hid-notify-box{ animation: hidNotifyBox 0.3s ease 1 forwards;} #wt-loading-box{display: none;position: fixed;top: 0;left: 0;right: 0;bottom: 0;z-index: 100000;background-color: #0000004d;} #wt-loading-box .loading{position: absolute;width: 35px;height: 17px;top: 50%;left: 50%;transform: translate(-50%,-50%);} #wt-loading-box .loading::before, #wt-loading-box .loading::after{position: absolute;content: "";top: 3px;background-color: #ffe60f;width: 14px;height: 14px;border-radius: 20px;mix-blend-mode: multiply;animation: circletokLeft 1.2s linear infinite;} #wt-loading-box .loading::after{animation: circletokRight 1.2s linear infinite;background-color: #4de8f4;} #wt-left-show{ position: fixed;left: 20px;top: 50%;transform: translateY(-50%);z-index: 9999;transition: all 0.3s ease;} #wt-left-show i {color: #5f5b5b;font-size: 24px;color: #E91E63;text-shadow: #E91E63 2px 2px 12px;font-size: 25px;margin-left: -1px;} #wt-${_CONFIG_.vipBoxId}{ position: fixed; top: 50%; transform: translate(0, -50%); right: 10px; width: 46px; border-radius: 30px; background: rgb(64 64 64 / 81%); box-shadow: 1px 1px 8px 1px rgb(98 99 99 / 34%); z-index: 9999; transition: all 0.3s ease; } .tips-yuan::before{ position: absolute; content: '';top: 12px; right: 6px;width: 8px;height: 8px; border-radius: 10px; background-color: #ff4757;} #wt-login-box .close,#wt-set-box .close,#wt-notify-box .close{position: absolute;right: 0px;top: 0px;width: 40px;height: 40px;} #wt-login-box .close::before,#wt-login-box .close::after,#wt-set-box .close::before,#wt-set-box .close::after,#wt-notify-box .close::before,#wt-notify-box .close::after{position: absolute;left: 50%;top: 50%;content: '';width: 12px;height: 2px;border-radius: 1px;background-color: #6a6a6a;transform: translate(-50%,-50%) rotate(45deg);visibility: visible;} #wt-login-box .close::after,#wt-set-box .close::after,#wt-notify-box .close::after{transform: translate(-50%,-50%) rotate(-45deg);} #wt-${_CONFIG_.vipBoxId} .item{ position: relative;} #wt-${_CONFIG_.vipBoxId} .absolute-center{ position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);} #wt-${_CONFIG_.vipBoxId} #wt-my img{ width: 28px;height: 28px;border-radius: 30px;transform: translateX(2px);transtion: all 0.3s ease;} #wt-${_CONFIG_.vipBoxId} #play div{ position: relative;width:24px;height:24px;border-radius:30px;border:2px solid #ffffff;margin: 0 auto;box-shadow: 1px 1px 8px 1px rgb(228 240 234 / 50%);transform: translateX(-2px);} #wt-${_CONFIG_.vipBoxId} #play i {color: white;font-size: 12px;text-shadow: 2px 2px 15px #ffffff;} #wt-${_CONFIG_.vipBoxId} #wt-my-set i, #wt-my-down i,#wt-my-play i{color: white;font-size: 24px;text-shadow: 2px 2px 15px #ffffff;} #wt-${_CONFIG_.vipBoxId} #wt-my-notify i {color: white;font-size: 23px;padding: 10px 1px;text-shadow: 2px 2px 15px #ffffff;} #wt-${_CONFIG_.vipBoxId} #wt-hid-box i {color: white;font-size: 24px;text-shadow: 2px 2px 15px #ffffff;font-size: 25px;margin-left: -1px;} #wt-mask-box,#wt-maxindex-mask{display:none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 10000; background-color: #0000004d;} #wt-maxindex-mask{z-index: 90000;display:none;} #wt-set-box{ position:fixed; top:50%;left:50%; transform: translate(-50%,-50%) scale(0);background-color: white;box-shadow: 0 15px 30px rgba(0, 0, 0, .15);border-radius: 10px;z-index: 10010;padding: 10px 15px;padding-right: 5px;box-sizing: border-box;max-height: 65%;overflow-y: auto;} #wt-set-box .line-box .title{font-size: 13px;color: #000000; font-weight: 600;margin-top: 10px;margin-bottom: 12px;} #wt-set-box .line-box .item-box{padding-left: 10rpx;color: #5d5d5d} #wt-set-box ul{ display:flex;flex-wrap: wrap;} #wt-set-box ul li{ position: relative;vertical-align: top;background-color: #f0f0f0;margin-right: 10px;padding: 6px 12px;border-radius: 9px;margin-top: 2px;margin-bottom: 7px;color: #5d5d5d;font-size: 12px;transtion: all 0.3s ease;line-height: initial;font-family: 'iconfont';cursor: pointer;list-style-type:none} #wt-set-box ul .plus::after{ position: absolute;top: -6px;right: -5px;content: 'plus';color: #f53375;font-size: 8px;font-weight: 600;} #wt-set-box .selected-box .selected{ background-color: #ff6022;color: white;} #wt-set-box .user-box-container{display: none;letter-spacing: 1px;} #wt-set-box .user-box-container .update{text-align: right;font-size: 10px;margin-right: 10px;height: 30px;line-height: 30px;color: #2196F3;} #wt-set-box .info-box{display:flex;height: 50px;align-items: center;} #wt-set-box .info-box .avatar-box{background-color: white;border-radius: 7px;box-shadow: rgb(166 166 166 / 20%) 0px 1px 20px 0px;} #wt-set-box .user-box .title{text-align: center;font-weight: 600;font-size: 16px;color: #3a3a3a;} #wt-set-box .user-box .desc{font-size: 10px;color: #5d5d5d;margin: 0 10px;} #wt-set-box .user-box .avatar{ width: 36px;height:36px;border-radius: 30px;border-radius: 7px;} #wt-set-box .support-box li{ text-decoration: underline;color: #1e88e5;} #wt-tips-box{ position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width: 240px;min-height:130px;background-color: white;border-radius:10px;z-index: 95000;padding:10px 15px;} #wt-tips-box .title{font-size: 16px;text-align: center;font-weight: 600;} #wt-tips-box .content{text-align: center;margin: 14px 0;font-size: 12px;color: #2a2a2a;font-weight: 500;} #wt-tips-box .content p{color: #ff4757;text-align: left;} #wt-tips-box .btn-box{display:flex;justify-content: space-around;} #wt-tips-box .btn-box button{min-width: 60px;height: 28px;background-color: #ec407a;border-radius: 30px;color: white;border: none;} #wt-tips-box .btn-box .cancel{display: none;background-color: #eee;color:#2a2a2a} #wt-notify-box {position: fixed;top: 2%;left: 50%;transform:translate(-50%,-100%) scale(0);width: 80%;min-height: 75px;letter-spacing: 1px;background-color: white;color:#2a2a2a;border-radius: 15px;box-shadow: 0 15px 30px rgba(0, 0, 0, .15);z-index: 95000;} #wt-notify-box .title{ text-align: center;height: 35px; line-height: 35px;font-size: 15px;font-weight: 600; color: #E91E63;} #wt-notify-box .content{ color: #ec407a;padding: 10px 15px;font-size: 12px;} `) if (_CONFIG_.isMobile) { GM_addStyle(` .m-video-player-wrap{padding-top: 0 !important;} #wt-set-box {width:72%;} `); } let contents = ""; _CONFIG_.videoParseList.forEach((item, index) => { contents += `<li class="item ` + (item.name == _CONFIG_.selectedPlayerName ?'color-anima ' : '') + (item.type == 2?'plus' : '') + `" data-index="${index}" data-name="${item.name}">${item.name}</li>`; }) let supports = ""; _CONFIG_.supportApps.forEach((item, index) => { supports += `<li class="item" data-index="${index}" data-name="${item.name}">${item.name}</li>`; }) let scripts = ''; _CONFIG_.scripts.forEach((item, index) => { scripts += ` <div class="info-box" data-index="${index}"> <div class="avatar-box"> <img class="avatar" src="${item.icon}"/> </div> <div class="desc"> <text>${item.desc}</text> </div> </div> `; }) $(container).append(` <div id="wt-${_CONFIG_.vipBoxId}"> <div id="wt-my" class="item wt_my_video" style="padding: 8px 11px;padding-top: 14px;"> <img src="https://mp-af307268-1b8a-482a-b75a-b6e98b125742.cdn.bspapp.com/system/null_square.png"></img> </div> <div style="width:24px;height:2px;background-color:#fff;margin: 6px auto"></div> <div id="wt-my-play" class="item wt_my_play_video" style="padding: 7px 11px;"> <i class="iconfont"></i> </div> <div style="width:24px;height:2px;background-color:#fff;margin: 6px auto"></div> <div id="wt-my-set" class="item wt_my_set_video" style="padding: 7px 11px;"> <i class="iconfont"></i> </div> <div style="width:24px;height:2px;background-color:#fff;margin: 6px auto"></div> <div id="wt-my-down" class="item wt_my_down_video" style="padding: 7px 11px;"> <i class="iconfont"></i> </div> <div style="width:24px;height:2px;background-color:#fff;margin: 6px auto"></div> <div id="wt-my-notify" class="item wt_my_notify_video" style="padding: 7px 11px;"> <i class="iconfont"></i> </div> <div style="width:24px;height:2px;background-color:#fff;margin: 6px auto"></div> <div id="wt-hid-box" class="item" style="padding: 7px 12px;"> <i class="iconfont"></i> </div> </div> <div id="wt-left-show" style="transform: translate(-60px,-50%);padding: 10px;"> <i class="iconfont"></i> </div> <div id="wt-mask-box"></div> <div id="wt-set-box"> <div class="close"></div> <div class="line-box" style="display:none"> <div class="title">说明</div> <div class="item-box" style="padding-right: 10px;color: #e82f2f;font-size: 10px;"> <div>· 如解析失败,请多次切换解析接口再试</div> <div>· 如解析完成的视频时长没有原视频的时长多,请多次切换解析接口再试</div> <div>· 如页面加载完成控制台或红眼没有显示,请多次刷新页面再试</div> </div> <div class="title">选择解析接口</div> <div class="item-box selected-box"> <ul> ${contents} </ul> </div> <div class="title">目前支持平台(欢迎补充)</div> <div class="item-box support-box"> <ul> ${supports} </ul> </div> </div> <div class="user-box-container"> <div class="user-box"> <div class="title" style="margin-bottom: 10px">及时行乐工具库</div> ${scripts} <div class="update">检查更新</div> </div> </div> </div> <div id="wt-loading-box"> <div class="loading"></div> </div> <div id="wt-maxindex-mask"></div> <div id="wt-tips-box"> <div class="title">提示</div> <div class="content"></div> <div class="btn-box"> <button class='cancel'>取消</button> <button class='submit'>确定</button> </div> </div> <div id="wt-notify-box"> <div class="close"></div> <div class="title">通知</div> <div class="content"></div> </div> `) GM_addStyle(GM_getResourceText('videocss')) if (_CONFIG_.user && _CONFIG_.user.avatar) { $("#wt-my img").addClass('translate-right') $('#wt-my img').attr('src', _CONFIG_.user.avatar) } if (!_CONFIG_.user) { util.addLogin() } return new Promise((resolve, reject) => resolve(container)); } bindEvent(container) { const vipBox = $(`#wt-${_CONFIG_.vipBoxId}`) if (GM_getValue('video_hid_controller', null)) { vipBox.css("transform", "translate(125%, -50%)") $('#wt-left-show').css("transform", "translate(0, -50%)") } //点击 我的 vipBox.find("#wt-my").on("click", () => { if (_CONFIG_.user) { $('#wt-mask-box').css('display', 'block') $("#wt-set-box .user-box-container").css('display', 'block') $("#wt-set-box").removeClass('hid-set-box') $("#wt-set-box").addClass('show-set-box') $('#wt-set-box .user-box-container .nickname').html(_CONFIG_.user.nickname) util.showAndHidTips('wt_my_video','set',false) } else { util.addLogin(); $('#wt-login-mask').css('display', 'block') $("#wt-login-box").removeClass('hid-set-box'); $("#wt-login-box").addClass('show-set-box') // const wt_haijiao_first_use = GM_getValue('wt_haijiao_first_use') $("#wt-login-box input").val(util.md5x(util.md5x(), 'de').code) } }) $(".user-box-container .update").on("click", () => { $.ajaxSetup({ async: false}); $('#wt-loading-box').css('display', 'block') const res = util.checkUpdate(true) $.ajaxSetup({ async: true}); if(res.code < 0){ util.showTips({ title: res.msg}) } $('#wt-loading-box').css('display', 'none') }) vipBox.find("#wt-my-down").on("click",async () => { if (!_CONFIG_.user) { $("#wt-my").click() return } util.showAndHidTips('wt_my_down_video','set',false) if (!_CONFIG_.videoUrl) { $('#wt-loading-box').css('display', 'block') for (let i = 0; i < 6; i++) { await util.sleep(1000) if (_CONFIG_.videoUrl) { $('#wt-loading-box').css('display', 'none') break } } } $('#wt-loading-box').css('display', 'none') if (!_CONFIG_.videoUrl) { util.showTips({ title: '链接不存在,请在成功使用plus接口解析完成后使用' }) }else { window.location.href = 'https://tools.thatwind.com/tool/m3u8downloader#m3u8=' + _CONFIG_.videoUrl } }) vipBox.find("#wt-my-play").on("click", (e) => { if (!_CONFIG_.currentPlayerNode.playerPageReg.test(window.location .href)) { util.showTips({ title: '请在播放视频页面使用'}) return } const checkExistsNames = _CONFIG_.selectedPlayerName ? _CONFIG_.videoParseList.filter(item => item.name == _CONFIG_.selectedPlayerName) : [] if (checkExistsNames.length > 0) { this.showPlayerWindow(checkExistsNames[0]) } else { $('#wt-mask-box').css('display', 'block') $("#wt-set-box .line-box").css('display', 'block') $("#wt-set-box").removeClass('hid-set-box') $("#wt-set-box").addClass('show-set-box') } util.showAndHidTips('wt_my_play_video','set',false) }) // 点击 设置 vipBox.find("#wt-my-set").on("click", () => { $('#wt-mask-box').css('display', 'block') $("#wt-set-box .line-box").css('display', 'block') $("#wt-set-box").css('padding-bottom', '10px') $("#wt-set-box").removeClass('hid-set-box') $("#wt-set-box").addClass('show-set-box') util.showAndHidTips('wt_my_set_video','set',false) }) //点击 通知 vipBox.find("#wt-my-notify").on("click", () => { if (_CONFIG_.showNotify) { $('#wt-notify-box').click() } else { const notify = GM_getValue('video_notify', '') if (notify && (notify.date == new Date().setHours(0, 0, 0, 0))) { util.showNotify({ title: notify.msg }) } else { util.showNotify({ title: '还没有通知信息' }) } util.showAndHidTips('wt_my_notify_video','set',false) } }) //点击 隐藏控制器 vipBox.find("#wt-hid-box").on("click", () => { vipBox.css("transform", "translate(125%, -50%)") $('#wt-left-show').css("transform", "translate(0, -50%)") GM_setValue('video_hid_controller', 1) }) //点击 显示控制器 $('#wt-left-show').on('click', () => { $('#wt-left-show').css("transform", "translate(-60px, -50%)") vipBox.css("transform", "translate(0, -50%)") GM_setValue('video_hid_controller', '') }) //点击 设置界面遮罩 $('#wt-mask-box').on('click', () => { $('#wt-mask-box').css('display', 'none') $("#wt-set-box").removeClass('show-set-box') $("#wt-set-box").addClass('hid-set-box') setTimeout(() => { $("#wt-set-box .line-box").css('display', 'none') $("#wt-set-box .user-box-container").css('display', 'none') }, 500) clearInterval(superVip._CONFIG_.my_countdown) }) //点击 设置/我的信息界面关闭 $("#wt-set-box .close").on("click", () => { $('#wt-mask-box').click() }) //点击了支持平台 $('#wt-set-box').find(".support-box .item").each((liIndex, item) => { item.addEventListener("click", () => { const index = $(item).attr("data-index") if (_CONFIG_.isMobile) { console.log('opopop') window.location.href = _CONFIG_.supportApps[index].mobile } else { window.location.href = _CONFIG_.supportApps[index].pc } }) }) //点击了 解析商 let _this = this; $('#wt-set-box').find(".selected-box .item").each((liIndex, item) => { item.addEventListener("click", () => { _CONFIG_.selectedPlayerName = $(item).attr("data-name") GM_setValue('selectedPlayerName', $(item).attr("data-name")) if (_CONFIG_.currentPlayerNode.playerPageReg.test(window.location .href)) { const index = parseInt($(item).attr("data-index")) _this.showPlayerWindow(_CONFIG_.videoParseList[index]) } $('#wt-set-box').find(".selected-box .item").removeClass("color-anima") $(item).addClass("color-anima") $('#wt-mask-box').click() }) }) //点击了推广app $('#wt-set-box .user-box-container .user-box .info-box').on('click',function(e){ let index = '' try{ index = Number(e.currentTarget.attributes['data-index'].value) }catch(e){} if(_CONFIG_.scripts[index].msg){ util.showTips({ title: _CONFIG_.scripts[index].msg}) return } if(index >= 0){ window.location.href = _CONFIG_.scripts[index].url + '.' + atob(_CONFIG_.endName) }else{ util.showTips({ title: '请前往网址获取脚本地址'}) } }) let tips = GM_getValue('wt_tips') if(!tips) tips = {} for(let i in tips){ if(tips[i]) $('.' + i).addClass('tips-yuan') } if(!('wt_my_video' in tips)) util.showAndHidTips('wt_my_video') if(!('wt_my_set_video' in tips)) util.showAndHidTips('wt_my_set') if(!('wt_my_down_video' in tips)) util.showAndHidTips('wt_my_down_video') if(!('wt_my_play_video' in tips)) util.showAndHidTips('wt_my_play_video') } showPlayerWindow(v,re = {}) { util.findTargetElement(_CONFIG_.currentPlayerNode.container) .then(async (container) => { if (!_CONFIG_.user) { $("#wt-my").click(); return; } let u = re.u?re.u:'' const t = re.type?re.type: v.type $('#wt-loading-box').css('display', 'block') if (t == 2 && !u) { try { util.formatTitle() let vi = '' let r = await util.asyncHttp(v.url + 'wd=' + encodeURIComponent(_CONFIG_.videoName), 'GET') try{ r = JSON.parse(r.replaceAll('<p>', '').replaceAll('</p>','').replace(/\s*/g, "")) }catch(e){ r = ''} if (!r || !r.list || r.list.length < 1){ console.log(' jx_error') for(let i = 0; i < _CONFIG_.videoParseList.length; i++){ if(_CONFIG_.videoParseList[i].name == _CONFIG_.currentPlayerNode.selectedPlayerName || _CONFIG_.videoParseList[i].type != 2) continue try{ r = await util.asyncHttp(_CONFIG_.videoParseList[i].url + 'wd=' + encodeURIComponent(_CONFIG_.videoName), 'GET') if(r) r = JSON.parse(r.replaceAll('<p>', '').replaceAll('</p>','').replace(/\s*/g, "")) }catch(e){console.log(e); continue;} if(r && r.list && r.list.length > 0){ const re = r.list.filter(item => { return _CONFIG_.videoName == item.vod_name }) if(re && re.length > 0){ vi = re[0] _CONFIG_.selectedPlayerName = _CONFIG_.videoParseList[i].name try{ const els = document.getElementById('wt-set-box').getElementsByClassName('plus') for(let index = 0;index < els.length; index++){ if(i == index){ els[index].classList.add('color-anima') }else{ els[index].classList.remove('color-anima') } } }catch(e){} GM_setValue('selectedPlayerName',_CONFIG_.videoParseList[i].name) break } } } }else{ const re = r.list.filter(item => { return _CONFIG_.videoName == item.vod_name }) if(re && re.length > 0){ vi = re[0] }else{ for(let i = 0; i < _CONFIG_.videoParseList.length; i++){ if(_CONFIG_.videoParseList[i].name == _CONFIG_.currentPlayerNode.selectedPlayerName || _CONFIG_.videoParseList[i].type != 2) continue try{ r = await util.asyncHttp(_CONFIG_.videoParseList[i].url + 'wd=' + encodeURIComponent(_CONFIG_.videoName), 'GET') if(r) r = JSON.parse(r.replaceAll('<p>', '').replaceAll('</p>','').replace(/\s*/g, "")) }catch(e){console.log(e); continue;} if(r && r.list && r.list.length > 0){ const re = r.list.filter(item => { return _CONFIG_.videoName == item.vod_name }) if(re && re.length > 0){ vi = re[0] _CONFIG_.selectedPlayerName = _CONFIG_.videoParseList[i].name try{ const els = document.getElementById('wt-set-box').getElementsByClassName('plus') for(let index = 0;index < els.length; index++){ if(i == index){ els[index].classList.add('color-anima') }else{ els[index].classList.remove('color-anima') } } }catch(e){} GM_setValue('selectedPlayerName',_CONFIG_.videoParseList[i].name) break } } } } } if (!vi) throw new Error('解析失败1') const p = vi.vod_play_url.split('#') if (_CONFIG_.videoType == '电视剧') { u = _CONFIG_.videoNum ? p[Number(_CONFIG_.videoNum)-1].split('$')[1] : p[0].split('$')[1] } else { u = p[0].split('$')[1] } for(let i = 0;i< _CONFIG_.videoParseList.length;i++){ if(_CONFIG_.selectedPlayerName == _CONFIG_.videoParseList[i].name){ if(_CONFIG_.videoParseList[i].result == 'iframe'){ superVip.showPlayerWindow(v,{u,type: 1}) return }else{ _CONFIG_.videoUrl = u } } } } catch (e) { console.log(e) $('#wt-loading-box').css('display', 'none') util.showTips({ title: '抱歉解析失败,请尝试更换普通解析路线再试'}) return } } if(t != 2 && !u) u = util.formatData(v) $('#wt-loading-box').css('display', 'none') $(container).empty() if (t == 1) { let i = "position: relative;width:100%;height:100%;z-index:9998;" if (_CONFIG_.isMobile) { i = "position: relative;width:100%;height:211px;z-index:9998;" } else if (_CONFIG_.isMobile && window.location.href.indexOf( "iqiyi.com") !== -1) { i = "position: relative;width:100%;height:211px;z-index:9998;margin-top:-56.25%;background-color: #000"; } else { $(container).css("height", "500px") } $(container).append( `<div style="${i}"> <div id="wt-iframe-loading" style="position: absolute;top: 0;left: 0;right: 0;bottom: 0;z-index:999999;"> <img src="https://mp-af307268-1b8a-482a-b75a-b6e98b125742.cdn.bspapp.com/system/image/loading-black.gif" style="width: 100%;height: 100%;"></img> </div> <iframe id="iframe-player-4a5b6c" src="${u+'&wt_video_iframe=1'}" style="position: relative;z-index:999;border:none;" allowfullscreen="true" width="100%" height="100%"></iframe> </div>` ); unsafeWindow.addEventListener('message', e => { if (e.data.video === 'find') { $('#wt-iframe-loading').css('z-index','-100') } if(e.data.video === 'not_find'){ util.showTips({ title: '抱歉,解析失败,请更换解析接口再试'}) } }); } else if (t == 2) { const videoid = 'videoid' + Math.ceil(Math.random() * 100000000) $(container).append(` <div style="position: relative;width: 100%;height: 100%;"> <div id="wt-iframe-loading" style="position: absolute;top: 0;left: 0;right: 0;bottom: 0;z-index:999999;"> <img src="https://mp-af307268-1b8a-482a-b75a-b6e98b125742.cdn.bspapp.com/system/image/loading-black.gif" style="width: 100%;height: 100%;"></img> </div> <div id="${videoid}" style="width: 100%;height: 100%;"></div> </div> `) const dp = new DPlayer({ container: document.getElementById(videoid), screenshot: true, video: { url: u, } }) dp.on('canplay', function () { $('#wt-iframe-loading').css('z-index','-100') }); dp.play() } else { GM_openInTab(u, { active: true, insert: true, setParent: true }) } util.urlChangeReload() }) } } return { start: () => { const wt_video_first_use = GM_getValue('wt_video_first_use', '') if (!wt_video_first_use) GM_setValue('wt_video_first_use', Date.now() + (Math.round(Math .random() * 899999 + 100000) + '')) let playerNode = _CONFIG_.playerContainers.filter(value => value.hostReg.test(window.location .href)) if (playerNode === null || playerNode.length <= 0) { util.showTips({ title: '该网站暂未适配此脚本,请联系作者' }) return } _CONFIG_.user = GM_getValue('jsxl_user', '') if (_CONFIG_.user) { if (_CONFIG_.user.login_date && (_CONFIG_.user.login_date != new Date().setHours(0, 0, 0, 0))) { _CONFIG_.user = '' GM_setValue('jsxl_user', '') } } _CONFIG_.selectedPlayerName = GM_getValue('selectedPlayerName', _CONFIG_.videoParseList[0].name) _CONFIG_.currentPlayerNode = playerNode[0] const targetConsumer = new BaseConsumer targetConsumer.parse() }, showPlayerWindow: (videoObj,url) => { const baseConsumer = new BaseConsumer baseConsumer.showPlayerWindow(videoObj,url) }, _CONFIG_ } })(); (function() { if (location.href.includes('/?url=http') || location.href.includes('/?v=http')) { superVip._CONFIG_.videoParseList.forEach(item =>{ if(item.type == 1 && location.href.includes(item.url) && item.ads){ console.log(item) GM_addStyle(` ${item.ads}{ display: none!important;height: 0!important;} `) } }) util.findTargetElement('video',15).then(res=>{ document.getElementsByTagName('video')[0].autoplay = true let oncanplay = false // document.getElementsByTagName('video')[0].controls = true document.getElementsByTagName('video')[0].oncanplay=function(){ document.getElementsByTagName('video')[0].play() console.log('video load success') window.top.postMessage({ video: 'find'}, '*'); oncanplay = true } setTimeout(()=>{ if(!oncanplay) window.top.postMessage({ video: 'not_find'}, '*'); },15000) }).catch(err =>{ if(document.getElementsByTagName('iframe').length < 1) window.top.postMessage({ video: 'not_find'}, '*'); }) return } if(unsafeWindow.wt_video_script){ alert('存在多个版本脚本,请检查后删除低版本脚本再刷新页面') return } unsafeWindow.wt_video_script = true superVip.start(); })();