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

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

目前为 2024-04-26 提交的版本。查看 最新版本

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

QingJ © 2025

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