上传文件至「js」
This commit is contained in:
+99
@@ -0,0 +1,99 @@
|
||||
globalThis.h_ost = 'https://s.fm.renbenai.com';
|
||||
var rule = {
|
||||
title: '凤凰FM',
|
||||
host: h_ost,
|
||||
url: '/fm/read/fmd/android/600/getProgramList.html&cid=fyclass&pagenum=fypage',
|
||||
homeUrl: '/fm/read/fmd/static/categoryTvGet_100.html',
|
||||
detailUrl: '/fm/read/fmd/android/getProgramAudioList_620.html&pid=fyid',
|
||||
searchUrl: '/fm/read/fmd/public/search_720.html&keyWord=**&searchType=1&pageNum=fypage',
|
||||
searchable: 2,
|
||||
quickSearch: 1,
|
||||
filterable: 0,
|
||||
headers: {
|
||||
'User-Agent': 'okhttp/3.12.11',
|
||||
'Cookie': 'KLBRSID=9b9dd35888924d7c870dd3474e89cab6|1753290568|1753290499'
|
||||
},
|
||||
play_parse: true,
|
||||
search_match: true,
|
||||
class_parse: $js.toString(() => {
|
||||
let html = request(input);
|
||||
let classes = [];
|
||||
let data = JSON.parse(html).data.list[0].channelContent;
|
||||
data.forEach((it) => {
|
||||
let typeName = it.nodeName;
|
||||
let typeId = it.id;
|
||||
classes.push({
|
||||
type_name: typeName,
|
||||
type_id: typeId,
|
||||
});
|
||||
});
|
||||
input = classes;
|
||||
}),
|
||||
一级: $js.toString(() => {
|
||||
let d = [];
|
||||
let html = request(input);
|
||||
let data = JSON.parse(html).data.hotList;
|
||||
data.forEach(item => {
|
||||
let title = item.programName;
|
||||
if (!/名称|排除/.test(title)) {
|
||||
d.push({
|
||||
title: title,
|
||||
desc: item.resourceTitle,
|
||||
img: item.img640_640,
|
||||
url: item.id,
|
||||
});
|
||||
}
|
||||
});
|
||||
setResult(d);
|
||||
}),
|
||||
二级: $js.toString(() => {
|
||||
let html = request(input);
|
||||
let list = JSON.parse(html).data.list;
|
||||
VOD = {
|
||||
vod_name: list[0]['title'] || '暂无名称',
|
||||
type_name: list[0]['vod_class'] || '暂无类型',
|
||||
vod_pic: list[0]['img370_370'] || '暂无图片',
|
||||
vod_remarks: list[0]['tags'] || '暂无备注',
|
||||
vod_content: list[0]['programDetails'] || '暂无剧情介绍'
|
||||
};
|
||||
let playlist = list[0]['audiolist'];
|
||||
let playForm = [];
|
||||
let playUrls = [];
|
||||
list.forEach(item => {
|
||||
const title = item.title;
|
||||
const firstUrl = item.audiolist && item.audiolist[0] ? item.audiolist[0].filePath : '';
|
||||
playUrls.push(`${title}$${firstUrl}`);
|
||||
});
|
||||
VOD.vod_play_from = '凤凰FM';
|
||||
VOD.vod_play_url = playUrls.join('#');
|
||||
}),
|
||||
搜索: $js.toString(() => {
|
||||
let d = [];
|
||||
let html = request(input);
|
||||
let data = JSON.parse(html).data.program;
|
||||
if (rule.search_match) {
|
||||
data = data.filter(it => {
|
||||
let title = it.programName;
|
||||
return title && new RegExp(KEY, "i").test(title);
|
||||
});
|
||||
}
|
||||
data.forEach(item => {
|
||||
let title = item.programName;
|
||||
if (!/名称|排除/.test(title)) {
|
||||
d.push({
|
||||
title: title,
|
||||
desc: item.programName,
|
||||
img: item.img640_640,
|
||||
url: item.id,
|
||||
});
|
||||
}
|
||||
});
|
||||
setResult(d);
|
||||
}),
|
||||
lazy: $js.toString(() => {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: input
|
||||
};
|
||||
}),
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
//小心儿悠悠//
|
||||
var rule = {
|
||||
title: '百忙无果[官]',
|
||||
host: 'https://pianku.api.mgtv.com',
|
||||
homeUrl: '',
|
||||
searchUrl: 'https://mobileso.bz.mgtv.com/msite/search/v2?q=**&pn=fypage&pc=10',
|
||||
detailUrl: 'https://pcweb.api.mgtv.com/episode/list?page=1&size=50&video_id=fyid',
|
||||
searchable: 2,
|
||||
quickSearch: 0,
|
||||
filterable: 1,
|
||||
multi: 1,
|
||||
url: '/rider/list/pcweb/v3?platform=pcweb&channelId=fyclass&pn=fypage&pc=80&hudong=1&_support=10000000&kind=a1&area=a1',
|
||||
filter_url: 'year={{fl.year or "all"}}&sort={{fl.sort or "all"}}&chargeInfo={{fl.chargeInfo or "all"}}',
|
||||
headers: {
|
||||
'User-Agent': 'PC_UA'
|
||||
},
|
||||
timeout: 5000,
|
||||
class_name: '电视剧&电影&综艺&动漫&纪录片&教育&少儿',
|
||||
class_url: '2&3&1&50&51&115&10',
|
||||
filter: {
|
||||
"1": getCommonFilter(),
|
||||
"2": getCommonFilter(),
|
||||
"3": getCommonFilter(),
|
||||
"50": getCommonFilter(),
|
||||
"51": getCommonFilter(),
|
||||
"115": getCommonFilter()
|
||||
},
|
||||
limit: 20,
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
try {
|
||||
let api = input.split("?")[0];
|
||||
let response = fetch(api, {
|
||||
method: 'get',
|
||||
headers: {
|
||||
'User-Agent': 'okhttp/3.14.9',
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
});
|
||||
let bata = JSON.parse(response);
|
||||
input = {
|
||||
parse: 0,
|
||||
url: bata.url.includes("mgtv") ? bata.url : input.split("?")[0],
|
||||
jx: bata.url.includes("mgtv") ? 0 : 1,
|
||||
danmaku: "http://103.36.220.166:98/tvbox/zh.php?url=" + input.split("?")[0]
|
||||
};
|
||||
} catch {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: input.split("?")[0],
|
||||
jx: 1,
|
||||
danmaku: "http://103.36.220.166:98/tvbox/zh.php?url=" + input.split("?")[0]
|
||||
};
|
||||
}
|
||||
}),
|
||||
一级: 'json:data.hitDocs;title;img;updateInfo||rightCorner.text;playPartId',
|
||||
二级: $js.toString(() => {
|
||||
fetch_params.headers.Referer = "https://www.mgtv.com";
|
||||
fetch_params.headers["User-Agent"] = MOBILE_UA;
|
||||
|
||||
let videoId = input.split('video_id=')[1].split('&')[0];
|
||||
let infoUrl = `https://pcweb.api.mgtv.com/video/info?allowedRC=1&vid=${videoId}&type=b&_support=10000000`;
|
||||
let infoData = JSON.parse(request(infoUrl));
|
||||
|
||||
if (infoData && infoData.data && infoData.data.info) {
|
||||
let detail = infoData.data.info.detail || {};
|
||||
VOD = {
|
||||
vod_name: infoData.data.info.title || "",
|
||||
type_name: detail.kind || "",
|
||||
vod_year: detail.releaseTime || "",
|
||||
vod_area: detail.area || "",
|
||||
vod_actor: detail.leader || "",
|
||||
vod_director: detail.director || "",
|
||||
vod_content: detail.story || "",
|
||||
vod_remarks: detail.updateInfo || ""
|
||||
};
|
||||
if (detail.img) VOD.vod_pic = detail.img;
|
||||
}
|
||||
|
||||
let d = [];
|
||||
let html = request(input);
|
||||
let json = JSON.parse(html);
|
||||
let host = "https://www.mgtv.com";
|
||||
let ourl = json.data.list.length > 0 ? json.data.list[0].url : json.data.series[0].url;
|
||||
if (!/^http/.test(ourl)) ourl = host + ourl;
|
||||
|
||||
fetch_params.headers["User-Agent"] = MOBILE_UA;
|
||||
html = request(ourl);
|
||||
if (html.includes("window.location =")) {
|
||||
ourl = pdfh(html, "meta[http-equiv=refresh]&&content").split("url=")[1];
|
||||
html = request(ourl);
|
||||
}
|
||||
|
||||
try {
|
||||
let details = pdfh(html, ".m-details&&Html").replace(/h1>/, "h6>").replace(/div/g, "br");
|
||||
let actor = "", director = "", time = "";
|
||||
if (/播出时间/.test(details)) {
|
||||
actor = pdfh(html, "p:eq(5)&&Text").substr(0, 25);
|
||||
director = pdfh(html, "p:eq(4)&&Text");
|
||||
time = pdfh(html, "p:eq(3)&&Text");
|
||||
} else {
|
||||
actor = pdfh(html, "p:eq(4)&&Text").substr(0, 25);
|
||||
director = pdfh(html, "p:eq(3)&&Text");
|
||||
time = "已完结";
|
||||
}
|
||||
let _img = pd(html, ".video-img&&img&&src");
|
||||
let JJ = pdfh(html, ".desc&&Text").split("牛马简介:")[1];
|
||||
VOD.vod_name = VOD.vod_name || pdfh(html, ".vt-txt&&Text");
|
||||
VOD.type_name = VOD.type_name || pdfh(html, "p:eq(0)&&Text").substr(0, 6);
|
||||
VOD.vod_area = VOD.vod_area || pdfh(html, "p:eq(1)&&Text");
|
||||
VOD.vod_actor = VOD.vod_actor || actor;
|
||||
VOD.vod_director = VOD.vod_director || director;
|
||||
VOD.vod_remarks = VOD.vod_remarks || time;
|
||||
VOD.vod_pic = VOD.vod_pic || _img;
|
||||
VOD.vod_content = VOD.vod_content || JJ;
|
||||
if (!VOD.vod_name) VOD.vod_name = VOD.type_name;
|
||||
} catch (e) {
|
||||
log("获取影片信息发生错误:" + e.message);
|
||||
}
|
||||
|
||||
function getRjpg(imgUrl, xs) {
|
||||
xs = xs || 3;
|
||||
let picSize = /jpg_/.test(imgUrl) ? imgUrl.split("jpg_")[1].split(".")[0] : false;
|
||||
let rjpg = false;
|
||||
if (picSize) {
|
||||
let a = parseInt(picSize.split("x")[0]) * xs;
|
||||
let b = parseInt(picSize.split("x")[1]) * xs;
|
||||
rjpg = a + "x" + b + ".jpg";
|
||||
}
|
||||
return /jpg_/.test(imgUrl) && rjpg ? imgUrl.replace(imgUrl.split("jpg_")[1], rjpg) : imgUrl;
|
||||
}
|
||||
|
||||
if (json.data.total === 1 && json.data.list.length === 1) {
|
||||
let data = json.data.list[0];
|
||||
d.push({
|
||||
title: data.t4,
|
||||
desc: data.t2,
|
||||
pic_url: getRjpg(data.img),
|
||||
url: "https://www.mgtv.com" + data.url
|
||||
});
|
||||
} else if (json.data.list.length > 1) {
|
||||
for (let i = 1; i <= json.data.total_page; i++) {
|
||||
if (i > 1) json = JSON.parse(fetch(input.replace("page=1", "page=" + i), {}));
|
||||
json.data.list.forEach(function(data) {
|
||||
if (data.isIntact == "1") {
|
||||
d.push({
|
||||
title: data.t4,
|
||||
desc: data.t2,
|
||||
pic_url: getRjpg(data.img),
|
||||
url: "https://www.mgtv.com" + data.url
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
print(input + "暂无片源");
|
||||
}
|
||||
VOD.vod_play_from = "芒果TV";
|
||||
VOD.vod_play_url = d.map(function(it) {
|
||||
return it.title + "$" + it.url;
|
||||
}).join("#");
|
||||
setResult(d);
|
||||
}),
|
||||
搜索: $js.toString(() => {
|
||||
fetch_params.headers.Referer = "https://www.mgtv.com";
|
||||
fetch_params.headers["User-Agent"] = MOBILE_UA;
|
||||
let d = [];
|
||||
let html = request(input);
|
||||
let json = JSON.parse(html);
|
||||
json.data.contents.forEach(function(data) {
|
||||
if (data.type && data.type == 'media') {
|
||||
let item = data.data[0];
|
||||
if (item.source === "imgo") {
|
||||
let fyclass = '';
|
||||
try {
|
||||
fyclass = item.rpt.match(/idx=(.*?)&/)[1] + '$';
|
||||
} catch (e) {
|
||||
log(e.message);
|
||||
}
|
||||
d.push({
|
||||
title: item.title.replace(/<B>|<\/B>/g, ''),
|
||||
img: item.img || '',
|
||||
content: '',
|
||||
desc: item.desc.join(','),
|
||||
url: fyclass + item.url.match(/.*\/(.*?)\.html/)[1]
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
setResult(d);
|
||||
})
|
||||
};
|
||||
|
||||
function getCommonFilter() {
|
||||
return [{
|
||||
"key": "chargeInfo",
|
||||
"name": "付费类型",
|
||||
"value": [
|
||||
{"n": "全部", "v": "all"},
|
||||
{"n": "免费", "v": "b1"},
|
||||
{"n": "vip", "v": "b2"},
|
||||
{"n": "VIP用券", "v": "b3"},
|
||||
{"n": "付费点播", "v": "b4"}
|
||||
]
|
||||
}, {
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{"n": "最新", "v": "c1"},
|
||||
{"n": "最热", "v": "c2"},
|
||||
{"n": "知乎高分", "v": "c4"}
|
||||
]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年代",
|
||||
"value": [
|
||||
{"n": "全部", "v": "all"},
|
||||
{"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", "v": "2014"},
|
||||
{"n": "2013", "v": "2013"},
|
||||
{"n": "2012", "v": "2012"},
|
||||
{"n": "2011", "v": "2011"},
|
||||
{"n": "2010", "v": "2010"},
|
||||
{"n": "2009", "v": "2009"},
|
||||
{"n": "2008", "v": "2008"},
|
||||
{"n": "2007", "v": "2007"},
|
||||
{"n": "2006", "v": "2006"},
|
||||
{"n": "2005", "v": "2005"},
|
||||
{"n": "2004", "v": "2004"}
|
||||
]
|
||||
}];
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
var rule = {
|
||||
author: '小可乐/v6.1.1',
|
||||
title: '电影港',
|
||||
类型: '影视',
|
||||
host: 'https://www.dyg123.net',
|
||||
headers: {'User-Agent': MOBILE_UA},
|
||||
编码: 'utf-8',
|
||||
timeout: 5000,
|
||||
|
||||
homeUrl: '/',
|
||||
url: '/e/action/ListInfo.php?fyfilter',
|
||||
filter_url: 'classid={{fl.cateId or "fyclass"}}&page=(fypage-1)&line=30&tempid=1&orderby={{fl.by or "newstime"}}',
|
||||
searchUrl: '/e/search/index.php',
|
||||
detailUrl: '',
|
||||
|
||||
limit: 9,
|
||||
double: false,
|
||||
class_name: '电影&剧集&综艺&动画&短剧',
|
||||
class_url: '1&20&31&30&32',
|
||||
|
||||
推荐: '*',
|
||||
一级: $js.toString(() => {
|
||||
let resHtml = fetch(input);
|
||||
VODS = rule.getVodList(resHtml);
|
||||
}),
|
||||
搜索: $js.toString(() => {
|
||||
VODS = [];
|
||||
let fbody = `keyboard=${KEY}&submit=搜索&show=title&tempid=1`;
|
||||
let resHtml = fetch(input, {
|
||||
headers: {
|
||||
...rule.headers,
|
||||
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
|
||||
},
|
||||
method: 'POST',
|
||||
body: fbody
|
||||
});
|
||||
let fvods = rule.getVodList(resHtml);
|
||||
VODS.push(...fvods);
|
||||
let flagNum = rule.cutStr(resHtml, 'searchid=', '"', '');
|
||||
if (flagNum) {
|
||||
let sUrl = `${HOST}/e/search/result/index.php?page=1&searchid=${flagNum}`;
|
||||
resHtml = fetch(sUrl);
|
||||
fvods = rule.getVodList(resHtml);
|
||||
VODS.push(...fvods);
|
||||
}
|
||||
}),
|
||||
|
||||
二级: $js.toString(() => {
|
||||
let [id, kname, kpic, kremarks] = input.split('@');
|
||||
let resHtml = fetch(id);
|
||||
let kdetail = pdfh(resHtml, '.ct-l').split('<strong>')[0].replace(/[\u3000\s]+/g, '');
|
||||
let [ktabs, kurls] = [[], []];
|
||||
let xz_tabs = pdfa(resHtml, 'strong:has(span)').map((it,idx) => rule.cutStr(it, '【', '】', `磁力线${idx+1}`));
|
||||
ktabs.push(...xz_tabs);
|
||||
let zx_tabs = pdfa(resHtml, '#tab81').map((it,idx) => pdfh(it, 'body&&Text'));
|
||||
ktabs.push(...zx_tabs);
|
||||
let xz_urls = pdfa(resHtml, 'tbody').map(item => {
|
||||
let xz_url = pdfa(item, 'a').map(it => { return pdfh(it, 'body&&Text') + '$' + pdfh(it, 'a&&href') });
|
||||
return xz_url.join('#')
|
||||
});
|
||||
kurls.push(...xz_urls);
|
||||
let zx_urls = pdfa(resHtml, '.videourl').map(item => {
|
||||
let zx_url = pdfa(item, 'a').map(it => { return pdfh(it, 'body&&Text') + '$' + pd(it, 'a&&href', HOST) });
|
||||
return zx_url.join('#')
|
||||
});
|
||||
kurls.push(...zx_urls);
|
||||
VOD = {
|
||||
vod_id: id,
|
||||
vod_name: kname,
|
||||
vod_pic: kpic,
|
||||
type_name: rule.cutStr(kdetail, '◎类别', '◎', '类型'),
|
||||
vod_remarks: rule.cutStr(kdetail, '◎集数', '◎', '状态'),
|
||||
vod_year: rule.cutStr(kdetail, '◎年代', '◎', '1000'),
|
||||
vod_area: rule.cutStr(kdetail, '◎产地', '◎', '地区'),
|
||||
vod_lang: rule.cutStr(kdetail, '◎语言', '◎', '语言'),
|
||||
vod_director: rule.cutStr(kdetail, '◎导演', '◎', '导演'),
|
||||
vod_actor: rule.cutStr(kdetail, '◎演员', '</p>', '') || rule.cutStr(kdetail, '◎主演', '</p>', '主演'),
|
||||
vod_content: rule.cutStr(kdetail, '◎简介£>', '</p>', '') || kname,
|
||||
vod_play_from: ktabs.join('$$$'),
|
||||
vod_play_url: kurls.join('$$$')
|
||||
};
|
||||
}),
|
||||
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
let kp = 0, kurl = '';
|
||||
if (/^magnet/.test(input)) {
|
||||
kurl = input;
|
||||
} else {
|
||||
let resHtml = fetch(input);
|
||||
let jurl = rule.cutStr(resHtml, "a:'", "'", '');
|
||||
if (/m3u8|mp4|mkv/.test(jurl)) {
|
||||
kurl = jurl;
|
||||
} else {
|
||||
jurl = rule.cutStr(resHtml, '<iframe£src="', '"', '');
|
||||
resHtml = fetch(jurl);
|
||||
kurl = getHome(jurl) + rule.cutStr(resHtml, 'url = "', '"', '');
|
||||
if (!/m3u8|mp4|mkv/.test(kurl)) {
|
||||
kurl = input;
|
||||
kp = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
input = { jx: 0, parse: kp, url: kurl, header: rule.headers };
|
||||
}),
|
||||
|
||||
getVodList: function(khtml) {
|
||||
try {
|
||||
if (!khtml) {throw new Error('源码为空');}
|
||||
let kvods = [];
|
||||
let listArr = pdfa(khtml, '.m1');
|
||||
for (let it of listArr) {
|
||||
let kname = rule.cutStr(it, 'alt="', '"', '名称');
|
||||
let kpic = rule.cutStr(it, 'data-original="', '"', '图片');
|
||||
let kremarks = rule.cutStr(it, 'other">', '</p>', '状态');
|
||||
kvods.push({
|
||||
vod_name: kname,
|
||||
vod_pic: kpic,
|
||||
vod_remarks: kremarks,
|
||||
vod_id: `${rule.cutStr(it, 'href="', '"', 'Id')}@${kname}@${kpic}@${kremarks}`
|
||||
});
|
||||
}
|
||||
return kvods;
|
||||
} catch (e) {
|
||||
console.error(`生成视频列表失败:`, e.message);
|
||||
return [];
|
||||
}
|
||||
},
|
||||
|
||||
cutStr: function(str, prefix = '', suffix = '', defaultVal = 'cutFaile', clean = true, i = 1, all = false) {
|
||||
try {
|
||||
if (!str || typeof str !== 'string') {throw new Error('被截取对象需为非空字符串');}
|
||||
const cleanStr = cs => String(cs).replace(/<[^>]*?>/g, ' ').replace(/( |\u00A0|\s)+/g, ' ').trim().replace(/\s+/g, ' ');
|
||||
const esc = s => String(s).replace(/[.*+?${}()|[\]\\/^]/g, '\\$&');
|
||||
let pre = esc(prefix).replace(/£/g, '[^]*?');
|
||||
let end = esc(suffix);
|
||||
let regex = new RegExp(`${pre ? pre : '^'}([^]*?)${end ? end : '$'}`, 'g');
|
||||
let matchArr = [...str.matchAll(regex)];
|
||||
if (matchArr.length === 0) {return all ? [defaultVal] : defaultVal}
|
||||
if (all) {
|
||||
return matchArr.map(it => {
|
||||
const val = it[1] ?? defaultVal;
|
||||
return clean && val !== defaultVal ? cleanStr(val) : val;
|
||||
});
|
||||
}
|
||||
i = parseInt(i, 10);
|
||||
if (isNaN(i) || i < 1) {throw new Error('序号需为大于0的整数');}
|
||||
i = i - 1;
|
||||
if (i >= matchArr.length) {throw new Error('序号越界');}
|
||||
let result = matchArr[i][1] ?? defaultVal;
|
||||
return clean && result !== defaultVal ? cleanStr(result) : result;
|
||||
} catch (e) {
|
||||
console.error(`字符串截取失败:`, e.message);
|
||||
return all ? ['cutErr'] : 'cutErr';
|
||||
}
|
||||
},
|
||||
|
||||
filter: 'H4sIAAAAAAAAA6vmUgACJUMlq2gwCwSqlbJTK5WslJITS1I9U5R0lPISc1OB/Ocbdz+d1w3klyXmlAIFoquV8oDCT1tXvGxeARIGcgyVanWgwl0rnuyd87yzHSpjhJCZNudp53KEjDFc5nnHxmfNrQgZE4TM8olPd+5GyJgiTOtcjqLHDC7zrHHCs4ZpCBlzhEzHjCe7OhEyhgip57tWPd07FUnKQqk2tlYHI3CSKhEB86xv0tNd/RgB82xOw7NpG6Dm5KWWF5dkApXDLHqya9ezDVOgsvl5yTmZydkgq8A2xUIsVDIyoFbEAE2Ch9jsvcBAg4kjYuzZ9KUv569EkkJEzLM1y5/v60OSMhnIUDHGmlzpZDfWGKGT3UYDYDdXLQAMhqvHJAQAAA=='
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
var rule = {
|
||||
author: '小可乐/v5.12.2',
|
||||
title: '第一故事',
|
||||
类型: '影视',
|
||||
host: 'https://m.yigushi.com',
|
||||
hostJs: '',
|
||||
headers: {'User-Agent': MOBILE_UA},
|
||||
编码: 'utf-8',
|
||||
timeout: 5000,
|
||||
|
||||
homeUrl: '/',
|
||||
url: '/fyclass/index-htm-page-fypage.html',
|
||||
searchUrl: '/',
|
||||
detailUrl: '',
|
||||
|
||||
limit: 9,
|
||||
double: false,
|
||||
class_parse: $js.toString(() => {
|
||||
rule.classes = pdfa(fetch(`${HOST}/channel.php`), '.list-set&&a').slice(0,5).map(it => {
|
||||
let kName = pdfh(it, 'body&&Text').slice(0,2);
|
||||
let kId = pdfh(it, 'a&&href').match(/com\/(.*?)\//)?.[1] ?? 'Id';
|
||||
return {type_name: kName, type_id: kId};
|
||||
});
|
||||
input = rule.classes;
|
||||
}),
|
||||
|
||||
addPics: {
|
||||
"评书下载": "https://img3.jiemian.com/101/original/20180916/153710102319049900_a700x398.jpg",
|
||||
"戏曲下载": "https://img95.699pic.com/photo/50762/7523.jpg_wh860.jpg",
|
||||
"有声小说": "https://q2.itc.cn/q_70/images03/20251221/546f34ca117c43c6978cbe6a3dcdabd6.png",
|
||||
"儿童故事": "https://img.alicdn.com/bao/uploaded/i3/2617663089/O1CN01yy76Uf1Ygo9eSLT5c_!!0-item_pic.jpg",
|
||||
"相声小品": "https://gd-filems.dancf.com/gaoding/cms/mcm79j/mcm79j/59385/6a211035-3658-45ce-a476-79f6f5dc02b71172884.png?x-oss-process=image/resize,h_1308/interlace,1",
|
||||
"其它": "https://bpic.588ku.com/element_origin_min_pic/23/02/19/f13e41c70e75e82999f929072543ca7e.jpg"
|
||||
},
|
||||
|
||||
getVodList: function(url) {
|
||||
let khtml = fetch(url);
|
||||
let klists = pdfa(khtml, 'li:has(strong)');
|
||||
let kremarks = pdfh(khtml, '.head-bar-title&&Text') || '状态';
|
||||
let item = Object.keys(rule.addPics).find(key => kremarks.includes(key)) ?? '其它';
|
||||
let kpic = rule.addPics[item] || '图片';
|
||||
let kvods = [];
|
||||
klists.forEach(it => {
|
||||
let kname = pdfh(it, 'strong&&Text') || '名称';
|
||||
kvods.push({
|
||||
vod_name: kname,
|
||||
vod_pic: kpic,
|
||||
vod_remarks: kremarks,
|
||||
vod_id: `${pdfh(it, 'a&&href')}@${kname}@${kpic}@${kremarks}`
|
||||
});
|
||||
});
|
||||
return kvods;
|
||||
},
|
||||
|
||||
推荐: '*',
|
||||
一级: $js.toString(() => {
|
||||
VODS = rule.getVodList(input);
|
||||
}),
|
||||
搜索: $js.toString(() => {
|
||||
VODS = [];
|
||||
rule.classes.forEach(it => {
|
||||
input = `${HOST}/${it.type_id}/search.php?kw=${KEY}&page=${MY_PAGE}`;
|
||||
let fvods = rule.getVodList(input);
|
||||
if (fvods.length) {VODS.push(...fvods);}
|
||||
});
|
||||
}),
|
||||
二级: $js.toString(() => {
|
||||
let [kid, kname, kpic, kremarks] = input.split('@');
|
||||
let khtml = fetch(kid);
|
||||
let [eName, eUrl] = [pdfh(khtml, '.content&&a&&Text').match(/【(.*?)】/)?.[1] ?? '无标题', pdfh(khtml, '.content&&a&&href') || 'noUrl'];
|
||||
let kurls = `${eName}$${eUrl}`;
|
||||
VOD = {
|
||||
vod_id: kid,
|
||||
vod_name: kname,
|
||||
vod_pic: kpic,
|
||||
type_name: pdfh(khtml, '.head-bar-title&&Text') || '类型',
|
||||
vod_remarks: kremarks,
|
||||
vod_year: '2025',
|
||||
vod_area: '中国',
|
||||
vod_lang: '国语',
|
||||
vod_director: '导演',
|
||||
vod_actor: '主演',
|
||||
vod_content: pdfh(khtml, '.content--span--a&&Text') || '简介',
|
||||
vod_play_from: '网盘线路',
|
||||
vod_play_url: kurls
|
||||
};
|
||||
}),
|
||||
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
let kurl = `push://${input}`;
|
||||
input = {parse: 0, url: kurl, header: rule.headers};
|
||||
}),
|
||||
|
||||
filter: {}
|
||||
}
|
||||
@@ -0,0 +1,184 @@
|
||||
//小心儿悠悠//
|
||||
var rule = {
|
||||
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=**',
|
||||
searchable: 2,
|
||||
quickSearch: 0,
|
||||
filterable: 1,
|
||||
multi: 1,
|
||||
url: '/category/data?optionRefresh=1&pageNo=fypage¶ms=fyfilter',
|
||||
filter_url: '{{fl}}',
|
||||
filter: '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',
|
||||
headers: {
|
||||
'User-Agent': 'PC_UA',
|
||||
'Cookie': 'cna=VvNvGX3e0ywCAavVEXlnA2bg; __ysuid=1626676228345Rl1; __ayft=1652434048647; __arycid=dm-1-00; __arcms=dm-1-00; __ayvstp=85; __arpvid=1667204023100cWWdgM-1667204023112; __ayscnt=10; __aypstp=60; isg=BBwcqxvvk3BxkWQGugbLpUSf7TrOlcC_U7GAj_YdfYfvQbzLHqYGT4Hgp6m5TvgX; tfstk=c3JOByYUH20ilVucLOhh0pCtE40lZfGc-PjLHLLfuX7SWNyAiQvkeMBsIw7PWDC..; l=eBQguS-PjdJFGJT-BOfwourza77OSIRA_uPzaNbMiOCPOb1B5UxfW6yHp4T6C3GVhsGJR3rp2umHBeYBqQd-nxvOF8qmSVDmn',
|
||||
'Referer': 'https://www.youku.com',
|
||||
},
|
||||
timeout: 5000,
|
||||
class_name: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏',
|
||||
class_url: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏',
|
||||
limit: 20,
|
||||
play_parse: true,
|
||||
lazy: `js:
|
||||
const blockedLinks = [
|
||||
''
|
||||
];
|
||||
|
||||
if (/\.m3u8$/.test(input)) {
|
||||
input = { jx: 0, parse: 0, url: input };
|
||||
} else if (/\.mp4$/.test(input)) {
|
||||
input = blockedLinks.includes(input) ? null : { jx: 0, parse: 0, url: input };
|
||||
} else if (/qq|iqiyi|youku|mgtv|NBY/.test(input)) {
|
||||
let kurl ='' + encodeURIComponent(input);
|
||||
kurl = JSON.parse(request(kurl)).url;
|
||||
input = blockedLinks.includes(kurl) ? null : { jx: 0, parse: 0, url: kurl };
|
||||
} else {
|
||||
input = { jx: 0, parse: 1, url: input };
|
||||
}`,
|
||||
一级: `js:
|
||||
let d = [];
|
||||
MY_FL.type = MY_CATE;
|
||||
let fl = stringify(MY_FL);
|
||||
fl = encodeUrl(fl);
|
||||
input = input.split("{")[0] + fl;
|
||||
if (MY_PAGE > 1) {
|
||||
let old_session = getItem("yk_session_" + MY_CATE, "{}");
|
||||
input = input.replace("optionRefresh=1", "session=" + encodeUrl(old_session));
|
||||
}
|
||||
let html = fetch(input, fetch_params);
|
||||
try {
|
||||
html = JSON.parse(html);
|
||||
let lists = html.data.filterData.listData;
|
||||
let session = html.data.filterData.session;
|
||||
session = stringify(session);
|
||||
if (session !== getItem("yk_session_" + MY_CATE, "{}")) {
|
||||
setItem("yk_session_" + MY_CATE, session);
|
||||
}
|
||||
lists.forEach(function(it) {
|
||||
let vid = it.videoLink.includes("id_") ? it.videoLink.split("id_")[1].split(".html")[0] : "msearch:";
|
||||
d.push({
|
||||
title: it.title,
|
||||
img: it.img,
|
||||
desc: it.summary,
|
||||
url: "https://search.youku.com/api/search?appScene=show_episode&showIds=" + vid,
|
||||
content: it.subTitle
|
||||
});
|
||||
});
|
||||
} catch (e) {
|
||||
log("一级列表解析发生错误:" + e.message);
|
||||
}
|
||||
setResult(d);`,
|
||||
二级: `js:
|
||||
var d = [];
|
||||
VOD = {};
|
||||
let html = request(input);
|
||||
let json = JSON.parse(html);
|
||||
if (/keyword/.test(input)) {
|
||||
input = "https://search.youku.com/api/search?appScene=show_episode&showIds=" + json.pageComponentList[0].commonData.showId;
|
||||
json = JSON.parse(fetch(MY_URL, fetch_params));
|
||||
}
|
||||
let video_lists = json.serisesList;
|
||||
var name = json.sourceName;
|
||||
if (/优酷/.test(name) && video_lists.length > 0) {
|
||||
let ourl = "https://v.youku.com/v_show/id_" + video_lists[0].videoId + ".html";
|
||||
let _img = video_lists[0].thumbUrl;
|
||||
|
||||
let detailInfo = null;
|
||||
try {
|
||||
let detailUrl = "https://v.youku.com/v_getvideo_info/?showId=" + json.showId;
|
||||
detailInfo = JSON.parse(fetch(detailUrl, {
|
||||
headers: {
|
||||
Referer: "https://v.youku.com/",
|
||||
"User-Agent": PC_UA
|
||||
}
|
||||
}));
|
||||
} catch (e) {
|
||||
log("详情接口请求失败:" + e.message);
|
||||
}
|
||||
|
||||
if (detailInfo && detailInfo.data) {
|
||||
let v = detailInfo.data;
|
||||
VOD.vod_type = v.showVideotype;
|
||||
VOD.vod_year = v.lastUpdate;
|
||||
VOD.vod_remarks = v.rc_title;
|
||||
VOD.vod_actor = v._personNameStr;
|
||||
VOD.vod_content = v.showdesc;
|
||||
VOD.vod_pic = v.showLogo || _img;
|
||||
VOD.vod_name = v.showTitle;
|
||||
} else {
|
||||
let html = fetch(ourl, {
|
||||
headers: {
|
||||
Referer: "https://v.youku.com/",
|
||||
"User-Agent": PC_UA
|
||||
}
|
||||
});
|
||||
let jsonData = /__INITIAL_DATA__/.test(html) ? html.split("window.__INITIAL_DATA__ =")[1].split(";")[0] : "{}";
|
||||
if (jsonData === "{}") {
|
||||
VOD.vod_remarks = ourl;
|
||||
VOD.vod_pic = _img;
|
||||
VOD.vod_name = video_lists[0].title.replace(/(\d+)/g, "");
|
||||
VOD.vod_content = "触发了优酷人机验证,本次未获取详情,但不影响播放(" + ourl + ")";
|
||||
} else {
|
||||
try {
|
||||
jsonData = JSON.parse(jsonData);
|
||||
let data = jsonData.data.data;
|
||||
let data_extra = data.data.extra;
|
||||
let img = data_extra.showImgV;
|
||||
let model = jsonData.data.model;
|
||||
let m = model.detail.data.nodes[0].nodes[0].nodes[0].data;
|
||||
VOD.vod_pic = img;
|
||||
VOD.vod_name = m.introTitle;
|
||||
VOD.vod_type = m.showGenre;
|
||||
VOD.vod_remarks = m.updateInfo || m.subtitle;
|
||||
VOD.vod_content = m.desc;
|
||||
} catch (e) {
|
||||
VOD.vod_remarks = name;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (!/优酷/.test(name)) {
|
||||
VOD.vod_content = "非自家播放源,暂无视频简介及海报";
|
||||
VOD.vod_remarks = name;
|
||||
}
|
||||
|
||||
play_url = play_url.replace("&play_url=", "&type=json&play_url=");
|
||||
video_lists.forEach(function(it) {
|
||||
let url = "https://v.youku.com/v_show/id_" + it.videoId + ".html";
|
||||
if (it.thumbUrl) {
|
||||
d.push({
|
||||
desc: it.showVideoStage ? it.showVideoStage.replace("期", "集") : it.displayName,
|
||||
pic_url: it.thumbUrl,
|
||||
title: it.title,
|
||||
url: play_url + urlencode(url)
|
||||
});
|
||||
} else if (name !== "优酷") {
|
||||
d.push({
|
||||
title: it.displayName ? it.displayName : it.title,
|
||||
url: play_url + urlencode(it.url)
|
||||
});
|
||||
}
|
||||
});
|
||||
VOD.vod_play_from = name;
|
||||
VOD.vod_play_url = d.map(function(it) {
|
||||
return it.title + "$" + it.url;
|
||||
}).join("#");`,
|
||||
搜索: `js:
|
||||
var d = [];
|
||||
let html = request(input);
|
||||
let json = JSON.parse(html);
|
||||
json.pageComponentList.forEach(function(it) {
|
||||
if (it.hasOwnProperty("commonData")) {
|
||||
it = it.commonData;
|
||||
d.push({
|
||||
title: it.titleDTO.displayName,
|
||||
img: it.posterDTO.vThumbUrl,
|
||||
desc: it.stripeBottom,
|
||||
content: it.updateNotice + " " + it.feature,
|
||||
url: "https://search.youku.com/api/search?appScene=show_episode&showIds=" + it.showId + "&appCaller=h5"
|
||||
});
|
||||
}
|
||||
});
|
||||
setResult(d);`
|
||||
};
|
||||
Reference in New Issue
Block a user