From 81a97fd9a479d2890740d47f5393e063719a8cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=87=E6=B4=92?= <78096245+PizazzGY@users.noreply.github.com> Date: Sun, 27 Oct 2024 22:15:06 +0800 Subject: [PATCH] Add files via upload --- JS/四维空间弹幕.js | 220 +++++++++++++ JS/素白白弹幕.js | 803 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1023 insertions(+) create mode 100644 JS/四维空间弹幕.js create mode 100644 JS/素白白弹幕.js diff --git a/JS/四维空间弹幕.js b/JS/四维空间弹幕.js new file mode 100644 index 0000000..9b4b79a --- /dev/null +++ b/JS/四维空间弹幕.js @@ -0,0 +1,220 @@ +var rule = { + author: '小虎斑', + title: '小虎斑', + + host: 'https://4k-av.com', + hostJs: '', + headers: { + 'User-Agent': 'IOS_UA' + }, + 编码: 'utf-8', + timeout: 5000, + homeUrl: '/', + url: '/fyclassfyfilter/page-fypage.html[/fyclassfyfilter]', + filter_url: '{{fl.class}}', + detailUrl: '', + searchUrl: '/s?q=**', + searchable: 1, + quickSearch: 1, + filterable: 1, + class_name: '电影&剧集', + class_url: 'movie&tv', + filter_def: {}, + play_parse: true, + proxy_rule: $js.toString(() => { + if (input) { + //console.log(url); + var url = `http://dm.sds11.top/jsdm.php?id=` + input.url; + var htt = fetch(url); + input = [200, "text/xml", htt]; + } + }), + lazy: $js.toString(() => { + console.log(VOD.name); + const parts = input.split('|'); + if (/m3u8|mp4/.test(parts[0])) { + // const parts = input.split('|'); + input = { + jx: 0, + parse: 0, + url: parts[0], + danmaku: getProxyUrl() + '&url=' + getYoukuVideoUrl(VOD.vod_name, parts[1]) + }; + } else { + let matchResult = request(parts[0]).match(/ { + let kname = pdfh(kc, 'a&&title').replace('电影海报',''); + let khref = pdfh(kc, 'a&&href').replace('poster.jpg',''); + let klist = kname + '$' + khref + '|' + kname;; + klists.push(klist); + }); + VOD.vod_play_url = klists.join('#'); +} else { + kcode; + kcode.forEach((kc) => { + let kname = pdfh(kc, 'span&&Text'); + let khref = pdfh(kc, 'img&&src').replace('screenshot.jpg',''); + let klist = kname + '$' + khref + '|' + kname; + klists.push(klist); + }); + VOD.vod_play_url = klists.join('#'); +} +`, + 搜索: '*', + + filter: { + "tv": [{ + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "动作", + "v": "/tag/动作" + }, { + "n": "剧情", + "v": "/tag/剧情" + }, { + "n": "冒险", + "v": "/tag/冒险" + }, { + "n": "喜剧", + "v": "/tag/喜剧" + }, { + "n": "国产剧", + "v": "/tag/国产剧" + }, { + "n": "恐怖", + "v": "/tag/恐怖" + }, { + "n": "战争", + "v": "/tag/战争" + }, { + "n": "科幻", + "v": "/tag/科幻" + }, { + "n": "动画", + "v": "/tag/动画" + }, { + "n": "韩剧", + "v": "/tag/韩剧" + }, { + "n": "犯罪", + "v": "/tag/犯罪" + }, { + "n": "纪录片", + "v": "/tag/纪录片" + }] + }, + { + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2024", + "v": "/2024" + }, { + "n": "2023", + "v": "/2023" + }, { + "n": "2022", + "v": "/2022" + }, { + "n": "2021", + "v": "/2021" + }, { + "n": "2020", + "v": "/2020" + }, { + "n": "2019", + "v": "/2019" + }] + } + ] + } +} + +globalThis.getYoukuVideoUrl = function(wd, flag) { + try { + let api = `https://search.youku.com/api/search?pg=1&keyword=${encodeURIComponent(wd)}`; + let response = request(api); + let json = JSON.parse(response); + // 获取 showId + let showId = json.pageComponentList?.[0]?.commonData?.showId; + if (!showId) { + throw new Error('ShowId not found.'); + } + // 第二个 API 请求,获取集数信息 + api = `https://search.youku.com/api/search?appScene=show_episode&showIds=${showId}`; + response = request(api); + // 匹配 flag 中的 "第x集" 或 "第x话" + json = JSON.parse(response); + let matches = String(flag).match(/第\s*(\d+)\s*集/) || + String(flag).match(/第\s*(\d+)\s*话/) || + String(flag).match(/(\d+)/); + let url = ''; + if (matches && matches[1]) { + // 获取对应集数的 URL 或 videoId + let episodeIndex = parseInt(matches[1], 10) - 1; + + url = json.serisesList?.[episodeIndex]?.url || json.serisesList?.[episodeIndex]?.videoId; + } + // 如果没有匹配到 flag,取第一个集数的 URL + if (!url) { + url = json.serisesList?.[0]?.url || json.serisesList?.[0]?.videoId; + } + // 如果 URL 不是以 http 开头,则拼接成完整的 Youku 视频地址 + if (url && !url.startsWith('http')) { + url = `https://v.youku.com/v_show/id_${url}.html`; + } + return url || 'https://v.youku.com/'; + } catch { + return 'https://v.youku.com/1111'; + } +} \ No newline at end of file diff --git a/JS/素白白弹幕.js b/JS/素白白弹幕.js new file mode 100644 index 0000000..c10d4c9 --- /dev/null +++ b/JS/素白白弹幕.js @@ -0,0 +1,803 @@ +// 地址发布页 https://subaibai.vip/ +var rule = { + title: '小虎斑素白白', + // host:'https://www.subaibaiys.com', + host: 'https://subaibai.vip', + hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src = jsp.pdfh(html,".go:eq(0)&&a&&href");print(src);HOST=src', //网页域名根动态抓取js代码。通过HOST=赋值 + // url:'/fyclass/page/fypage', + url: '/fyclassfyfilter', + class_name: '影视筛选&电影&电视剧&热门电影&高分电影&动漫电影&香港经典电影&国产剧&欧美剧&韩剧&动漫剧&漫威宇宙电影系列&速度与激情电影系列&007系列(25部正传+2部外传)', + class_url: 'movie_bt&new-movie&tv-drama&hot-month&high-movie&cartoon-movie&hongkong-movie&domestic-drama&american-drama&korean-drama&anime-drama&marvel-movies&fastfurious&zero-zero-seven', + filterable: 1, //是否启用分类筛选, + tab_rename: { + '道长在线': '在线播放' + }, + filter_url: '{{fl.area}}{{fl.year}}{{fl.class}}{{fl.cateId}}/page/fypage', + filter: { + "movie_bt": [{ + "key": "cateId", + "name": "分类", + "value": [{ + "n": "全部", + "v": "" + }, { + "v": "/movie_bt_series/dongmanju", + "n": "动漫剧" + }, { + "v": "/movie_bt_series/dongmandy", + "n": "动漫电影" + }, { + "v": "/movie_bt_series/yindudy", + "n": "印度电影" + }, { + "v": "/movie_bt_series/guochanju", + "n": "国产剧" + }, { + "v": "/movie_bt_series/guochandy", + "n": "国产电影" + }, { + "v": "/movie_bt_series/riju", + "n": "日剧" + }, { + "v": "/movie_bt_series/rihandy", + "n": "日韩电影" + }, { + "v": "/movie_bt_series/oumeiju", + "n": "欧美剧" + }, { + "v": "/movie_bt_series/oumeidy", + "n": "欧美电影" + }, { + "v": "/movie_bt_series/taiju", + "n": "泰剧" + }, { + "v": "/movie_bt_series/thaidy", + "n": "泰国电影" + }, { + "v": "/movie_bt_series/gangju", + "n": "港台剧" + }, { + "v": "/movie_bt_series/gangtaidy", + "n": "港台电影" + }, { + "v": "/movie_bt_series/documentary", + "n": "纪录片" + }, { + "v": "/movie_bt_series/zongyi", + "n": "综艺" + }, { + "v": "/movie_bt_series/hanju", + "n": "韩剧" + }, { + "v": "/movie_bt_series/xianggangdy", + "n": "香港经典电影" + }] + }, { + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "v": "/movie_bt_tags/pop-popular", + "n": "POP流行" + }, { + "v": "/movie_bt_tags/biography", + "n": "传记" + }, { + "v": "/movie_bt_tags/child", + "n": "儿童" + }, { + "v": "/movie_bt_tags/adventure", + "n": "冒险" + }, { + "v": "/movie_bt_tags/plot", + "n": "剧情" + }, { + "v": "/movie_bt_tags/action", + "n": "动作" + }, { + "v": "/movie_bt_tags/anime", + "n": "动漫" + }, { + "v": "/movie_bt_tags/animation", + "n": "动画" + }, { + "v": "/movie_bt_tags/history", + "n": "历史" + }, { + "v": "/movie_bt_tags/costume", + "n": "古装" + }, { + "v": "/movie_bt_tags/antiquity", + "n": "古风" + }, { + "v": "/movie_bt_tags/homosexual", + "n": "同性" + }, { + "v": "/movie_bt_tags/comedy", + "n": "喜剧" + }, { + "v": "/movie_bt_tags/fantasy", + "n": "奇幻" + }, { + "v": "/movie_bt_tags/family", + "n": "家庭" + }, { + "v": "/movie_bt_tags/terror", + "n": "恐怖" + }, { + "v": "/movie_bt_tags/suspense", + "n": "悬疑" + }, { + "v": "/movie_bt_tags/erotic", + "n": "情色" + }, { + "v": "/movie_bt_tags/thriller", + "n": "惊悚" + }, { + "v": "/movie_bt_tags/drama", + "n": "戏曲" + }, { + "v": "/movie_bt_tags/war", + "n": "战争" + }, { + "v": "/movie_bt_tags/latin", + "n": "拉丁" + }, { + "v": "/movie_bt_tags/funny", + "n": "搞笑" + }, { + "v": "/movie_bt_tags/campus", + "n": "校园" + }, { + "v": "/movie_bt_tags/song-and-dance", + "n": "歌舞" + }, { + "v": "/movie_bt_tags/martial-arts", + "n": "武侠" + }, { + "v": "/movie_bt_tags/disaster", + "n": "灾难" + }, { + "v": "/movie_bt_tags/love", + "n": "爱情" + }, { + "v": "/movie_bt_tags/crime", + "n": "犯罪" + }, { + "v": "/movie_bt_tags/fancy", + "n": "玄幻" + }, { + "v": "/movie_bt_tags/reality-show", + "n": "真人秀" + }, { + "v": "/movie_bt_tags/short-film", + "n": "短片" + }, { + "v": "/movie_bt_tags/kehuan", + "n": "科幻" + }, { + "v": "/movie_bt_tags/documentary", + "n": "纪录片" + }, { + "v": "/movie_bt_tags/talkshow", + "n": "脱口秀" + }, { + "v": "/movie_bt_tags/stageart", + "n": "舞台艺术" + }, { + "v": "/movie_bt_tags/west", + "n": "西部" + }, { + "v": "/movie_bt_tags/sport", + "n": "运动" + }, { + "v": "/movie_bt_tags/youth", + "n": "青春" + }, { + "v": "/movie_bt_tags/music", + "n": "音乐" + }, { + "v": "/movie_bt_tags/ghost", + "n": "鬼怪" + }, { + "v": "/movie_bt_tags/black-film", + "n": "黑色电影" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "v": "/movie_bt_cat/bhutan", + "n": "不丹" + }, { + "v": "/movie_bt_cat/china", + "n": "中国" + }, { + "v": "/movie_bt_cat/china-taiwan", + "n": "中国台湾" + }, { + "v": "/movie_bt_cat/china-mainland", + "n": "中国大陆" + }, { + "v": "/movie_bt_cat/china-hongkong", + "n": "中国香港" + }, { + "v": "/movie_bt_cat/denmark", + "n": "丹麦" + }, { + "v": "/movie_bt_cat/ukraine", + "n": "乌克兰" + }, { + "v": "/movie_bt_cat/uruguay", + "n": "乌拉圭" + }, { + "v": "/movie_bt_cat/israel", + "n": "以色列" + }, { + "v": "/movie_bt_cat/iraq", + "n": "伊拉克" + }, { + "v": "/movie_bt_cat/iran", + "n": "伊朗" + }, { + "v": "/movie_bt_cat/russia", + "n": "俄罗斯" + }, { + "v": "/movie_bt_cat/bulgaria", + "n": "保加利亚" + }, { + "v": "/movie_bt_cat/croatia", + "n": "克罗地亚" + }, { + "v": "/movie_bt_cat/iceland", + "n": "冰岛" + }, { + "v": "/movie_bt_cat/canada", + "n": "加拿大" + }, { + "v": "/movie_bt_cat/hungary", + "n": "匈牙利" + }, { + "v": "/movie_bt_cat/south-africa", + "n": "南非" + }, { + "v": "/movie_bt_cat/botswana", + "n": "博茨瓦纳" + }, { + "v": "/movie_bt_cat/qatar", + "n": "卡塔尔" + }, { + "v": "/movie_bt_cat/luxembourg", + "n": "卢森堡" + }, { + "v": "/movie_bt_cat/india", + "n": "印度" + }, { + "v": "/movie_bt_cat/indonesia", + "n": "印度尼西亚" + }, { + "v": "/movie_bt_cat/kazakhstan", + "n": "哈萨克斯坦" + }, { + "v": "/movie_bt_cat/colombia", + "n": "哥伦比亚" + }, { + "v": "/movie_bt_cat/turkey", + "n": "土耳其" + }, { + "v": "/movie_bt_cat/serbia", + "n": "塞尔维亚" + }, { + "v": "/movie_bt_cat/cyprus", + "n": "塞浦路斯" + }, { + "v": "/movie_bt_cat/mexico", + "n": "墨西哥" + }, { + "v": "/movie_bt_cat/dominica", + "n": "多米尼加" + }, { + "v": "/movie_bt_cat/austria", + "n": "奥地利" + }, { + "v": "/movie_bt_cat/venezuela", + "n": "委内瑞拉" + }, { + "v": "/movie_bt_cat/nigeria", + "n": "尼日利亚" + }, { + "v": "/movie_bt_cat/巴基斯坦", + "n": "巴基斯坦" + }, { + "v": "/movie_bt_cat/paraguay", + "n": "巴拉圭" + }, { + "v": "/movie_bt_cat/brazil", + "n": "巴西" + }, { + "v": "/movie_bt_cat/greece", + "n": "希腊" + }, { + "v": "/movie_bt_cat/germany", + "n": "德国" + }, { + "v": "/movie_bt_cat/italy", + "n": "意大利" + }, { + "v": "/movie_bt_cat/latvia", + "n": "拉脱维亚" + }, { + "v": "/movie_bt_cat/norway", + "n": "挪威" + }, { + "v": "/movie_bt_cat/chech", + "n": "捷克" + }, { + "v": "/movie_bt_cat/摩洛哥", + "n": "摩洛哥" + }, { + "v": "/movie_bt_cat/斯洛伐克", + "n": "斯洛伐克" + }, { + "v": "/movie_bt_cat/slovenia", + "n": "斯洛文尼亚" + }, { + "v": "/movie_bt_cat/singapore", + "n": "新加坡" + }, { + "v": "/movie_bt_cat/zealand", + "n": "新西兰" + }, { + "v": "/movie_bt_cat/japan", + "n": "日本" + }, { + "v": "/movie_bt_cat/chile", + "n": "智利" + }, { + "v": "/movie_bt_cat/north-korea", + "n": "朝鲜" + }, { + "v": "/movie_bt_cat/cambodia", + "n": "柬埔寨" + }, { + "v": "/movie_bt_cat/georgia", + "n": "格鲁吉亚" + }, { + "v": "/movie_bt_cat/belgium", + "n": "比利时" + }, { + "v": "/movie_bt_cat/saudi-arabia", + "n": "沙特阿拉伯" + }, { + "v": "/movie_bt_cat/france", + "n": "法国" + }, { + "v": "/movie_bt_cat/poland", + "n": "波兰" + }, { + "v": "/movie_bt_cat/puertorco", + "n": "波多黎各" + }, { + "v": "/movie_bt_cat/bohei", + "n": "波黑" + }, { + "v": "/movie_bt_cat/thailand", + "n": "泰国" + }, { + "v": "/movie_bt_cat/australia", + "n": "澳大利亚" + }, { + "v": "/movie_bt_cat/ireland", + "n": "爱尔兰" + }, { + "v": "/movie_bt_cat/estonia", + "n": "爱沙尼亚" + }, { + "v": "/movie_bt_cat/sweden", + "n": "瑞典" + }, { + "v": "/movie_bt_cat/switzerland", + "n": "瑞士" + }, { + "v": "/movie_bt_cat/belarus", + "n": "白俄罗斯" + }, { + "v": "/movie_bt_cat/peru", + "n": "秘鲁" + }, { + "v": "/movie_bt_cat/tunisia", + "n": "突尼斯" + }, { + "v": "/movie_bt_cat/lithuania", + "n": "立陶宛" + }, { + "v": "/movie_bt_cat/romania", + "n": "罗马尼亚" + }, { + "v": "/movie_bt_cat/america", + "n": "美国" + }, { + "v": "/movie_bt_cat/finland", + "n": "芬兰" + }, { + "v": "/movie_bt_cat/sovietunion", + "n": "苏联" + }, { + "v": "/movie_bt_cat/england", + "n": "英国" + }, { + "v": "/movie_bt_cat/netherlands", + "n": "荷兰" + }, { + "v": "/movie_bt_cat/philippines", + "n": "菲律宾" + }, { + "v": "/movie_bt_cat/葡萄牙", + "n": "葡萄牙" + }, { + "v": "/movie_bt_cat/west-germany", + "n": "西德" + }, { + "v": "/movie_bt_cat/spain", + "n": "西班牙" + }, { + "v": "/movie_bt_cat/vietnam", + "n": "越南" + }, { + "v": "/movie_bt_cat/argentina", + "n": "阿根廷" + }, { + "v": "/movie_bt_cat/korea", + "n": "韩国" + }, { + "v": "/movie_bt_cat/malaysia", + "n": "马来西亚" + }, { + "v": "/movie_bt_cat/马耳他", + "n": "马耳他" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "v": "/year/2024", + "n": "2024" + }, { + "v": "/year/2023", + "n": "2023" + }, { + "v": "/year/2022", + "n": "2022" + }, { + "v": "/year/2021", + "n": "2021" + }, { + "v": "/year/2020", + "n": "2020" + }, { + "v": "/year/2019", + "n": "2019" + }, { + "v": "/year/2018", + "n": "2018" + }, { + "v": "/year/2017", + "n": "2017" + }, { + "v": "/year/2016", + "n": "2016" + }, { + "v": "/year/2015", + "n": "2015" + }, { + "v": "/year/2014", + "n": "2014" + }, { + "v": "/year/2013", + "n": "2013" + }, { + "v": "/year/2012", + "n": "2012" + }, { + "v": "/year/2011", + "n": "2011" + }, { + "v": "/year/2010", + "n": "2010" + }, { + "v": "/year/2009", + "n": "2009" + }, { + "v": "/year/2008", + "n": "2008" + }, { + "v": "/year/2007", + "n": "2007" + }, { + "v": "/year/2006", + "n": "2006" + }, { + "v": "/year/2005", + "n": "2005" + }, { + "v": "/year/2004", + "n": "2004" + }, { + "v": "/year/2003", + "n": "2003" + }, { + "v": "/year/2002", + "n": "2002" + }, { + "v": "/year/2001", + "n": "2001" + }, { + "v": "/year/2000", + "n": "2000" + }, { + "v": "/year/1999", + "n": "1999" + }, { + "v": "/year/1998", + "n": "1998" + }, { + "v": "/year/1997", + "n": "1997" + }, { + "v": "/year/1996", + "n": "1996" + }, { + "v": "/year/1995", + "n": "1995" + }, { + "v": "/year/1994", + "n": "1994" + }, { + "v": "/year/1993", + "n": "1993" + }, { + "v": "/year/1992", + "n": "1992" + }, { + "v": "/year/1991", + "n": "1991" + }, { + "v": "/year/1990", + "n": "1990" + }, { + "v": "/year/1989", + "n": "1989" + }, { + "v": "/year/1988", + "n": "1988" + }, { + "v": "/year/1987", + "n": "1987" + }, { + "v": "/year/1986", + "n": "1986" + }, { + "v": "/year/1985", + "n": "1985" + }, { + "v": "/year/1984", + "n": "1984" + }, { + "v": "/year/1983", + "n": "1983" + }, { + "v": "/year/1982", + "n": "1982" + }, { + "v": "/year/1981", + "n": "1981" + }, { + "v": "/year/1980", + "n": "1980" + }, { + "v": "/year/1979", + "n": "1979" + }, { + "v": "/year/1978", + "n": "1978" + }, { + "v": "/year/1977", + "n": "1977" + }, { + "v": "/year/1976", + "n": "1976" + }, { + "v": "/year/1975", + "n": "1975" + }, { + "v": "/year/1974", + "n": "1974" + }, { + "v": "/year/1973", + "n": "1973" + }, { + "v": "/year/1972", + "n": "1972" + }, { + "v": "/year/1971", + "n": "1971" + }, { + "v": "/year/1970", + "n": "1970" + }, { + "v": "/year/1969", + "n": "1969" + }, { + "v": "/year/1968", + "n": "1968" + }, { + "v": "/year/1967", + "n": "1967" + }, { + "v": "/year/1966", + "n": "1966" + }, { + "v": "/year/1965", + "n": "1965" + }, { + "v": "/year/1964", + "n": "1964" + }, { + "v": "/year/1963", + "n": "1963" + }, { + "v": "/year/1962", + "n": "1962" + }, { + "v": "/year/1960", + "n": "1960" + }, { + "v": "/year/1959", + "n": "1959" + }, { + "v": "/year/1954", + "n": "1954" + }, { + "v": "/year/1952", + "n": "1952" + }, { + "v": "/year/1950", + "n": "1950" + }, { + "v": "/year/1949", + "n": "1949" + }, { + "v": "/year/1948", + "n": "1948" + }, { + "v": "/year/1940", + "n": "1940" + }, { + "v": "/year/1939", + "n": "1939" + }, { + "v": "/year/1925", + "n": "1925" + }] + }] + }, + // searchUrl:'/search?q=**', + searchUrl: '/page/fypage?s=**', + searchable: 2, //是否启用全局搜索, + quickSearch: 0, //是否启用快速搜索, + headers: { + 'User-Agent': 'UC_UA', + }, + class_parse: '.navlist&&li;a&&Text;a&&href;.*/([^/]+)', + + play_parse: true, + // lazy:'', + proxy_rule: $js.toString(() => { + if (input) { + //console.log(url); + var url = `http://dm.sds11.top/jsdm.php?id=` + input.url; + var htt = fetch(url); + input = [200, "text/xml", htt]; + } + }), + lazy: `js: + pdfh = jsp.pdfh; + var html = request(input); + var ohtml = pdfh(html, '.videoplay&&Html'); + var url = pdfh(ohtml, "body&&iframe&&src"); + var title = pdfh(html, 'head&&title&&Text'); + var parts = title.split(' '); + if (/Cloud/.test(url)) { + var ifrwy = request(url); + let code = ifrwy.match(/var url = '(.*?)'/)[1].split('').reverse().join(''); + let temp = ''; + for (let i = 0x0; i < code.length; i = i + 0x2) { + temp += String.fromCharCode(parseInt(code[i] + code[i + 0x1], 0x10)) + } + input = { + jx: 0, + url: temp.substring(0x0, (temp.length - 0x7) / 0x2) + temp.substring((temp.length - 0x7) / 0x2 + 0x7), + parse: 0, + danmaku:getProxyUrl()+ '&url=' + getYoukuVideoUrl(parts[0],parts[1]) + } + } else if (/decrypted/.test(ohtml)) { + var phtml = pdfh(ohtml, "body&&script:not([src])&&Html"); + eval(getCryptoJS()); + var scrpt = phtml.match(/var.*?\\)\\);/g)[0]; + var data = []; + eval(scrpt.replace(/md5/g, 'CryptoJS').replace('eval', 'data = ')); + input = { + jx: 0, + url: data.match(/url:.*?[\\'\\"](.*?)[\\'\\"]/)[1], + parse: 0, + danmaku:getProxyUrl()+'&url='+ getYoukuVideoUrl(parts[0],parts[1]) + } + } else { + input = { + jx: 0, + url:input, + parse: 1, + danmaku:getProxyUrl()+ '&url=' + getYoukuVideoUrl(parts[0],parts[1]) + } + } + `, + limit: 6, + 推荐: '.leibox&&li;*;*;*;*', + // double:true, // 推荐内容是否双层定位 + 一级: '.mrb&&li;img&&alt;img&&data-original;.jidi&&Text;a&&href', + 二级: { + 'title': 'h1&&Text;.moviedteail_list&&li:eq(0)&&Text', + 'img': '.dyimg&&img&&src', + 'desc': '.moviedteail_list&&li:eq(-1)&&Text;;;.moviedteail_list&&li:eq(7)&&Text;.moviedteail_list&&li:eq(5)&&Text', + 'content': '.yp_context&&p&&Text', + 'tabs': '', + 'lists': '.paly_list_btn:eq(#id) a', + }, + 搜索: '.search_list&&li;*;*;*;*', +} +globalThis.getYoukuVideoUrl = function(wd, flag) { + try { + let api = `https://search.youku.com/api/search?pg=1&keyword=${encodeURIComponent(wd)}`; + let response = request(api); + let json = JSON.parse(response); + // 获取 showId + let showId = json.pageComponentList?.[0]?.commonData?.showId; + if (!showId) { + throw new Error('ShowId not found.'); + } + // 第二个 API 请求,获取集数信息 + api = `https://search.youku.com/api/search?appScene=show_episode&showIds=${showId}`; + response = request(api); + // 匹配 flag 中的 "第x集" 或 "第x话" + json = JSON.parse(response); + let matches = String(flag).match(/第\s*(\d+)\s*集/) || + String(flag).match(/第\s*(\d+)\s*话/) || + String(flag).match(/(\d+)/); + let url = ''; + if (matches && matches[1]) { + // 获取对应集数的 URL 或 videoId + let episodeIndex = parseInt(matches[1], 10) - 1; + + url = json.serisesList?.[episodeIndex]?.url || json.serisesList?.[episodeIndex]?.videoId; + } + // 如果没有匹配到 flag,取第一个集数的 URL + if (!url) { + url = json.serisesList?.[0]?.url || json.serisesList?.[0]?.videoId; + } + // 如果 URL 不是以 http 开头,则拼接成完整的 Youku 视频地址 + if (url && !url.startsWith('http')) { + url = `https://v.youku.com/v_show/id_${url}.html`; + } + return url || 'https://v.youku.com/'; + } catch { + return 'https://v.youku.com/1111'; + } +} \ No newline at end of file