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

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

目前為 2021-02-10 提交的版本,檢視 最新版本

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

QingJ © 2025

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