💯 懒人专用系列 ——— 全网 VIP 视频破解去广告

⭕精选解析线路为大家提供优酷、爱奇艺、腾讯、B站(bilibili)、乐视、芒果、搜狐、PPTV等各大视频网站(PC+移动端)视频解析服务,让你省去购买视频VIP费用。⭕去除原视频广告。⭕可自由增加修改线路。⭕可自由选择站内外解析。⭕可自由修改图标位置、大小、透明度。❌拒绝收费。⭕持续更新。

目前为 2024-08-19 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name 💯 懒人专用系列 ——— 全网 VIP 视频破解去广告
  3. // @namespace lr-toolbox-VideoPlay
  4. // @version 1.0.33
  5. // @description ⭕精选解析线路为大家提供优酷、爱奇艺、腾讯、B站(bilibili)、乐视、芒果、搜狐、PPTV等各大视频网站(PC+移动端)视频解析服务,让你省去购买视频VIP费用。⭕去除原视频广告。⭕可自由增加修改线路。⭕可自由选择站内外解析。⭕可自由修改图标位置、大小、透明度。❌拒绝收费。⭕持续更新。
  6. // @author lanhaha
  7. // @icon data:image/png;base64,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
  8. // @match *://*.youku.com/*
  9. // @match *://*.iqiyi.com/*
  10. // @match *://*.iq.com/*
  11. // @match *://*.le.com/*
  12. // @match *://v.qq.com/*
  13. // @match *://m.v.qq.com/*
  14. // @match *://3g.v.qq.com/*
  15. // @match *://*.tudou.com/*
  16. // @match *://*.mgtv.com/*
  17. // @match *://tv.sohu.com/*
  18. // @match *://*.1905.com/*
  19. // @match *://film.sohu.com/*
  20. // @match *://*.bilibili.com/*
  21. // @match *://*.pptv.com/*
  22. // @grant GM_registerMenuCommand
  23. // @grant GM_unregisterMenuCommand
  24. // @grant GM_setValue
  25. // @grant GM_getValue
  26. // @grant GM_deleteValue
  27. // @grant GM_download
  28. // @grant GM_xmlhttpRequest
  29. // @grant GM_setClipboard
  30. // @connect api.typechrome.com
  31. // @connect gitlab.com
  32.  
  33. // ==/UserScript==
  34.  
  35. /*
  36. ***********************************************************
  37. 应gf.qytechs.cn网站规则要求,
  38. 懒人脚本将视频解析、音乐下载、视频下载等功能拆分为多个脚本:
  39. https://gf.qytechs.cn/zh-CN/scripts/467776
  40. https://gf.qytechs.cn/zh-CN/scripts/469604
  41. https://gf.qytechs.cn/zh-CN/scripts/469689
  42. https://gf.qytechs.cn/zh-CN/scripts/468015
  43. https://gf.qytechs.cn/zh-CN/scripts/469521
  44. 可自行分别安装。
  45. ***********************************************************
  46. */
  47.  
  48. (function() {
  49. 'use strict';
  50.  
  51. var domHead = document.getElementsByTagName('head')[0];
  52.  
  53. var domStyle = document.createElement('style');
  54.  
  55. domStyle.type = 'text/css';
  56.  
  57. domStyle.rel = 'stylesheet';
  58. //平台判断
  59. var isMobile = /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent);
  60.  
  61. if(isMobile){
  62.  
  63. let playLine = [
  64. {"name":"纯净1","url":"https://im1907.top/?jx="},
  65. {"name":"B站1","url":"https://jx.jsonplayer.com/player/?url="},
  66. {"name":"爱豆","url":"https://jx.aidouer.net/?url="},
  67. {"name":"听乐","url":"https://jx.dj6u.com/?url="},
  68. {"name":"YT","url":"https://jx.yangtu.top/?url="}
  69. ];
  70.  
  71. let useWeb = ['m.bilibili.com','youku.com','www.youku.com','m.youku.com','3g.v.qq.com','m.v.qq.com','m.iqiyi.com','m.mgtv.com','m.tv.sohu.com','m.1905.com','m.pptv.com','m.le.com'];
  72.  
  73. if(useWeb.indexOf(location.host) == -1){
  74. console.log('不是应用网站');return;
  75. }
  76.  
  77. function setCookie(cname,cvalue,exdays){
  78.  
  79. var d = new Date();
  80.  
  81. d.setTime(d.getTime()+(exdays*24*60*60*1000));
  82.  
  83. var expires = "expires="+d.toGMTString();
  84.  
  85. document.cookie = cname+"="+cvalue+"; "+expires;
  86. }
  87.  
  88. function getCookie(cname){
  89. var name = cname + "=";
  90. var ca = document.cookie.split(';');
  91. for(var i=0; i<ca.length; i++) {
  92. var c = ca[i].trim();
  93. if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
  94. }
  95. return "";
  96. }
  97.  
  98. function createElement(dom,domId){
  99.  
  100. var rootElement = document.body;
  101.  
  102. var newElement = document.createElement(dom);
  103.  
  104. newElement.id = domId;
  105.  
  106. var newElementHtmlContent = document.createTextNode('');
  107.  
  108. rootElement.appendChild(newElement);
  109.  
  110. newElement.appendChild(newElementHtmlContent);
  111.  
  112. }
  113.  
  114. function toast(msg,duration){
  115.  
  116. duration=isNaN(duration)?3000:duration;
  117.  
  118. let toastDom = document.createElement('div');
  119.  
  120. toastDom.innerHTML = msg;
  121.  
  122. toastDom.style.cssText='padding:2px 15px;min-height: 36px;line-height: 36px;text-align: center;transform: translate(-50%);border-radius: 4px;color: rgb(255, 255, 255);position: fixed;top: 50%;left: 50%;z-index: 9999999;background: rgb(0, 0, 0);font-size: 16px;'
  123.  
  124. document.body.appendChild(toastDom);
  125.  
  126. setTimeout(function() {
  127.  
  128. var d = 0.5;
  129.  
  130. toastDom.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';
  131.  
  132. toastDom.style.opacity = '0';
  133.  
  134. setTimeout(function() { document.body.removeChild(toastDom) }, d * 1000);
  135.  
  136. }, duration);
  137.  
  138. }
  139.  
  140. function playVideoFunc(){
  141. //css
  142. let playVideoStyle = `
  143. .zhm_play_vidoe_icon{
  144. padding-top:2px;cursor:pointer;
  145. z-index:9999999;
  146. display:block;
  147. position:fixed;let:0px;top:360px;text-align:center;overflow:visible;
  148.  
  149. }
  150. .zhm_play_video_wrap{
  151. position:fixed;left:40px;top:360px;
  152. z-index:9999999;
  153. overflow: hidden;
  154. width:300px;
  155. }
  156. .zhm_play_video_line{
  157. width:320px;
  158. height:316px;
  159. overflow-y:scroll;
  160. overflow-x:hidden;
  161. }
  162. .zhm_play_vide_line_ul{
  163. width:300px;
  164. display: flex;
  165. justify-content: flex-start;
  166. flex-flow: row wrap;
  167. list-style: none;
  168. padding:0px;
  169. margin:0px;
  170.  
  171. }
  172. .zhm_play_video_line_ul_li{
  173. padding:4px 0px;
  174. margin:2px;
  175. width:30%;
  176. color:#FFF;
  177. text-align:center;
  178. background-color:#f24443;
  179. box-shadow:0px 0px 10px #fff;
  180. font-size:14px;
  181. }
  182. .zhm_play_video_line_ul_li:hover{
  183. color:#260033;
  184. background-color:#fcc0c0
  185. }
  186. .zhm_line_selected{
  187. color:#260033;
  188. background-color:#fcc0c0
  189. }
  190.  
  191. .zhm_play_video_jx{
  192. width:100%;
  193. height:100%;
  194. z-index:999999;
  195. position: absolute;top:0px;padding:0px;
  196. }
  197. `;
  198.  
  199. domStyle.appendChild(document.createTextNode(playVideoStyle));
  200.  
  201. domHead.appendChild(domStyle);
  202.  
  203. //template:icon,playLine;
  204. let playWrapHtml = "<div href='javascript:void(0)' target='_blank' style='' class='playButton zhm_play_vidoe_icon' id='zhmlogo'><img class='iconLogo' src='data:image/gif;base64,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' title='点击右侧列表进行解析' style='width:40px'>";
  205.  
  206. playWrapHtml += "<div class='playLineDiv zhm_play_video_wrap' style='display:none;'>"
  207.  
  208. playWrapHtml += "<div class='zhm_play_video_line'>";
  209.  
  210. playWrapHtml +="<div><ul class='zhm_play_vide_line_ul'>";
  211.  
  212. playLine.forEach(function(item){
  213.  
  214. let selected = '';
  215.  
  216. if(getCookie('playLineAction') == item.url){
  217.  
  218. selected='zhm_line_selected';
  219.  
  220. }
  221.  
  222. playWrapHtml +=`<li class='playLineTd zhm_play_video_line_ul_li ${selected}' url='${item.url}' >${item.name}</li>`;
  223.  
  224. })
  225.  
  226. playWrapHtml +="</div></div></div>";
  227.  
  228. //template:node;播放区域
  229.  
  230. let playJxHtml = "<div class='zhm_play_video_jx'>";
  231.  
  232. playJxHtml += "<iframe allowtransparency=true frameborder='0' scrolling='no' allowfullscreen=true allowtransparency=true name='jx_play' style='height:100%;width:100%' id='playIframe'></iframe></div>";
  233.  
  234. //循环判断是否在播放页,是则执行下面
  235. let jxVideoData = [
  236.  
  237. {funcName:"playVideo", node:"#player",match:/m\.v\.qq\.com\/x\/play\.html\?cid=/,areaClassName:'slider_box'},
  238. {funcName:"playVideo", node:"#player",match:/m\.v\.qq\.com\/play\.html\?cid\=/,areaClassName:'slider_box'},
  239. {funcName:"playVideo", node:"#player",match:/m\.v\.qq\.com\/cover\/.*html/,areaClassName:'slider_box'},
  240. {funcName:"playVideo", node:"#player",match:/https?:\/\/m\.v\.qq\.com\/x\/m\/play\?.*cid.*/,areaClassName:'slider_box'},
  241. {funcName:"playVideo", node:"#player",match:/3g\.v\.qq\.com\/x\/m\/play\?cid=.*/,areaClassName:'slider_box'},
  242.  
  243. {funcName:"playVideo", node:".m-video-player-wrap",match:/^https:\/\/m.iqiyi\.com\/[vwa]\_/,areaClassName:'m-sliding-list'},
  244. {funcName:"playVideo", node:".intl-video-wrap",match:/^https:\/\/www\.iq\.com\/play\//,areaClassName:'m-sliding-list'},
  245.  
  246. {funcName:"playVideo", node:"#player",match:/m\.youku\.com\/alipay_video\/id_/,areaClassName:''},
  247. {funcName:"playVideo", node:"#player",match:/m\.youku\.com\/video\/id_/,areaClassName:''},
  248.  
  249. {funcName:"playVideo", node:".player-container",nodeType:'class',match:/m\.bilibili\.com\/bangumi/,areaClassName:'ep-list-pre-body'},
  250. {funcName:"playVideo", node:".mplayer",nodeType:'class',match:/m\.bilibili\.com\/video\//,areaClassName:'ep-list-pre-body'},
  251.  
  252. {funcName:"playVideo", node:".video-area",nodeType:'class',match:/m\.mgtv\.com\/b/,areaClassName:'clearfix'},
  253.  
  254. {funcName:"playVideo", node:"#le_playbox",nodeType:'id',match:/m\.le\.com\/ptv\/vplay\//,areaClassName:'sideslip_slide'},
  255.  
  256. {funcName:"playVideo", node:"#j-player",nodeType:'id',match:/m\.le\.com\/vplay/,areaClassName:'juji'},
  257.  
  258. {funcName:"playVideo", node:"#player",nodeType:'id',match:/play\.tudou\.com\/v_show\/id_/},
  259.  
  260. {funcName:"playVideo", node:"#pptv_playpage_box",nodeType:'id',match:/v\.pptv\.com\/show\//},
  261.  
  262. {funcName:"playVideo", node:"#player",nodeType:'id',match:/vip\.1905.com\/play\//},
  263.  
  264. {funcName:"playVideo", node:"#vodPlayer",nodeType:'id',match:/www\.1905.com\/vod\/play\//},
  265. ];
  266.  
  267. //创建logo_icon
  268. createElement('div','zhmIcon');
  269.  
  270. let zhmPlay = document.getElementById('zhmIcon');
  271.  
  272. zhmPlay.innerHTML = playWrapHtml;
  273.  
  274. let jxVideoWeb = jxVideoData.filter(function(item){
  275.  
  276. return location.href.match(item.match);
  277.  
  278. })
  279.  
  280. document.querySelector('#zhmlogo').addEventListener('click',function(){
  281.  
  282. let jxVideoWeb = jxVideoData.filter(function(item){
  283.  
  284. return location.href.match(item.match);
  285.  
  286. })
  287.  
  288. if(jxVideoWeb.length == 0){
  289.  
  290. toast('请在视频播放页点击图标');
  291.  
  292. }else{
  293.  
  294. var {funcName,match:nowMatch,node:nowNode,name:nowName} = jxVideoWeb[0];
  295.  
  296. let playLineDiv = document.querySelector('.zhm_play_video_wrap');
  297.  
  298. let playShow = playLineDiv.style.display;
  299.  
  300. playShow == 'none'? playLineDiv.style.display = 'block':playLineDiv.style.display = 'none';
  301.  
  302. var playLineTd = document.querySelectorAll('.playLineTd');
  303.  
  304. playLineTd.forEach(function(item){
  305.  
  306. item.addEventListener('click',function(){
  307.  
  308. playLineTd.forEach(function(e){
  309.  
  310. e.setAttribute('class','playLineTd zhm_play_video_line_ul_li');
  311. })
  312.  
  313. this.setAttribute('class','playLineTd zhm_play_video_line_ul_li zhm_line_selected');
  314.  
  315. setCookie('playLineAction',this.getAttribute('url'),30);
  316.  
  317. let nowWebNode = document.querySelector(nowNode);
  318.  
  319. if(nowWebNode){
  320.  
  321. nowWebNode.innerHTML = playJxHtml;
  322.  
  323. let playIframe = document.querySelector('#playIframe');
  324.  
  325. playIframe.src= item.getAttribute('url')+location.href;
  326.  
  327. }else{
  328.  
  329. console.log('视频网站结点不存在');
  330. }
  331.  
  332. })
  333.  
  334. })
  335.  
  336. let videoSelect = document.querySelector('.'+jxVideoWeb[0].areaClassName);
  337.  
  338. videoSelect.addEventListener('click',function(e){
  339.  
  340. setTimeout(function(){
  341.  
  342. location.href=location.href;
  343.  
  344. },1000)
  345.  
  346. });
  347. return false;
  348. }
  349.  
  350. })
  351.  
  352.  
  353. let timer = setInterval(function(){
  354.  
  355. let jxVideoWeb = jxVideoData.filter(function(item){
  356.  
  357. return location.href.match(item.match);
  358.  
  359. })
  360.  
  361. if(jxVideoWeb.length>0){
  362.  
  363. let videoSelect = document.querySelector('.'+jxVideoWeb[0].areaClassName);
  364.  
  365. if(videoSelect){
  366.  
  367. videoSelect.addEventListener('click',function(e){
  368.  
  369. setTimeout(function(){
  370.  
  371. location.href=location.href;
  372.  
  373. },1000)
  374.  
  375. });
  376.  
  377. }
  378.  
  379. }
  380.  
  381. },1000)
  382.  
  383. }
  384.  
  385. playVideoFunc();
  386.  
  387. }else{
  388. /*--config--*/
  389. var Config ={
  390.  
  391. couponUrl:window.location.href,
  392.  
  393. couponHost:window.location.host,
  394.  
  395. webUrl:'http://music.liuzhijin.cn/',
  396.  
  397. iconVipTop:360,
  398.  
  399. iconVipPosition : 'left',
  400.  
  401. iconVipWidth : 40,
  402.  
  403. couponTimerNum : 100,//100次等于10秒
  404.  
  405. couponWaitTime : 100,
  406.  
  407. iconWaitTime : 100,
  408.  
  409. iconVipOpacity:100,
  410.  
  411. selectedLeft:'selected',
  412.  
  413. selectedRight:'',
  414.  
  415. videoPlayLineAdd:GM_getValue('videoPlayLineAdd',0),
  416.  
  417. }
  418.  
  419. var {couponUrl,
  420. couponHost,
  421. webUrl,
  422. iconVipTop,
  423. iconVipPosition,
  424. iconVipWidth,
  425. iconVipOpacity,
  426. couponTimerNum,
  427. couponWaitTime,
  428. iconWaitTime,
  429. selectedLeft,
  430. selectedRight,
  431. videoPlayLineAdd,
  432. } = Config;
  433. /*--lang--*/
  434. var lang = {
  435. set:'设置',
  436. iconPosition:'图标设置',
  437. playVideo:'解析设置',
  438. iconHeight:'图标高度',
  439. iconWidth:'图标大小',
  440. iconLine:'水平位置',
  441. iconWaitTime:'等待时间',
  442. iconLeft:'靠左',
  443. iconRight:'靠右',
  444. tipIconHeight:'默认360,建议1~500',
  445. tipIconWidth:'默认40,建议20~50',
  446. tipIconOpacity:'请填写0-100的整数',
  447. tipErrorIconHeight:'<图标位置>中的<图标高度>应为1000以内正整数,建议1~500',
  448. tipErrorIconWidth:'<图标位置>中的<图标大小>应为100以内正整数,建议20~50',
  449. tipErrorIconOpacity:'填写数字不正确',
  450. setPlayVideo:'解析设置',
  451. playVideoLineAdd:'站外解析',
  452. tipPlayVideoLineAdd:'请填入线路名称和地址,中间用半角逗号隔开,每线路一行。',
  453. scriptsinstall:'脚本安装',
  454. scriptsuse:'使用方法',
  455. question:'常见问题',
  456. tggroup:'Telegram'
  457. };
  458.  
  459. var jxVideo=[
  460.  
  461. {funcName:"playVideo",match:/https?:\/\/v\.qq\.com/,name:'qqPC'},
  462. {funcName:"playVideo", match:/https?:\/\/m\.v\.qq\.com/,name:'qqMobile'},
  463.  
  464. {funcName:"playVideo", match:/^https?:\/\/www\.iqiyi\.com/,name:'iqiyiPc'},
  465. {funcName:"playVideo", match:/^https?:\/\/www\.iq\.com/},
  466. {funcName:"playVideo", node:".m-video-player-wrap",match:/^https?:\/\/m.iqiyi\.com/,areaClassName:'m-sliding-list'},
  467.  
  468. {funcName:"playVideo", node:"#player",nodeType:'id',match:/m\.youku\.com\/alipay_video\/id_/},
  469. {funcName:"playVideo", node:"#player",nodeType:'id',match:/m\.youku\.com\/video\/id_/},
  470. {funcName:"playVideo", match:/^https?:\/\/.*youku\.com/},
  471.  
  472. {funcName:"playVideo", match:/^https?:\/\/www\.bilibili\.com/},
  473. {funcName:"playVideo", match:/^https?:\/\/m\.bilibili\.com/},
  474.  
  475. {funcName:"playVideo", node:".video-area",nodeType:'class',match:/m\.mgtv\.com\/b/},
  476. {funcName:"playVideo", match:/mgtv\.com/,areaClassName:'episode-items clearfix'},
  477. {funcName:"playVideo", node:".x-cover-playbtn-wrap",nodeType:'class',match:/.tv\.sohu\.com/},
  478. {funcName:"playVideo", node:".x-cover-playbtn-wrap",nodeType:'class',match:/m\.tv\.sohu\.com/},
  479. {funcName:"playVideo", node:"#playerWrap",nodeType:'id',match:/film\.sohu\.com/},
  480.  
  481. {funcName:"playVideo", match:/tudou\.com/},
  482.  
  483. {funcName:"playVideo",match:/le\.com/},
  484.  
  485. {funcName:"playVideo",match:/pptv\.com/},
  486.  
  487. {funcName:"playVideo",match:/1905\.com/},
  488.  
  489. ];
  490.  
  491. var playLine = [
  492. {"name":"纯净1","url":"https://im1907.top/?jx=","mobile":1},
  493. {"name":"B站1","url":"https://jx.jsonplayer.com/player/?url=","mobile":1},
  494. {"name":"YT","url":"https://jx.yangtu.top/?url=","mobile":0},
  495. {"name":"BL","url":"https://vip.bljiex.com/?v=","mobile":0},
  496. {"name":"冰豆","url":"https://bd.jx.cn/?url=","mobile":0},
  497. {"name":"CK","url":"https://www.ckplayer.vip/jiexi/?url=","mobile":0},
  498. {"name":"弹幕","url":"https://dmjx.m3u8.tv/?url=","mobile":0},
  499. {"name":"IK9","url":"https://yparse.ik9.cc/index.php?url=","mobile":0},
  500. {"name":"JY","url":"https://jx.playerjy.com/?url=","mobile":0},
  501. {"name":"解析la","url":"https://api.jiexi.la/?url=","mobile":0},
  502. {"name":"M3U8","url":"https://jx.m3u8.tv/jiexi/?url=","mobile":0},
  503. {"name":"PM","url":"https://www.playm3u8.cn/jiexi.php?url=","mobile":0},
  504. {"name":"盘古","url":"https://www.pangujiexi.cc/jiexi.php?url=","mobile":0},
  505. {"name":"盘古2","url":"https://www.pangujiexi.com/jiexi/?url=","mobile":0},
  506. {"name":"剖云","url":"https://www.pouyun.com/?url=","mobile":0},
  507. {"name":"七哥","url":"https://jx.nnxv.cn/tv.php?url=","mobile":0},
  508. {"name":"神哥","url":"https://json.ovvo.pro/jx.php?url=","mobile":0},
  509. {"name":"听乐","url":"https://jx.dj6u.com/?url=","mobile":1},
  510. {"name":"维多","url":"https://jx.ivito.cn/?url=","mobile":0},
  511. {"name":"虾米","url":"https://jx.xmflv.com/?url=","mobile":0},
  512. {"name":"虾米2","url":"https://jx.xmflv.cc/?url=","mobile":0},
  513. {"name":"夜幕","url":"https://www.yemu.xyz/?url=","mobile":0},
  514. {"name":"云析","url":"https://jx.yparse.com/index.php?url=","mobile":0},
  515. {"name":"17云","url":"https://www.1717yun.com/jx/ty.php?url=","mobile":0},
  516. {"name":"180","url":"https://jx.000180.top/jx/?url=","mobile":0},
  517. {"name":"2ys","url":"https://gj.fenxiangb.com/player/analysis.php?v=","mobile":0},
  518. {"name":"8090","url":"https://www.8090g.cn/?url=","mobile":0}
  519. ]
  520.  
  521. var keyCode = [
  522. {code:48,isShift:false,value:'0'},
  523. {code:48,isShift:true,value:')'},
  524. {code:49,isShift:false,value:'1'},
  525. {code:49,isShift:true,value:'!'},
  526. {code:50,isShift:false,value:'2'},
  527. {code:50,isShift:true,value:'@'},
  528. {code:51,isShift:false,value:'3'},
  529. {code:51,isShift:true,value:'#'},
  530. {code:52,isShift:false,value:'4'},
  531. {code:52,isShift:true,value:'$'},
  532. {code:53,isShift:false,value:'5'},
  533. {code:53,isShift:true,value:'%'},
  534. {code:54,isShift:false,value:'6'},
  535. {code:54,isShift:true,value:'^'},
  536. {code:55,isShift:false,value:'7'},
  537. {code:55,isShift:true,value:'&'},
  538. {code:56,isShift:false,value:'8'},
  539. {code:56,isShift:true,value:'*'},
  540. {code:57,isShift:false,value:'9'},
  541. {code:57,isShift:true,value:'('},
  542. {code:70,isShift:false,value:'f'},
  543. {code:70,isShift:true,value:'F'},
  544. {code:74,isShift:false,value:'j'},
  545. {code:74,isShift:true,value:'J'},
  546. {code:75,isShift:false,value:'k'},
  547. {code:75,isShift:true,value:'K'},
  548. {code:76,isShift:false,value:'l'},
  549. {code:76,isShift:true,value:'L'},
  550. ]
  551. /*--Class--*/
  552. class BaseClass{
  553.  
  554. constructor(){
  555.  
  556. if(GM_getValue('iconPositionSetPage') != 0){
  557. /*cookie存储
  558. iconVipTop = this.getCookie('iconTop')?this.getCookie('iconTop'):iconVipTop;
  559.  
  560. iconVipPosition = this.getCookie('iconPosition')?this.getCookie('iconPosition'):iconVipPosition;
  561.  
  562. selectedLeft = iconVipPosition=='left'?'selected':'';
  563.  
  564. selectedRight = iconVipPosition=='right'?'selected':'';
  565.  
  566. iconVipWidth = this.getCookie('iconWidth')?this.getCookie('iconWidth'):iconVipWidth;
  567. */
  568.  
  569. iconVipTop = GM_getValue('iconTop') || GM_getValue('iconTop') == 0?GM_getValue('iconTop'):iconVipTop;
  570.  
  571. iconVipPosition = GM_getValue('iconPosition')?GM_getValue('iconPosition'):iconVipPosition;
  572.  
  573. selectedLeft = iconVipPosition=='left'?'selected':'';
  574.  
  575. selectedRight = iconVipPosition=='right'?'selected':'';
  576.  
  577. iconVipWidth = GM_getValue('iconWidth')?GM_getValue('iconWidth'):iconVipWidth;
  578.  
  579. iconWaitTime = GM_getValue('iconWaitTime')?GM_getValue('iconWaitTime')*1000:iconWaitTime;
  580.  
  581. iconVipOpacity = GM_getValue('iconOpacity') || GM_getValue('iconOpacity') == 0?GM_getValue('iconOpacity'):iconVipOpacity;
  582.  
  583. }
  584.  
  585. GM_registerMenuCommand("设置", () => this.menuSet());
  586.  
  587. this.setStyle();
  588.  
  589. this.className = this.getClassName();
  590.  
  591. console.log(this.className);
  592. }
  593.  
  594. setStyle(){
  595. let menuSetStyle = `
  596. .zhmMask{
  597. z-index:999999999;
  598. background-color:#000;
  599. position: fixed;top: 0;right: 0;bottom: 0;left: 0;
  600. opacity:0.8;
  601. }
  602. .wrap-box{
  603. z-index:1000000000;
  604. position:fixed;;top: 50%;left: 50%;transform: translate(-50%, -200px);
  605. width: 300px;
  606. color: #555;
  607. background-color: #fff;
  608. border-radius: 5px;
  609. overflow:hidden;
  610. font:16px numFont,PingFangSC-Regular,Tahoma,Microsoft Yahei,sans-serif !important;
  611. font-weight:400 !important;
  612. }
  613. .setWrapHead{
  614. background-color:#f24443;height:40px;color:#fff;text-align:center;line-height:40px;
  615. }
  616. .setWrapLi{
  617. margin:0px;padding:0px;
  618. }
  619. .setWrapLi li{
  620. background-color: #fff;
  621. border-bottom:1px solid #eee;
  622. margin:0px !important;
  623. padding:12px 20px;
  624. display: flex;
  625. justify-content: space-between;align-items: center;
  626. list-style: none;
  627. }
  628.  
  629. .setWrapLiContent{
  630. display: flex;justify-content: space-between;align-items: center;
  631. }
  632. .setWrapSave{
  633. position:absolute;top:-2px;right:10px;font-size:24px;cursor:pointer
  634. }
  635. .iconSetFoot{
  636. position:absolute;bottom:0px;padding:10px 20px;width:100%;
  637. z-index:1000000009;background:#fef9ef;
  638. }
  639. .iconSetFootLi{
  640. margin:0px;padding:0px;
  641. }
  642.  
  643. .iconSetFootLi li{
  644. display: inline-flex;
  645. padding:0px 2px;
  646. justify-content: space-between;align-items: center;
  647. font-size: 12px;
  648. }
  649. .iconSetFootLi li a{
  650. color:#555;
  651. }
  652. .iconSetFootLi a:hover {
  653. color:#fe6d73;
  654. }
  655. .iconSetPage{
  656. z-index:1000000001;
  657. position:absolute;top:0px;left:300px;
  658. background:#fff;
  659. width:300px;
  660. height:100%;
  661. }
  662. .iconSetUlHead{
  663. padding:0px;
  664. margin:0px;
  665. }
  666. .iconSetPageHead{
  667. border-bottom:1px solid #ccc;
  668. height:40px;
  669. line-height:40px;
  670. display: flex;
  671. justify-content: space-between;
  672. align-items: center;
  673. background-color:#fe6d73;
  674. color:#fff;
  675. font-size: 15px;
  676. }
  677. .iconSetPageLi{
  678. margin:0px;padding:0px;
  679. }
  680. .iconSetPageLi li{
  681. list-style: none;
  682. padding:8px 20px;
  683. border-bottom:1px solid #eee;
  684. }
  685. .zhihuSetPage{
  686. z-index:1000000002;position:absolute;top:0px;left:300px;background:#fff;width:300px;height:100%;
  687. }
  688. .iconSetPageInput{
  689. display: flex !important;justify-content: space-between;align-items: center;
  690. }
  691. .zhihuSetPageLi{
  692. margin:0px;padding:0px;
  693. height:258px;
  694. overflow-y: scroll;
  695. }
  696.  
  697. .zhihuSetPageContent{
  698. display: flex !important;justify-content: space-between;align-items: center;
  699. }
  700.  
  701. .zhm_circular{
  702. width: 40px;height: 20px;border-radius: 16px;transition: .3s;cursor: pointer;box-shadow: 0 0 3px #999 inset;
  703. }
  704. .round-button{
  705. width: 20px;height: 20px;;border-radius: 50%;box-shadow: 0 1px 5px rgba(0,0,0,.5);transition: .3s;position: relative;
  706. }
  707. .zhm_back{
  708. border: solid #FFF; border-width: 0 3px 3px 0; display: inline-block; padding: 3px;transform: rotate(135deg); -webkit-transform: rotate(135deg);margin-left:10px;cursor:pointer;
  709. }
  710. .to-right{
  711. margin-left:20px; display: inline-block; padding: 3px;transform: rotate(-45deg); -webkit-transform: rotate(-45deg);cursor:pointer;
  712.  
  713. }
  714. .iconSetSave{
  715. font-size:24px;cursor:pointer;margin-right:5px;margin-bottom:4px;color:#FFF;
  716. }
  717. .zhm_set_page{
  718. z-index:1000000003;
  719. position:absolute;
  720. top:0px;left:300px;
  721. background:#fff;
  722. width:300px;
  723. height:100%;
  724. }
  725. .zhm_set_page_header{
  726. border-bottom:1px solid #ccc;
  727. height:40px;
  728. line-height:40px;
  729. display: flex;
  730. justify-content: space-between;
  731. align-items: center;
  732. background-color:#fe6d73;
  733. color:#fff;
  734. font-size: 15px;
  735. }
  736. .zhm_set_page_content{
  737. display: flex !important;justify-content: space-between;align-items: center;
  738. }
  739. .zhm_set_page_list{
  740. margin:0px;padding:0px;
  741. height: 220px;
  742. overflow-y: scroll;
  743. }
  744.  
  745. .zhm_set_page_list::-webkit-scrollbar {
  746. /*滚动条整体样式*/
  747. width : 0px; /*高宽分别对应横竖滚动条的尺寸*/
  748. height: 1px;
  749. }
  750. .zhm_set_page_list::-webkit-scrollbar-thumb {
  751. /*滚动条里面小方块*/
  752. border-radius : 2px;
  753. background-color: #fe6d73;
  754. }
  755. .zhm_set_page_list::-webkit-scrollbar-track {
  756. /*滚动条里面轨道*/
  757. box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2);
  758. background : #ededed;
  759. border-radius: 10px;
  760. }
  761. .zhm_set_page_list li{
  762. /*border-bottom:1px solid #ccc;*/
  763. padding:12px 20px;
  764. display:block;
  765. border-bottom:1px solid #eee;
  766. }
  767. li:last-child{
  768. border-bottom:none;
  769. }
  770. .zhm_scroll{
  771. overflow-y: scroll !important;
  772. }
  773. .zhm_scroll::-webkit-scrollbar {
  774. /*滚动条整体样式*/
  775. width : 0px; /*高宽分别对应横竖滚动条的尺寸*/
  776. height: 1px;
  777. }
  778. .zhm_scroll::-webkit-scrollbar-thumb {
  779. /*滚动条里面小方块*/
  780. border-radius : 2px;
  781. background-color: #fe6d73;
  782. }
  783. .zhm_scroll::-webkit-scrollbar-track {
  784. /*滚动条里面轨道*/
  785. box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2);
  786. background : #ededed;
  787. border-radius: 10px;
  788. }
  789. /*-form-*/
  790. :root {
  791. --base-color: #434a56;
  792. --white-color-primary: #f7f8f8;
  793. --white-color-secondary: #fefefe;
  794. --gray-color-primary: #c2c2c2;
  795. --gray-color-secondary: #c2c2c2;
  796. --gray-color-tertiary: #676f79;
  797. --active-color: #227c9d;
  798. --valid-color: #c2c2c2;
  799. --invalid-color: #f72f47;
  800. --invalid-icon: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%20%3Cpath%20d%3D%22M13.41%2012l4.3-4.29a1%201%200%201%200-1.42-1.42L12%2010.59l-4.29-4.3a1%201%200%200%200-1.42%201.42l4.3%204.29-4.3%204.29a1%201%200%200%200%200%201.42%201%201%200%200%200%201.42%200l4.29-4.3%204.29%204.3a1%201%200%200%200%201.42%200%201%201%200%200%200%200-1.42z%22%20fill%3D%22%23f72f47%22%20%2F%3E%3C%2Fsvg%3E");
  801. }
  802. .text-input {
  803. font-size: 16px;
  804. position: relative;
  805. right:0px;
  806. z-index: 0;
  807. }
  808. .text-input__body {
  809. -webkit-appearance: none;
  810. -moz-appearance: none;
  811. appearance: none;
  812. background-color: transparent;
  813. border: 1px solid var(--gray-color-primary);
  814. border-radius: 3px;
  815. height: 1.7em;
  816. line-height: 1.7;
  817. overflow: hidden;
  818. padding: 2px 1em;
  819. text-overflow: ellipsis;
  820. transition: background-color 0.3s;
  821. width:55%;
  822. font-size:14px;
  823. box-sizing: initial;
  824. }
  825. .text-input__body:-ms-input-placeholder {
  826. color: var(--gray-color-secondary);
  827. }
  828. .text-input__body::-moz-placeholder {
  829. color: var(--gray-color-secondary);
  830. }
  831. .text-input__body::placeholder {
  832. color: var(--gray-color-secondary);
  833. }
  834.  
  835. .text-input__body[data-is-valid] {
  836. padding-right: 1em;
  837.  
  838. }
  839. .text-input__body[data-is-valid=true] {
  840. border-color: var(--valid-color);
  841. }
  842. .text-input__body[data-is-valid=false] {
  843. border-color: var(--invalid-color);
  844. box-shadow: inset 0 0 0 1px var(--invalid-color);
  845. }
  846. .text-input__body:focus {
  847. border-color: var(--active-color);
  848. box-shadow: inset 0 0 0 1px var(--active-color);
  849. outline: none;
  850. }
  851. .text-input__body:-webkit-autofill {
  852. transition-delay: 9999s;
  853. -webkit-transition-property: background-color;
  854. transition-property: background-color;
  855. }
  856. .text-input__validator {
  857. background-position: right 0.5em center;
  858. background-repeat: no-repeat;
  859. background-size: 1.5em;
  860. display: inline-block;
  861. height: 100%;
  862. left: 0;
  863. position: absolute;
  864. top: 0;
  865. width: 100%;
  866. z-index: -1;
  867. }
  868. .text-input__body[data-is-valid=false] + .text-input__validator {
  869. background-image: var(--invalid-icon);
  870. }
  871. .select-box {
  872. box-sizing: inherit;
  873. font-size: 16px;
  874. position: relative;
  875. transition: background-color 0.5s ease-out;
  876. width:90px;
  877. }
  878. .select-box::after {
  879. border-color: var(--gray-color-secondary) transparent transparent transparent;
  880. border-style: solid;
  881. border-width: 6px 4px 0;
  882. bottom: 0;
  883. content: "";
  884. display: inline-block;
  885. height: 0;
  886. margin: auto 0;
  887. pointer-events: none;
  888. position: absolute;
  889. right: -72px;
  890. top: 0;
  891. width: 0;
  892. z-index: 1;
  893. }
  894. .select-box__body {
  895. box-sizing: initial;
  896. -webkit-appearance: none;
  897. -moz-appearance: none;
  898. appearance: none;
  899. background-color: transparent;
  900. border: 1px solid var(--gray-color-primary);
  901. border-radius: 3px;
  902. cursor: pointer;
  903. height: 1.7em;
  904. line-height: 1.7;
  905. padding-left: 1em;
  906. padding-right: calc(1em + 16px);
  907. width: 140%;
  908. font-size:14px;
  909. padding-top:2px;
  910. padding-bottom:2px;
  911. }
  912. .select-box__body[data-is-valid=true] {
  913. border-color: var(--valid-color);
  914. box-shadow: inset 0 0 0 1px var(--valid-color);
  915. }
  916. .select-box__body[data-is-valid=false] {
  917. border-color: var(--invalid-color);
  918. box-shadow: inset 0 0 0 1px var(--invalid-color);
  919. }
  920. .select-box__body.focus-visible {
  921. border-color: var(--active-color);
  922. box-shadow: inset 0 0 0 1px var(--active-color);
  923. outline: none;
  924. }
  925. .select-box__body:-webkit-autofill {
  926. transition-delay: 9999s;
  927. -webkit-transition-property: background-color;
  928. transition-property: background-color;
  929. }
  930. .textarea__body {
  931. -webkit-appearance: none;
  932. -moz-appearance: none;
  933. appearance: none;
  934. background-color: transparent;
  935. border: 1px solid var(--gray-color-primary);
  936. border-radius: 0;
  937. box-sizing: initial;
  938. font: inherit;
  939. left: 0;
  940. letter-spacing: inherit;
  941. overflow: hidden;
  942. padding: 1em;
  943. position: absolute;
  944. resize: none;
  945. top: 0;
  946. transition: background-color 0.5s ease-out;
  947. width: 100%;
  948. }
  949. .textarea__body:only-child {
  950. position: relative;
  951. resize: vertical;
  952. }
  953. .textarea__body:focus {
  954. border-color: var(--active-color);
  955. box-shadow: inset 0 0 0 1px var(--active-color);
  956. outline: none;
  957. }
  958. .textarea__body[data-is-valid=true] {
  959. border-color: var(--valid-color);
  960. box-shadow: inset 0 0 0 1px var(--valid-color);
  961. }
  962. .textarea__body[data-is-valid=false] {
  963. border-color: var(--invalid-color);
  964. box-shadow: inset 0 0 0 1px var(--invalid-color);
  965. }
  966.  
  967. .textarea ._dummy-box {
  968. border: 1px solid;
  969. box-sizing: border-box;
  970. min-height: 240px;
  971. overflow: hidden;
  972. overflow-wrap: break-word;
  973. padding: 1em;
  974. visibility: hidden;
  975. white-space: pre-wrap;
  976. word-wrap: break-word;
  977. }
  978. .toLeftMove{
  979. nimation:moveToLeft 0.5s infinite;
  980. -webkit-animation:moveToLeft 0.5s infinite; /*Safari and Chrome*/
  981. animation-iteration-count:1;
  982. animation-fill-mode: forwards;
  983. }
  984.  
  985. @keyframes moveToLeft{
  986. from {left:200px;}
  987. to {left:0px;}
  988. }
  989.  
  990. @-webkit-keyframes moveToLeft /*Safari and Chrome*/{
  991. from {left:200px;}
  992. to {left:0px;}
  993. }
  994.  
  995. .toRightMove{
  996. nimation:moveToRight 2s infinite;
  997. -webkit-animation:moveToRight 2s infinite; /*Safari and Chrome*/
  998. animation-iteration-count:1;
  999. animation-fill-mode: forwards;
  1000. }
  1001. @keyframes moveToRight{
  1002. from {left:0px;}
  1003. to {left:2000px;}
  1004. }
  1005.  
  1006. @-webkit-keyframes moveToRight /*Safari and Chrome*/{
  1007. from {left:0px;}
  1008. to {left:200px;}
  1009. }
  1010.  
  1011. `;
  1012.  
  1013. domStyle .appendChild(document.createTextNode(menuSetStyle));
  1014.  
  1015. domHead.appendChild(domStyle);
  1016. }
  1017.  
  1018. menuSet(){
  1019.  
  1020. var _this = this;
  1021.  
  1022. var setListJson= [
  1023. {'listName':lang.iconPosition,'setListID':'iconPositionSetPage','setPageID':'movieIconSetPage','takePlace':'0px'},
  1024. {'listName':lang.playVideo,'setListID':'movieList','setPageID':'movieVideoSetPage','takePlace':'0px'},
  1025. ];
  1026.  
  1027. var zhihuOptionJson = [
  1028. {'optionName':lang.zhVideoClose,'optionID':'removeVideo','default':'0'},
  1029. {'optionName':lang.zhVideoDownload,'optionID':'downloadVideo','default':'22'},
  1030. {'optionName':lang.zhADClose,'optionID':'removeAD','default':'22'},
  1031. {'optionName':lang.zhCloseLeft,'optionID':'removeRight','default':'0'},
  1032. {'optionName':lang.zhChangeLink,'optionID':'changeLink','default':'22'},
  1033. {'optionName':lang.specialColumn,'optionID':'specialColumn','default':22},
  1034. {'optionName':lang.videoTitle,'optionID':'videoTitle','default':22},
  1035. {'optionName':lang.zhKeywordClose,'optionID':'removeKeyword','default':'0'},
  1036. {'optionName':lang.authorNameClose,'optionID':'removeAuthorName','default':22},
  1037. {'optionName':lang.yanxuanClose,'optionID':'removeYanxuan','default':'0'}
  1038. ];
  1039.  
  1040. var playVideoOptionJson ={
  1041. 'optionName':lang.playVideoLineAdd,
  1042. 'optionID':'videoPlayLineAdd',
  1043. 'default':videoPlayLineAdd,
  1044. 'textarea':'videoPlayLineAddTextarea',
  1045. 'textareaId':'playVideoLineTextarea',
  1046. 'tip':
  1047. `纯净1,https://im1907.top/?jx=
  1048. B1,https://jx.jsonplayer.com/player/?url=
  1049. YT,https://jx.yangtu.top/?url=
  1050. BL,https://vip.bljiex.com/?v=
  1051. 冰豆,https://bd.jx.cn/?url=
  1052. CK,https://www.ckplayer.vip/jiexi/?url=
  1053. 弹幕,https://dmjx.m3u8.tv/?url=
  1054. IK9,https://yparse.ik9.cc/index.php?url=
  1055. JY,https://jx.playerjy.com/?url=
  1056. 解析la,https://api.jiexi.la/?url=
  1057. M3U8,https://jx.m3u8.tv/jiexi/?url=
  1058. PM,https://www.playm3u8.cn/jiexi.php?url=
  1059. 盘古,https://www.pangujiexi.cc/jiexi.php?url=
  1060. 盘古2,https://www.pangujiexi.com/jiexi/?url=
  1061. 剖云,https://www.pouyun.com/?url=
  1062. 七哥,https://jx.nnxv.cn/tv.php?url=
  1063. 神哥,https://json.ovvo.pro/jx.php?url=
  1064. 听乐,https://jx.dj6u.com/?url=
  1065. 维多,https://jx.ivito.cn/?url=
  1066. 虾米,https://jx.xmflv.com/?url=
  1067. 虾米2,https://jx.xmflv.cc/?url=
  1068. 夜幕,https://www.yemu.xyz/?url=
  1069. 云析,https://jx.yparse.com/index.php?url=
  1070. 17云,https://www.1717yun.com/jx/ty.php?url=
  1071. 180,https://jx.000180.top/jx/?url=
  1072. 2ys,https://gj.fenxiangb.com/player/analysis.php?v=
  1073. 8090,https://www.8090g.cn/?url=`,
  1074.  
  1075. 'valueName':'playVideoLineText'}
  1076.  
  1077. var setHtml = "<div id='setMask' class='zhmMask'></div>";
  1078.  
  1079. setHtml +="<div class='wrap-box' id='setWrap'>";
  1080.  
  1081. setHtml +="<div class='iconSetPage' id='movieIconSetPage'>";
  1082.  
  1083. setHtml +="<ul class='iconSetUlHead'><li class='iconSetPageHead'><span class='zhm_back'></span><span>"+lang.iconPosition+"</span><span class='iconSetSave'>×</span></li></ul>";
  1084.  
  1085. setHtml +="<ul class='iconSetPageLi'>";
  1086.  
  1087. setHtml +="<li>"+lang.iconHeight+":<span class='text-input'><input class='text-input__body' id='iconTop' value='"+iconVipTop+"' placeholder='"+lang.tipIconHeight+"'><span class='text-input__validator'></span></span></li>";
  1088.  
  1089. setHtml += "<li style='display: inline-flex;'><span style='padding-top:4px;'>"+lang.iconLine+":</span><div class='select-box'><select class='select-box__body' id='iconPosition'>";
  1090.  
  1091. setHtml +="<option value='left' "+selectedLeft+">"+lang.iconLeft+"</option><option value='right' "+selectedRight+">"+lang.iconRight+"</option>";
  1092.  
  1093. setHtml +="</select></div></li>"
  1094.  
  1095. setHtml +="<li>"+lang.iconWidth+":<span class='text-input'><input class='text-input__body' id='iconWidth' value='"+iconVipWidth+"' placeholder='"+lang.tipIconWidth+"'><span class='text-input__validator'></span></span></li>";
  1096.  
  1097. setHtml += "<li style='display: inline-flex;'><span style='padding-top:4px;'>"+lang.iconWaitTime+":</span><div class='select-box'><select class='select-box__body' id='iconWaitTime'>";
  1098.  
  1099. for(let i =1;i<=8;i++){
  1100.  
  1101. let iconSelected = GM_getValue('iconWaitTime')==i/2?'selected':'';
  1102.  
  1103. setHtml +="<option value="+i/2+" "+iconSelected+">"+i/2+"秒</option>";
  1104.  
  1105. }
  1106.  
  1107. setHtml +="</select></div></li>";
  1108.  
  1109. setHtml +="<li>透 明 度 :<span class='text-input'><input class='text-input__body' id='iconOpacity' value='"+iconVipOpacity+"' placeholder='"+lang.tipIconOpacity+"'></span></li>";
  1110.  
  1111. setHtml +="</ul></div>";
  1112.  
  1113. setHtml +="<div class='zhm_set_page' id='movieVideoSetPage'>";
  1114.  
  1115. setHtml +="<ul class='iconSetUlHead'><li class='zhm_set_page_header'><span class='zhm_back'></span><span>"+lang.setPlayVideo+"</span><span class='iconSetSave'>×</li></ul>";
  1116.  
  1117. setHtml +="<ul class='zhm_set_page_list' style='overflow-y:unset'>";
  1118.  
  1119. let backColor,switchBackCorlor,display;
  1120.  
  1121. let optionValue = GM_getValue(playVideoOptionJson.optionID,playVideoOptionJson.default);
  1122.  
  1123. if(optionValue != '22'){
  1124.  
  1125. backColor = '#fff';
  1126.  
  1127. switchBackCorlor = '#FFF';
  1128.  
  1129. }else{
  1130.  
  1131. backColor = '#fe6d73';
  1132.  
  1133. switchBackCorlor = '#FFE5E5';
  1134.  
  1135. }
  1136.  
  1137. setHtml +="<li>";
  1138.  
  1139. setHtml +="<div class='zhm_set_page_content'>";
  1140.  
  1141. setHtml += "<span class='playVideoOptionName'>"+playVideoOptionJson.optionName+"</span>";
  1142.  
  1143. setHtml +="<div class='zhm_circular' style='background-color:"+switchBackCorlor+"' id='"+playVideoOptionJson.optionID+"'>";
  1144.  
  1145. setHtml +="<div class='round-button' style='background: "+backColor+"; left: "+optionValue+"px;'></div>";
  1146.  
  1147. setHtml += "</div></div>";
  1148.  
  1149. setHtml+="</li><li>";
  1150.  
  1151. setHtml +="<div>解析线路</div>";
  1152.  
  1153. setHtml +="<div class='form__textarea'>";
  1154.  
  1155. setHtml +="<div class='textarea js-flexible-textarea' style='padding: 5px 0px;' id='"+playVideoOptionJson.textarea+"'>";
  1156.  
  1157. setHtml +="<textarea rows='9' class='textarea__body zhm_scroll' placeholder='"+lang.tipPlayVideoLineAdd+"' style='width:250px;font-size:12px;padding:4px;resize:none;' id='"+playVideoOptionJson.textareaId+"'>"+GM_getValue(playVideoOptionJson.valueName,playVideoOptionJson.tip)+"</textarea>";
  1158.  
  1159. setHtml +="</div></div></li>";
  1160.  
  1161. setHtml +="</ul>"
  1162.  
  1163. setHtml +="</div>"
  1164.  
  1165. setHtml +="<ul class='iconSetUlHead'><li class='iconSetPageHead'><span></span><span>"+lang.set+"</span><span class='iconSetSave'>×</span></li></ul>";
  1166.  
  1167. setHtml +="<ul class='setWrapLi'>";
  1168.  
  1169. for(var setN=0;setN<setListJson.length;setN++){
  1170.  
  1171. var listValue = GM_getValue(setListJson[setN].setListID,'22');
  1172.  
  1173. let backColor,arrowColor,switchBackCorlor;
  1174.  
  1175. if(listValue != 22){
  1176. backColor = '#fff';
  1177. arrowColor= '#EEE';
  1178. switchBackCorlor = '#FFF';
  1179.  
  1180. }else{
  1181. backColor = '#fe6d73';
  1182. arrowColor = '#CCC';
  1183. switchBackCorlor = '#FFE5E5';
  1184. }
  1185.  
  1186. if(setListJson[setN].setPageID == ''){
  1187. arrowColor = '#EEE';
  1188. };
  1189. setHtml +="<li><span>"+setListJson[setN].listName+"</span>";
  1190.  
  1191. setHtml +="<div class='setWrapLiContent'>";
  1192.  
  1193. setHtml +="<div class='zhm_circular' id='"+setListJson[setN].setListID+"' style='background-color: "+switchBackCorlor+";'><div class='round-button' style='background: "+backColor+";left: "+listValue+"px'></div></div>";
  1194.  
  1195. setHtml +="<span class='to-right' data='"+setListJson[setN].setPageID+"' takePlace='"+setListJson[setN].takePlace+"' style='border: solid "+arrowColor+"; border-width: 0 3px 3px 0;'></span></div></li>";
  1196. }
  1197.  
  1198. setHtml +="</ul>";
  1199.  
  1200. setHtml +="<div style='height:40px;' id='zhmTakePlace'></div>";
  1201.  
  1202. setHtml +="<div class='iconSetFoot' style=''>";
  1203.  
  1204. setHtml +="<ul class='iconSetFootLi'>";
  1205.  
  1206. setHtml +="<li><a href='https://t.me/+sGo6ZZvy54wzYTll' target='_blank'>"+lang.tggroup+"</a></li>";
  1207.  
  1208. setHtml +="<li></li>";
  1209.  
  1210. setHtml +='</ul>';
  1211.  
  1212. setHtml +='</div>';
  1213.  
  1214. setHtml += "</div>";
  1215.  
  1216. if(document.querySelector('#setMask')) return;
  1217.  
  1218. this.createElement('div','zhmMenu');
  1219.  
  1220. let zhmMenu = document.getElementById('zhmMenu');
  1221.  
  1222. zhmMenu.innerHTML = setHtml;
  1223.  
  1224. let timerZhmIcon = setInterval(function(){
  1225.  
  1226. if (document.querySelector('#zhmMenu')){
  1227.  
  1228. clearInterval(timerZhmIcon); // 取消定时器
  1229.  
  1230. let circular = document.querySelectorAll('.zhm_circular');
  1231.  
  1232. circular.forEach(function(item){
  1233.  
  1234. item.addEventListener('click', function(_e){
  1235.  
  1236. let buttonStyle = item.children[0].style;
  1237.  
  1238. let left = buttonStyle.left;
  1239.  
  1240. left = parseInt(left);
  1241.  
  1242. let listLeftValue;
  1243.  
  1244. if(left==0){
  1245.  
  1246. buttonStyle.left = '22px';
  1247.  
  1248. buttonStyle.background = '#fe6d73';
  1249.  
  1250. item.style.background='#ffE5E5';
  1251.  
  1252. if(item.nextSibling && item.nextSibling.getAttribute('data')){
  1253.  
  1254. item.nextSibling.setAttribute('style','border: solid #ccc;border-width: 0 3px 3px 0;')
  1255. }
  1256.  
  1257. listLeftValue = 22;
  1258.  
  1259. }else{
  1260.  
  1261. buttonStyle.left = '0px';
  1262.  
  1263. buttonStyle.background = '#fff';
  1264.  
  1265. item.style.background='#fff';
  1266.  
  1267. if(item.nextSibling){
  1268.  
  1269. item.nextSibling.setAttribute('style','border: solid #EEE;border-width: 0 3px 3px 0;')
  1270.  
  1271. }
  1272.  
  1273. listLeftValue = 0;
  1274. }
  1275.  
  1276. let setListID = item.id;
  1277.  
  1278. GM_setValue(setListID,listLeftValue);
  1279.  
  1280. })
  1281.  
  1282. });
  1283.  
  1284. let toRight = document.querySelectorAll('.to-right');
  1285.  
  1286. toRight.forEach(function(item){
  1287.  
  1288. item.addEventListener('click', function(e){
  1289.  
  1290. let left = item.previousSibling.children[0].style.left;
  1291.  
  1292. left = parseInt(left);
  1293.  
  1294. if(left != 22) return;
  1295.  
  1296. let setPageID = item.getAttribute('data');
  1297.  
  1298. let pageId = document.getElementById(setPageID);
  1299.  
  1300. pageId.className='iconSetPage toLeftMove';
  1301.  
  1302. //实时图标高度
  1303. if(setPageID == 'movieIconSetPage'){
  1304.  
  1305. document.querySelector('#iconTop').value=document.querySelector("#"+_this.className.zhmlogo).offsetTop;
  1306.  
  1307. document.querySelector('#zhmTakePlace').style="height:200px";
  1308.  
  1309.  
  1310. }
  1311.  
  1312. if(setPageID == 'movieVideoSetPage'){
  1313.  
  1314. document.querySelector('#zhmTakePlace').style="height:200px";
  1315. }
  1316.  
  1317. console.log(setPageID);
  1318.  
  1319. })
  1320.  
  1321. })
  1322.  
  1323. let toBack = document.querySelectorAll('.zhm_back');
  1324.  
  1325. toBack.forEach(function(item){
  1326.  
  1327. item.addEventListener('click', function(e){
  1328.  
  1329. let parentDom = item.parentNode.parentNode.parentNode;
  1330.  
  1331. parentDom.className='iconSetPage toRightMove';
  1332.  
  1333. document.querySelector('#zhmTakePlace').style='height:40px;'
  1334.  
  1335. })
  1336.  
  1337. })
  1338.  
  1339. let setSave = document.querySelectorAll('.iconSetSave');
  1340.  
  1341. setSave.forEach(function(item){
  1342.  
  1343. item.addEventListener('click',()=>{
  1344.  
  1345. let iconTop = document.getElementById('iconTop').value;
  1346.  
  1347. let iconOpacity=document.getElementById('iconOpacity').value;
  1348.  
  1349. let iconPosition = document.getElementById('iconPosition').value;
  1350.  
  1351. let iconWidth = document.getElementById('iconWidth').value;
  1352.  
  1353. let iconWaitTime = document.getElementById('iconWaitTime').value;
  1354.  
  1355. let playVideoLineText = document.querySelector('#playVideoLineTextarea').value;
  1356.  
  1357. let playVideoLineLeft = document.querySelector('#videoPlayLineAdd').children[0].style.left;
  1358.  
  1359. if(iconTop != ''){
  1360.  
  1361. if(!(/(^[0-9][0-9]{0,2}$)/.test(iconTop))){
  1362.  
  1363. alert(lang.tipErrorIconHeight);
  1364.  
  1365. return false;
  1366. }
  1367.  
  1368. //_this.setCookie('iconTop',iconTop,30);
  1369.  
  1370. GM_setValue('iconTop',iconTop);
  1371. }
  1372.  
  1373. if(iconOpacity != ''){
  1374.  
  1375. if(!(/^(?:0|[1-9][0-9]?|100)$/.test(iconOpacity))){
  1376.  
  1377. alert(lang.tipErrorIconOpacity);
  1378.  
  1379. return false;
  1380. }
  1381.  
  1382. //_this.setCookie('iconTop',iconTop,30);
  1383. //alert(iconOpacity);return;
  1384. GM_setValue('iconOpacity',iconOpacity);
  1385. }
  1386.  
  1387. if(iconPosition != ''){
  1388.  
  1389. //_this.setCookie('iconPosition',iconPosition,30);
  1390.  
  1391. GM_setValue('iconPosition',iconPosition);
  1392. }
  1393.  
  1394. if(iconWaitTime != ''){
  1395.  
  1396. GM_setValue('iconWaitTime',iconWaitTime);
  1397. }
  1398.  
  1399. if(iconWidth !=''){
  1400.  
  1401. if(!(/(^([1-9][0-9]?)$)/.test(iconWidth))){
  1402.  
  1403. alert(lang.tipErrorIconWidth);
  1404.  
  1405. return false;
  1406. }
  1407.  
  1408. //_this.setCookie('iconWidth',iconWidth,30);
  1409.  
  1410. GM_setValue('iconWidth',iconWidth);
  1411. }
  1412.  
  1413. if(GM_getValue('videoPlayLineAdd') == 22){
  1414.  
  1415. if(playVideoLineText){
  1416.  
  1417. let lineObj = _this.getLine(playVideoLineText);
  1418.  
  1419. if(lineObj.length>0){
  1420.  
  1421. GM_setValue('playVideoLineText',playVideoLineText);
  1422.  
  1423. }else{
  1424. alert('线路输入不正确');
  1425. return;
  1426. }
  1427.  
  1428. }else{
  1429.  
  1430. GM_setValue('playVideoLineText','');
  1431. }
  1432.  
  1433. }else{
  1434.  
  1435. GM_setValue('playVideoLineText',playVideoLineText);
  1436. }
  1437.  
  1438. history.go(0);
  1439. })
  1440. })
  1441.  
  1442. document.getElementById('iconTop').addEventListener('change',function(){
  1443.  
  1444. let iconTop = this.value;
  1445.  
  1446. if(!(/(^[1-9]\d*$)/.test(iconTop))){
  1447.  
  1448. this.setAttribute('data-is-valid','false')
  1449.  
  1450.  
  1451. }else{
  1452.  
  1453. this.setAttribute('data-is-valid','true')
  1454. }
  1455.  
  1456. return false;
  1457.  
  1458. })
  1459.  
  1460. document.getElementById('iconWidth').addEventListener('change',function(){
  1461.  
  1462. let iconWidth = this.value;
  1463.  
  1464. if(!(/(^[1-9]\d*$)/.test(iconWidth))){
  1465.  
  1466. this.setAttribute('data-is-valid','false')
  1467.  
  1468.  
  1469. }else{
  1470.  
  1471. this.setAttribute('data-is-valid','true')
  1472. }
  1473.  
  1474. return false;
  1475.  
  1476. })
  1477. //腾讯视频快捷键冲突
  1478. if(couponUrl.match(/v\.qq\.com\/x\/cover/)){
  1479.  
  1480. let addLineText =document.querySelector('#playVideoLineTextarea');
  1481.  
  1482. addLineText.addEventListener('keydown',function(e){
  1483.  
  1484. let startPos = addLineText.selectionStart;
  1485.  
  1486. let endPos = addLineText.selectionEnd;
  1487.  
  1488. if (startPos === undefined || endPos === undefined) return;
  1489.  
  1490. keyCode.forEach(function(item){
  1491.  
  1492. if(e.keyCode == item.code && e.shiftKey==item.isShift){
  1493.  
  1494. let textValue = addLineText.value;
  1495.  
  1496. let startValue = textValue.substring(0,startPos);
  1497.  
  1498. let endValue = textValue.substring(startPos);
  1499.  
  1500. let allValue = startValue+item.value+endValue;
  1501.  
  1502. addLineText.value=allValue;
  1503.  
  1504. addLineText.selectionStart = startPos+1;
  1505.  
  1506. addLineText.selectionEnd = endPos+1;
  1507.  
  1508. }
  1509. })
  1510.  
  1511. })
  1512. }
  1513. }
  1514.  
  1515. })
  1516.  
  1517. }
  1518.  
  1519. createElement(dom,domId){
  1520.  
  1521. var rootElement = document.body;
  1522.  
  1523. var newElement = document.createElement(dom);
  1524.  
  1525. newElement.id = domId;
  1526.  
  1527. var newElementHtmlContent = document.createTextNode('');
  1528.  
  1529. rootElement.appendChild(newElement);
  1530.  
  1531. newElement.appendChild(newElementHtmlContent);
  1532.  
  1533. }
  1534.  
  1535. request(method,url,data,isCookie=''){
  1536.  
  1537. let request = new XMLHttpRequest();
  1538.  
  1539. return new Promise((resolve,reject)=>{
  1540.  
  1541. request.onreadystatechange=function(){
  1542.  
  1543. if(request.readyState==4){
  1544.  
  1545. if(request.status==200){
  1546.  
  1547. resolve(request.responseText);
  1548.  
  1549. }else{
  1550.  
  1551. reject(request.status);
  1552. }
  1553.  
  1554. }
  1555. }
  1556.  
  1557. request.open(method,url);
  1558. //request.withCredentials = true;
  1559. if(isCookie){
  1560. request.withCredentials = true;
  1561. }
  1562. request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  1563. request.send(data);
  1564.  
  1565. })
  1566.  
  1567. }
  1568.  
  1569. setCookie(cname,cvalue,exdays){
  1570.  
  1571. var d = new Date();
  1572.  
  1573. d.setTime(d.getTime()+(exdays*24*60*60*1000));
  1574.  
  1575. var expires = "expires="+d.toGMTString();
  1576.  
  1577. document.cookie = cname+"="+cvalue+"; "+expires;
  1578. }
  1579.  
  1580. getCookie(cname){
  1581. var name = cname + "=";
  1582. var ca = document.cookie.split(';');
  1583. for(var i=0; i<ca.length; i++) {
  1584. var c = ca[i].trim();
  1585. if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
  1586. }
  1587. return "";
  1588. }
  1589.  
  1590. getQueryString(e) {
  1591. var t = new RegExp("(^|&)" + e + "=([^&]*)(&|$)");
  1592. var a = window.location.search.substr(1).match(t);
  1593. if (a != null) return a[2];
  1594. return "";
  1595. }
  1596.  
  1597. getUrlParams(url){
  1598. let reg = /([^?&+#]+)=([^?&+#]+)/g;
  1599. let obj={};
  1600. url.replace(reg,(res,$1,$2)=>{obj[$1]=$2});
  1601. return obj;
  1602. }
  1603.  
  1604. getLine(text){
  1605.  
  1606. let textArr = text.split('\n');
  1607.  
  1608. if(textArr.length > 0){
  1609.  
  1610. let lineObj = [];
  1611.  
  1612. let match = /^(.+)(https?:\/\/.+)$/;
  1613.  
  1614. textArr.forEach(function(item){
  1615.  
  1616. item = item.replace(/\s*,*/g,'');
  1617.  
  1618. if(!item) return true;
  1619.  
  1620. let lineMatch = item.match(match);
  1621.  
  1622. if(lineMatch){
  1623.  
  1624. lineObj.push({'name':lineMatch[1].substring(0,4),'url':lineMatch[2]});
  1625.  
  1626. }else{
  1627.  
  1628. lineObj=[];
  1629.  
  1630. return false;
  1631. }
  1632.  
  1633. })
  1634. return lineObj;
  1635.  
  1636. }
  1637. }
  1638. //all参数默认空,是真时返回为数组
  1639. static getElement(css,all=''){
  1640.  
  1641. return new Promise((resolve,reject)=>{
  1642.  
  1643. let num = 0;
  1644.  
  1645. let timer = setInterval(function(){
  1646.  
  1647. num++
  1648.  
  1649. let dom;
  1650.  
  1651. if(all == false){
  1652.  
  1653. dom = document.querySelector(css);
  1654.  
  1655. if(dom){
  1656.  
  1657. clearInterval(timer);
  1658.  
  1659. resolve(dom);
  1660.  
  1661. }
  1662.  
  1663. }else{
  1664.  
  1665. dom = document.querySelectorAll(css);
  1666.  
  1667. if(dom.length>0){
  1668.  
  1669. clearInterval(timer);
  1670.  
  1671. resolve(dom);
  1672.  
  1673. }
  1674. }
  1675.  
  1676. if(num==20){
  1677. clearInterval(timer);
  1678. resolve(false);
  1679. }
  1680.  
  1681. },300)
  1682.  
  1683. })
  1684.  
  1685.  
  1686. }
  1687.  
  1688. static toast(msg,duration){
  1689.  
  1690. duration=isNaN(duration)?3000:duration;
  1691.  
  1692. let toastDom = document.createElement('div');
  1693.  
  1694. toastDom.innerHTML = msg;
  1695.  
  1696. //toastDom.style.cssText="width: 60%;min-width: 150px;opacity: 0.7;height: 30px;color: rgb(255, 255, 255);line-height: 30px;text-align: center;border-radius: 5px;position: fixed;top: 40%;left: 20%;z-index: 999999;background: rgb(0, 0, 0);font-size: 12px;";
  1697. toastDom.style.cssText='padding:2px 15px;min-height: 36px;line-height: 36px;text-align: center;transform: translate(-50%);border-radius: 4px;color: rgb(255, 255, 255);position: fixed;top: 50%;left: 50%;z-index: 9999999;background: rgb(0, 0, 0);font-size: 16px;'
  1698.  
  1699. document.body.appendChild(toastDom);
  1700.  
  1701. setTimeout(function() {
  1702.  
  1703. var d = 0.5;
  1704.  
  1705. toastDom.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';
  1706.  
  1707. toastDom.style.opacity = '0';
  1708.  
  1709. setTimeout(function() { document.body.removeChild(toastDom) }, d * 1000);
  1710.  
  1711. }, duration);
  1712.  
  1713. }
  1714. //create zhmLogoIcon
  1715. zhmLogo(){
  1716.  
  1717. var _this = this;
  1718.  
  1719. let sortDiv = iconVipPosition=='left'?'row':'row-reverse';
  1720.  
  1721. let playVideoStyle = `
  1722. .${this.className.zhm_play_vidoe_icon}{
  1723. padding-top:2px;
  1724. cursor:pointer;
  1725. z-index:999999;
  1726. position:fixed;${iconVipPosition}:5px;top:${iconVipTop}px;
  1727. text-align:center;
  1728. overflow:visible;
  1729. display:flex;
  1730. flex-direction:${sortDiv};
  1731. width:auto;
  1732. }
  1733. .${this.className.zhm_play_video_wrap}{
  1734. z-index:9999999;
  1735. overflow: hidden;
  1736. width:300px;
  1737. }
  1738. .${this.className.iconLogo}{
  1739. opacity:${iconVipOpacity/100};
  1740. }
  1741. .${this.className.zhm_play_video_line}{
  1742. width:320px;
  1743. height:316px;
  1744. overflow-y:scroll;
  1745. overflow-x:hidden;
  1746. }
  1747. .${this.className.zhm_play_vide_line_ul}{
  1748. width:300px;
  1749. display: flex;
  1750. justify-content: flex-start;
  1751. flex-flow: row wrap;
  1752. list-style: none;
  1753. padding:0px;
  1754. margin:0px;
  1755.  
  1756. }
  1757. .${this.className.zhm_play_video_line_ul_li}{
  1758. padding:4px 0px;
  1759. margin:2px;
  1760. width:30%;
  1761. color:#FFF;
  1762. text-align:center;
  1763. background-color:#f24443;
  1764. box-shadow:0px 0px 10px #fff;
  1765. font-size:14px;
  1766. }
  1767. .${this.className.zhm_play_video_line_ul_li}:hover{
  1768. color:#260033;
  1769. background-color:#fcc0c0
  1770. }
  1771. .${this.className.zhm_line_selected}{
  1772. color:#260033;
  1773. background-color:#fcc0c0
  1774. }
  1775.  
  1776. .${this.className.zhm_play_video_jx}{
  1777. width:100%;
  1778. height:100%;
  1779. z-index:999999;
  1780. position: absolute;top:0px;padding:0px;
  1781. }
  1782. `;
  1783.  
  1784. domStyle .appendChild(document.createTextNode(playVideoStyle));
  1785.  
  1786. domHead.appendChild(domStyle);
  1787.  
  1788. let playWrapHtml = `<div href='javascript:void(0)' target='_blank' style='' class='${this.className.playButton} ${this.className.zhm_play_vidoe_icon}' id='${this.className.zhmlogo}'>`;
  1789.  
  1790. playWrapHtml += `<img class='${this.className.iconLogo}' style='width:${iconVipWidth}px;height:${iconVipWidth*1.5}px' src='data:image/gif;base64,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'>`
  1791.  
  1792. playWrapHtml += `<div>`;
  1793.  
  1794. //let zhmIconIdLength = Math.floor(Math.random()*(16-8+1)+8);
  1795.  
  1796. //let zhmIconId = _this.randomString(zhmIconIdLength);
  1797.  
  1798. _this.createElement('div',_this.className.zhmIcon);
  1799.  
  1800. let zhmPlay = document.getElementById(_this.className.zhmIcon);
  1801.  
  1802. zhmPlay.innerHTML = playWrapHtml;
  1803.  
  1804. }
  1805. //左键按下拖动
  1806. //type:根据不同类型,处理图标单击事务
  1807. zhmLogoDrag(type,web){
  1808.  
  1809. var _this = this;
  1810.  
  1811. var zhmLogoDrag=document.querySelector("#"+this.className.zhmlogo);
  1812.  
  1813. var zhmLogoIcon = document.querySelector("."+this.className.iconLogo);
  1814.  
  1815. if(!zhmLogoDrag || !zhmLogoIcon)return;
  1816.  
  1817. zhmLogoDrag.onmousedown = function(event){
  1818.  
  1819. if(event.which==3)return false;//屏蔽右键
  1820.  
  1821. let sedownTop = zhmLogoDrag.offsetTop;
  1822.  
  1823. let zhmLogoIconHeight = zhmLogoIcon.offsetHeight;
  1824.  
  1825. let bottomSpace = 10;
  1826.  
  1827. if(event.target.className != _this.className.iconLogo)return;
  1828.  
  1829. //let shiftX = event.clientX - zhmLogoDrag.getBoundingClientRect().left;
  1830. let shiftx = 5;
  1831.  
  1832. let shiftY = event.clientY-zhmLogoDrag.getBoundingClientRect().top;
  1833.  
  1834. zhmLogoDrag.style.position = 'fixed';
  1835.  
  1836. zhmLogoDrag.style.zIndex = 9999999;
  1837.  
  1838. document.body.append(zhmLogoDrag);
  1839.  
  1840. function onMouseMove(event){
  1841.  
  1842. //zhmLogoDrag.style.left = pageX - shiftX + 'px';
  1843. zhmLogoDrag.style.left = '5px';
  1844.  
  1845. let height = window.innerHeight - zhmLogoIconHeight-bottomSpace;
  1846.  
  1847. let y = event.pageY-shiftY;
  1848.  
  1849. y = Math.min(Math.max(0, y), height);
  1850.  
  1851. zhmLogoDrag.style.top = y+'px';
  1852.  
  1853. }
  1854. //在mousemove事件上移动图标
  1855. document.addEventListener('mousemove',onMouseMove);
  1856. //松开事件
  1857. document.onmouseup = function(e){
  1858.  
  1859. GM_setValue('iconTop',zhmLogoDrag.offsetTop);
  1860.  
  1861. document.removeEventListener('mousemove', onMouseMove);
  1862.  
  1863. zhmLogoDrag.onmouseup = null;
  1864.  
  1865. let height = zhmLogoDrag.offsetTop+zhmLogoIconHeight+bottomSpace;
  1866.  
  1867. if(zhmLogoDrag.offsetTop < 0){
  1868.  
  1869. zhmLogoDrag.style.top ='0px';
  1870. }
  1871.  
  1872. if(window.innerHeight < height){
  1873.  
  1874. zhmLogoDrag.style.top =window.innerHeight-zhmLogoIconHeight-bottomSpace+'px';
  1875.  
  1876. }
  1877. //click事件处理
  1878. switch(type){
  1879.  
  1880. case 'video':
  1881.  
  1882. if(zhmLogoDrag.offsetTop==sedownTop && web.length == 0 && zhmLogoDrag.offsetTop>0 && window.innerHeight > height){
  1883.  
  1884. BaseClass.toast('请在视频播放页点击图标');
  1885. }
  1886.  
  1887. break;
  1888. case 'music':
  1889.  
  1890. if(zhmLogoDrag.offsetTop==sedownTop && e.target.className == this.className.iconLogo){
  1891.  
  1892. //document.removeEventListener('mousemove', onMouseMove);
  1893.  
  1894. //zhmLogoDrag.onmouseup = null;
  1895.  
  1896. let musicUrlData = [
  1897. {match:/^https?:\/\/music\.163\.com\/#\/(?:song|dj)\?id/},
  1898. {match:/^https?:\/\/y\.music\.163\.com\/m\/(?:song|dj)\?id/},
  1899. {match:/^https?:\/\/music\.163\.com\/(?:song|dj)\?id/},
  1900. {match:/^https?:\/\/y\.qq\.com\/n\/ryqq\/player/},
  1901. {match:/kugou\.com/},
  1902. {match:/kuwo\.cn/},
  1903. {match:/^https?:\/\/www\.ximalaya\.com/},
  1904. ]
  1905.  
  1906. let musicUrl = musicUrlData.filter(function(item){
  1907.  
  1908. return location.href.match(item.match);
  1909.  
  1910. })
  1911.  
  1912. if(musicUrl.length==0){
  1913.  
  1914. BaseClass.toast(web[0].tip);
  1915.  
  1916. return;
  1917. }
  1918.  
  1919. switch(web[0].name){
  1920. case 'netease':
  1921. neteaseFun();
  1922. break;
  1923. case 'qq':
  1924. qqFun();
  1925. break;
  1926. case 'kugou':
  1927. kugouFun();
  1928. break;
  1929. case 'kuwo':
  1930. kuwoFun();
  1931. break;
  1932. case 'ximalaya':
  1933. ximalayaFun();
  1934. break;
  1935. }
  1936.  
  1937. function neteaseFun(){
  1938.  
  1939. let urlParams = _this.getUrlParams(location.href);
  1940.  
  1941. if(urlParams.id == undefined) return;
  1942.  
  1943. let neteaseUrlEncode = encodeURIComponent('https://music.163.com/song?id='+urlParams.id);
  1944.  
  1945. //let openUrl = webUrl+'?url='+neteaseUrlEncode;
  1946.  
  1947. let openUrl = webUrl+"?id="+urlParams.id+"&type=netease"
  1948.  
  1949. window.open(openUrl);
  1950.  
  1951. }
  1952.  
  1953. function qqFun(){
  1954.  
  1955. let qqSongMatch;
  1956.  
  1957. if(document.querySelector(".player_music__info")){
  1958.  
  1959. qqSongMatch = document.querySelector(".player_music__info").childNodes[0].href.match(/songDetail\/(\S*)\?/);
  1960.  
  1961. }else if(document.querySelector("#sim_song_info")){
  1962.  
  1963. qqSongMatch = document.querySelector("#sim_song_info").childNodes[0].href.match(/song\/(\S*).html/);
  1964.  
  1965. }else{
  1966.  
  1967. qqSongMatch = '';
  1968. }
  1969.  
  1970. if(!qqSongMatch[1]){console.log('没有获取到歌曲ID'); return};
  1971.  
  1972. let audioLink = encodeURIComponent(document.querySelector("audio").src);
  1973.  
  1974. let openUrl = webUrl+'?id='+qqSongMatch[1]+'&type=qq&playUrl='+audioLink;
  1975.  
  1976. window.open(openUrl);
  1977.  
  1978. }
  1979.  
  1980. function kugouFun(){
  1981.  
  1982. let audioModule = document.querySelector('#audioModule');
  1983.  
  1984. if(audioModule){
  1985.  
  1986. document.querySelector('#audioModule').style='bottom:0px;';
  1987.  
  1988. document.querySelector('#showHide_playbar').className = 'icon show-playbar-btn';
  1989.  
  1990. }
  1991. BaseClass.toast('请点击播放需要下载的歌曲,然后在网页下方播放器内点击"下载"',2000)
  1992.  
  1993. //alert('请点击播放需要下载的歌曲,然后在网页下方播放器内点击"下载"。');
  1994.  
  1995. /*
  1996.  
  1997. let songKugouMatch = newUrl.match(jxMusicWeb[0].match);
  1998.  
  1999. let audioSrc = encodeURIComponent(document.querySelector("audio").src);
  2000.  
  2001. let openUrl = webUrl+'?id='+songKugouMatch[1]+'&type=kugou&playUrl='+audioSrc;
  2002.  
  2003. window.open(openUrl);
  2004. */
  2005. }
  2006.  
  2007. function kuwoFun(){
  2008.  
  2009. document.querySelector('.playControl').style='bottom:0px';
  2010.  
  2011. BaseClass.toast('请点击播放需要下载的歌曲,然后在网页下方播放器内点击"下载"',2000)
  2012.  
  2013. //alert('请点击播放需要下载的歌曲,然后在网页下方播放器内点击"下载"。');
  2014.  
  2015. /*
  2016. let songKuwoMatch = newUrl.match(jxMusicWeb[0].match);
  2017.  
  2018. let audioSrc = encodeURIComponent(document.querySelector("audio").src);
  2019.  
  2020. let openUrl = webUrl+'?id='+songKuwoMatch[1]+'&type=kuwo&playUrl='+audioSrc;
  2021.  
  2022. window.open(openUrl);
  2023. */
  2024. }
  2025.  
  2026. function ximalayaFun(){
  2027.  
  2028. document.querySelector('.xm-player').style='bottom:0px';
  2029.  
  2030. BaseClass.toast('请点击播放需要下载的歌曲,然后在网页下方播放器内点击"下载"',2000)
  2031.  
  2032. //alert('请点击播放需要下载的歌曲,然后在网页下方播放器内点击"下载"。');
  2033.  
  2034. /*
  2035. let urlInfo = newUrl.match(jxMusicWeb[0].match);
  2036.  
  2037. console.log(webUrl+'?id='+urlInfo[1]+'&type=ximalaya&playUrl='+encodeURIComponent(newUrl));
  2038.  
  2039. if(urlInfo[1]){
  2040.  
  2041. window.open(webUrl+'?id='+urlInfo[1]+'&type=ximalaya&playUrl='+encodeURIComponent(newUrl));
  2042.  
  2043. }else{
  2044.  
  2045. console.log('没有获取url参数');
  2046. }
  2047. */
  2048. }
  2049. }
  2050. break;
  2051. case 'youtube':
  2052.  
  2053.  
  2054.  
  2055. break;
  2056.  
  2057. }
  2058. };
  2059.  
  2060. };
  2061.  
  2062. zhmLogoDrag.ondragstart = function(){
  2063. return false;
  2064. };
  2065. }
  2066. //下载
  2067. static LR_download(url,filename){
  2068.  
  2069. let ua = navigator.userAgent.toLowerCase();
  2070.  
  2071. console.log(ua.match(/version\/([\d.]+).*safari/));
  2072.  
  2073. if(ua.match(/version\/([\d.]+).*safari/)){
  2074.  
  2075. window.open(url);
  2076.  
  2077. }else{
  2078. console.log(url);
  2079. GM_download(url,filename);
  2080. }
  2081.  
  2082.  
  2083. }
  2084.  
  2085. randomString(e) {
  2086.  
  2087. e = e || 32;
  2088.  
  2089. var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz",a = t.length,n = "";
  2090.  
  2091. for (let i = 0; i < e; i++){
  2092.  
  2093. n += t.charAt(Math.floor(Math.random() * a));
  2094.  
  2095. };
  2096.  
  2097. return n;
  2098. }
  2099.  
  2100. getClassName(){
  2101.  
  2102. let className = [
  2103. 'zhmIcon',
  2104. 'zhm_play_vidoe_icon',
  2105. 'zhm_play_video_wrap',
  2106. 'iconLogo',
  2107. 'zhm_play_video_line',
  2108. 'zhm_play_vide_line_ul',
  2109. 'zhm_play_video_line_ul_li',
  2110. 'zhm_line_selected',
  2111. 'zhm_play_video_jx',
  2112. 'playButton',
  2113. 'zhmlogo',//id
  2114. 'playLineTd',
  2115. 'playLineDiv',
  2116. ];
  2117.  
  2118. let objClassName = {};
  2119.  
  2120. for(let i=0;i<className.length;i++){
  2121. let randomLength = Math.floor(Math.random()*(16-8+1)+8);
  2122. objClassName[className[i]]=this.randomString(randomLength);
  2123. }
  2124.  
  2125. return objClassName;
  2126.  
  2127. }
  2128.  
  2129. }
  2130.  
  2131. class PlayVideoClass extends BaseClass{
  2132. constructor(){
  2133. super();
  2134. }
  2135.  
  2136. }
  2137.  
  2138. var nowWeb=[];
  2139.  
  2140. jxVideo.forEach(function(item){
  2141.  
  2142. let result = location.href.match(item.match);
  2143.  
  2144. if(result){
  2145.  
  2146. nowWeb.push(item);
  2147.  
  2148. }
  2149.  
  2150. })
  2151.  
  2152. if(nowWeb.length==0){
  2153.  
  2154. //let baseClass = new BaseClass();
  2155.  
  2156. console.log('没有匹配该网站或该模块已关闭');return;
  2157. }
  2158.  
  2159. function playVideoFunc(){
  2160.  
  2161. var playVideoClass = new PlayVideoClass();
  2162.  
  2163. if(GM_getValue('movieList','22')==0){
  2164. return false;
  2165. }
  2166.  
  2167. playVideoClass.zhmLogo();
  2168.  
  2169. if(GM_getValue('playVideoLineText')){
  2170.  
  2171. let lineObj = playVideoClass.getLine(GM_getValue('playVideoLineText'));
  2172.  
  2173. if(lineObj){
  2174.  
  2175. //playLine = [...lineObj,...playLine];
  2176. playLine = lineObj
  2177.  
  2178. }
  2179. }
  2180.  
  2181. //custom add web line
  2182.  
  2183. //template:icon,playLine;
  2184.  
  2185. let playWrapHtml = `<div class='${playVideoClass.className.zhm_play_video_line}'>`;
  2186.  
  2187. playWrapHtml +=`<div><ul class='${playVideoClass.className.zhm_play_vide_line_ul}'>`;
  2188.  
  2189. playLine.forEach(function(item){
  2190.  
  2191. let selected = '';
  2192.  
  2193. if(playVideoClass.getCookie('playLineAction') == item.url){
  2194.  
  2195. selected = playVideoClass.className.zhm_line_selected;
  2196.  
  2197. }
  2198.  
  2199. playWrapHtml +=`<li class='${playVideoClass.className.playLineTd} ${playVideoClass.className.zhm_play_video_line_ul_li} ${selected}' url='${item.url}' >${item.name}</li>`;
  2200.  
  2201. })
  2202.  
  2203. playWrapHtml += "</div>";
  2204.  
  2205. let zhmPlay = document.getElementById(playVideoClass.className.zhmlogo);
  2206.  
  2207. let playLineDom = document.createElement('div');
  2208.  
  2209. playLineDom.className = `${playVideoClass.className.playLineDiv} ${playVideoClass.className.zhm_play_video_wrap}`;
  2210.  
  2211. playLineDom.style.display = 'none';
  2212.  
  2213. playLineDom.innerHTML = playWrapHtml;
  2214.  
  2215. zhmPlay.appendChild(playLineDom);
  2216.  
  2217. //template:node;播放区域
  2218.  
  2219. let playJxHtml = `<div class='${playVideoClass.className.zhm_play_video_jx}'>`;
  2220.  
  2221. playJxHtml += "<iframe allowtransparency=true frameborder='0' scrolling='no' allowfullscreen=true allowtransparency=true name='jx_play' style='height:100%;width:100%' id='playIframe'></iframe></div>";
  2222.  
  2223. let jxVideoData = [
  2224. {funcName:"playVideo", node:".player__container" ,match:/https:\/\/v.qq.com\/x\/cover\/[a-zA-Z0-9]+.html/,areaClassName:'playlist-list',name:'qqPC'},
  2225. {funcName:"playVideo", node:"#player-container" ,match:/https:\/\/v.qq.com\/x\/cover\/[a-zA-Z0-9]+\/[a-zA-Z0-9]+.html/,areaClassName:'playlist-list',name:'qqPC'},
  2226. {funcName:"playVideo", node:".container-player" ,match:/v\.qq\.com\/x\/page/,areaClassName:'mod_episode'},
  2227.  
  2228. {funcName:"playVideo", node:"#flashbox,#player,.iqp-player",match:/^https:\/\/www\.iqiyi\.com\/[vwa]\_/,areaClassName:'qy-episode-num',name:'iqiyiPc'},
  2229. {funcName:"playVideo", node:".m-video-player-wrap",match:/^https:\/\/m.iqiyi\.com\/[vwa]\_/,areaClassName:'m-sliding-list'},
  2230. {funcName:"playVideo", node:".intl-video-wrap",match:/^https:\/\/www\.iq\.com\/play\//,areaClassName:'m-sliding-list'},
  2231.  
  2232. {funcName:"playVideo", node:"#player",match:/v\.youku\.com\/v_show\/id_/,areaClassName:'new-box-anthology-items'},
  2233. {funcName:"playVideo", node:"#player",match:/v\.youku\.com\/v_play\/id_/},
  2234.  
  2235. //{funcName:"playVideo", node:".player-container",nodeType:'id',match:/www\.bilibili\.com\/video/},
  2236. {funcName:"playVideo", node:"#bilibili-player",nodeType:'id',match:/www\.bilibili\.com\/video/,name:'biliPc',areaClassName:'video-episode-card'},
  2237. //{funcName:"playVideo", node:"#player_module",nodeType:'id',match:/www\.bilibili\.com\/bangumi/,areaClassName:'list-wrapper'},原来DOM
  2238. {funcName:"playVideo", node:".bpx-player-primary-area",nodeType:'id',match:/www\.bilibili\.com\/bangumi/,areaClassName:'eplist_ep_list_wrapper__PzLHa'},
  2239. {funcName:"playVideo", node:"#mgtv-player-wrap",nodeType:'id',match:/^https?:\/\/www.mgtv\.com\/b|l\/[0-9]/,areaClassName:'episode-items'},
  2240.  
  2241. {funcName:"playVideo", node:".x-player",nodeType:'class',match:/tv\.sohu\.com\/v/,areaClassName:'series-tab_pane'},
  2242. {funcName:"playVideo", node:"#playerWrap",nodeType:'id',match:/film\.sohu\.com\/album\//},
  2243.  
  2244. {funcName:"playVideo", node:"#le_playbox",nodeType:'id',match:/le\.com\/ptv\/vplay\//,areaClassName:'juji_grid'},
  2245.  
  2246. {funcName:"playVideo", node:"#player",nodeType:'id',match:/play\.tudou\.com\/v_show\/id_/},
  2247.  
  2248. {funcName:"playVideo", node:"#pptv_playpage_box",nodeType:'id',match:/v\.pptv\.com\/show\//},
  2249.  
  2250. {funcName:"playVideo", node:"#player",nodeType:'id',match:/vip\.1905.com\/play\//},
  2251.  
  2252. {funcName:"playVideo", node:"#vodPlayer",nodeType:'id',match:/www\.1905.com\/vod\/play\//},
  2253. ];
  2254.  
  2255. let jxVideoWeb = jxVideoData.filter(function(item){
  2256.  
  2257. return location.href.match(item.match);
  2258.  
  2259. })
  2260.  
  2261. playVideoClass.zhmLogoDrag('video',jxVideoWeb);
  2262.  
  2263. //是否在播放页
  2264. if(jxVideoWeb.length > 0){
  2265.  
  2266. var {funcName,match:nowMatch,node:nowNode,name:nowName} = jxVideoWeb[0];
  2267.  
  2268. //鼠标经过显示线路
  2269. document.querySelector('.'+playVideoClass.className.playButton).onmouseover=()=>{
  2270.  
  2271. document.querySelector('.'+playVideoClass.className.playLineDiv).style.display='block';
  2272.  
  2273. }
  2274.  
  2275. document.querySelector('.'+playVideoClass.className.playButton).onmouseout=()=>{
  2276.  
  2277. document.querySelector('.'+playVideoClass.className.playLineDiv).style.display='none';
  2278.  
  2279. }
  2280.  
  2281. //选择线路解析播放
  2282.  
  2283. var playLineTd = document.querySelectorAll('.'+playVideoClass.className.playLineTd);
  2284.  
  2285. playLineTd.forEach(function(item){
  2286.  
  2287. item.addEventListener('click',function(){
  2288.  
  2289. playLineTd.forEach(function(e){
  2290.  
  2291. e.setAttribute('class',`${playVideoClass.className.playLineTd} ${playVideoClass.className.zhm_play_video_line_ul_li}`);
  2292. })
  2293.  
  2294. this.setAttribute('class',`${playVideoClass.className.playLineTd} ${playVideoClass.className.zhm_play_video_line_ul_li} ${playVideoClass.className.zhm_line_selected}`);
  2295.  
  2296. playVideoClass.setCookie('playLineAction',this.getAttribute('url'),30);
  2297.  
  2298. if(GM_getValue('videoPlayLineAdd') != 22){
  2299.  
  2300. let arrNowNode = nowNode.split(',');
  2301.  
  2302. let nowWebNode;
  2303.  
  2304. for(let i=0;i<arrNowNode.length;i++){
  2305.  
  2306. if(document.querySelector(arrNowNode[i])){
  2307.  
  2308. nowWebNode = document.querySelector(nowNode);
  2309.  
  2310. break;
  2311. }
  2312.  
  2313. }
  2314.  
  2315. if(nowWebNode){
  2316.  
  2317. nowWebNode.innerHTML = playJxHtml;
  2318.  
  2319. let playIframe = document.querySelector('#playIframe');
  2320.  
  2321. playIframe.src= item.getAttribute('url')+location.href;
  2322.  
  2323. }else{
  2324.  
  2325. console.log('视频网站结点不存在');
  2326. }
  2327.  
  2328. }else{
  2329.  
  2330. window.open(item.getAttribute('url')+location.href);
  2331.  
  2332. }
  2333.  
  2334. })
  2335.  
  2336. })
  2337.  
  2338. /*--特殊处理--*/
  2339. //优酷去广告
  2340. if(nowNode=="#player"){
  2341.  
  2342. setTimeout(function(){
  2343.  
  2344. let youkuAd = document.querySelector('.advertise-layer');
  2345.  
  2346. let ykAd = youkuAd.lastChild;
  2347.  
  2348. ykAd.parentNode.removeChild(ykAd);
  2349.  
  2350. document.querySelector('.kui-dashboard-0').style='display:flex';
  2351.  
  2352. let playVideo = document.querySelector('.video-layer video');
  2353.  
  2354. playVideo.play();
  2355.  
  2356. let n=0;
  2357.  
  2358. //暂停
  2359. document.querySelector('.kui-play-icon-0').addEventListener('click',function(){
  2360.  
  2361. let video = document.querySelector('.video-layer video');
  2362.  
  2363. if(n++%2 == 0){
  2364.  
  2365. video.pause();
  2366.  
  2367. }else{
  2368.  
  2369. video.play();
  2370. }
  2371.  
  2372. });
  2373.  
  2374. playVideo.addEventListener('timeupdate',function(){ //播放时间改变
  2375.  
  2376. let youkuAd = document.querySelector('.advertise-layer');
  2377.  
  2378. let ykAd = youkuAd.lastChild;
  2379.  
  2380.  
  2381. if(ykAd){
  2382.  
  2383. ykAd.parentNode.removeChild(ykAd);
  2384. }
  2385.  
  2386. document.querySelector('.kui-dashboard-0').style='display:flex';
  2387. });
  2388.  
  2389. //键盘快进快退暂停播放
  2390. document.onkeydown = function(event){
  2391. //console.log(event.keyCode);
  2392. let video = document.querySelector('.video-layer video');
  2393.  
  2394. if(event.keyCode==39){
  2395.  
  2396. video.currentTime = video.currentTime + 5;
  2397.  
  2398. }
  2399. if(event.keyCode==37){
  2400.  
  2401. video.currentTime = video.currentTime - 5;
  2402.  
  2403. }
  2404.  
  2405. if(event.keyCode==32){
  2406.  
  2407. if(n++%2 == 0){
  2408.  
  2409. video.pause();
  2410.  
  2411. }else{
  2412.  
  2413. video.play();
  2414. }
  2415. }
  2416. }
  2417.  
  2418. },3000)
  2419. }
  2420. //爱奇艺去广告
  2421. if(nowNode=="#flashbox"){
  2422.  
  2423. setTimeout(function(){
  2424.  
  2425. let dom = document.querySelector('.skippable-after');
  2426.  
  2427. if(dom){
  2428.  
  2429. dom.click();
  2430.  
  2431. }
  2432.  
  2433. },3000)
  2434.  
  2435. }
  2436.  
  2437. //腾讯去vip弹窗
  2438. if(nowNode=="#player-container"){
  2439.  
  2440. let n = 0;
  2441.  
  2442. let timer = setInterval(function(){
  2443.  
  2444. if(n++ < 100){
  2445.  
  2446. let panelTipVip = document.querySelector('.panel-overlay');
  2447.  
  2448. if(panelTipVip){
  2449.  
  2450. panelTipVip.style.display='none';
  2451.  
  2452. clearInterval(timer);
  2453. }
  2454.  
  2455. let panelTipVip2 = document.querySelector('.panel-tip-pay');
  2456.  
  2457. if(panelTipVip2){
  2458.  
  2459. panelTipVip2.style.display='none';
  2460.  
  2461. clearInterval(timer);
  2462.  
  2463. }
  2464.  
  2465. }else{
  2466.  
  2467. clearInterval(timer);
  2468.  
  2469. }
  2470.  
  2471. },100)
  2472.  
  2473.  
  2474.  
  2475. }
  2476. //乐视选集处理
  2477. if(nowNode == "#le_playbox"){
  2478.  
  2479. setTimeout(function(){
  2480.  
  2481. let jBlock = document.querySelectorAll('.j_block');
  2482.  
  2483. if(!jBlock) return;
  2484.  
  2485. for(let i=0;i<jBlock.length;i++){
  2486.  
  2487. let videoId = jBlock[i].getAttribute('data-vid');
  2488.  
  2489. let link = `https://www.le.com/ptv/vplay/${videoId}.html`;
  2490.  
  2491. jBlock[i].firstChild.setAttribute('href',link);
  2492. }
  2493. },3000)
  2494. }
  2495.  
  2496. //B站大会员url处理,页面class不一致
  2497. if(nowNode == ".player-container"){
  2498.  
  2499. setTimeout(function(){
  2500.  
  2501. if(!document.querySelector('.player-container') && !document.querySelector('.bpx-player-container')){
  2502.  
  2503. nowNode = '.player-mask';
  2504.  
  2505. }else{
  2506.  
  2507. nowNode = '.bpx-player-container';
  2508. }
  2509.  
  2510. },3000)
  2511. }
  2512.  
  2513. /*腾讯视频点击其它视频跳转*/
  2514. if(nowName=='qqPC'){
  2515.  
  2516. let figure = document.querySelectorAll('.figure');
  2517.  
  2518. let figureDetail = document.querySelectorAll('.figure_detail');
  2519.  
  2520. let listItem = [...figure,...figureDetail];
  2521.  
  2522. if(listItem.length > 0){
  2523.  
  2524. listItem.forEach(function(item){
  2525.  
  2526. item.addEventListener('click',function(){
  2527.  
  2528. let link = this.getAttribute('href');
  2529.  
  2530. if(link){
  2531.  
  2532. location.href = link;
  2533.  
  2534. return;
  2535. }
  2536.  
  2537. })
  2538.  
  2539. });
  2540.  
  2541. }
  2542.  
  2543. }
  2544. //注释是多个播放选集区域
  2545. /*
  2546. let eareClassNameArr = jxVideoWeb[0].areaClassName.split(',');
  2547.  
  2548. console.log(eareClassNameArr);return;
  2549.  
  2550. if(eareClassNameArr.length==0)return;
  2551. */
  2552. setTimeout(function(){
  2553. /*
  2554. for(let i=0;i<eareClassNameArr.length;i++){
  2555.  
  2556. if(document.querySelector('.'+eareClassNameArr[i])){
  2557.  
  2558. videoSelect.addEventListener('click',function(e){
  2559.  
  2560. //console.log(e.target.parentNode.href);
  2561.  
  2562. setTimeout(function(){
  2563.  
  2564. location.href=location.href;
  2565.  
  2566. },1000)
  2567.  
  2568. });
  2569.  
  2570. }
  2571.  
  2572. }
  2573. */
  2574.  
  2575. let videoSelect = document.querySelectorAll('.'+jxVideoWeb[0].areaClassName);
  2576.  
  2577. if(videoSelect.length==0){console.log('该网站播放区类名改变');return;}
  2578.  
  2579. videoSelect.forEach(function(item){
  2580.  
  2581. item.addEventListener('click',function(e){
  2582.  
  2583. //console.log(e.target.parentNode.href);
  2584.  
  2585. setTimeout(function(){
  2586.  
  2587. location.href=location.href;
  2588.  
  2589. },1000)
  2590.  
  2591. });
  2592.  
  2593. });
  2594.  
  2595. },2000);
  2596. }
  2597.  
  2598. }
  2599.  
  2600. playVideoFunc();
  2601.  
  2602. }
  2603. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址