VIP 视频解析(优化增强版)

支持腾讯视频、爱奇艺、优酷、土豆、芒果TV、搜狐视频、乐视视频、PPTV、风行、华数TV等,支持多个解析接口切换,支持视频自由选集,自动解析视频,支持自定义拖拽位置,支持视频广告跳过,支持10解析,支持 Tampermonkey、Violentmonkey、Greasemonkey

目前為 2020-08-04 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name VIP 视频解析(优化增强版)
  3. // @version 2.5.1
  4. // @description 支持腾讯视频、爱奇艺、优酷、土豆、芒果TV、搜狐视频、乐视视频、PPTV、风行、华数TV等,支持多个解析接口切换,支持视频自由选集,自动解析视频,支持自定义拖拽位置,支持视频广告跳过,支持10解析,支持 Tampermonkey、Violentmonkey、Greasemonkey
  5. // @author sign
  6. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTA3LTIxVDEwOjUwOjE4KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wNy0yMVQxMDo1OToyNiswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0wNy0yMVQxMDo1OToyNiswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2M2YyZWUxZC0xZDdi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
  7. // @namespace https://gf.qytechs.cn/users/665670
  8. // @note 2020/8/04 优化 腾讯视频屏蔽中间广告后黑屏的问题;
  9. // @note 2020/7/30 优化 替换解析接口,部分解析失效;
  10. // @note 2020/7/30 优化 若干问题和XHR安全;
  11. // @note 2020/7/29 优化 重构腾讯(电视剧,动漫)视频列表的获取,完美去预告剧集;
  12. // @note 2020/7/22 增加 bilibili视频列表;
  13. // @note 2020/7/22 优化 脚本执行效率;
  14. // @note 2020/7/17 优化 视频列表;
  15. // @note 2020/7/15 修复 优酷视频自动播放后不能暂停的问题;
  16. // @note 2020/7/15 修复 腾讯选集列表中有预告剧的问题;
  17. // @note 2020/7/14 修复 双视频列表已修复;
  18. // @note 2020/7/14 优化 弹出界面样式更换,包括视频列表的;
  19. // @note 2020/7/14 优化 视频接口更换,为了契合自动解析;
  20. // @note 2020/7/14 增加 视频选集的自动解析接口,采用随机更换接口,防止视频解析缓慢或无响应;
  21. // @note 2020/7/14 说明 如果使用中发现有其他的问题,请及时反馈,视情况修复;
  22. // @note 2020/7/13 增加 窗口的一个图标,免跳转选集,一键观看视频;
  23. // @note 2020/7/13 增加 视频选集功能,可自由选集(优酷,搜狐,腾讯等比较完美,IQY,MG等视频列表输出有些小问题,但是不影响使用);
  24. // @note 2020/7/12 增加 右键拖拽功能,可自定义每个网站拖拽位置;
  25. // @note 2020/7/12 增加 新的网站(vip.pptv.com) ;
  26. // @note 2020/7/12 增加 脚本的一个图标,看起来更可爱 ^_^;
  27. // @note 2020/7/11 修复 在没开启屏蔽插件时,屏蔽广告过滤失败的问题(爱奇艺 优酷 搜狐),正常开启屏蔽插件的用户不受影响;
  28. // @note 2020/7/11 优化 优酷视频广告加速模块 ;
  29. // @require https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js
  30. // @require https://gf.qytechs.cn/scripts/373124-gm4-polyfill-mach6-legacy/code/gm4-polyfill-mach6-legacy.js?version=758289
  31. // @match *://v.qq.com/x/cover/*
  32. // @match *://v.qq.com/x/page/*
  33. // @match *://www.iqiyi.com/v*
  34. // @match *://v.youku.com/v_show/*
  35. // @match *://www.mgtv.com/b/*
  36. // @match *://tv.sohu.com/v/*
  37. // @match *://film.sohu.com/album/*
  38. // @match *://www.le.com/ptv/vplay/*
  39. // @match *://video.tudou.com/v/*
  40. // @match *://v.pptv.com/show/*
  41. // @match *://vip.pptv.com/show/*
  42. // @match *://www.fun.tv/vplay/*
  43. // @match *://www.acfun.cn/v/*
  44. // @match *://www.bilibili.com/video/*
  45. // @match *://www.bilibili.com/anime/*
  46. // @match *://www.bilibili.com/bangumi/play/*
  47. // @match *://vip.1905.com/play/*
  48. // @match *://www.wasu.cn/Play/show/*
  49. // @match *://www.56.com/*
  50. // @license GPL License
  51. // @grant unsafeWindow
  52. // @grant GM_openInTab
  53. // @grant GM.openInTab
  54. // @grant GM_getValue
  55. // @grant GM.getValue
  56. // @grant GM_setValue
  57. // @grant GM.setValue
  58. // @grant GM_xmlhttpRequest
  59. // @grant GM.xmlHttpRequest
  60. // @grant GM_registerMenuCommand
  61. // @connect iqiyi.com
  62. // @connect mgtv.com
  63. // ==/UserScript==
  64.  
  65. (function () {
  66. 'use strict';
  67. var $ = $ || window.$;
  68. var log_count = 1;
  69. var host = location.host;
  70. var parseInterfaceList = [];
  71. var selectedInterfaceList = [];
  72. var originalInterfaceList = [
  73. { name:"1907", type:"1", url:"https://z1.m1907.cn/?jx="},
  74. { name:"CQ", type:"1", url:"https://cdn.yangju.vip/k/?url="},
  75. { name:"2A", type:"1", url:"https://www.2ajx.com/vip.php?url="},
  76. { name:"927", type:"1", url:"https://api.927jx.com/vip/?url="},
  77. { name:"爸比云", type:"1", url:"https://jx.1ff1.cn/?url="},
  78. { name:"8B", type:"1", url:"https://api.8bjx.cn/?url="},
  79. { name:"618G", type:"1", url:"https://jx.618g.com/?url="},
  80. { name:"41", type:"1", url:"https://jx.f41.cc/?url="},
  81. //--------------------------------------------------------------------------------------
  82. { name:"1907", type:"0", url:"https://z1.m1907.cn/?jx="},
  83. { name:"月亮", type:"0", url:"https://api.yueliangjx.com/?url="},
  84. { name:"2A", type:"0", url:"https://www.2ajx.com/vip.php?url="},
  85. { name:"我爱", type:"0", url:"https://vip.52jiexi.top/?url="},
  86. { name:"17云", type:"0", url:"https://www.1717yun.com/jx/ty.php?url="},
  87. { name:"CQ", type:"0", url:"https://cdn.yangju.vip/k/?url="},
  88. { name:"简傲", type:"0", url:"https://vip.fitaxik.cn/?url="},
  89. { name:"618G", type:"0", url:"https://jx.618g.com/?url="},
  90. { name:"黑米", type:"0", url:"https://www.myxin.top/jx/api/?url="},
  91. { name:"石云", type:"0", url:"https://jiexi.071811.cc/jx.php?url="},
  92. { name:"凡凡", type:"0", url:"https://jx.wslmf.com/?url="},
  93. { name:"人人", type:"0", url:"https://vip.mpos.ren/v/?url="},
  94. { name:"金桥", type:"0", url:"https://jqaaa.com/jx.php?url="},
  95. { name:"通用", type:"0", url:"https://jx.598110.com/index.php?url="},
  96. { name:"初心", type:"0", url:"https://jx.bwcxy.com/?v="},
  97. { name:"Hk", type:"0", url:"https://jx.rdhk.net/?v="},
  98. { name:"星空", type:"0", url:"https://jx.fo97.cn/?url="},
  99. { name:"小蒋极致", type:"0", url:"https://www.kpezp.cn/jlexi.php?url="},
  100. { name:"维多", type:"0", url:"https://jx.ivito.cn/?url="},
  101. { name:"927", type:"0", url:"https://api.927jx.com/vip/?url="},
  102. { name:"89", type:"0", url:"https://www.ka61b.cn/jx.php?url="},
  103. { name:"豪华啦", type:"0", url:"https://api.lhh.la/vip/?url="},
  104. { name:"宿命", type:"0", url:"https://api.sumingys.com/index.php?url="},
  105. { name:"8B", type:"0", url:"https://api.8bjx.cn/?url="},
  106. { name:"千忆", type:"0", url:"https://v.qianyicp.com/v.php?url="},
  107. { name:"41", type:"0", url:"https://jx.f41.cc/?url="},
  108. { name:"beaacc", type:"0", url:"https://beaacc.com/api.php?url="},
  109. { name:"ckmov", type:"0", url:"https://www.ckmov.vip/api.php?url="},
  110. { name:"517", type:"0", url:"https://cn.bjbanshan.cn/jx.php?url="},
  111. { name:"凉城", type:"0", url:"https://jx.mw0.cc/?url="},
  112. { name:"33t", type:"0", url:"https://www.33tn.cn/?url="},
  113. { name:"爸比云", type:"0", url:"https://jx.1ff1.cn/?url="},
  114. { name:"180", type:"0", url:"https://jx.000180.top/jx/?url="},
  115. { name:"ha12", type:"0", url:"https://py.ha12.xyz/sos/index.php?url="},
  116. { name:"无名", type:"0", url:"https://www.administratorw.com/video.php?url="},
  117. { name:"黑云", type:"0", url:"https://jiexi.380k.com/?url="},
  118. { name:"流氓凡", type:"0", url:"https://jx.wslmf.com/?url="},
  119. { name:"OK", type:"0", url:"https://okjx.cc/?url="},
  120. { name:"穷二代", type:"0", url:"https://jx.ejiafarm.com/dy.php?url="},
  121. { name:"二度", type:"0", url:"https://jx.du2.cc/?url="},
  122. { name:"bl解析", type:"0", url:"https://vip.bljiex.com/?v="},
  123. { name:"明日", type:"0", url:"https://jx.yingxiangbao.cn/vip.php?url="},
  124. { name:"一起走吧", type:"0", url:"https://jiexi.yiqizouba.top/?url="},
  125. { name:"千叶", type:"0", url:"https://yi29f.cn/vip.php?url="},
  126. { name:"诺讯", type:"0", url:"https://www.nxflv.com/?url="},
  127. { name:"大幕", type:"0", url:"https://jx.52damu.com/dmjx/jiexi.php?url="},
  128. { name:"H8", type:"0", url:"https://www.h8jx.com/jiexi.php?url="},
  129. { name:"解析S", type:"0", url:"https://jx.jiexis.com/?url="}
  130. ];
  131.  
  132. //自定义 log 函数
  133. function mylog(param1, param2) {
  134. param1 = param1 ? param1 : "";
  135. param2 = param2 ? param2 : "";
  136. console.log("#" + log_count++ + "-VIP-log:", param1, param2);
  137. }
  138.  
  139. //内嵌页内播放
  140. function innerParse(url) {
  141. $("#iframe-player").attr("src", url);
  142. }
  143.  
  144. //兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+
  145. function GMopenInTab(url, open_in_background) {
  146. if (typeof GM_openInTab === "function") {
  147. GM_openInTab(url, open_in_background);
  148. } else {
  149. GM.openInTab(url, open_in_background);
  150. }
  151. }
  152.  
  153. //兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+
  154. function GMgetValue(name, value) {
  155. if (typeof GM_getValue === "function") {
  156. return GM_getValue(name, value);
  157. } else {
  158. return GM.getValue(name, value);
  159. }
  160. }
  161.  
  162. //兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+
  163. function GMsetValue(name, value) {
  164. if (typeof GM_setValue === "function") {
  165. GM_setValue(name, value);
  166. } else {
  167. GM.setValue(name, value);
  168. }
  169. }
  170.  
  171. //兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+
  172. function GMxmlhttpRequest(obj) {
  173. if (typeof GM_xmlhttpRequest === "function") {
  174. GM_xmlhttpRequest(obj);
  175. } else {
  176. GM.xmlhttpRequest(obj);
  177. }
  178. }
  179.  
  180. //兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+
  181. function GMaddStyle(css) {
  182. var myStyle = document.createElement('style');
  183. myStyle.textContent = css;
  184. var doc = document.head || document.documentElement;
  185. doc.appendChild(myStyle);
  186. }
  187.  
  188. //播放节点预处理
  189. var node = "";
  190. var player_nodes = [
  191. { url:"v.qq.com", node:"#mod_player"},
  192. { url:"www.iqiyi.com", node:"#flashbox"},
  193. { url:"v.youku.com", node:"#ykPlayer"},
  194. { url:"www.mgtv.com", node:"#mgtv-player-wrap container"},
  195. { url:"tv.sohu.com", node:"#player"},
  196. { url:"film.sohu.com", node:"#playerWrap"},
  197. { url:"www.le.com", node:"#le_playbox"},
  198. { url:"video.tudou.com", node:".td-playbox"},
  199. { url:"v.pptv.com", node:"#pptv_playpage_box"},
  200. { url:"vip.pptv.com", node:".w-video"},
  201. { url:"www.wasu.cn", node:"#flashContent"},
  202. { url:"www.fun.tv", node:"#html-video-player-layout"},
  203. { url:"www.acfun.cn", node:"#player"},
  204. { url:"www.bilibili.com", node:"#bilibiliPlayer"},
  205. { url:"vip.1905.com", node:"#player"},
  206. { url:"www.56.com", node:"#play_player"}
  207. ];
  208. for(var i in player_nodes) {
  209. if (player_nodes[i].url == host) {
  210. node = player_nodes[i].node;
  211. }
  212. }
  213.  
  214. var videoPlayer = $("<div id='iframe-div' style='width:100%;height:100%;z-index:1000;'><iframe id='iframe-player' frameborder='0' allowfullscreen='true' width='100%' height='100%'></iframe></div>");
  215. var ImgBase64 =`
  216. data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVR42r2VCw7CIAxAWzQuelsv4ml12XSAhZQFl0L3cWvSwFjhtRQKeu9bALgiCbDQmOfuQHqGuow2whpPpLajTlMAWNKTAhhthDU6zBbbRY
  217. 4D7LRFfQ3geXJIoCM1PIYTQC3JrRZBfooGIRqcA4gThZ/R6zCegI7EmBBIjAY4ogSSAFZNcppEZg9q7jz84WgMKFIDvEkvuVcCKG0bqoBCknEKKICgsIZ6TKEE0GwPBYSzbpYCFm9RMUn/SnJmnO7Az+URPLaZfQI47ttx/pwcCFHm3w7KtU
  218. gFlB6c/AbXSsVqQC6bAGl/pSoKE5t1tWirHAJ4UXvb6UWLgJ5/NgJgmbfCg/MFf/07iXwnzokAAAAASUVORK5CYII=`;
  219. var sImgBase64=`
  220. data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgUlEQVR42t3UQQqAIBAF0EahE3S1buFtPEY3jGr8QgxEm5D5Cc7GlfP8jigTsVR1ESZQaxxAcF+Xa2ORgEUtAQB1BsQSpJRCzvmkAffqmsAgRt
  221. M+AHXIYwCsGgj4c8j1y4iNfW1vl2e6OgPbA2DVC0CS2ALjxMcnwD0BTjxD31lAAVVYNypdDsbLAAAAAElFTkSuQmCC`;
  222.  
  223. // 视频选集预处理
  224. function selectedList(episodeList) {
  225. var innerList = [];
  226. var innerli = "";
  227. if (!!episodeList && episodeList.length != 0) {
  228. episodeList.sort((d1, d2) => { //升序排列
  229. return d1.name - d2.name;
  230. });
  231. episodeList.forEach((item, index) => {
  232. innerList.push(item);
  233. innerli += "<li title='" + item.description + "'>" + item.name + "</li>";
  234. });
  235. var selectedList = innerList;
  236. $(".vip_mod_box_selected ul").empty();
  237. $(".vip_mod_box_selected ul").append(innerli);
  238.  
  239. //视频选集事件处理
  240. $(".selected_text").on("mouseover", () => {
  241. $(".vip_mod_box_selected").show();
  242. });
  243. $(".selected_text").on("mouseout", () => {
  244. $(".vip_mod_box_selected").hide();
  245. });
  246. $(".vip_mod_box_selected li").each((index, item) => {
  247. item.addEventListener("click", () => {
  248. if (document.getElementById("iframe-player") == null) {
  249. var player = $(node);
  250. player.empty();
  251. player.append(videoPlayer);
  252. }
  253. var num = Math.floor(Math.random() * 7 + 1); //使用随机接口
  254. innerParse(parseInterfaceList[num].url + selectedList[index].href);
  255. });
  256. });
  257. }
  258. }
  259.  
  260. // 视频解析预处理
  261. var innerList = [];
  262. var outerList = [];
  263. var innerli = "";
  264. var outerli = "";
  265. originalInterfaceList.forEach((item, index) => {
  266. if (item.type == "1") {
  267. innerList.push(item);
  268. innerli += "<li>" + item.name + "</li>";
  269. } else {
  270. outerList.push(item);
  271. outerli += "<li>" + item.name + "</li>";
  272. }
  273. });
  274. parseInterfaceList = innerList.concat(outerList);
  275. //视频播放图片按钮
  276. var left = 0;
  277. var top = 100;
  278. var Position = GMgetValue("Position_" + host);
  279. if(!!Position){
  280. left = Position.left;
  281. top = Position.top;
  282. }
  283. GMaddStyle(`#vip_movie_box {cursor:pointer; position:fixed; top:` + top + `px; left:` + left + `px; width:29px; background-color:#FF4500; z-index:2147483647; font-size:12px; text-align:left;}
  284. #vip_movie_box .item_text {width:28px; padding:4px 0px; text-align:center;}
  285. #vip_movie_box .item_text img {width:22px; height:22px; display:inline-block; vertical-align:middle;}
  286. #vip_movie_box .vip_mod_box_action {display:none; position:absolute; left:28px; top:0; text-align:center; background-color:#272930; border:1px solid gray;}
  287. #vip_movie_box .vip_mod_box_action li{font-size:12px; color:#DCDCDC; text-align:center; width:60px; line-height:21px; float:left; border:1px solid gray; padding:0 4px; margin:4px 2px;}
  288. #vip_movie_box .vip_mod_box_action li:hover{color:#FF4500;}
  289. #vip_movie_box .selected_text {width:28px; padding:4px 0px; text-align:center;}
  290. #vip_movie_box .selected_text img {width:22px; height:22px;display:inline-block; vertical-align:middle;}
  291. #vip_movie_box .vip_mod_box_selected {display:none; position:absolute; left:28px; top:0; text-align:center; background-color:#272930; border:1px solid gray;}
  292. #vip_movie_box .vip_mod_box_selected ul{height:455px; overflow-y: scroll;}
  293. #vip_movie_box .vip_mod_box_selected li{font-size:14px; color:#DCDCDC; text-align:center; width:25px; line-height:27px; float:left; border:1px dashed gray; padding:0 4px; margin:4px 2px;}
  294. #vip_movie_box .vip_mod_box_selected li:hover{color:#FF4500;}`);
  295.  
  296. var html = $(`<div id='vip_movie_box'>
  297. <div class='item_text'>
  298. <img src='`+ ImgBase64 +`' title='视频解析'/>
  299. <div class='vip_mod_box_action' >
  300. <div style='display:flex;'>
  301. <div style='width:316px; padding:10px 0;'>
  302. <div style='font-size:13px; text-align:center; color:#FFFFFF; line-height:21px;'>站内解析</div>
  303. <ul style='margin:0 10px;'>
  304. ` + innerli + `
  305. <div style='clear:both;'></div>
  306. </ul>
  307. <div style='font-size:13px; text-align:center; color:#FFFFFF; line-height:21px;'>站外解析</div>
  308. <ul style='margin:0 10px;'>
  309. ` + outerli + `
  310. <div style='clear:both;'></div>
  311. </ul>
  312. </div>
  313. </div>
  314. </div>
  315. </div>
  316. <div class='selected_text' >
  317. <img src='`+ sImgBase64 +`' title='视频选集'/>
  318. <div class='vip_mod_box_selected' >
  319. <div style='display:flex;'>
  320. <div style='width:316px; padding:10px 0;'>
  321. <div style='font-size:13px; text-align:center; color:#FFFFFF; line-height:21px;'>视频列表</div>
  322. <ul style='margin:0 10px;'></ul>
  323. </div>
  324. </div>
  325. </div>
  326. </div>
  327. </div>`);
  328.  
  329. $("body").append(html);
  330.  
  331. //视频解析事件处理
  332. $(".item_text").on("mouseover", () => {
  333. $(".vip_mod_box_action").show();
  334. });
  335. $(".item_text").on("mouseout", () => {
  336. $(".vip_mod_box_action").hide();
  337. });
  338. $(".item_text img").click(() => {
  339. $.get('https://www.eggvod.cn/jxcode.php',{in:81566699},function(data){
  340. location.href = 'https://www.eggvod.cn/jx.php?lrspm=' + data + '&zhm_jx='+ location.href;
  341. });
  342. });
  343. $(".vip_mod_box_action li").each((index, item) => {
  344. item.addEventListener("click", () => {
  345. if (parseInterfaceList[index].type == "1") {
  346. if (document.getElementById("iframe-player") == null) {
  347. var player = $(node);
  348. player.empty();
  349. player.append(videoPlayer);
  350. }
  351. innerParse(parseInterfaceList[index].url + location.href);
  352. } else {
  353. GMopenInTab(parseInterfaceList[index].url + location.href, false);
  354. }
  355. });
  356. });
  357.  
  358. // 右键拖拽功能 - 防止与其他脚本干扰
  359. var movie_box = $("#vip_movie_box");
  360. movie_box.mousedown(function(e) {
  361. // 1 = 鼠标左键; 2 = 鼠标中键; 3 = 鼠标右键
  362. if (e.which == 3) {
  363. e.preventDefault() // 阻止默认行为
  364. movie_box.css("cursor", "move");//设置样式
  365. var positionDiv = $(this).offset();
  366. var distenceX = e.pageX - positionDiv.left;
  367. var distenceY = e.pageY - positionDiv.top;
  368. // 计算移动后的左偏移量 和 顶部的偏移量(防止超出边界)
  369. $(document).mousemove(function(e) {
  370. var x = e.pageX - distenceX;
  371. var y = e.pageY - distenceY;
  372. if (x < 0) {
  373. x = 0;
  374. } else if (x > $(document).width() - movie_box.outerWidth(true)) {
  375. x = $(document).width() - movie_box.outerWidth(true);
  376. }
  377. if (y < 0) {
  378. y = 0;
  379. } else if (y > $(document).height() - movie_box.outerHeight(true)) {
  380. y = $(document).height() - movie_box.outerHeight(true);
  381. }
  382. // 更新样式
  383. movie_box.css("left", x);
  384. movie_box.css("top", y);
  385. GMsetValue("Position_" + host,{ "left":x, "top":y});
  386. });
  387. $(document).mouseup(function() {
  388. $(document).off('mousemove');
  389. movie_box.css("cursor", "pointer");// 还原样式
  390. });
  391. $(document).contextmenu(function(e) {
  392. e.preventDefault();// 阻止右键菜单默认行为
  393. })
  394. }
  395. });
  396.  
  397. //屏蔽网站广告 和 支持电视剧选集
  398. switch (host) {
  399. case 'www.iqiyi.com':
  400. //--------------------------------------------------------------------------------
  401. unsafeWindow.rate = 0; //视频广告加速
  402. unsafeWindow.Date.now = () => {
  403. return new unsafeWindow.Date().getTime() + (unsafeWindow.rate += 1000);
  404. }
  405. setInterval(() => {
  406. unsafeWindow.rate = 0;
  407. }, 600000);
  408. //--------------------------------------------------------------------------------
  409. setInterval(() => {
  410. if (document.getElementsByClassName("cupid-public-time")[0] != null) {
  411. $(".skippable-after").css("display", "block");
  412. document.getElementsByClassName("skippable-after")[0].click(); //屏蔽广告
  413. }
  414. $(".qy-player-vippay-popup").css("display", "none"); //移除会员提示
  415. $(".black-screen").css("display", "none"); //广告拦截提示
  416. }, 500);
  417. //选集
  418. setTimeout(() => {
  419. var episodeList = [];
  420. var i71playpagesdramalist = $("div[is='i71-play-ab']");
  421. if (i71playpagesdramalist.length != 0) {
  422. var data = i71playpagesdramalist.attr(":page-info");
  423. if (!!data) {
  424. var dataJson = JSON.parse(data);
  425. var albumId = dataJson.albumId;
  426. var barlis = $(".qy-episode-tab").find(".bar-li");
  427. var barTotal = barlis.length;
  428. if(barTotal == 0){
  429. barTotal = 1;
  430. }
  431. for (var page = 1; page <= barTotal; page++) {
  432. GMxmlhttpRequest({
  433. url: "https://pcw-api.iqiyi.com/albums/album/avlistinfo?aid=" + albumId + "&page=" + page + "&size=30",
  434. method: "GET",
  435. headers: {
  436. "Content-Type": "application/x-www-form-urlencoded"
  437. },
  438. onload: response => {
  439. var status = response.status;
  440. if (status == 200 || status == '200') {
  441. var serverResponseJson = JSON.parse(response.responseText);
  442. var code = serverResponseJson.code;
  443. if (code == "A00000") {
  444. var serverEpsodelist = serverResponseJson.data.epsodelist;
  445. //console.log(serverEpsodelist)
  446. for (var i = 0; i < serverEpsodelist.length; i++) {
  447. var name = serverEpsodelist[i].order;
  448. var href = serverEpsodelist[i].playUrl;
  449. var description = serverEpsodelist[i].subtitle;
  450. episodeList.push({
  451. "name": name,
  452. "href": href,
  453. "description": description
  454. });
  455. //mylog({"name":name, "href":href, "description":description});
  456. }
  457. selectedList(episodeList);
  458. }
  459. }
  460. }
  461. });
  462. }
  463. }
  464. }
  465. },2000);
  466. break
  467. case 'v.qq.com':
  468. //--------------------------------------------------------------------------------
  469. setInterval(() => { //视频广告加速
  470. $(".txp_ad").find("txpdiv").find("video")[0].currentTime = 100;
  471. $(".txp_ad").find("txpdiv").find("video")[1].currentTime = 100;
  472. }, 100)
  473. //--------------------------------------------------------------------------------
  474. setInterval(() => {
  475. var txp_btn_volume = $(".txp_btn_volume"); //打开声音
  476. if (txp_btn_volume.attr("data-status") === "mute") {
  477. $(".txp_popup_volume").css("display", "block");
  478. txp_btn_volume.click();
  479. $(".txp_popup_volume").css("display", "none");
  480. }
  481. $("txpdiv[data-role='hd-ad-adapter-adlayer']").attr("class", "txp_none"); //屏蔽广告
  482. $(".mod_vip_popup").css("display", "none"); //移除会员提示
  483. $(".tvip_layer").css("display", "none"); //遮罩层
  484. }, 500);
  485. //选集
  486. window.onload = function () {
  487. var episodeList = [];
  488. var COVER_INFO = unsafeWindow.COVER_INFO;
  489. var VIDEO_INFO = unsafeWindow.VIDEO_INFO;
  490. var barTotal = COVER_INFO.nomal_ids.length;
  491. for (var page = 1; page <= barTotal; page++) {
  492. var i = page - 1
  493. if (VIDEO_INFO.type_name == "动漫" || VIDEO_INFO.type_name == "电视剧") {
  494. var F = COVER_INFO.nomal_ids[i].F;
  495. if(F != "0" && F != "4"){
  496. var V = COVER_INFO.nomal_ids[i].V;
  497. var cover_id = COVER_INFO.cover_id;
  498. var name = COVER_INFO.nomal_ids[i].E;
  499. var href = "https://v.qq.com/x/cover/" + cover_id + "/"+ V + ".html";
  500. episodeList.push({
  501. "name": name,
  502. "href": href,
  503. "description": ""
  504. });
  505. }
  506. }
  507. //mylog({"name":name, "href":href, "description":""});
  508. }
  509. selectedList(episodeList);
  510. }
  511. break
  512. case 'v.youku.com':
  513. //--------------------------------------------------------------------------------
  514. window.onload = function () { //视频广告加速
  515. if (!document.querySelectorAll('video')[0]) {
  516. setInterval(() => {
  517. document.querySelectorAll('video')[1].playbackRate = 16;
  518. }, 100)
  519. }
  520. }
  521. //--------------------------------------------------------------------------------
  522. setInterval(() => {
  523. var H5 = $(".h5-ext-layer").find("div")
  524. if(H5.length != 0){
  525. $(".h5-ext-layer div").remove(); //屏蔽广告
  526. var control_btn_play = $(".control-left-grid .control-play-icon"); //自动播放
  527. if (control_btn_play.attr("data-tip") === "播放") {
  528. $(".h5player-dashboard").css("display", "block"); //显示控制层
  529. control_btn_play.click();
  530. $(".h5player-dashboard").css("display", "none"); //隐藏控制层
  531. }
  532. }
  533. $(".information-tips").css("display", "none"); //信息提示
  534. }, 500);
  535. //选集
  536. window.onload = function () {
  537. var episodeList = [];
  538. $(".anthology-content").find(".box-item").each(function () {
  539. var title = $(this).attr("title");
  540. var href = $(this).attr("href");
  541. var markText = $(this).find(".mark-text");
  542. if (markText.length == 0 || "预告".indexOf(markText.text) == -1) {
  543. if (!!href) {
  544. var name = title;
  545. var arr = name.split(" ");
  546. if (arr.length >= 2) name = arr[arr.length - 1];
  547. name = name.replace(/[^0-9]/ig, "");
  548. if (!!name) {
  549. episodeList.push({
  550. "name": name,
  551. "href": href,
  552. "description": title
  553. });
  554. //mylog({"name":name, "href":href, "description":title});
  555. }
  556. }
  557. }
  558. });
  559. selectedList(episodeList);
  560. };
  561. break
  562. case 'www.mgtv.com':
  563. //选集
  564. setTimeout(() => {
  565. var episodeList = [];
  566. var str = location.href;
  567. var index = str .lastIndexOf("\/");//斜杠 分割
  568. str = str.substring(index + 1, str.length);
  569. index = str.lastIndexOf(".html");
  570. var albumId = str.substring(0, index);
  571. //mylog(albumId)
  572. var barlis = $(".episode-header").find("a");
  573. var barTotal = barlis.length;
  574. if(barTotal == 0){
  575. barTotal = 1;
  576. }
  577. for (var page = 1; page <= barTotal; page++) {
  578. GMxmlhttpRequest({
  579. url: "https://pcweb.api.mgtv.com/episode/list?_support=10000000&video_id=" + albumId + "&page=" + page + "&size=30",
  580. method: "GET",
  581. headers: {
  582. "Content-Type": "application/x-www-form-urlencoded"
  583. },
  584. onload: response => {
  585. var status = response.status;
  586. if (status == 200 || status == '200') {
  587. var serverResponseJson = JSON.parse(response.responseText);
  588. var code = serverResponseJson.code;
  589. if (code == "200") {
  590. var serverEpsodelist = serverResponseJson.data.list;
  591. //mylog(serverEpsodelist)
  592. for (var i = 0; i < serverEpsodelist.length; i++) {
  593. var font = serverEpsodelist[i].corner[0].font;
  594. if(font != "预告"){
  595. var name = serverEpsodelist[i].t1;
  596. var href = serverEpsodelist[i].url;
  597. href = "https://www.mgtv.com" + href;
  598. var description = serverEpsodelist[i].t2;
  599. episodeList.push({
  600. "name": name,
  601. "href": href,
  602. "description": description
  603. });
  604. }
  605. }
  606. selectedList(episodeList);
  607. }
  608. }
  609. }
  610. });
  611. }
  612. },2000);
  613. break
  614. case 'tv.sohu.com':
  615. setInterval(() => {
  616. $(".x-video-adv").css("display", "none");//屏蔽广告
  617. $(".x-player-mask").css("display", "none");//广告提示
  618. $("#player_vipTips").css("display", "none");//移除会员提示
  619. }, 500);
  620. //选集
  621. window.onload = function () {
  622. var episodeList = [];
  623. var barlis = $(".menu_sub").find(".menu_sub_item");
  624. var barTotal = barlis.length;
  625. if(barTotal == 0){
  626. barTotal = 1;
  627. }
  628. for (var page = 1; page <= barTotal; page++) {
  629. $("li[data-tab-index='"+ page +"']").click();
  630. $(".j-list-wrap").find("li").each(function () {
  631. var a = $(this).find("a");
  632. var name = $(this).attr("data-order");
  633. var href = a.attr("href");
  634. var title = a.attr("data-title");
  635. if (!!name && !!href) {
  636. href = "https" + href;
  637. episodeList.push({
  638. "name": name,
  639. "href": href,
  640. "description": title
  641. });
  642. //mylog({"name":name, "href":href, "description":title});
  643. }
  644. });
  645. }
  646. selectedList(episodeList);
  647. }
  648. break
  649. case 'www.fun.tv':
  650. setTimeout(() => {
  651. var control_btn_play = $(".fxp-controlbar .btn-toggle"); //自动播放
  652. if (control_btn_play.is('.btn-play')) {
  653. control_btn_play.click();
  654. }
  655. }, 500);
  656. //选集
  657. window.onload = function () {
  658. var episodeList = [];
  659. $(".torrent-panel").find("li").each(function () {
  660. var a = $(this).find("a");
  661. var href = a.attr("href");
  662. var name = a.text();
  663. episodeList.push({
  664. "name": name,
  665. "href": href,
  666. "description": ""
  667. });
  668. //mylog({"name":name, "href":href});
  669. });
  670. selectedList(episodeList);
  671. }
  672. break
  673. case 'www.bilibili.com':
  674. setInterval(() => {
  675. $(".player-limit-mask").remove();//移除会员提示
  676. }, 500);
  677. //选集
  678. window.onload = function () {
  679. var episodeList = [];
  680. var data = unsafeWindow.__INITIAL_STATE__;
  681. var barTotal = data.epList.length;
  682. for (var page = 1; page <= barTotal; page++) {
  683. var i = page - 1
  684. var name = data.epList[i].title;
  685. var id = data.epList[i].id;
  686. var title = data.epList[i].longTitle;
  687. if (!!name && !!id) {
  688. var href = "https://www.bilibili.com/bangumi/play/ss" + id;
  689. episodeList.push({
  690. "name": name,
  691. "href": href,
  692. "description": title
  693. });
  694. }
  695. //mylog({"name":name, "href":href, "description":title});
  696. }
  697. selectedList(episodeList);
  698. }
  699. break
  700. case 'v.pptv.com':
  701. //选集
  702. window.onload = function () {
  703. var episodeList = [];
  704. var data = unsafeWindow.webcfg;
  705. var dataJson = data.playList.data;
  706. var barTotal = dataJson.list.length;
  707. for (var page = 1; page <= barTotal; page++) {
  708. var i = page - 1
  709. var name = dataJson.list[i].rank + 1;
  710. var href = dataJson.list[i].url;
  711. var title = dataJson.list[i].title;
  712. if (!!name && !!href) {
  713. episodeList.push({
  714. "name": name,
  715. "href": href,
  716. "description": title
  717. });
  718. }
  719. //mylog({"name":name, "href":href, "description":title});
  720. }
  721. selectedList(episodeList);
  722. }
  723. break
  724. default:
  725. break
  726. }
  727. })();

QingJ © 2025

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