上传文件至「js」
This commit is contained in:
+609
@@ -0,0 +1,609 @@
|
||||
var rule = {
|
||||
title: '央视频',
|
||||
host: 'https://api.cntv.cn',
|
||||
homeUrl: '/lanmu/columnSearch?&fl=&fc=&cid=&p=1&n=500&serviceId=tvcctv&t=json',
|
||||
url: '/list/getVideoAlbumList?fyfilter&area=&letter=&n=24&serviceId=tvcctv&t=json',
|
||||
searchUrl: '',
|
||||
searchable: 0,
|
||||
quickSearch: 0,
|
||||
class_name: '栏目大全&特别节目&纪录片&电视剧&动画片',
|
||||
class_url: '栏目大全&特别节目&纪录片&电视剧&动画片',
|
||||
filterable: 1,
|
||||
filter_url: 'channel={{fl.channel}}&sc={{fl.sc}}&year={{fl.year}}',
|
||||
filter: {
|
||||
"纪录片": [{
|
||||
"key": "channel",
|
||||
"name": "频道",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "CCTV-1综合",
|
||||
"v": "CCTV-1综合,CCTV-1高清,CCTV-1综合高清"
|
||||
}, {
|
||||
"n": "CCTV-2财经",
|
||||
"v": "CCTV-2财经,CCTV-2高清,CCTV-2财经高清"
|
||||
}, {
|
||||
"n": "CCTV-3综艺",
|
||||
"v": "CCTV-3综艺,CCTV-3高清,CCTV-3综艺高清"
|
||||
}, {
|
||||
"n": "CCTV-4中文国际",
|
||||
"v": "CCTV-4中文国际,CCTV-4高清,CCTV-4中文国际(亚)高清"
|
||||
}, {
|
||||
"n": "CCTV-5体育",
|
||||
"v": "CCTV-5体育,CCTV-5高清,CCTV-5体育高清"
|
||||
}, {
|
||||
"n": "CCTV-6电影",
|
||||
"v": "CCTV-6电影,CCTV-6高清,CCTV-6电影高清"
|
||||
}, {
|
||||
"n": "CCTV-7国防军事",
|
||||
"v": "CCTV-7国防军事,CCTV-7高清,CCTV-7国防军事高清"
|
||||
}, {
|
||||
"n": "CCTV-8电视剧",
|
||||
"v": "CCTV-8电视剧,CCTV-8高清,CCTV-8电视剧高清"
|
||||
}, {
|
||||
"n": "CCTV-9纪录",
|
||||
"v": "CCTV-9纪录,CCTV-9高清,CCTV-9纪录高清"
|
||||
}, {
|
||||
"n": "CCTV-10科教",
|
||||
"v": "CCTV-10科教,CCTV-10高清,CCTV-10科教高清"
|
||||
}, {
|
||||
"n": "CCTV-11戏曲",
|
||||
"v": "CCTV-11戏曲,CCTV-11高清,CCTV-11戏曲高清"
|
||||
}, {
|
||||
"n": "CCTV-12社会与法",
|
||||
"v": "CCTV-12社会与法,CCTV-12高清,CCTV-12社会与法高清"
|
||||
}, {
|
||||
"n": "CCTV-13新闻",
|
||||
"v": "CCTV-13新闻,CCTV-13高清,CCTV-13新闻高清"
|
||||
}, {
|
||||
"n": "CCTV-14少儿",
|
||||
"v": "CCTV-14少儿,CCTV-14高清,CCTV-14少儿高清"
|
||||
}, {
|
||||
"n": "CCTV-15音乐",
|
||||
"v": "CCTV-15音乐,CCTV-15高清,CCTV-15音乐高清"
|
||||
}, {
|
||||
"n": "CCTV-17农业农村",
|
||||
"v": "CCTV-17农业农村,高清,高清"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"key": "sc",
|
||||
"name": "类型",
|
||||
"value": [{
|
||||
"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": "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"
|
||||
}]
|
||||
},
|
||||
],
|
||||
"特别节目": [{
|
||||
"key": "channel",
|
||||
"name": "频道",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "CCTV-1综合",
|
||||
"v": "CCTV-1综合,CCTV-1高清,CCTV-1综合高清"
|
||||
}, {
|
||||
"n": "CCTV-2财经",
|
||||
"v": "CCTV-2财经,CCTV-2高清,CCTV-2财经高清"
|
||||
}, {
|
||||
"n": "CCTV-3综艺",
|
||||
"v": "CCTV-3综艺,CCTV-3高清,CCTV-3综艺高清"
|
||||
}, {
|
||||
"n": "CCTV-4中文国际",
|
||||
"v": "CCTV-4中文国际,CCTV-4高清,CCTV-4中文国际(亚)高清"
|
||||
}, {
|
||||
"n": "CCTV-5体育",
|
||||
"v": "CCTV-5体育,CCTV-5高清,CCTV-5体育高清"
|
||||
}, {
|
||||
"n": "CCTV-6电影",
|
||||
"v": "CCTV-6电影,CCTV-6高清,CCTV-6电影高清"
|
||||
}, {
|
||||
"n": "CCTV-7国防军事",
|
||||
"v": "CCTV-7国防军事,CCTV-7高清,CCTV-7国防军事高清"
|
||||
}, {
|
||||
"n": "CCTV-8电视剧",
|
||||
"v": "CCTV-8电视剧,CCTV-8高清,CCTV-8电视剧高清"
|
||||
}, {
|
||||
"n": "CCTV-9纪录",
|
||||
"v": "CCTV-9纪录,CCTV-9高清,CCTV-9纪录高清"
|
||||
}, {
|
||||
"n": "CCTV-10科教",
|
||||
"v": "CCTV-10科教,CCTV-10高清,CCTV-10科教高清"
|
||||
}, {
|
||||
"n": "CCTV-11戏曲",
|
||||
"v": "CCTV-11戏曲,CCTV-11高清,CCTV-11戏曲高清"
|
||||
}, {
|
||||
"n": "CCTV-12社会与法",
|
||||
"v": "CCTV-12社会与法,CCTV-12高清,CCTV-12社会与法高清"
|
||||
}, {
|
||||
"n": "CCTV-13新闻",
|
||||
"v": "CCTV-13新闻,CCTV-13高清,CCTV-13新闻高清"
|
||||
}, {
|
||||
"n": "CCTV-14少儿",
|
||||
"v": "CCTV-14少儿,CCTV-14高清,CCTV-14少儿高清"
|
||||
}, {
|
||||
"n": "CCTV-15音乐",
|
||||
"v": "CCTV-15音乐,CCTV-15高清,CCTV-15音乐高清"
|
||||
}, {
|
||||
"n": "CCTV-17农业农村",
|
||||
"v": "CCTV-17农业农村,高清,高清"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"key": "sc",
|
||||
"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": "其他"
|
||||
}]
|
||||
},
|
||||
],
|
||||
"电视剧": [{
|
||||
"key": "sc",
|
||||
"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": "其他"
|
||||
}]
|
||||
},
|
||||
{
|
||||
"key": "year",
|
||||
"name": "年份",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"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"
|
||||
}, {
|
||||
"n": "2003",
|
||||
"v": "2003"
|
||||
}, {
|
||||
"n": "2002",
|
||||
"v": "2002"
|
||||
}, {
|
||||
"n": "2001",
|
||||
"v": "2001"
|
||||
}, {
|
||||
"n": "2000",
|
||||
"v": "2000"
|
||||
}, {
|
||||
"n": "1999",
|
||||
"v": "1999"
|
||||
}, {
|
||||
"n": "1998",
|
||||
"v": "1998"
|
||||
}, {
|
||||
"n": "1997",
|
||||
"v": "1997"
|
||||
}]
|
||||
},
|
||||
],
|
||||
},
|
||||
headers: {
|
||||
'User-Agent': 'PC_UA'
|
||||
},
|
||||
timeout: 10000,
|
||||
play_parse: true,
|
||||
|
||||
lazy: $js.toString(() => {
|
||||
let id = input.split("|")[0];
|
||||
let k4 = input.split("|")[1];
|
||||
let fc = input.split("|")[2];
|
||||
if (k4 === '7' && fc !== '体育') {
|
||||
input = 'https://hls.cntv.myhwcdn.cn/asp/hls/4000/0303000a/3/default/' + id + '/4000.m3u8';
|
||||
} else {
|
||||
input = 'https://cntv.playdreamer.cn/proxy/asp/hls/2000/0303000a/3/default/' + id + '/2000.m3u8';
|
||||
}
|
||||
//https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid='+input
|
||||
}),
|
||||
//海阔
|
||||
/*
|
||||
lazy: $js.toString(() => {
|
||||
input=JSON.parse(request('https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid='+input)).hls_url;
|
||||
id = input.split('/')[9];
|
||||
input = 'https://hls.cntv.myalicdn.com//asp/hls/2000/0303000a/3/default/' + id + '/2000.m3u8';
|
||||
}),
|
||||
*/
|
||||
//影视
|
||||
//lazy: $js.toString(() => {
|
||||
//input=JSON.parse(request('https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid='+input)).hls_url.replaceAll('main','2000')
|
||||
//.replaceAll('cntv.lxdns','cntv.myalicdn').replaceAll('n.cn','n.com').replaceAll('myhwcdn','myalicdn').replaceAll('kcdnvip','myalicdn').replaceAll('newcntv.qcloudcdn','cntv.myalicdn')
|
||||
//;
|
||||
//}),
|
||||
|
||||
limit: 6,
|
||||
double: false,
|
||||
|
||||
推荐: $js.toString(() => {
|
||||
var d = [];
|
||||
var list = JSON.parse(request(input)).response.docs;
|
||||
|
||||
list.forEach(it => {
|
||||
// 一级标题
|
||||
let title1 = it.column_name;
|
||||
// 一级描述
|
||||
let desc1 = it.channel_name;
|
||||
// 一级图片URL
|
||||
let picUrl1 = it.column_logo;
|
||||
// 一级URL(id 地区 类型 标题 演员 年份 频道 简介 图片 更新至)
|
||||
let url1 = it.lastVIDE.videoSharedCode + '|' + '' + '|' + it.column_firstclass + '|' + it.column_name + '|' + '' + '|' + it.column_playdate + '|' + it.channel_name + '|' + it.column_brief + '|' + it.column_logo + '|' + '' + '|' + it.lastVIDE.videoTitle;
|
||||
|
||||
d.push({
|
||||
desc: desc1,
|
||||
title: title1,
|
||||
pic_url: picUrl1,
|
||||
url: url1
|
||||
})
|
||||
})
|
||||
setResult(d);
|
||||
}),
|
||||
|
||||
|
||||
一级: $js.toString(() => {
|
||||
var d = [];
|
||||
if (MY_CATE === '栏目大全') {
|
||||
var list = JSON.parse(request(HOST + '/lanmu/columnSearch?&fl=&fc=&cid=&p=' + MY_PAGE + '&n=500&serviceId=tvcctv&t=json')).response.docs;
|
||||
list.forEach(it => {
|
||||
// 一级标题
|
||||
let title1 = it.column_name;
|
||||
// 一级描述
|
||||
let desc1 = it.channel_name;
|
||||
// 一级图片URL
|
||||
let picUrl1 = it.column_logo;
|
||||
// 一级URL(id 地区 类型 标题 演员 年份 频道 简介 图片 更新至)
|
||||
let url1 = it.lastVIDE.videoSharedCode + '|' + '' + '|' + it.column_firstclass + '|' + it.column_name + '|' + '' + '|' + it.column_playdate + '|' + it.channel_name + '|' + it.column_brief + '|' + it.column_logo + '|' + '' + '|' + it.lastVIDE.videoTitle;
|
||||
d.push({
|
||||
desc: desc1,
|
||||
title: title1,
|
||||
pic_url: picUrl1,
|
||||
url: url1
|
||||
})
|
||||
})
|
||||
} else {
|
||||
var channelMap = {
|
||||
"特别节目": "CHAL1460955953877151",
|
||||
"纪录片": "CHAL1460955924871139",
|
||||
"电视剧": "CHAL1460955853485115",
|
||||
"动画片": "CHAL1460955899450127",
|
||||
};
|
||||
var list = JSON.parse(request(input + '&channelid=' + channelMap[MY_CATE] + '&fc=' + MY_CATE + '&p=' + MY_PAGE)).data.list;
|
||||
list.forEach(it => {
|
||||
// 一级标题
|
||||
let title1 = it.title;
|
||||
// 一级描述
|
||||
let desc1 = it.sc + ((typeof it.year === 'undefined' || it.year === '') ? '' : ('•' + it.year)) + ((typeof it.count === 'undefined' || it.count === '') ? '' : ('•共' + it.count + '集'));
|
||||
// 一级图片URL
|
||||
let picUrl1 = it.image;
|
||||
// 一级URL(id 地区 类型 标题 演员 年份 频道 简介 图片 集数)
|
||||
let url1 = it.id + '|' + it.area + '|' + it.sc + '|' + it.title + '|' + it.actors + '|' + it.year + '|' + it.channel + '|' + it.brief + '|' + it.image + '|' + it.count + '|' + '' + '|' + MY_CATE;
|
||||
d.push({
|
||||
desc: desc1,
|
||||
title: title1,
|
||||
pic_url: picUrl1,
|
||||
url: url1
|
||||
})
|
||||
})
|
||||
}
|
||||
setResult(d);
|
||||
}),
|
||||
|
||||
二级: $js.toString(() => {
|
||||
let info = input.split("|");
|
||||
|
||||
VOD = {
|
||||
vod_id: info[0],
|
||||
vod_name: info[3],
|
||||
vod_pic: info[8],
|
||||
type_name: info[2] === 'undefined' ? '' : info[2],
|
||||
vod_year: info[5] === 'undefined' ? '' : info[5],
|
||||
vod_area: info[1] === 'undefined' ? '' : info[1],
|
||||
vod_remarks: info[9] === '' ? ('更新至' + info[10]) : ('共' + info[9] + '集'),
|
||||
vod_director: info[6] === 'undefined' ? '' : info[6],
|
||||
vod_actor: info[4] === 'undefined' ? '' : info[4],
|
||||
vod_content: info[7] === 'undefined' ? '' : info[7],
|
||||
};
|
||||
var modeMap = {
|
||||
"特别节目": "0",
|
||||
"纪录片": "0",
|
||||
"电视剧": "0",
|
||||
"动画片": "1",
|
||||
};
|
||||
var ctid = info[0].replace('https://api.cntv.cn/lanmu/', '');
|
||||
var link = 'https://api.cntv.cn/NewVideo/getVideoListByAlbumIdNew?id=' + ctid + '&serviceId=tvcctv&p=1&n=100&mode=' + modeMap[info[11]] + '&pub=1';
|
||||
var html = JSON.parse(request(link));
|
||||
var playUrls;
|
||||
if (html.errcode === '1001') {
|
||||
var guid = info[0].replace('https://api.cntv.cn/lanmu/', '');
|
||||
var link1 = 'https://api.cntv.cn/video/videoinfoByGuid?guid=' + guid + '&serviceId=tvcctv';
|
||||
ctid = JSON.parse(request(link1)).ctid.replace('https://api.cntv.cn/lanmu/', '');
|
||||
var link2 = 'https://api.cntv.cn/NewVideo/getVideoListByColumn?id=' + ctid + '&d=&p=1&n=100&sort=desc&mode=0&serviceId=tvcctv&t=json';
|
||||
playUrls = JSON.parse(request(link2)).data.list;
|
||||
|
||||
} else {
|
||||
playUrls = html.data.list;
|
||||
// 获取更多数据,暂不需要
|
||||
var flag = '';
|
||||
if (playUrls === '') {
|
||||
flag = 'true';
|
||||
}
|
||||
var page = 1;
|
||||
while (flag === '') {
|
||||
page = page + 1;
|
||||
var burl = 'https://api.cntv.cn/NewVideo/getVideoListByAlbumIdNew?id=' + ctid + '&serviceId=tvcctv&p=' + page + '&n=100&mode=' + modeMap[info[11]] + '&pub=1';
|
||||
var list = JSON.parse(request(burl)).data.list;
|
||||
if (list.length !== 0) {
|
||||
list.forEach(it => {
|
||||
playUrls.push(it);
|
||||
})
|
||||
continue;
|
||||
} else {
|
||||
flag = 'true';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let playFrom = [];
|
||||
let playList = [];
|
||||
playFrom.append('央视频');
|
||||
playUrls.forEach(it => {
|
||||
playList.append(playUrls.map(function(it) {
|
||||
return it.title + "$" + it.guid
|
||||
}).join("#"))
|
||||
});
|
||||
|
||||
// 最后封装所有线路
|
||||
let vod_play_from = playFrom.join('$$$');
|
||||
let vod_play_url = playList.join('$$$');
|
||||
VOD['vod_play_from'] = vod_play_from;
|
||||
VOD['vod_play_url'] = vod_play_url;
|
||||
}),
|
||||
|
||||
搜索: '',
|
||||
}
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
var rule = {
|
||||
title: '一曲肝肠断',
|
||||
host: 'https://fly.daoran.tv',
|
||||
url: '/API_ROP/search/album/screen',
|
||||
headers: {
|
||||
'User-Agent': 'okhttp/3.12.10',
|
||||
'Connection': 'Keep-Alive',
|
||||
'Accept-Encoding': 'gzip',
|
||||
'md5': 'SkvyrWqK9QHTdCT12Rhxunjx+WwMTe9y4KwgeASFDhbYabRSPskR0Q==',
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
'Cookie': 'JSESSIONID=41ABA76E6D45A44D6419B3F26A0851ED'
|
||||
},
|
||||
class_name: '豫剧&黄梅戏&越剧&京剧&评剧&曲剧&坠子&秦腔&河北梆子&潮剧&粤剧&沪剧&二夹弦&昆曲&河南琴书&淮剧&单弦&西秦戏&婺剧&上党梆子&白字戏&河南大鼓书&越调&滇剧&太康道情&民族音乐&扬剧&其他&曲艺晚会&二人台&北路梆子&彩调&乐腔&老年大学&吕剧&天津时调&戏曲&柳琴戏&京韵大鼓&皮影戏&湘剧&四平调&琼剧&锡剧&评书&绍剧&京东大鼓&庐剧&话剧&西河大鼓&莆仙戏&花鼓戏&川剧&相声&宛梆&晋中秧歌&采茶戏&蒲剧&汉剧&闽剧&晋剧&北京琴书&山歌剧&吉剧&正字戏&赣剧&麦田乡韾&楚剧&大平调&保定老调',
|
||||
class_url: 'yuju&hmx&yueju&jingju&pingju&quju&hnzz&qinq&hbbz&chaoju&gddx&huju&ejx&kunqu&hnqs&huaiju&danxian&xqx&wuju&SDBZ&bzx&hndgs&yued&dianju&tkdq&MZYY&yangju&other&else&ERT&blbz&caidiao&lq&WK&lvjv&tjsd&xq&liuqx&jydg&pyx&xj&spd&qiongju&xiju&pingshu&shaojv&jddg&luju&huaju&xhdg&huagx&chuanju&xiang&wb&jzyg&caichaxi&pujv&hj&minju&jinju&bjqs&sgj&jiju&zzx&gj&chuju&dpd&bdld',
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
let code = input.split('?')[1];
|
||||
let data = JSON.stringify({
|
||||
"item": "o3",
|
||||
"mask": 0,
|
||||
"nodeCode": "001000",
|
||||
"project": "lyhxcx",
|
||||
"px": 2,
|
||||
"resCode": code,
|
||||
"userId": "d4b29595b6fe764e09078a0dad7352ff"
|
||||
});
|
||||
let html = post('https://fly.daoran.tv/API_ROP/play/get/playurl', {headers: rule.headers, body: data});
|
||||
log(html)
|
||||
let url = JSON.parse(html).playUrls.hd;
|
||||
input = {url: url, parse: 0}
|
||||
|
||||
}),
|
||||
一级: $js.toString(() => {
|
||||
let d = [];
|
||||
let tid = MY_CATE
|
||||
let pg = MY_PAGE
|
||||
let data = JSON.stringify({
|
||||
"cur": pg,
|
||||
"free": 0,//0 全部,1 免费,2,会员
|
||||
"orderby": "hot",
|
||||
"pageSize": 3000,
|
||||
"resType": 1,
|
||||
"sect": tid,
|
||||
"tagId": 0,
|
||||
"userId": "d4b29595b6fe764e09078a0dad7352ff",
|
||||
"channel": "oppo",
|
||||
"item": "y9",
|
||||
"nodeCode": "001000",
|
||||
"project": "lyhxcx"
|
||||
});
|
||||
let html = post(input, {headers: rule.headers, body: data});
|
||||
log(html)
|
||||
let list = JSON.parse(html).pb.dataList;
|
||||
list.forEach(it => {
|
||||
let id = 'https://zheshiyitaiojialianjie.com?' + it.code
|
||||
d.push({
|
||||
url: id,
|
||||
title: it.name,
|
||||
img: 'https://img0.baidu.com/it/u=4079405848,3806507810&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=750',
|
||||
desc: it.des,
|
||||
})
|
||||
})
|
||||
setResult(d);
|
||||
}),
|
||||
二级: $js.toString(() => {
|
||||
let urls = [];
|
||||
let code = input.split('?')[1];
|
||||
let data = JSON.stringify({
|
||||
"albumCode": code,
|
||||
"cur": 1,
|
||||
"pageSize": 100,
|
||||
"userId": "d4b29595b6fe764e09078a0dad7352ff",
|
||||
"channel": "oppo",
|
||||
"item": "y9",
|
||||
"nodeCode": "001000",
|
||||
"project": "lyhxcx"
|
||||
});
|
||||
let html = post('https://fly.daoran.tv/API_ROP/album/res/list', {headers: rule.headers, body: data});
|
||||
log(html)
|
||||
let list = JSON.parse(html).pb.dataList;
|
||||
list.forEach(it => {
|
||||
urls.push(it.name + '$' + 'https://zheshiyitaiojialianjie.com?' + it.code);
|
||||
})
|
||||
VOD = {
|
||||
vod_pic: 'https://img0.baidu.com/it/u=4079405848,3806507810&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=750',
|
||||
vod_play_from: '球球啦',
|
||||
vod_play_url: urls.join('#')
|
||||
};
|
||||
}),
|
||||
|
||||
搜索: $js.toString(() => {
|
||||
let d = []
|
||||
let pg = MY_PAGE
|
||||
let key = KEY
|
||||
let data = JSON.stringify({
|
||||
"cur": 1,
|
||||
"free": 0,
|
||||
"keyword": key,
|
||||
"nodeCode": "001000",
|
||||
"orderby": "hot",
|
||||
"pageSize": 200,
|
||||
"project": "lyhxcx",
|
||||
"px": 2,
|
||||
"sect": [],
|
||||
"userId": "d4b29595b6fe764e09078a0dad7352ff"
|
||||
});
|
||||
let html = post(input, {headers: rule.headers, body: data});
|
||||
log(html)
|
||||
let list = JSON.parse(html).pb.dataList;
|
||||
list.forEach(it => {
|
||||
let id = 'https://zheshiyitaiojialianjie.com?' + it.code
|
||||
d.push({
|
||||
url: id,
|
||||
title: it.name,
|
||||
img: 'https://img0.baidu.com/it/u=4079405848,3806507810&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=750',
|
||||
desc: it.des,
|
||||
})
|
||||
})
|
||||
setResult(d);
|
||||
}),
|
||||
double: false, // 推荐内容是否双层定
|
||||
searchUrl: '/API_ROP/search/album/list',
|
||||
}
|
||||
+318
@@ -0,0 +1,318 @@
|
||||
/*
|
||||
title: '星辰影院', author: '小可乐/v6.1.1'
|
||||
说明:可以不写ext,也可以写ext,ext支持的参数和格式参数如下
|
||||
"ext": {
|
||||
"host": "xxxx", //站点网址
|
||||
"timeout": 6000, //请求超时,单位毫秒
|
||||
"catesSet": "电视剧&电影&综艺", //指定分类和顺序
|
||||
"tabsSet": "土星&下载线1" //指定线路和顺序
|
||||
}
|
||||
*/
|
||||
|
||||
const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36';
|
||||
const DefHeader = {'User-Agent': MOBILE_UA};
|
||||
var HOST;
|
||||
var KParams = {
|
||||
headers: {'User-Agent': MOBILE_UA},
|
||||
timeout: 5000
|
||||
};
|
||||
|
||||
async function init(cfg) {
|
||||
try {
|
||||
HOST = (cfg.ext?.host?.trim() || 'https://www.xcyycn.com').replace(/\/$/, '');
|
||||
KParams.headers['Referer'] = HOST;
|
||||
let parseTimeout = parseInt(cfg.ext?.timeout?.trim(), 10);
|
||||
if (parseTimeout > 0) {KParams.timeout = parseTimeout;}
|
||||
KParams.catesSet = cfg.ext?.catesSet?.trim() || '';
|
||||
KParams.tabsSet = cfg.ext?.tabsSet?.trim() || '';
|
||||
KParams.resHtml = await request(HOST);
|
||||
} catch (e) {
|
||||
console.error('初始化参数失败:', e.message);
|
||||
}
|
||||
}
|
||||
|
||||
async function home(filter) {
|
||||
try {
|
||||
let resHtml = KParams.resHtml;
|
||||
if (!resHtml) {throw new Error('源码为空');}
|
||||
let typeArr = cutStr(resHtml, 'hl-nav-item£>', '</li>', '', false, 0, true).filter(flt => flt.includes('/v/'));
|
||||
let classes = typeArr.map((it,idx) => {
|
||||
let cName = cutStr(it, '>', '<', `分类${idx+1}`);
|
||||
let cId = cutStr(it, '/v/', '.', `值${idx+1}`);
|
||||
return {type_name: cName, type_id: cId};
|
||||
});
|
||||
if (KParams.catesSet) {classes = ctSet(classes, KParams.catesSet);}
|
||||
let filters = {};
|
||||
try {
|
||||
const nameObj = {class: 'class,剧情', area: 'area,地区', lang: 'lang,语言', year: 'year,年份', letter: 'letter,字母', by: 'by,排序'};
|
||||
const regObj = {class: /\d+---([^-]+)-/, area: /\/\d+-([^-]+)-/, lang: /\d+----([^-]+)-/, year: /-([^-]+)\./, letter: /\d+-----([^-]+)-/, by: /\d+--([^-]+)-/};
|
||||
let resHtmlList = await Promise.all(
|
||||
classes.map(async (it) => {
|
||||
try {return await request(`${HOST}/vs/${it.type_id}-----------.html`);} catch (sErr) {return '';}
|
||||
})
|
||||
);
|
||||
classes.forEach((it,idx) => {
|
||||
let resfHtml = resHtmlList[idx];
|
||||
if (resfHtml) {
|
||||
let flValArr = cutStr(resfHtml, 'hl-filter-list', '</ul>', '', false, 0, true).slice(1);
|
||||
filters[it.type_id] = Object.entries(nameObj).map(([nObjk, nObjv]) => {
|
||||
let [kkey, kname] = nObjv.split(',');
|
||||
let tgVal = flValArr.find(fv => regObj[kkey].test(fv)) ?? '';
|
||||
if (kkey === 'by') {tgVal = cutStr(resfHtml, 'hl-rb-title', '</div>', '', false);}
|
||||
let tgValArr = cutStr(tgVal, '<a', '/a>', '', false, 0, true);
|
||||
let tValArr = kkey !== 'by' ? tgValArr.slice(1) : tgValArr;
|
||||
let kvalue = tValArr.map(el => {
|
||||
let n = cutStr(el, '>', '<', '空白');
|
||||
let v = n;
|
||||
if (kkey === 'by') {v = el.match(regObj[kkey])?.[1] ?? '';}
|
||||
return {n: n, v: v};
|
||||
});
|
||||
if (kkey !== 'by') {kvalue.unshift({n: '全部', v: ''});}
|
||||
return {key: kkey, name: kname, value: kvalue};
|
||||
}).filter(flt => flt.key && flt.value.length > 1);
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
filters = {}
|
||||
}
|
||||
return JSON.stringify({class: classes, filters: filters});
|
||||
} catch (e) {
|
||||
console.error('获取分类失败:', e.message);
|
||||
return JSON.stringify({class: [], filters: {}});
|
||||
}
|
||||
}
|
||||
|
||||
async function homeVod() {
|
||||
try {
|
||||
let resHtml = KParams.resHtml;
|
||||
let VODS = getVodList(resHtml);
|
||||
return JSON.stringify({list: VODS});
|
||||
} catch (e) {
|
||||
console.error('推荐页获取失败:', e.message);
|
||||
return JSON.stringify({list: []});
|
||||
}
|
||||
}
|
||||
|
||||
async function category(tid, pg, filter, extend) {
|
||||
try {
|
||||
pg = parseInt(pg, 10), pg = pg > 0 ? pg : 1;
|
||||
let fl = extend || {};
|
||||
let cateUrl = `${HOST}/vs/${fl.cateId || tid}-${fl.area ?? ''}-${fl.by ?? ''}-${fl.class ?? ''}-${fl.lang ?? ''}-${fl.letter ?? ''}---${pg}---${fl.year ?? ''}.html`;
|
||||
let resHtml = await request(cateUrl);
|
||||
let VODS = getVodList(resHtml);
|
||||
let limit = VODS.length;
|
||||
let pagecount = cutStr(resHtml, 'hl-page-total£/', '页', '1');
|
||||
pagecount = Number(pagecount);
|
||||
return JSON.stringify({list: VODS, page: pg, pagecount: pagecount, limit: limit, total: limit*pagecount});
|
||||
} catch (e) {
|
||||
console.error('类别页获取失败:', e.message);
|
||||
return JSON.stringify({list: [], page: 1, pagecount: 0, limit: 30, total: 0});
|
||||
}
|
||||
}
|
||||
|
||||
async function search(wd, quick, pg) {
|
||||
try {
|
||||
pg = parseInt(pg, 10), pg = pg > 0 ? pg : 1;
|
||||
let searchUrl = `${HOST}/s${wd}/page/${pg}.html`;
|
||||
let resHtml = await request(searchUrl);
|
||||
let VODS = getVodList(resHtml);
|
||||
return JSON.stringify({list: VODS, page: pg, pagecount: 10, limit: 30, total: 300});
|
||||
} catch (e) {
|
||||
console.error('搜索页获取失败:', e.message);
|
||||
return JSON.stringify({list: [], page: 1, pagecount: 0, limit: 30, total: 0});
|
||||
}
|
||||
}
|
||||
|
||||
function getVodList(khtml) {
|
||||
try {
|
||||
if (!khtml) {throw new Error('源码为空');}
|
||||
let kvods = [];
|
||||
let listArr = cutStr(khtml, 'hl-lazy', '</a>', '', false, 0, true).filter(flt => flt.includes('remarks'));
|
||||
for (let it of listArr) {
|
||||
let kname = cutStr(it, 'title="', '"', '名称');
|
||||
let kpic = cutStr(it, 'data-original="', '"', '图片');
|
||||
let kremarks = cutStr(it, 'remarks">', '</', '状态');
|
||||
let kid = cutStr(it, 'href="', '"');
|
||||
if (kid) {
|
||||
kvods.push({
|
||||
vod_name: kname,
|
||||
vod_pic: kpic,
|
||||
vod_remarks: kremarks,
|
||||
vod_id: `${kid}@${kname}@${kpic}@${kremarks}`
|
||||
});
|
||||
}
|
||||
}
|
||||
return kvods;
|
||||
} catch (e) {
|
||||
console.error(`生成视频列表失败:`, e.message);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
async function detail(ids) {
|
||||
try {
|
||||
let [id, kname, kpic, kremarks] = ids.split('@');
|
||||
let detailUrl = !/^http/.test(id) ? `${HOST}${id}` : id;
|
||||
let resHtml = await request(detailUrl);
|
||||
if (!resHtml) {throw new Error('源码为空');}
|
||||
let intros = cutStr(resHtml, '"clearfix">', '</ul>', '', false);
|
||||
let [ktabs, kurls] = [[], []];
|
||||
let zx_tabs = cutStr(resHtml, '<span class="hl-from', '/span>', '', false, 0, true).map((it,idx) => cutStr(it, '>', '<', `在线${idx+1}`) );
|
||||
ktabs.push(...zx_tabs);
|
||||
let zx_urls = cutStr(resHtml, 'hl-plays-list">', '</ul>', '', false, 0, true).map((item,idx) => cutStr(item, '<li', '</li>', '', false, 0, true).map(it => { return cutStr(it, '>', '</a>', 'noEpi') + '$' + HOST + cutStr(it, 'href="', '"', 'noUrl'); }).join('#') );
|
||||
kurls.push(...zx_urls);
|
||||
let xzArr = cutStr(resHtml, 'hl-downs-list hl', '</ul>', '', false, 0, true);
|
||||
if (xzArr[0]) {
|
||||
xzArr.forEach((item,idx) => {
|
||||
let siglUrl = cutStr(item, 'down_url', '>', '', false, 0, true).map(it => `${cutStr(it, 'file_name="', '"', 'noEpi')}$${cutStr(it, 'value="', '"', 'noUrl')}` ).join('#');
|
||||
ktabs.push(`下载线${idx+1}`);
|
||||
kurls.push(siglUrl);
|
||||
});
|
||||
}
|
||||
if (KParams.tabsSet) {
|
||||
let ktus = ktabs.map((it, idx) => { return {type_name: it, type_value: kurls[idx]} });
|
||||
ktus = ctSet(ktus, KParams.tabsSet);
|
||||
ktabs = ktus.map(it => it.type_name);
|
||||
kurls = ktus.map(it => it.type_value);
|
||||
}
|
||||
let VOD = {
|
||||
vod_id: detailUrl,
|
||||
vod_name: kname,
|
||||
vod_pic: kpic,
|
||||
vod_remarks: kremarks,
|
||||
type_name: cutStr(intros, '类型:', '</li>', '类型'),
|
||||
vod_year: cutStr(intros, '年份:', '</li>', '1000'),
|
||||
vod_area: cutStr(intros, '地区:', '</li>', '地区'),
|
||||
vod_lang: cutStr(intros, '语言:', '</li>', '语言'),
|
||||
vod_director: cutStr(intros, '导演:', '</li>', '导演'),
|
||||
vod_actor: cutStr(intros, '主演:', '</li>', '主演'),
|
||||
vod_content: cutStr(intros, '简介:', '</li>', kname),
|
||||
vod_play_from: ktabs.join('$$$'),
|
||||
vod_play_url: kurls.join('$$$')
|
||||
};
|
||||
return JSON.stringify({list: [VOD]});
|
||||
} catch (e) {
|
||||
console.error('详情页获取失败:', e.message);
|
||||
return JSON.stringify({list: []});
|
||||
}
|
||||
}
|
||||
|
||||
async function play(flag, ids, flags) {
|
||||
try {
|
||||
let kp = 0, kurl = '';
|
||||
if (/下载/.test(flag)) {
|
||||
kurl = ids;
|
||||
} else {
|
||||
let resHtml = await request(ids);
|
||||
let codeObj = safeParseJSON(cutStr(resHtml, 'var player_£=', '<', '', false));
|
||||
kurl = codeObj?.url ?? '';
|
||||
if (!/^http/.test(kurl)) {
|
||||
kurl = ids;
|
||||
kp = 1;
|
||||
}
|
||||
}
|
||||
return JSON.stringify({jx: 0, parse: kp, url: kurl, header: DefHeader});
|
||||
} catch (e) {
|
||||
console.error('播放失败:', e.message);
|
||||
return JSON.stringify({jx: 0, parse: 0, url: '', header: {}});
|
||||
}
|
||||
}
|
||||
|
||||
function ctSet(kArr, setStr) {
|
||||
try {
|
||||
if (!Array.isArray(kArr) || kArr.length === 0 || typeof setStr !== 'string' || !setStr) { throw new Error('第一参数需为非空数组,第二参数需为非空字符串'); }
|
||||
const set_arr = [...kArr];
|
||||
const arrNames = setStr.split('&');
|
||||
const filtered_arr = arrNames.map(item => set_arr.find(it => it.type_name === item)).filter(Boolean);
|
||||
return filtered_arr.length? filtered_arr : [set_arr[0]];
|
||||
} catch (e) {
|
||||
console.error('ctSet 执行异常:', e.message);
|
||||
return kArr;
|
||||
}
|
||||
}
|
||||
|
||||
function safeParseJSON(jStr){
|
||||
try {return JSON.parse(jStr);} catch(e) {return null;}
|
||||
}
|
||||
|
||||
function cutStr(str, prefix = '', suffix = '', defVal = '', clean = true, i = 0, all = false) {
|
||||
try {
|
||||
if (typeof str !== 'string') {throw new Error('被截取对象必须为字符串');}
|
||||
const cleanStr = cs => String(cs).replace(/<[^>]*?>/g, ' ').replace(/( |[\u0020\u00A0\u3000\s])+/g, ' ').trim().replace(/\s+/g, ' ');
|
||||
const esc = s => String(s).replace(/[.*+?${}()|[\]\\/^]/g, '\\$&');
|
||||
let pre = esc(prefix).replace(/£/g, '[^]*?'), end = esc(suffix);
|
||||
const regex = new RegExp(`${pre || '^'}([^]*?)${end || '$'}`, 'g');
|
||||
const matchIter = str.matchAll(regex);
|
||||
if (all) {
|
||||
let matchArr = [...matchIter];
|
||||
if (!matchArr.length) {return [defVal];}
|
||||
return matchArr.map(ela => ela[1] !== undefined ? (clean ? cleanStr(ela[1]) : ela[1]) : defVal);
|
||||
}
|
||||
const idx = parseInt(i, 10);
|
||||
if (isNaN(idx)) {throw new Error('序号必须为整数');}
|
||||
let tgResult, matchIdx = 0;
|
||||
if (idx >= 0) {
|
||||
for (let elt of matchIter) {
|
||||
if (matchIdx++ === idx) {
|
||||
tgResult = elt[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let absI = Math.abs(idx), ringBuf = new Array(absI), ringPtr = 0, ringCnt = 0;
|
||||
for (let elt of matchIter) {
|
||||
ringBuf[ringPtr] = elt[1];
|
||||
ringPtr = (ringPtr + 1) % absI;
|
||||
ringCnt = Math.min(ringCnt + 1, absI);
|
||||
matchIdx++;
|
||||
}
|
||||
tgResult = (matchIdx >= absI && ringCnt > 0) ? ringBuf[ringPtr % ringCnt] : undefined;
|
||||
}
|
||||
return tgResult !== undefined ? (clean ? (cleanStr(tgResult) || defVal) : tgResult) : defVal;
|
||||
} catch (e) {
|
||||
console.error(`字符串截取错误:`, e.message);
|
||||
return all ? ['cutErr'] : 'cutErr';
|
||||
}
|
||||
}
|
||||
|
||||
async function request(reqUrl, options = {}) {
|
||||
try {
|
||||
if (typeof reqUrl !== 'string' || !reqUrl.trim()) { throw new Error('reqUrl需为字符串且非空'); }
|
||||
if (typeof options !== 'object' || Array.isArray(options) || options === null) { throw new Error('options类型需为非null对象'); }
|
||||
options.method = options.method?.toUpperCase() || 'GET';
|
||||
if (['GET', 'HEAD'].includes(options.method)) {
|
||||
delete options.body;
|
||||
delete options.data;
|
||||
delete options.postType;
|
||||
}
|
||||
let {headers, timeout, ...restOpts} = options;
|
||||
const optObj = {
|
||||
headers: (typeof headers === 'object' && !Array.isArray(headers) && headers) ? headers : KParams.headers,
|
||||
timeout: parseInt(timeout, 10) > 0 ? parseInt(timeout, 10) : KParams.timeout,
|
||||
...restOpts
|
||||
};
|
||||
const res = await req(reqUrl, optObj);
|
||||
if (options.withHeaders) {
|
||||
const resHeaders = typeof res.headers === 'object' && !Array.isArray(res.headers) && res.headers ? res.headers : {};
|
||||
const resWithHeaders = { ...resHeaders, body: res?.content ?? '' };
|
||||
return JSON.stringify(resWithHeaders);
|
||||
}
|
||||
return res?.content ?? '';
|
||||
} catch (e) {
|
||||
console.error(`${reqUrl}→请求失败:`, e.message);
|
||||
return options?.withHeaders ? JSON.stringify({ body: '' }) : '';
|
||||
}
|
||||
}
|
||||
|
||||
export function __jsEvalReturn() {
|
||||
return {
|
||||
init,
|
||||
home,
|
||||
homeVod,
|
||||
category,
|
||||
search,
|
||||
detail,
|
||||
play,
|
||||
proxy: null
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,275 @@
|
||||
var rule = {
|
||||
title: '小心儿悠悠',
|
||||
host: 'https://v.qq.com',
|
||||
homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=cartoon&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18',
|
||||
detailUrl: 'https://node.video.qq.com/x/api/float_vinfo2?cid=fyid',
|
||||
searchUrl: '**',
|
||||
searchable: 1,
|
||||
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: 'H4sIAAAAAAAAA+1YW08TWxR+92fMMySdFlrwEY3RnOT4YnzQ8DDBOaERqamVHGJIWksvXFIoYvEcSuViDxVpKYpYprb+mdl7Zv6Fe9rurrXdqE2OlRd4mvnW7L3u31r0mTIxGQpO6MrV+8+Uh/qsclV5EgpHlAFlWnvEUIVm1oixwt5ntKmn7c+mXTgfteJlF2YvgWFlbqCL01y1g4/4ujgpNuyjeY6ryty4K2krDM7qWhg0krMTs74naSSJkhMvdW4YZDcMXGkLvB6vvwO3HrFgGARgI3sZAnwI4z7AfRj3Au7FuAq4inEP4B6Eq6NdnD0ifATwEYwHAA9gHBxW/RgHf9kji/H4gBKZ6UtuA6Pn59a1B+X2L12LPA3roNM6rpPCUg/ZbeNW+pjGE/xuULnyxt7jMGSEPj+0ctkODAl04g1Se96BId+kckoM7ie4SXJ5srDfgSG65udtUkxx70Fl+T+zuc0LGy5JbtINbiCEim7F7eoSdwdKw9l6S7INjiP3M1VSKXAcebS1Rl8VOQ4uWcsZMFIFn6z9LDmroxRx/F2BLkY5HkB659H3I/1t18tuhW59FJoJXigZR2Yf/49uXTyyGgdyoy0eky8bUrcKjaZ62B8q5HjZ3okimR+0CF3eOgfZEfnClX2vCZhIRcwRW6XRHJZ5kPkla104h0KcfmUaC1gfZFjgl9Y5qArmuGgnqlTWwd/YCXcKdNOSIVLMJMnKe3wnyOxozFpI4XNQDnbxC2QTwZUqabwUT7n9gYrlkgn6xwQzWjioR2b7wgVukC4Z/ffkcUILR0Kh6YvkdC2sayi9+SpZNnrmdJJMsBPSBkY3ijR/KG9gh/tWMyNxCUmcmnVOr0O/cODgPQVNAcz0UGAieSLrkmvOP28loxm30xwfWygDqwXrMCsHJLbEho+0HzrldTDlO4sXqlFxtgVwuEmtJi92dHuHbHZnDLo//9o0DLTA8e8zJWs1KS+O4uxAkayvkETtx/l0x+glm/wmNpkMTj3ozz90aHHBXPLNyH+i/430RfdJ+l3vVFL8QMq8z1ATr38C2Nsn5vLhVjqPucSS/klFO815WvnYsyWeQR95H5McHxr0AwyWBAZHAQa7VQ9DzXrRrC3KG3aiJFjVpqBWxTwITYT6UzAijwcjYS04peM4pQzyIkZzZz3HaWzsmhQkstlwF+l8FXgL/L45dpvHSUV2/nnzDzm/LYZzdrNO7IXE0rfu3OX3DPsQG2d2rZNd4QzTA+rvXb8BMPSPnWjalSM7dUDSpzJlk9W02cjTvEELvMf851fh8K8blMwYa/5Uih+b1c7e6+6CD/ibpvn5X6kE2UihuZRstDA8UP9tmsaSlAg2nGH0AT/aJ7ts2MiTieUAhjP+SaNxQHfSUibFXzTQYrKRoDBAW/09PvcVk1nUEv4UAAA=',
|
||||
headers: {
|
||||
'User-Agent': 'PC_UA'
|
||||
},
|
||||
timeout: 5000,
|
||||
cate_exclude: '会员|游戏|全部',
|
||||
class_name: '电影&电视剧&综艺&动漫&少儿&纪录片',
|
||||
class_url: 'movie&tv&variety&cartoon&child&doco',
|
||||
limit: 20,
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
let d = [];
|
||||
let url1 = JSON.parse(request("" + input)).url;
|
||||
|
||||
function isEncrypted(url) {
|
||||
return url.includes('baidu.con/') && url.length > 16;
|
||||
}
|
||||
|
||||
let url;
|
||||
if (isEncrypted(url1)) {
|
||||
console.log("");
|
||||
var withoutDomain = url1.replace(/^https:\/\/baidu\.con\//, '');
|
||||
var first16Chars = withoutDomain.substring(0, 16);
|
||||
var remainingString = withoutDomain.substring(16);
|
||||
var key = CryptoJS.enc.Utf8.parse(first16Chars);
|
||||
var iv = key;
|
||||
|
||||
function AES_Decrypt(word) {
|
||||
var srcs = word;
|
||||
var decrypt = CryptoJS.AES.decrypt(srcs, key, {
|
||||
iv: iv,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
});
|
||||
return decrypt.toString(CryptoJS.enc.Utf8);
|
||||
};
|
||||
|
||||
url = AES_Decrypt(remainingString);
|
||||
} else {
|
||||
console.log("");
|
||||
url = url1;
|
||||
}
|
||||
|
||||
input = {
|
||||
url: url,
|
||||
parse: 0,
|
||||
header: rule.headers
|
||||
}
|
||||
setResult(d);
|
||||
}),
|
||||
|
||||
推荐: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
|
||||
一级: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
|
||||
二级: $js.toString(() => {
|
||||
VOD = {};
|
||||
let d = [];
|
||||
let video_list = [];
|
||||
let video_lists = [];
|
||||
let QZOutputJson;
|
||||
let html = fetch(input, fetch_params);
|
||||
let sourceId = /get_playsource/.test(input) ? input.match(/id=(\d*?)&/)[1] : input.split("cid=")[1];
|
||||
let cid = sourceId;
|
||||
let detailUrl = "https://v.qq.com/detail/m/" + cid + ".html";
|
||||
try {
|
||||
let json = JSON.parse(html);
|
||||
VOD = {
|
||||
vod_url: input,
|
||||
vod_name: json.c.title,
|
||||
type_name: json.typ.join(","),
|
||||
vod_actor: json.nam.join(","),
|
||||
vod_year: json.c.year,
|
||||
vod_content: json.c.description,
|
||||
vod_remarks: json.rec,
|
||||
vod_pic: urljoin2(input, json.c.pic)
|
||||
}
|
||||
} catch (e) {}
|
||||
if (/get_playsource/.test(input)) {
|
||||
eval(html);
|
||||
let indexList = QZOutputJson.PlaylistItem.indexList;
|
||||
indexList.forEach(function(it) {
|
||||
let dataUrl = "https://s.video.qq.com/get_playsource?id=" + sourceId + "&plat=2&type=4&data_type=3&range=" + it + "&video_type=10&plname=qq&otype=json";
|
||||
eval(fetch(dataUrl, fetch_params));
|
||||
let vdata = QZOutputJson.PlaylistItem.videoPlayList;
|
||||
vdata.forEach(function(item) {
|
||||
d.push({
|
||||
title: item.title,
|
||||
pic_url: item.pic,
|
||||
url: item.playUrl
|
||||
})
|
||||
});
|
||||
video_lists = video_lists.concat(vdata)
|
||||
})
|
||||
} else {
|
||||
let json = JSON.parse(html);
|
||||
video_lists = json.c.video_ids;
|
||||
let url = "https://v.qq.com/x/cover/" + sourceId + ".html";
|
||||
if (video_lists.length === 1) {
|
||||
let vid = video_lists[0];
|
||||
let o_url = "https://union.video.qq.com/fcgi-bin/data?otype=json&tid=1804&appid=20001238&appkey=6c03bbe9658448a4&union_platform=1&idlist=" + vid;
|
||||
let o_html = fetch(o_url, fetch_params);
|
||||
eval(o_html);
|
||||
if (QZOutputJson.results && QZOutputJson.results.length > 0) {
|
||||
let it1 = QZOutputJson.results[0].fields;
|
||||
url = "https://v.qq.com/x/cover/" + cid + "/" + vid + ".html";
|
||||
d.push({
|
||||
title: it1.title,
|
||||
url: url
|
||||
})
|
||||
} else {
|
||||
url = "https://v.qq.com/x/cover/" + cid + "/" + vid + ".html";
|
||||
d.push({
|
||||
title: "正片播放",
|
||||
url: url
|
||||
})
|
||||
}
|
||||
} else if (video_lists.length > 1) {
|
||||
for (let i = 0; i < video_lists.length; i += 30) {
|
||||
video_list.push(video_lists.slice(i, i + 30))
|
||||
}
|
||||
video_list.forEach(function(it, idex) {
|
||||
let o_url = "https://union.video.qq.com/fcgi-bin/data?otype=json&tid=1804&appid=20001238&appkey=6c03bbe9658448a4&union_platform=1&idlist=" + it.join(",");
|
||||
let o_html = fetch(o_url, fetch_params);
|
||||
eval(o_html);
|
||||
QZOutputJson.results.forEach(function(it1) {
|
||||
it1 = it1.fields;
|
||||
let url = "https://v.qq.com/x/cover/" + cid + "/" + it1.vid + ".html";
|
||||
d.push({
|
||||
title: it1.title,
|
||||
pic_url: it1.pic160x90.replace("/160", ""),
|
||||
desc: it1.video_checkup_time,
|
||||
url: url,
|
||||
type: it1.category_map && it1.category_map.length > 1 ? it1.category_map[1] : ""
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
let playFrom = [];
|
||||
let playUrl = [];
|
||||
|
||||
let ygKeywords = ["预告", "花絮", "片花", "特辑", "幕后", "采访", "制作", "MV", "主题曲"];
|
||||
|
||||
let yg = d.filter(function(it) {
|
||||
return it.type && ygKeywords.some(keyword => it.type.includes(keyword));
|
||||
});
|
||||
let zp = d.filter(function(it) {
|
||||
return !(it.type && ygKeywords.some(keyword => it.type.includes(keyword)));
|
||||
});
|
||||
|
||||
if (zp.length > 0) {
|
||||
playFrom.push("正片");
|
||||
playUrl.push(zp.map(it => it.title + "$" + it.url).join("#"));
|
||||
}
|
||||
|
||||
if (yg.length > 0) {
|
||||
let 预告 = yg.filter(it => it.type && it.type.includes("预告"));
|
||||
let 花絮片花 = yg.filter(it => it.type && (it.type.includes("花絮") || it.type.includes("片花")));
|
||||
let 特辑 = yg.filter(it => it.type && (it.type.includes("特辑") || it.type.includes("幕后")));
|
||||
|
||||
if (预告.length > 0) {
|
||||
playFrom.push("预告");
|
||||
playUrl.push(预告.map(it => it.title + "$" + it.url).join("#"));
|
||||
}
|
||||
if (花絮片花.length > 0) {
|
||||
playFrom.push("花絮片花");
|
||||
playUrl.push(花絮片花.map(it => it.title + "$" + it.url).join("#"));
|
||||
}
|
||||
if (特辑.length > 0) {
|
||||
playFrom.push("特辑");
|
||||
playUrl.push(特辑.map(it => it.title + "$" + it.url).join("#"));
|
||||
}
|
||||
}
|
||||
|
||||
VOD.vod_play_from = playFrom.join("$$$");
|
||||
VOD.vod_play_url = playUrl.join("$$$");
|
||||
}),
|
||||
搜索: $js.toString(() => {
|
||||
let d = [],
|
||||
keyword = input.split("/")[3];
|
||||
let seenIds = new Set();
|
||||
|
||||
function vodSearch(keyword, page = 0) {
|
||||
return request('https://pbaccess.video.qq.com/trpc.videosearch.mobile_search.MultiTerminalSearch/MbSearch?vplatform=2', {
|
||||
body: JSON.stringify({
|
||||
version: "25042201",
|
||||
clientType: 1,
|
||||
filterValue: "",
|
||||
uuid: "B1E50847-D25F-4C4B-BBA0-36F0093487F6",
|
||||
retry: 0,
|
||||
query: keyword,
|
||||
pagenum: page,
|
||||
isPrefetch: true,
|
||||
pagesize: 30,
|
||||
queryFrom: 0,
|
||||
isneedQc: true,
|
||||
extraInfo: {
|
||||
isNewMarkLabel: "1",
|
||||
multi_terminal_pc: "1",
|
||||
themeType: "1"
|
||||
}
|
||||
}),
|
||||
headers: {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.139 Safari/537.36',
|
||||
'Content-Type': 'application/json',
|
||||
'Origin': 'https://v.qq.com',
|
||||
'Referer': 'https://v.qq.com/'
|
||||
},
|
||||
method: 'POST'
|
||||
});
|
||||
}
|
||||
|
||||
const nonMainContentKeywords = [
|
||||
':', '#', '特辑', '“', '剪辑', '片花', '独家', '专访', '纯享',
|
||||
'制作', '幕后', '宣传', '看点', '主题曲', '插曲', '彩蛋',
|
||||
'精彩', '集锦', '盘点', '回顾', '解说', '评测', '反应', 'reaction'
|
||||
];
|
||||
|
||||
function isMainContent(title) {
|
||||
if (!title) return false;
|
||||
if (title.includes('<em>') || title.includes('</em>')) return false;
|
||||
return !nonMainContentKeywords.some(keyword => title.includes(keyword));
|
||||
}
|
||||
|
||||
try {
|
||||
let html = vodSearch(keyword, 0);
|
||||
let json = JSON.parse(html);
|
||||
|
||||
function processItemList(itemList) {
|
||||
if (!itemList) return;
|
||||
|
||||
itemList.forEach(it => {
|
||||
if (it.doc && it.doc.id && it.videoInfo && isMainContent(it.videoInfo.title)) {
|
||||
const itemId = it.doc.id;
|
||||
if (!seenIds.has(itemId)) {
|
||||
seenIds.add(itemId);
|
||||
d.push({
|
||||
title: it.videoInfo.title,
|
||||
img: it.videoInfo.imgUrl || "",
|
||||
url: itemId,
|
||||
desc: it.videoInfo.secondLine || ""
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (json.data && json.data.normalList) {
|
||||
processItemList(json.data.normalList.itemList);
|
||||
}
|
||||
|
||||
if (json.data && json.data.areaBoxList) {
|
||||
json.data.areaBoxList.forEach(box => {
|
||||
processItemList(box.itemList);
|
||||
});
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
log("搜索出错: " + e.message);
|
||||
}
|
||||
|
||||
setResult(d);
|
||||
})
|
||||
};
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
var rule = {
|
||||
title:'评书随身听',
|
||||
host:'https://www.psmp3.com',
|
||||
// url:'/fyclass/fypage.html',
|
||||
url:'/fyfilter/fypage.html',
|
||||
filterable:1,//是否启用分类筛选,
|
||||
filter_url:'{{fl.cateId}}',
|
||||
filter:{
|
||||
"ykc":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"ykc"},{"n":"袁阔成三国演义","v":"ykc-sgyy"},{"n":"袁阔成水泊梁山","v":"ykc-sbls"},{"n":"袁阔成封神演义","v":"ykc-fsyy"},{"n":"袁阔成薛刚反唐","v":"ykc-xgft"},{"n":"袁阔成林海雪原","v":"ykc-lhxy"},{"n":"袁阔成楚汉相争","v":"ykc-chxz"},{"n":"袁阔成彭公案","v":"ykc-pga"},{"n":"袁阔成烈火金刚","v":"ykc-lhjg"},{"n":"袁阔成金钱镖","v":"ykc-jqb"},{"n":"袁阔成三气周瑜","v":"ykc-sqzy"},{"n":"袁阔成群英会","v":"ykc-qyh"},{"n":"袁阔成长坂雄风","v":"ykc-cbxf"},{"n":"袁阔成平原枪声","v":"ykc-pyqs"},{"n":"袁阔成暴风骤雨","v":"ykc-bfzy"},{"n":"野火春风斗古城","v":"ykc-yhcfdgc"}]}],
|
||||
"stf":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"stf"},{"n":"单田芳隋唐演义","v":"stf-styy"},{"n":"单田芳乱世枭雄","v":"stf-lsxx"},{"n":"单田芳白眉大侠","v":"stf-bmdx"},{"n":"单田芳童林传","v":"stf-tlz"},{"n":"单田芳水浒传","v":"stf-shz"},{"n":"单田芳三侠五义","v":"stf-sxwy"},{"n":"单田芳三侠剑","v":"stf-sxj"},{"n":"单田芳大明演义","v":"stf-dmyy"},{"n":"单田芳龙虎风云会","v":"stf-lhfyh"},{"n":"单田芳三国演义","v":"stf-sgyy"},{"n":"单田芳薛家将","v":"stf-xjj"},{"n":"单田芳清官册","v":"stf-qgc"},{"n":"单田芳小五义","v":"stf-xwy"},{"n":"单田芳铁扇怪侠","v":"stf-tsgx"},{"n":"单田芳楚汉争雄","v":"stf-chzx"}]}],
|
||||
"tly":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"tly"},{"n":"田连元水浒传","v":"tly-shz"},{"n":"田连元杨家将","v":"tly-yjj"},{"n":"田连元隋唐演义","v":"tly-styy"},{"n":"田连元三侠五义","v":"tly-sxwy"},{"n":"田连元刘秀传","v":"tly-lxz"},{"n":"田连元小八义","v":"tly-xby"},{"n":"田连元包公案","v":"tly-bga"},{"n":"田连元大话成语","v":"tly-dhcy"},{"n":"田连元双镖记","v":"tly-sbj"},{"n":"田连元海青天","v":"tly-hqt"},{"n":"田连元辽沈战役","v":"tly-lszy"},{"n":"田连元血溅津门","v":"tly-xjjm"},{"n":"田连元镜花缘","v":"tly-jhy"},{"n":"田连元孙庞斗智","v":"tly-spdz"},{"n":"田连元孙膑与庞涓","v":"tly-sbypj"}]}],
|
||||
"llf":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"llf"},{"n":"刘兰芳岳飞传","v":"llf-yfz"},{"n":"刘兰芳杨家将全传","v":"llf-yjjqz"},{"n":"刘兰芳呼家将","v":"llf-hjj"},{"n":"刘兰芳赵匡胤演义","v":"llf-zkyyy"},{"n":"刘兰芳朱元璋演义","v":"llf-zyzyy"},{"n":"刘兰芳红楼梦","v":"llf-hlm"},{"n":"刘兰芳五凤朝阳刀","v":"llf-wfcyd"},{"n":"刘兰芳新岳飞传","v":"llf-xyfz"},{"n":"刘兰芳杨家将","v":"llf-yjj"},{"n":"刘兰芳西唐演义","v":"llf-xtyy"},{"n":"刘兰芳樊梨花","v":"llf-flh"},{"n":"刘兰芳大唐侠女","v":"llf-dtxn"},{"n":"刘兰芳黑虎传","v":"llf-hhz"},{"n":"刘兰芳洪武大帝","v":"llf-hwdd"},{"n":"刘兰芳契丹萧太后","v":"llf-qdxth"}]}],
|
||||
"llr":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"llr"},{"n":"连丽如东汉演义","v":"llr-dhyy"},{"n":"连丽如大隋唐","v":"llr-dst"},{"n":"连丽如三国演义","v":"llr-sgyy"},{"n":"连丽如雍正剑侠图","v":"llr-yzjxt"},{"n":"连丽如红楼梦","v":"llr-hlm"},{"n":"连丽如龙图公案","v":"llr-ltga"},{"n":"连丽如鹿鼎记","v":"llr-ldj"},{"n":"连丽如刘公案","v":"llr-lga"},{"n":"连丽如康熙私访","v":"llr-kxsf"},{"n":"连丽如东周列国","v":"llr-dzlg"},{"n":"连丽如十二女侠","v":"llr-senx"},{"n":"连丽如智圣东方朔","v":"llr-zsdfs"},{"n":"连丽如侠义英雄传","v":"llr-xyyxz"},{"n":"连丽如蓬莱剑侠","v":"llr-pljx"},{"n":"连丽如康熙大帝","v":"llr-kxdd"}]}],
|
||||
"zsz":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"zsz"},{"n":"张少佐大明剑侠","v":"zsz-dmjx"},{"n":"张少佐雍正剑侠图","v":"zsz-yzjxt"},{"n":"张少佐天龙八部","v":"zsz-tlbb"},{"n":"张少佐昆仑剑侠","v":"zsz-kljx"},{"n":"张少佐多情剑客无情剑","v":"zsz-dqjkwqj"},{"n":"张少佐笑傲江湖","v":"zsz-xajh"},{"n":"张少佐射雕英雄传","v":"zsz-sdyxz"},{"n":"张少佐倚天屠龙记","v":"zsz-yttlj"},{"n":"张少佐神雕侠侣","v":"zsz-sdxl"},{"n":"张少佐钟凌传","v":"zsz-zlz"},{"n":"张少佐明史奇侠","v":"zsz-msqx"},{"n":"张少佐中国血案","v":"zsz-zgxa"},{"n":"张少佐神剑惊天刺雍正","v":"zsz-sjjtcyz"},{"n":"张少佐豪气惊天","v":"zsz-hqjt"},{"n":"张少佐乱世恩仇","v":"zsz-lsec"}]}],
|
||||
"tzy":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"tzy"},{"n":"田战义李自成","v":"tzy-lzc"},{"n":"田战义秘密列车","v":"tzy-mmlc"},{"n":"田战义民国风云","v":"tzy-mgfy"},{"n":"田战义夕照紫禁城","v":"tzy-xzzjc"},{"n":"田战义风雨关山","v":"tzy-fygs"},{"n":"田战义聊斋志异","v":"tzy-lzzy"},{"n":"田战义侠义豪杰","v":"tzy-xyhj"},{"n":"风云人物蒋介石","v":"tzy-fyrwjjs"},{"n":"田战义绝密行动","v":"tzy-jmxd"},{"n":"田战义燕子李三传奇","v":"tzy-yzlscq"},{"n":"田战义中国古代奇案","v":"tzy-zggdqa"},{"n":"田战义火牛阵","v":"tzy-hnz"},{"n":"田战义县委书记","v":"tzy-xwsj"},{"n":"田战义摧毁神风号","v":"tzy-chsfh"},{"n":"田战义仇大娘","v":"tzy-cdn"}]}]
|
||||
},
|
||||
filter_def:{
|
||||
ykc:{cateId:'ykc'},
|
||||
stf:{cateId:'stf'},
|
||||
tly:{cateId:'tly'},
|
||||
llf:{cateId:'llf'},
|
||||
llr:{cateId:'llr'},
|
||||
zsz:{cateId:'zsz'},
|
||||
tzy:{cateId:'tzy'}
|
||||
},
|
||||
searchUrl:'/so/**_fypage.html',
|
||||
searchable:2,
|
||||
quickSearch:0,
|
||||
headers:{
|
||||
'User-Agent':'MOBILE_UA'
|
||||
},
|
||||
timeout:5000,
|
||||
class_parse: '.list-navi&&li:gt(1);a&&Text;a&&href;/(\\w+).html',
|
||||
play_parse:true,
|
||||
lazy:'js:input={jx:0,url:input,parse:0}',
|
||||
limit:6,
|
||||
推荐:'*',
|
||||
|
||||
一级: $js.toString(() => {
|
||||
let klist = pdfa(request(input), '#post_list_box&&li');
|
||||
//数组
|
||||
let k = klist.map(it => ({
|
||||
title: pdfh(it, 'h2&&Text'),
|
||||
//标题
|
||||
pic_url: 'https://pic3.zhimg.com/v2-26521f7ce3edae36d1e94c4a5b889919_1440w.jpg?source=172ae18b',
|
||||
//图片
|
||||
desc: pdfh(it, '.f_r&&span:eq(3)&&Text'),
|
||||
// 副标题
|
||||
url: pdfh(it, 'a&&href'),
|
||||
//链接
|
||||
content: ''
|
||||
}));
|
||||
setResult(k);
|
||||
}),
|
||||
二级:{
|
||||
title:'h1&&Text;.view&&Text',
|
||||
img:'img&&src',
|
||||
desc:'.view&&Text;;;.lmname&&Text;.author&&Text',
|
||||
content:'.jAsrPyf4&&p:eq(1)&&Text',
|
||||
// tabs:'js:TABS=["评书随身听"]',
|
||||
lists:'js:var VideoListJson;VideoListJson=eval(html.split("audio: ")[1].split("}\)")[0]);let list1=[];VideoListJson.forEach(function(it){list1.push(it.name.strip()+"$https:"+it.url)});LISTS=[list1];',
|
||||
},
|
||||
搜索: '*',
|
||||
}
|
||||
Reference in New Issue
Block a user