您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为你的视频解析页面增加播放列表,无需再回原网页找链接,目前已支持爱奇艺电视剧、腾讯视频电视剧,增加双击全屏
// ==UserScript== // @name 视频解析器显示播放列表 // @namespace https://github.com/oyps/jiaoben/tree/main/%E8%A7%86%E9%A2%91%E8%A7%A3%E6%9E%90%E5%99%A8%E5%A2%9E%E5%8A%A0%E6%92%AD%E6%94%BE%E5%88%97%E8%A1%A8 // @version 1.4 // @description 为你的视频解析页面增加播放列表,无需再回原网页找链接,目前已支持爱奇艺电视剧、腾讯视频电视剧,增加双击全屏 // @author 欧阳鹏 // @match *://*/*url=http*iqiyi.com* // @match *://*/*url=http*youku.com* // @match *://*/*url=http*mgtv.com* // @match *://*/*url=http*v.qq.com* // @require https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js // @require https://cdn.staticfile.org/blueimp-md5/2.19.0/js/md5.min.js // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // ==/UserScript== (function () { 'use strict'; // iframe加载时不执行脚本 if (self != top) { return; } document.addEventListener('dblclick', function () { var ele = this.documentElement; if (document.fullscreenElement) { document.exitFullscreen(); } else { if (ele.requestFullscreen) { ele.requestFullscreen(); } else if (ele.mozRequestFullScreen) { ele.mozRequestFullScreen(); } else if (ele.webkitRequestFullScreen) { ele.webkitRequestFullScreen(); } else if (ele.msRequestFullscreen) { ele.msRequestFullscreen(); } } }); var url = getQueryVariable('url'); var video_from = get_video_from(url); if (video_from == 'iqiyi') { load_from_iqiyi(url); } else if (video_from == 'qq') { load_from_qq(url); } if (!url) { return; } function load_play_list(play_list, video_from) { $('body').append("<iframe style=\"z-index:10000;position:fixed;top:0;right:0;width:300px;height:400px;margin:10px;border-radius:10px;color:white;overflow:hidden;\" class=\"apee_play_list\" id=\"apee_play_list\" name=\"apee_play_list\" frameborder=\"0\" allowtransparency=\"true\"></iframe>"); var html = "<!DOCTYPE html>\n <html lang=\"zh-CN\">\n \n <head>\n <meta charset=\"UTF-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Document</title>\n <style>\n /* body {\n background-color: rgb(148, 51, 51);\n } */\n \n * {\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n }\n \n .play_list_box {\n position: fixed;\n top: 0;\n right: 0;\n height: calc(100% - 20px);\n margin: 10px;\n background-color: rgba(0, 0, 0, 0.8);\n border-radius: 10px;\n color: white;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n \n .play_list_box .nav {\n display: flex;\n padding: 15px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n }\n \n .play_list_box .nav .title {\n margin-right: auto;\n }\n \n .play_list_box .nav .close {\n cursor: pointer;\n text-align: center;\n }\n \n .play_list_box .play_list {\n flex: 1;\n padding: 10px;\n overflow: auto;\n }\n \n .play_list_box .play_list .content {\n display: flex;\n flex-wrap: wrap;\n }\n \n .play_list_box .play_list::-webkit-scrollbar-thumb {\n background: rgba(69, 157, 245, .24);\n border-radius: 3px;\n height: 100px;\n }\n \n .play_list_box .play_list::-webkit-scrollbar {\n width: 10px;\n background: rgba(255, 255, 255, 0.1);\n }\n \n .play_list_box .play_list .item {\n padding: 10px;\n border: 1px solid white;\n border-radius: 10px;\n margin-bottom: 10px;\n flex: 30px;\n cursor: pointer;\n text-align: center;\n margin: 5px;\n transition: all .2s;\n }\n \n .play_list_box .play_list .item:hover {\n background-color: rgba(255, 255, 255, 0.3);\n }\n \n .play_list_box .play_list .item.active {\n background-color: white;\n color: black;\n }\n \n .footer {\n text-align: center;\n padding: 10px;\n border-top: 1px solid rgba(255, 255, 255, 0.3);\n color: rgba(255, 255, 255, 0.3);\n }\n \n .show_tab {\n position: fixed;\n top: 0;\n right: 0;\n margin: 10px;\n padding: 10px;\n border-radius: 10px;\n background-color: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.5);\n cursor: pointer;\n display: none;\n }\n </style>\n </head>\n \n <body>\n <div class=\"play_list_box\">\n <div class=\"nav\">\n <div class=\"title\">\u64AD\u653E\u5217\u8868</div>\n <div class=\"close\" onclick=\"closeTab()\">\u5173\u95ED</div>\n </div>\n <div class=\"play_list\">\n <div class=\"content\">\n <!-- list -->\n </div>\n </div>\n <div class=\"footer\" onclick=\"window.open('https://apee.top')\">\n By APEE.TOP\n </div>\n </div>\n <div class=\"show_tab\" onclick=\"showTab()\">\n \u663E\u793A\u64AD\u653E\u5217\u8868\n </div>\n <script>\n var play_list_box = document.querySelector('.play_list_box')\n var show_tab = document.querySelector('.show_tab')\n var play_list = document.querySelector('.play_list')\n function closeTab() {\n play_list_box.style.display = 'none'\n show_tab.style.display = 'block'\n }\n function showTab() {\n show_tab.style.display = 'none'\n play_list_box.style.display = 'flex'\n }\n </script>\n </body>\n \n </html>"; var list_html = ''; if (video_from == 'iqiyi') { play_list.sort(function (a, b) { return a.album_order - b.album_order; }); for (var i = 0; i < play_list.length; i++) { if (!play_list[i].page_url) { // 预告片待处理 continue; } var v_url = play_list[i].page_url.replace(/^http(.*)$/, 'https$1'); var play_url = location.href.replace(/(.*?\?.*url=)http.*?(&.*?)?$/, '$1' + v_url + '$2'); list_html += "<div class=\"item ".concat(url.search(v_url) != -1 ? 'active' : '', "\" onclick=\"top.location.href='").concat(play_url, "'\">").concat(play_list[i].album_order, "</div>"); } } else if (video_from == 'qq') { for (var i = 0; i < play_list.length; i++) { if (play_list[i].is_trailer == '1') { // 预告片待处理 continue; } var v_url = "https://v.qq.com/x/cover/".concat(play_list[i].cid, "/").concat(play_list[i].vid, ".html"); var play_url = location.href.replace(/(.*?\?.*url=)http.*?(&.*?)?$/, '$1' + v_url + '$2'); list_html += "<div class=\"item ".concat(url.search(v_url) != -1 ? 'active' : '', "\" onclick=\"top.location.href='").concat(play_url, "'\">").concat(play_list[i].title, "</div>"); } } html = html.replace('<!-- list -->', list_html); var iframe = window.frames['apee_play_list']; iframe.document.open(); iframe.document.write(html); iframe.document.close(); } /** * 爱奇艺解析 * @param {string} url 视频链接 */ function load_from_iqiyi(url) { $.get(url, function (data) { var entity_id = data.match(/"tvId":(\w+)/)[1]; var sign = md5("app_version=3.0.0&auth_cookie=&device_id=apee&entity_id=".concat(entity_id, "&src=pcw_tvg×tamp=0&user_id=&vip_status=0&vip_type=&secret_key=howcuteitis")).toUpperCase(); var url_2 = "https://mesh.if.iqiyi.com/tvg/pcw/base_info?entity_id=".concat(entity_id, "×tamp=0&src=pcw_tvg&vip_status=0&vip_type=&auth_cookie=&device_id=apee&user_id=&app_version=3.0.0&sign=").concat(sign); $.get(url_2, function (data) { if (data.data.template.template_id == 'album_template') { var play_list = data.data.template.pure_data.selector_bk; for (var i = 0; i < play_list.length; i++) { if (typeof play_list[i].videos == 'object' && play_list[i].videos.feature_paged != 'undefined') { play_list = play_list[i].videos.feature_paged; break; } } var keys = Object.keys(play_list); var list = []; for (var i = 0; i < keys.length; i++) { var item = play_list[keys[i]]; for (var j = 0; j < item.length; j++) { list.push(item[j]); } } load_play_list(list, 'iqiyi'); } }); }); } /** * 判断视频来源 爱奇艺 腾讯 芒果 优酷 * @param {string} url 视频连接 */ function get_video_from(url) { var keys = ['iqiyi.com', 'v.qq.com', 'mgtv.com', 'youku.com']; var names = ['iqiyi', 'qq', 'mgtv', 'youku']; var url_data = new URL(url); for (var i = 0; i < keys.length; i++) { if (url_data.hostname.search(keys[i]) != -1) { return names[i]; } } return false; } /** * 获取GET参数内容 * @param {string} variable GET参数 * @returns 参数内容 */ function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split('='); if (pair[0] == variable) { return pair[1]; } } return false; } /** * 腾讯视频解析 * @param url 视频链接 */ function load_from_qq(url) { $.get(url, function (data) { var json = data.match(/(window\.__pinia=.*?)<\/script>/, data)[1]; var data = eval(json); var list = window.__pinia.episodeMain.listData[0]; var playlist = []; list.forEach(function (item) { playlist.push(item['item_params']); }); load_play_list(playlist, 'qq'); }); } }());
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址