Update zip
This commit is contained in:
+29
-15
@@ -121,6 +121,19 @@
|
||||
"host": "https://cunchu8.obs.cn-north-4.myhuaweicloud.com/fox.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "火锅",
|
||||
"name": "火锅|APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"searchable": 1,
|
||||
"changeable": 1,
|
||||
"ext": {
|
||||
"url": "https://ios.hgyx.vip",
|
||||
"dataKey": "062dec75d039980e",
|
||||
"dataIv": "062dec75d039980e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "云朵",
|
||||
"name": "云朵|APP",
|
||||
@@ -134,6 +147,21 @@
|
||||
"dataIv": "Tpmm9FD99lJ8Dexa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "顾我",
|
||||
"name": "顾我|APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppQi",
|
||||
"searchable": 1,
|
||||
"changeable": 1,
|
||||
"ext": {
|
||||
"site": "https://guwozj-1319364746.cos.ap-guangzhou.myqcloud.com/gw7.txt",
|
||||
"dataKey": "ca94b06ca3c7d80e",
|
||||
"dataIv": "ca94b06ca3c7d80e",
|
||||
"init": "initV122",
|
||||
"ua": "okhttp/3.10.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "爱影",
|
||||
"name": "爱影|APP",
|
||||
@@ -348,19 +376,6 @@
|
||||
"token": "4181e508e7a17657d6a6246e70b1b13553e5ae9d8d287dc47000fb2df638dffa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "仓鼠",
|
||||
"name": "仓鼠|APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"searchable": 1,
|
||||
"changeable": 1,
|
||||
"ext": {
|
||||
"url": "https://cs450appcms.cs4k.top",
|
||||
"dataKey": "cD7wZ7iY6qN3sU1z",
|
||||
"dataIv": "cD7wZ7iY6qN3sU1z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "茉莉",
|
||||
"name": "茉莉|APP",
|
||||
@@ -1312,8 +1327,7 @@
|
||||
"style": {
|
||||
"type": "list",
|
||||
"ratio": 1.433
|
||||
},
|
||||
"ext": "./json/aliShare.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "夸克云盘",
|
||||
|
||||
+324
-12
@@ -1,5 +1,5 @@
|
||||
var rule = {
|
||||
title: '优酷[官]',
|
||||
title: '优酷',
|
||||
host: 'https://www.%79%6f%75%6b%75.com',
|
||||
homeUrl: '',
|
||||
searchUrl: 'https://search.%79%6f%75%6b%75.com/api/search?pg=fypage&keyword=**',
|
||||
@@ -2121,6 +2121,211 @@ var rule = {
|
||||
"n": "最新上线",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"短剧": [{
|
||||
"key": "main_area",
|
||||
"name": "全部地区",
|
||||
"value": [{
|
||||
"n": "全部地区",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "内地剧",
|
||||
"v": "中国内地"
|
||||
}, {
|
||||
"n": "港剧",
|
||||
"v": "中国香港"
|
||||
}, {
|
||||
"n": "台剧",
|
||||
"v": "中国台湾"
|
||||
}, {
|
||||
"n": "韩剧",
|
||||
"v": "韩国"
|
||||
}, {
|
||||
"n": "美剧",
|
||||
"v": "美国"
|
||||
}, {
|
||||
"n": "英剧",
|
||||
"v": "英国"
|
||||
}, {
|
||||
"n": "日剧",
|
||||
"v": "日本"
|
||||
}, {
|
||||
"n": "泰剧",
|
||||
"v": "泰国"
|
||||
}]
|
||||
}, {
|
||||
"key": "tags",
|
||||
"name": "全部类型",
|
||||
"value": [{
|
||||
"n": "全部类型",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "青春",
|
||||
"v": "青春"
|
||||
}, {
|
||||
"n": "古装",
|
||||
"v": "古装"
|
||||
}, {
|
||||
"n": "爱情",
|
||||
"v": "爱情"
|
||||
}, {
|
||||
"n": "都市",
|
||||
"v": "都市"
|
||||
}, {
|
||||
"n": "喜剧",
|
||||
"v": "喜剧,搞笑"
|
||||
}, {
|
||||
"n": "战争",
|
||||
"v": "战争"
|
||||
}, {
|
||||
"n": "军旅",
|
||||
"v": "军旅"
|
||||
}, {
|
||||
"n": "谍战",
|
||||
"v": "谍战"
|
||||
}, {
|
||||
"n": "偶像",
|
||||
"v": "偶像"
|
||||
}, {
|
||||
"n": "警匪",
|
||||
"v": "警匪"
|
||||
}, {
|
||||
"n": "冒险",
|
||||
"v": "冒险"
|
||||
}, {
|
||||
"n": "穿越",
|
||||
"v": "穿越"
|
||||
}, {
|
||||
"n": "仙侠",
|
||||
"v": "仙侠"
|
||||
}, {
|
||||
"n": "武侠",
|
||||
"v": "武侠"
|
||||
}, {
|
||||
"n": "悬疑",
|
||||
"v": "悬疑"
|
||||
}, {
|
||||
"n": "罪案",
|
||||
"v": "罪案"
|
||||
}, {
|
||||
"n": "家庭",
|
||||
"v": "家庭"
|
||||
}, {
|
||||
"n": "历史",
|
||||
"v": "历史"
|
||||
}, {
|
||||
"n": "年代",
|
||||
"v": "年代"
|
||||
}, {
|
||||
"n": "农村",
|
||||
"v": "农村"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "全部年份",
|
||||
"value": [{
|
||||
"n": "全部年份",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2026",
|
||||
"v": "2026"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"n": "2023",
|
||||
"v": "2023"
|
||||
}, {
|
||||
"n": "2022",
|
||||
"v": "2022"
|
||||
}, {
|
||||
"n": "2021",
|
||||
"v": "2021"
|
||||
}, {
|
||||
"n": "2020",
|
||||
"v": "2020"
|
||||
}, {
|
||||
"n": "2019",
|
||||
"v": "2019"
|
||||
}, {
|
||||
"n": "2018",
|
||||
"v": "2018"
|
||||
}, {
|
||||
"n": "2017",
|
||||
"v": "2017"
|
||||
}, {
|
||||
"n": "2016",
|
||||
"v": "2016"
|
||||
}, {
|
||||
"n": "2015",
|
||||
"v": "2015"
|
||||
}, {
|
||||
"n": "2014-2011",
|
||||
"v": "2011-2014"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "-2010"
|
||||
}]
|
||||
}, {
|
||||
"key": "status",
|
||||
"name": "全部规格",
|
||||
"value": [{
|
||||
"n": "全部规格",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "全网独播",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "优酷自制",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "已完结",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "即将上线",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "短剧",
|
||||
"v": "5"
|
||||
}]
|
||||
}, {
|
||||
"key": "pay_type",
|
||||
"name": "付费类型",
|
||||
"value": [{
|
||||
"n": "付费类型",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "免费",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "VIP",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "付费",
|
||||
"v": "1"
|
||||
}]
|
||||
}, {
|
||||
"key": "sort",
|
||||
"name": "综合排序",
|
||||
"value": [{
|
||||
"n": "综合排序",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "热度最高",
|
||||
"v": "7"
|
||||
}, {
|
||||
"n": "最新上线",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "最好评",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "最多播放",
|
||||
"v": "2"
|
||||
}]
|
||||
}]
|
||||
},
|
||||
headers: {
|
||||
@@ -2129,8 +2334,8 @@ var rule = {
|
||||
'Referer': 'https://www.youku.com',
|
||||
},
|
||||
timeout: 5000,
|
||||
class_name: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏',
|
||||
class_url: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏',
|
||||
class_name: '电影&电视剧&动漫&短剧&综艺&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏',
|
||||
class_url: '电影&电视剧&动漫&短剧&综艺&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏',
|
||||
limit: 20,
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
@@ -2194,10 +2399,14 @@ var rule = {
|
||||
}
|
||||
lists.forEach(function(it) {
|
||||
let vid;
|
||||
if (it.videoLink.includes("id_")) {
|
||||
if (it.rightTagColor === "BLUE" && it.videoLink.includes("groupId=")) {
|
||||
// 短剧格式:通过rightTagColor判断,提取groupId
|
||||
let groupIdMatch = it.videoLink.match(/groupId=([^&]+)/);
|
||||
vid = groupIdMatch && groupIdMatch[1] ? groupIdMatch[1] : "msearch:";
|
||||
} else if (it.videoLink.includes("id_")) {
|
||||
vid = it.videoLink.split("id_")[1].split(".html")[0]
|
||||
} else {
|
||||
vid = "msearch:"
|
||||
vid = "msearch:";
|
||||
}
|
||||
d.push({
|
||||
title: it.title,
|
||||
@@ -2212,6 +2421,7 @@ var rule = {
|
||||
}
|
||||
setResult(d);
|
||||
}),
|
||||
|
||||
二级: $js.toString(() => {
|
||||
var d = [];
|
||||
VOD = {};
|
||||
@@ -2234,7 +2444,6 @@ var rule = {
|
||||
});
|
||||
let json = /__INITIAL_DATA__/.test(html) ? html.split("window.__INITIAL_DATA__ =")[1].split(";")[0] : "{}";
|
||||
if (json === "{}") {
|
||||
log("触发了优酷人机验证");
|
||||
VOD.vod_pic = _img;
|
||||
VOD.vod_name = video_lists[0].title.replace(/(\d+)/g, "");
|
||||
VOD.vod_content = "触发了优酷人机验证,本次未获取详情,但不影响播放(" + ourl + ")"
|
||||
@@ -2299,18 +2508,121 @@ var rule = {
|
||||
var d = [];
|
||||
let html = request(input);
|
||||
let json = JSON.parse(html);
|
||||
|
||||
let searchKeyword = '';
|
||||
if (input.includes('keyword=')) {
|
||||
searchKeyword = input.split('keyword=')[1].split('&')[0];
|
||||
searchKeyword = decodeURIComponent(searchKeyword);
|
||||
}
|
||||
|
||||
let titleFilterConfig = {
|
||||
enabled: true,
|
||||
keywords: ['精彩', '花絮', '预告', '晚会', '揭秘', '解说', '《', '解读', '动态漫', '9528', '杂谈', '十六部电影实验短片集', '片断', '公益', '音频'],
|
||||
caseSensitive: false,
|
||||
exactMatch: false
|
||||
};
|
||||
|
||||
let contentFilterConfig = {
|
||||
enabled: true,
|
||||
keywords: ['游戏', '纪录片', '音频'],
|
||||
caseSensitive: false,
|
||||
exactMatch: false
|
||||
};
|
||||
|
||||
let keywordMatchConfig = {
|
||||
enabled: true,
|
||||
matchType: 'contains',
|
||||
caseSensitive: false
|
||||
};
|
||||
|
||||
json.pageComponentList.forEach(function(it) {
|
||||
if (it.hasOwnProperty("commonData")) {
|
||||
it = it.commonData;
|
||||
d.push({
|
||||
title: it.titleDTO.displayName,
|
||||
|
||||
let item = {
|
||||
title: it.titleDTO.displayName || '',
|
||||
img: it.posterDTO.vThumbUrl,
|
||||
desc: it.stripeBottom,
|
||||
content: it.updateNotice + " " + it.feature,
|
||||
desc: it.stripeBottom || '',
|
||||
content: (it.updateNotice || '') + " " + (it.feature || ''),
|
||||
url: "https://search.youku.com/api/search?appScene=show_episode&showIds=" + it.showId + "&appCaller=h5"
|
||||
})
|
||||
};
|
||||
|
||||
let titleFiltered = false;
|
||||
if (titleFilterConfig.enabled && titleFilterConfig.keywords.length > 0) {
|
||||
for (let keyword of titleFilterConfig.keywords) {
|
||||
let titleText = item.title;
|
||||
let filterKeyword = keyword;
|
||||
|
||||
if (!titleFilterConfig.caseSensitive) {
|
||||
titleText = titleText.toLowerCase();
|
||||
filterKeyword = filterKeyword.toLowerCase();
|
||||
}
|
||||
|
||||
if (titleFilterConfig.exactMatch) {
|
||||
if (titleText === filterKeyword) {
|
||||
titleFiltered = true;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (titleText.includes(filterKeyword)) {
|
||||
titleFiltered = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let contentFiltered = false;
|
||||
if (contentFilterConfig.enabled && contentFilterConfig.keywords.length > 0) {
|
||||
for (let keyword of contentFilterConfig.keywords) {
|
||||
let contentText = item.content;
|
||||
let filterKeyword = keyword;
|
||||
|
||||
if (!contentFilterConfig.caseSensitive) {
|
||||
contentText = contentText.toLowerCase();
|
||||
filterKeyword = filterKeyword.toLowerCase();
|
||||
}
|
||||
|
||||
if (contentFilterConfig.exactMatch) {
|
||||
if (contentText === filterKeyword) {
|
||||
contentFiltered = true;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (contentText.includes(filterKeyword)) {
|
||||
contentFiltered = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let keywordMatched = true;
|
||||
if (keywordMatchConfig.enabled && searchKeyword) {
|
||||
let titleText = item.title;
|
||||
let searchKey = searchKeyword;
|
||||
|
||||
if (!keywordMatchConfig.caseSensitive) {
|
||||
titleText = titleText.toLowerCase();
|
||||
searchKey = searchKey.toLowerCase();
|
||||
}
|
||||
|
||||
if (keywordMatchConfig.matchType === 'exact') {
|
||||
keywordMatched = (titleText === searchKey);
|
||||
} else if (keywordMatchConfig.matchType === 'contains') {
|
||||
keywordMatched = titleText.includes(searchKey);
|
||||
} else if (keywordMatchConfig.matchType === 'any') {
|
||||
let keywords = searchKey.split(/\s+/);
|
||||
keywordMatched = keywords.some(keyword => titleText.includes(keyword));
|
||||
}
|
||||
}
|
||||
|
||||
if (!titleFiltered && !contentFiltered && keywordMatched) {
|
||||
d.push(item);
|
||||
}
|
||||
}
|
||||
});
|
||||
setResult(d)
|
||||
|
||||
setResult(d);
|
||||
}),
|
||||
}
|
||||
+238
-12
@@ -9,8 +9,7 @@ var rule = {
|
||||
filterable: 1,
|
||||
multi: 1,
|
||||
url: '/x/bu/pagesheet/list?_all=1&append=1&channel=fyclass&listpage=1&offset=((fypage-1)*21)&pagesize=21&iarea=-1',
|
||||
filter_url: 'sort={{fl.sort or 75}}&iyear={{fl.iyear}}&year={{fl.year}}&itype={{fl.type}}&ifeature={{fl.feature}}&iarea={{fl.area}}&itrailer={{fl.itrailer}}&gender={{fl.sex}}',
|
||||
filter_url: 'sort={{fl.sort or 75}}&iyear={{fl.iyear}}&year={{fl.year}}&itype={{fl.type}}&ifeature={{fl.feature}}&iarea={{fl.area}}&itrailer={{fl.itrailer}}&gender={{fl.sex}}',
|
||||
filter_url: 'sort={{fl.sort or 75}}&iyear={{fl.iyear}}&year={{fl.year}}&itype={{fl.type}}&ifeature={{fl.feature}}&iarea={{fl.area}}&itrailer={{fl.itrailer}}&gender={{fl.sex}}&prefer={{fl.prefer}}&identity={{fl.identity}}&attraction={{fl.attraction}}&story={{fl.story}}',
|
||||
filter: {
|
||||
"choice": [{
|
||||
"key": "sort",
|
||||
@@ -648,6 +647,59 @@ var rule = {
|
||||
"n": "旅游",
|
||||
"v": "11"
|
||||
}]
|
||||
}],
|
||||
"mini_series": [{
|
||||
"key": "prefer",
|
||||
"name": "频道",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "女频",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "男频",
|
||||
"v": "2"
|
||||
}]
|
||||
}, {
|
||||
"key": "identity",
|
||||
"name": "身份",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "总裁",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "大女主",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "萌娃",
|
||||
"v": "4"
|
||||
}]
|
||||
}, {
|
||||
"key": "attraction",
|
||||
"name": "看点",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "先婚后爱",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "颜值逆袭",
|
||||
"v": "45"
|
||||
}]
|
||||
}, {
|
||||
"key": "story",
|
||||
"name": "题材",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "都市奇幻",
|
||||
"v": "3"
|
||||
}]
|
||||
}]
|
||||
},
|
||||
headers: {
|
||||
@@ -655,8 +707,8 @@ var rule = {
|
||||
},
|
||||
timeout: 5000,
|
||||
cate_exclude: '会员|游戏|全部',
|
||||
class_name: '精选&电影&电视剧&综艺&动漫&少儿&纪录片',
|
||||
class_url: 'choice&movie&tv&variety&cartoon&child&doco',
|
||||
class_name: '电影&电视剧&短剧&综艺&动漫&少儿&纪录片',
|
||||
class_url: 'movie&tv&mini_series&variety&cartoon&child&doco',
|
||||
limit: 20,
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
@@ -671,7 +723,7 @@ var rule = {
|
||||
parse: 0,
|
||||
url: bata.url,
|
||||
jx: 0,
|
||||
danmaku: 'http://127.0.0.1:9978/proxy?do=danmu&site=js&url=' + input.split("?")[0]
|
||||
danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=" + input.split("?")[0]
|
||||
};
|
||||
} else {
|
||||
input = {
|
||||
@@ -681,7 +733,7 @@ var rule = {
|
||||
parse: 0,
|
||||
url: input.split("?")[0],
|
||||
jx: 1,
|
||||
danmaku: 'http://127.0.0.1:9978/proxy?do=danmu&site=js&url=' + input.split("?")[0]
|
||||
danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=" + input.split("?")[0]
|
||||
};
|
||||
}
|
||||
} catch {
|
||||
@@ -692,13 +744,188 @@ var rule = {
|
||||
parse: 0,
|
||||
url: input.split("?")[0],
|
||||
jx: 1,
|
||||
danmaku: 'http://127.0.0.1:9978/proxy?do=danmu&site=js&url=' + input.split("?")[0]
|
||||
danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=" + input.split("?")[0]
|
||||
};
|
||||
}
|
||||
}),
|
||||
|
||||
推荐: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
|
||||
一级: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
|
||||
一级: $js.toString(() => {
|
||||
let d = [];
|
||||
let fyclass = MY_CATE;
|
||||
let fypage = MY_PAGE;
|
||||
let fl = MY_FL;
|
||||
|
||||
// 短剧分类特殊处理
|
||||
if (fyclass === 'mini_series') {
|
||||
let apiUrl = 'https://pbaccess.video.qq.com/trpc.vector_layout.page_view.PageService/getPage?video_appid=3000010&vversion_platform=2';
|
||||
|
||||
// 构建筛选条件
|
||||
let filterParts = [];
|
||||
if (fl.prefer) filterParts.push('prefer=' + fl.prefer);
|
||||
if (fl.identity) filterParts.push('identity=' + fl.identity);
|
||||
if (fl.attraction) filterParts.push('attraction=' + fl.attraction);
|
||||
if (fl.story) filterParts.push('story=' + fl.story);
|
||||
let filterValue = filterParts.length > 0 ? filterParts.join('&') : 'sort=75';
|
||||
|
||||
// 获取或初始化分页上下文
|
||||
let pageContext = null;
|
||||
let cacheKey = 'mini_series_ctx_' + filterValue;
|
||||
|
||||
if (fypage > 1) {
|
||||
try {
|
||||
let cachedContext = storage0.getItem(cacheKey);
|
||||
if (cachedContext) {
|
||||
let contextObj = JSON.parse(cachedContext);
|
||||
if (contextObj.page === fypage - 1 && contextObj.nextContext) {
|
||||
pageContext = contextObj.nextContext;
|
||||
} else if (fypage === 1) {
|
||||
pageContext = null;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
log('读取缓存失败: ' + e.message);
|
||||
}
|
||||
} else {
|
||||
// 第一页清除缓存
|
||||
try {
|
||||
storage0.setItem(cacheKey, '');
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
let requestBody = {
|
||||
"page_params": {
|
||||
"page_type": "channel",
|
||||
"page_id": "120188",
|
||||
"scene": "channel",
|
||||
"new_mark_label_enabled": "1",
|
||||
"vl_to_mvl": "1",
|
||||
"free_watch_trans_info": "{\"ad_frequency_control_time_list\":{}}",
|
||||
"ad_exp_ids": "100000",
|
||||
"skip_privacy_types": "0",
|
||||
"support_click_scan": "1"
|
||||
},
|
||||
"page_bypass_params": {
|
||||
"params": {
|
||||
"platform_id": "2",
|
||||
"caller_id": "3000010",
|
||||
"data_mode": "default",
|
||||
"user_mode": "default",
|
||||
"page_type": "channel",
|
||||
"page_id": "120188",
|
||||
"scene": "channel",
|
||||
"new_mark_label_enabled": "1"
|
||||
},
|
||||
"scene": "channel",
|
||||
"app_version": ""
|
||||
},
|
||||
"page_context": pageContext
|
||||
};
|
||||
|
||||
// 如果有筛选条件,添加filter_value
|
||||
if (filterParts.length > 0) {
|
||||
requestBody.page_bypass_params.params.filter_value = filterValue;
|
||||
}
|
||||
|
||||
try {
|
||||
let html = request(apiUrl, {
|
||||
body: JSON.stringify(requestBody),
|
||||
headers: {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
|
||||
'Content-Type': 'application/json',
|
||||
'Origin': 'https://v.qq.com',
|
||||
'Referer': 'https://v.qq.com/channel/mini_series'
|
||||
},
|
||||
method: 'POST'
|
||||
});
|
||||
|
||||
let json = JSON.parse(html);
|
||||
|
||||
if (json.ret === 0 && json.data && json.data.CardList) {
|
||||
// 保存下一页的上下文
|
||||
if (json.data.has_next_page && json.data.page_context) {
|
||||
try {
|
||||
storage0.setItem(cacheKey, JSON.stringify({
|
||||
page: fypage,
|
||||
nextContext: json.data.page_context
|
||||
}));
|
||||
} catch (e) {
|
||||
log('保存缓存失败: ' + e.message);
|
||||
}
|
||||
}
|
||||
|
||||
// 解析视频列表
|
||||
json.data.CardList.forEach(function(card) {
|
||||
// 处理筛选卡片(跳过)
|
||||
if (card.type === 'pc_hot_filter') {
|
||||
return;
|
||||
}
|
||||
|
||||
// 处理视频列表卡片
|
||||
if (card.type === '_eco_video_staggered' && card.children_list && card.children_list.card_list) {
|
||||
let cards = card.children_list.card_list.cards || [];
|
||||
cards.forEach(function(item) {
|
||||
if (item.type === '_eco_video_staggered_drama_item' && item.params) {
|
||||
let params = item.params;
|
||||
let cid = params.cid || '';
|
||||
let posterInfo = {};
|
||||
let markInfo = {};
|
||||
|
||||
try {
|
||||
posterInfo = JSON.parse(params.poster || '{}');
|
||||
} catch (e) {}
|
||||
|
||||
try {
|
||||
markInfo = JSON.parse(params.mark_label_list || '{}');
|
||||
} catch (e) {}
|
||||
|
||||
let title = posterInfo.title || '';
|
||||
let img = posterInfo.image_url || '';
|
||||
let remarks = '';
|
||||
|
||||
if (markInfo.mark_label_list && markInfo.mark_label_list.length > 0) {
|
||||
remarks = markInfo.mark_label_list[0].prime_text || '';
|
||||
}
|
||||
|
||||
if (cid && title) {
|
||||
d.push({
|
||||
title: title,
|
||||
img: img,
|
||||
desc: remarks,
|
||||
url: cid
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
log('短剧请求失败: ' + e.message);
|
||||
}
|
||||
|
||||
setResult(d);
|
||||
} else {
|
||||
// 其他分类使用原有的HTML解析逻辑
|
||||
let html = fetch(input, fetch_params);
|
||||
let $ = pdfa(html, '.list_item');
|
||||
$.forEach(function(it) {
|
||||
let item = pdfh(it, 'a&&data-float');
|
||||
let title = pdfh(it, 'img&&alt');
|
||||
let img = pdfh(it, 'img&&src');
|
||||
let desc = pdfh(it, 'a&&Text');
|
||||
if (item && title) {
|
||||
d.push({
|
||||
title: title,
|
||||
img: img,
|
||||
desc: desc,
|
||||
url: item
|
||||
});
|
||||
}
|
||||
});
|
||||
setResult(d);
|
||||
}
|
||||
}),
|
||||
二级: $js.toString(() => {
|
||||
VOD = {};
|
||||
let d = [];
|
||||
@@ -866,7 +1093,7 @@ var rule = {
|
||||
}
|
||||
|
||||
const nonMainContentKeywords = [
|
||||
':', '#', '特辑', '“', '剪辑', '片花', '独家', '专访', '纯享',
|
||||
':', '#', '特辑', '"', '剪辑', '片花', '独家', '专访', '纯享',
|
||||
'制作', '幕后', '宣传', 'MV', '主题曲', '插曲', '彩蛋',
|
||||
'精彩', '集锦', '盘点', '回顾', '解说', '评测', '反应', 'reaction'
|
||||
];
|
||||
@@ -878,7 +1105,7 @@ var rule = {
|
||||
}
|
||||
|
||||
function isQQPlatform(playSites) {
|
||||
if (!playSites || !Array.isArray(playSites)) return true; // 如果没有平台信息,默认保留
|
||||
if (!playSites || !Array.isArray(playSites)) return true;
|
||||
return playSites.some(site => site.enName && site.enName.toLowerCase() === 'qq');
|
||||
}
|
||||
|
||||
@@ -893,7 +1120,7 @@ var rule = {
|
||||
if (it.doc && it.doc.id && it.videoInfo &&
|
||||
isMainContent(it.videoInfo.title) &&
|
||||
isQQPlatform(it.videoInfo.playSites) &&
|
||||
Object.keys(it.videoInfo.episodeSites || {}).length > 0) { // ← 新增条件:episodeSites 不为空对象
|
||||
Object.keys(it.videoInfo.episodeSites || {}).length > 0) {
|
||||
|
||||
const itemId = it.doc.id;
|
||||
if (!seenIds.has(itemId)) {
|
||||
@@ -925,5 +1152,4 @@ var rule = {
|
||||
|
||||
setResult(d);
|
||||
})
|
||||
|
||||
};
|
||||
Binary file not shown.
Reference in New Issue
Block a user