Update zip

This commit is contained in:
GitHub Actions Bot
2026-03-21 20:30:59 +08:00
parent 4d31b7a84a
commit 9000c6492d
4 changed files with 591 additions and 39 deletions
+29 -15
View File
@@ -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
View File
@@ -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
View File
@@ -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.