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

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

目前为 2023-08-24 提交的版本。查看 最新版本

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

QingJ © 2025

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