mirror of https://github.com/qist/tvbox.git
parent
5cecf0d2d9
commit
a444383e1c
@ -1,216 +0,0 @@
|
|||||||
{
|
|
||||||
"作者":"sm",
|
|
||||||
"头部集合": "User-Agent$Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36#Referer$https://www.348z.pro/",
|
|
||||||
"站名":"348电影网",
|
|
||||||
"主页url":"https://www.348z.com",
|
|
||||||
"免嗅":"1",
|
|
||||||
"嗅探词":".m3u8#aliyundrive.net#.mp4",
|
|
||||||
"导演":"导演:</span>&&</p",
|
|
||||||
"主演":"主演:</span>&&</p",
|
|
||||||
"副标题":"class=\"pack-prb hidden\">&&</span>",
|
|
||||||
"简介":"简介:</span>&&</p>",
|
|
||||||
"数组":"class=\"aplus-exp ecimgbor&&</a>",
|
|
||||||
"图片":"data-original=\"&&\"",
|
|
||||||
"标题":"title=\"&&\"",
|
|
||||||
"线路名二次截取": "<div class=\"cf swiper-wrapper\">&& <div id=\"tagContent",
|
|
||||||
"线路数组":"<a class=\"channelname swiper-slide&&/a>",
|
|
||||||
"线路标题":" &&<",
|
|
||||||
"播放请求头": "User-Agent$Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36#Referer$https://www.348z.pro/",
|
|
||||||
"播放数组":"class=\"content_playlist&&</ul>",
|
|
||||||
"搜索url":"https://www.348z.com/vodsearch.html?wd={wd}",
|
|
||||||
"搜索模式":"1",
|
|
||||||
"搜索二次截取":"class=\"ec-search&&</ul",
|
|
||||||
"搜索数组":"<a&&class=\"right cor3",
|
|
||||||
"搜索图片":"data-original=\"&&\"",
|
|
||||||
"搜索标题":"title=\"&&\"",
|
|
||||||
"搜索副标题":"class=\"pack-prb\"&&</span",
|
|
||||||
"搜索链接":"href=\"&&\"",
|
|
||||||
"搜索链接前缀":"https://www.348z.com",
|
|
||||||
"分类":"电影$1#电视剧$2#综艺$3#动漫$4",
|
|
||||||
"分类url":"https://www.348z.com/vodshow/{area}/{class}/id/{cateId}/page/{catePg}/{year}.html;;m",
|
|
||||||
"筛选": {
|
|
||||||
"1":[
|
|
||||||
{"key":"class","name":"剧情","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"喜剧","v":"/class/喜剧"},
|
|
||||||
{"n":"爱情","v":"/class/爱情"},
|
|
||||||
{"n":"恐怖","v":"/class/恐怖"},
|
|
||||||
{"n":"动作","v":"/class/动作"},
|
|
||||||
{"n":"科幻","v":"/class/科幻"},
|
|
||||||
{"n":"剧情","v":"/class/剧情"},
|
|
||||||
{"n":"战争","v":"/class/战争"},
|
|
||||||
{"n":"犯罪","v":"/class/犯罪"},
|
|
||||||
{"n":"灾难","v":"/class/灾难"},
|
|
||||||
{"n":"奇幻","v":"/class/奇幻"},
|
|
||||||
{"n":"悬疑","v":"/class/悬疑"},
|
|
||||||
{"n":"惊悚","v":"/class/惊悚"},
|
|
||||||
{"n":"冒险","v":"/class/冒险"}]},
|
|
||||||
|
|
||||||
{"key":"area","name":"地区","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"大陆","v":"/area/大陆"},
|
|
||||||
{"n":"香港","v":"/area/香港"},
|
|
||||||
{"n":"台湾","v":"/area/台湾"},
|
|
||||||
{"n":"美国","v":"/area/美国"},
|
|
||||||
{"n":"法国","v":"/area/法国"},
|
|
||||||
{"n":"英国","v":"/area/英国"},
|
|
||||||
{"n":"日本","v":"/area/日本"},
|
|
||||||
{"n":"韩国","v":"/area/韩国"},
|
|
||||||
{"n":"德国","v":"/area/德国"},
|
|
||||||
{"n":"泰国","v":"/area/泰国"},
|
|
||||||
{"n":"印度","v":"/area/印度"},
|
|
||||||
{"n":"其他","v":"/area/其他"}]},
|
|
||||||
|
|
||||||
{"key":"year","name":"年份","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"2022","v":"/year/2022"},
|
|
||||||
{"n":"2021","v":"/year/2021"},
|
|
||||||
{"n":"2020","v":"/year/2020"},
|
|
||||||
{"n":"2019","v":"/year/2019"},
|
|
||||||
{"n":"2018","v":"/year/2018"},
|
|
||||||
{"n":"2017","v":"/year/2017"},
|
|
||||||
{"n":"2016","v":"/year/2016"},
|
|
||||||
{"n":"2008","v":"/year/2008"},
|
|
||||||
{"n":"2000","v":"/year/2000"},
|
|
||||||
{"n":"1997","v":"/year/1997"}]},
|
|
||||||
|
|
||||||
{"key":"by","name":"排序","value":[
|
|
||||||
{"n":"时间","v":"/by/time"},
|
|
||||||
{"n":"人气","v":"/by/hits"},
|
|
||||||
{"n":"评分","v":"/by/score"}]}],
|
|
||||||
|
|
||||||
"2":[
|
|
||||||
{"key":"class","name":"剧情","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"国产","v":"/class/国产"},
|
|
||||||
{"n":"港台","v":"/class/港台"},
|
|
||||||
{"n":"日韩","v":"/class/日韩"},
|
|
||||||
{"n":"欧美","v":"/class/欧美"},
|
|
||||||
{"n":"海外","v":"/class/海外"},
|
|
||||||
{"n":"古装","v":"/class/古装"},
|
|
||||||
{"n":"战争","v":"/class/战争"},
|
|
||||||
{"n":"偶像","v":"/class/偶像"},
|
|
||||||
{"n":"犯罪","v":"/class/犯罪"},
|
|
||||||
{"n":"奇幻","v":"/class/奇幻"},
|
|
||||||
{"n":"剧情","v":"/class/剧情"},
|
|
||||||
{"n":"历史","v":"/class/历史"},
|
|
||||||
{"n":"网剧","v":"/class/网剧"}]},
|
|
||||||
|
|
||||||
{"key":"area","name":"地区","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"大陆","v":"/area/大陆"},
|
|
||||||
{"n":"韩国","v":"/area/韩国"},
|
|
||||||
{"n":"香港","v":"/area/香港"},
|
|
||||||
{"n":"台湾","v":"/area/台湾"},
|
|
||||||
{"n":"日本","v":"/area/日本"},
|
|
||||||
{"n":"美国","v":"/area/美国"},
|
|
||||||
{"n":"泰国","v":"/area/泰国"},
|
|
||||||
{"n":"英国","v":"/area/英国"},
|
|
||||||
{"n":"新加坡","v":"/area/新加坡"},
|
|
||||||
{"n":"其他","v":"/area/其他"}]},
|
|
||||||
|
|
||||||
{"key":"year","name":"年份","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"2022","v":"/year/2022"},
|
|
||||||
{"n":"2021","v":"/year/2021"},
|
|
||||||
{"n":"2020","v":"/year/2020"},
|
|
||||||
{"n":"2019","v":"/year/2019"},
|
|
||||||
{"n":"2018","v":"/year/2018"},
|
|
||||||
{"n":"2017","v":"/year/2017"},
|
|
||||||
{"n":"2016","v":"/year/2016"},
|
|
||||||
{"n":"2008","v":"/year/2008"},
|
|
||||||
{"n":"2000","v":"/year/2000"},
|
|
||||||
{"n":"1997","v":"/year/1997"},
|
|
||||||
{"n":"1980","v":"/year/1980"}]},
|
|
||||||
|
|
||||||
{"key":"by","name":"排序","value":[
|
|
||||||
{"n":"时间","v":"/by/time"},
|
|
||||||
{"n":"人气","v":"/by/hits"},
|
|
||||||
{"n":"评分","v":"/by/score"}]}],
|
|
||||||
|
|
||||||
"3":[
|
|
||||||
{"key":"class","name":"剧情","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"科幻","v":"/class/科幻"},
|
|
||||||
{"n":"热血","v":"/class/热血"},
|
|
||||||
{"n":"推理","v":"/class/推理"},
|
|
||||||
{"n":"搞笑","v":"/class/搞笑"},
|
|
||||||
{"n":"冒险","v":"/class/冒险"},
|
|
||||||
{"n":"萝莉","v":"/class/萝莉"},
|
|
||||||
{"n":"校园","v":"/class/校园"},
|
|
||||||
{"n":"动作","v":"/class/动作"},
|
|
||||||
{"n":"机战","v":"/class/机战"},
|
|
||||||
{"n":"运动","v":"/class/运动"},
|
|
||||||
{"n":"战争","v":"/class/战争"},
|
|
||||||
{"n":"少年","v":"/class/少年"},
|
|
||||||
{"n":"少女","v":"/class/少女"}]},
|
|
||||||
|
|
||||||
{"key":"area","name":"地区","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"大陆","v":"/area/大陆"},
|
|
||||||
{"n":"日本","v":"/area/日本"},
|
|
||||||
{"n":"欧美","v":"/area/欧美"},
|
|
||||||
{"n":"海外","v":"/area/海外"}]},
|
|
||||||
|
|
||||||
{"key":"year","name":"年份","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"2022","v":"/year/2022"},
|
|
||||||
{"n":"2021","v":"/year/2021"},
|
|
||||||
{"n":"2020","v":"/year/2020"},
|
|
||||||
{"n":"2019","v":"/year/2019"},
|
|
||||||
{"n":"2018","v":"/year/2018"},
|
|
||||||
{"n":"2017","v":"/year/2017"},
|
|
||||||
{"n":"2016","v":"/year/2016"},
|
|
||||||
{"n":"2008","v":"/year/2008"},
|
|
||||||
{"n":"2000","v":"/year/2000"},
|
|
||||||
{"n":"1997","v":"/year/1997"},
|
|
||||||
{"n":"1980","v":"/year/1980"}]},
|
|
||||||
|
|
||||||
{"key":"by","name":"排序","value":[
|
|
||||||
{"n":"时间","v":"/by/time"},
|
|
||||||
{"n":"人气","v":"/by/hits"},
|
|
||||||
{"n":"评分","v":"/by/score"}]}],
|
|
||||||
|
|
||||||
"4":[
|
|
||||||
{"key":"class","name":"剧情","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"相声","v":"/class/相声"},
|
|
||||||
{"n":"真人秀","v":"/class/真人秀"},
|
|
||||||
{"n":"脱口秀","v":"/class/脱口秀"},
|
|
||||||
{"n":"选秀","v":"/class/选秀"},
|
|
||||||
{"n":"情感","v":"/class/情感"},
|
|
||||||
{"n":"访谈","v":"/class/访谈"},
|
|
||||||
{"n":"播报","v":"/class/播报"},
|
|
||||||
{"n":"旅游","v":"/class/旅游"},
|
|
||||||
{"n":"音乐","v":"/class/音乐"},
|
|
||||||
{"n":"美食","v":"/class/美食"},
|
|
||||||
{"n":"纪实","v":"/class/纪实"},
|
|
||||||
{"n":"舞蹈","v":"/class/舞蹈"}]},
|
|
||||||
|
|
||||||
{"key":"area","name":"地区","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"大陆","v":"/area/大陆"},
|
|
||||||
{"n":"香港","v":"/area/香港"},
|
|
||||||
{"n":"台湾","v":"/area/台湾"},
|
|
||||||
{"n":"日本","v":"/area/日本"},
|
|
||||||
{"n":"欧美","v":"/area/欧美"},
|
|
||||||
{"n":"韩国","v":"/area/韩国"}]},
|
|
||||||
|
|
||||||
{"key":"year","name":"年份","value":[
|
|
||||||
{"n":"全部","v":""},
|
|
||||||
{"n":"2022","v":"/year/2022"},
|
|
||||||
{"n":"2021","v":"/year/2021"},
|
|
||||||
{"n":"2020","v":"/year/2020"},
|
|
||||||
{"n":"2019","v":"/year/2019"},
|
|
||||||
{"n":"2018","v":"/year/2018"},
|
|
||||||
{"n":"2017","v":"/year/2017"},
|
|
||||||
{"n":"2016","v":"/year/2016"},
|
|
||||||
{"n":"2008","v":"/year/2008"},
|
|
||||||
{"n":"2000","v":"/year/2000"},
|
|
||||||
{"n":"1997","v":"/year/1997"},
|
|
||||||
{"n":"1980","v":"/year/1980"}]},
|
|
||||||
|
|
||||||
{"key":"by","name":"排序","value":[
|
|
||||||
{"n":"时间","v":"/by/time"},
|
|
||||||
{"n":"人气","v":"/by/hits"},
|
|
||||||
{"n":"评分","v":"/by/score"}]}]}}
|
|
||||||
@ -1,113 +0,0 @@
|
|||||||
/*[{
|
|
||||||
"name": "小鸭",
|
|
||||||
"server": "http://shicheng.wang:555/",
|
|
||||||
"startPage": "/",
|
|
||||||
"showAll": false,
|
|
||||||
"search": true,
|
|
||||||
"params": {
|
|
||||||
"/abc": {
|
|
||||||
"password": "123"
|
|
||||||
},
|
|
||||||
"/abc/abc": {
|
|
||||||
"password": "123"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "小猫",
|
|
||||||
"server": "https://nics.eu.org",
|
|
||||||
"startPage": "/SP1",
|
|
||||||
"showAll": false,
|
|
||||||
"search": true,
|
|
||||||
"params": {
|
|
||||||
"/abc": {
|
|
||||||
"password": "123"
|
|
||||||
},
|
|
||||||
"/abc/abc": {
|
|
||||||
"password": "123"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "小狗电影",
|
|
||||||
"server": "https://alist.ccome.site",
|
|
||||||
"startPage": "/电影",
|
|
||||||
"showAll": false,
|
|
||||||
"search": true,
|
|
||||||
"params": {
|
|
||||||
"/abc": {
|
|
||||||
"password": "123"
|
|
||||||
},
|
|
||||||
"/abc/abc": {
|
|
||||||
"password": "123"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "小鸟剧集",
|
|
||||||
"server": "https://alist.ccome.site",
|
|
||||||
"startPage": "/电视剧1",
|
|
||||||
"showAll": false,
|
|
||||||
"search": true,
|
|
||||||
"params": {
|
|
||||||
"/abc": {
|
|
||||||
"password": "123"
|
|
||||||
},
|
|
||||||
"/abc/abc": {
|
|
||||||
"password": "123"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "小象动漫",
|
|
||||||
"server": "https://alist.ccome.site",
|
|
||||||
"startPage": "/动漫",
|
|
||||||
"showAll": false,
|
|
||||||
"search": true,
|
|
||||||
"params": {
|
|
||||||
"/abc": {
|
|
||||||
"password": "123"
|
|
||||||
},
|
|
||||||
"/abc/abc": {
|
|
||||||
"password": "123"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]*/
|
|
||||||
{
|
|
||||||
"vodPic": "https://s1.ax1x.com/2023/05/04/p9tgI81.png",
|
|
||||||
"drives": [
|
|
||||||
{
|
|
||||||
"name": "🦆鸭鸭",
|
|
||||||
"server": "http://shicheng.wang:555/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "NICS",
|
|
||||||
"server": "https://nics.eu.org"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ECVE",
|
|
||||||
"server": "https://pan.ecve.cn"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "觸光",
|
|
||||||
"server": "https://pan.ichuguang.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "一只魚",
|
|
||||||
"server": "https://vtok.pp.ua/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "七米藍",
|
|
||||||
"server": "https://al.chirmyram.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "神族九帝",
|
|
||||||
"server": "https://alist.shenzjd.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "梓澪",
|
|
||||||
"server": "https://zi0.cc"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,703 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
"classes": [{
|
||||||
|
"type_name": "演唱会筛选",
|
||||||
|
"type_id": "演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "粤语",
|
||||||
|
"type_id": "粤语歌曲超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "热榜",
|
||||||
|
"type_id": "2022年热们歌曲超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "抖音神曲",
|
||||||
|
"type_id": "抖音神曲超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "经典老歌",
|
||||||
|
"type_id": "经典老歌超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "DJ",
|
||||||
|
"type_id": "DJ歌曲超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "网红翻唱",
|
||||||
|
"type_id": "网红翻唱歌曲超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type_name": "韩国女团",
|
||||||
|
"type_id": "韩国女团演唱会超清"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
"cookie": "http://127.0.0.1:9978/file/tvfan/cookie.txt",
|
||||||
|
|
||||||
|
"filter": {
|
||||||
|
"演唱会超清": [{
|
||||||
|
"key": "order",
|
||||||
|
"name": "排序",
|
||||||
|
"value": [{
|
||||||
|
"n": "综合排序",
|
||||||
|
"v": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "最多点击",
|
||||||
|
"v": "click"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "最新发布",
|
||||||
|
"v": "pubdate"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "最多弹幕",
|
||||||
|
"v": "dm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "最多收藏",
|
||||||
|
"v": "stow"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "tid",
|
||||||
|
"name": "分类",
|
||||||
|
"value": [{
|
||||||
|
"n": "全部",
|
||||||
|
"v": "演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "A阿杜",
|
||||||
|
"v": "阿杜演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "A阿黛尔",
|
||||||
|
"v": "阿黛尔演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "BBeyond",
|
||||||
|
"v": "Beyond演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "BBy2",
|
||||||
|
"v": "By2演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "BBIGBANG",
|
||||||
|
"v": "BIGBANG演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "B布兰妮",
|
||||||
|
"v": "布兰妮演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "B坂井泉水",
|
||||||
|
"v": "坂井泉水演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "C陈奕迅",
|
||||||
|
"v": "陈奕迅演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "C蔡依林",
|
||||||
|
"v": "蔡依林演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "C初音未来",
|
||||||
|
"v": "初音未来演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "C蔡健雅",
|
||||||
|
"v": "蔡健雅演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "C陈小春",
|
||||||
|
"v": "陈小春演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "C草蜢",
|
||||||
|
"v": "草蜢演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "C陈慧娴",
|
||||||
|
"v": "陈慧娴演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "C崔健",
|
||||||
|
"v": "崔健演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "C仓木麻衣",
|
||||||
|
"v": "仓木麻衣演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "D戴荃",
|
||||||
|
"v": "戴荃演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "D动力火车",
|
||||||
|
"v": "动力火车演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "D邓丽君",
|
||||||
|
"v": "邓丽君演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "D丁当",
|
||||||
|
"v": "丁当演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "D刀郎",
|
||||||
|
"v": "刀郎演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "D邓紫棋",
|
||||||
|
"v": "邓紫棋演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "D戴佩妮",
|
||||||
|
"v": "戴佩妮演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "D邓丽君",
|
||||||
|
"v": "邓丽君演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "F飞儿乐队",
|
||||||
|
"v": "飞儿乐队演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "F费玉清",
|
||||||
|
"v": "费玉清演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "F费翔",
|
||||||
|
"v": "费翔演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "F方大同",
|
||||||
|
"v": "方大同演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "F房东的猫",
|
||||||
|
"v": "房东的猫演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "F凤飞飞",
|
||||||
|
"v": "凤飞飞演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "F凤凰传奇",
|
||||||
|
"v": "凤凰传奇演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "G郭采洁",
|
||||||
|
"v": "郭采洁演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "G光良",
|
||||||
|
"v": "光良演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "G郭静",
|
||||||
|
"v": "郭静演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "G郭富城",
|
||||||
|
"v": "郭富城演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "H胡彦斌",
|
||||||
|
"v": "胡彦斌演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "H胡夏",
|
||||||
|
"v": "胡夏演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "H韩红",
|
||||||
|
"v": "韩红演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "H黄品源",
|
||||||
|
"v": "黄品源演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "H黄小琥",
|
||||||
|
"v": "黄小琥演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "H花儿乐队",
|
||||||
|
"v": "花儿乐队演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "H黄家强",
|
||||||
|
"v": "黄家强演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "H后街男孩",
|
||||||
|
"v": "后街男孩演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "J经典老歌",
|
||||||
|
"v": "经典老歌演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "J贾斯丁比伯",
|
||||||
|
"v": "贾斯丁比伯演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "J金池",
|
||||||
|
"v": "金池演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "J金志文",
|
||||||
|
"v": "金志文演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "J焦迈奇",
|
||||||
|
"v": "焦迈奇演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "K筷子兄弟",
|
||||||
|
"v": "筷子兄弟演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L李玟",
|
||||||
|
"v": "李玟演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L林忆莲",
|
||||||
|
"v": "林忆莲演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L李克勤",
|
||||||
|
"v": "李克勤演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L刘宪华",
|
||||||
|
"v": "刘宪华演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L李圣杰",
|
||||||
|
"v": "李圣杰演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L林宥嘉",
|
||||||
|
"v": "林宥嘉演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L梁静茹",
|
||||||
|
"v": "梁静茹演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L李健",
|
||||||
|
"v": "李健演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L林俊杰",
|
||||||
|
"v": "林俊杰演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L李玉刚",
|
||||||
|
"v": "李玉刚演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L林志炫",
|
||||||
|
"v": "林志炫演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L李荣浩",
|
||||||
|
"v": "李荣浩演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L李宇春",
|
||||||
|
"v": "李宇春演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L洛天依",
|
||||||
|
"v": "洛天依演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L林子祥",
|
||||||
|
"v": "林子祥演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L李宗盛",
|
||||||
|
"v": "李宗盛演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L黎明",
|
||||||
|
"v": "黎明演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L刘德华",
|
||||||
|
"v": "刘德华演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L罗大佑",
|
||||||
|
"v": "罗大佑演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L林肯公园",
|
||||||
|
"v": "林肯公园演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "LLadyGaga",
|
||||||
|
"v": "LadyGaga演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "L旅行团乐队",
|
||||||
|
"v": "旅行团乐队演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "M莫文蔚",
|
||||||
|
"v": "莫文蔚演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "M毛不易",
|
||||||
|
"v": "毛不易演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "M梅艳芳",
|
||||||
|
"v": "梅艳芳演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "M迈克尔杰克逊",
|
||||||
|
"v": "迈克尔杰克逊演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "N南拳妈妈",
|
||||||
|
"v": "南拳妈妈演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "P朴树",
|
||||||
|
"v": "朴树演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Q齐秦",
|
||||||
|
"v": "齐秦演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Q青鸟飞鱼",
|
||||||
|
"v": "青鸟飞鱼演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "R容祖儿",
|
||||||
|
"v": "容祖儿演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "R任贤齐",
|
||||||
|
"v": "任贤齐演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "S水木年华",
|
||||||
|
"v": "水木年华演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "S孙燕姿",
|
||||||
|
"v": "孙燕姿演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "S苏打绿",
|
||||||
|
"v": "苏打绿演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "SSHE",
|
||||||
|
"v": "SHE演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "S孙楠",
|
||||||
|
"v": "孙楠演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "T陶喆",
|
||||||
|
"v": "陶喆演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "T谭咏麟",
|
||||||
|
"v": "谭咏麟演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "T田馥甄",
|
||||||
|
"v": "田馥甄演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "T谭维维",
|
||||||
|
"v": "谭维维演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "T逃跑计划",
|
||||||
|
"v": "逃跑计划演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "T田震",
|
||||||
|
"v": "田震演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "T谭晶",
|
||||||
|
"v": "谭晶演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "T屠洪刚",
|
||||||
|
"v": "屠洪刚演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "T泰勒·斯威夫特",
|
||||||
|
"v": "泰勒·斯威夫特演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W王力宏",
|
||||||
|
"v": "王力宏演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W王杰",
|
||||||
|
"v": "王杰演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W吴克群",
|
||||||
|
"v": "吴克群演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W王心凌",
|
||||||
|
"v": "王心凌演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W王靖雯",
|
||||||
|
"v": "好声音王靖雯演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W汪峰",
|
||||||
|
"v": "汪峰演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W伍佰",
|
||||||
|
"v": "伍佰演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W王菲",
|
||||||
|
"v": "王菲演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W五月天",
|
||||||
|
"v": "五月天演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "W汪苏泷",
|
||||||
|
"v": "汪苏泷演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X徐佳莹",
|
||||||
|
"v": "徐佳莹演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X弦子",
|
||||||
|
"v": "弦子演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X萧亚轩",
|
||||||
|
"v": "萧亚轩演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X许巍",
|
||||||
|
"v": "许巍演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X薛之谦",
|
||||||
|
"v": "薛之谦演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X许嵩",
|
||||||
|
"v": "许嵩演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X小虎队",
|
||||||
|
"v": "小虎队演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X萧敬腾",
|
||||||
|
"v": "萧敬腾演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X谢霆锋",
|
||||||
|
"v": "谢霆锋演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X徐小凤",
|
||||||
|
"v": "徐小凤演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "X信乐队",
|
||||||
|
"v": "信乐队演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y夜愿乐队",
|
||||||
|
"v": "夜愿乐队演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y羽泉",
|
||||||
|
"v": "羽泉演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y郁可唯",
|
||||||
|
"v": "郁可唯演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y叶倩文",
|
||||||
|
"v": "叶倩文演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y杨坤",
|
||||||
|
"v": "杨坤演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y庾澄庆",
|
||||||
|
"v": "庾澄庆演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y尤长靖",
|
||||||
|
"v": "尤长靖演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y易烊千玺",
|
||||||
|
"v": "易烊千玺演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y袁娅维",
|
||||||
|
"v": "袁娅维演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y杨丞琳",
|
||||||
|
"v": "杨丞琳演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y杨千嬅",
|
||||||
|
"v": "杨千嬅演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Y杨宗纬",
|
||||||
|
"v": "杨宗纬演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z郑秀文",
|
||||||
|
"v": "郑秀文演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z周杰伦",
|
||||||
|
"v": "周杰伦演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z张学友",
|
||||||
|
"v": "张学友演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z张信哲",
|
||||||
|
"v": "张信哲演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z张宇",
|
||||||
|
"v": "张宇演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z周华健",
|
||||||
|
"v": "周华健演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z张韶涵",
|
||||||
|
"v": "张韶涵演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z周深",
|
||||||
|
"v": "周深演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z纵贯线",
|
||||||
|
"v": "纵贯线演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z赵雷",
|
||||||
|
"v": "赵雷演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z周传雄",
|
||||||
|
"v": "周传雄演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z张国荣",
|
||||||
|
"v": "张国荣演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z周慧敏",
|
||||||
|
"v": "周慧敏演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z张惠妹",
|
||||||
|
"v": "张惠妹演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z周笔畅",
|
||||||
|
"v": "周笔畅演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z郑中基",
|
||||||
|
"v": "郑中基演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z张艺兴",
|
||||||
|
"v": "张艺兴演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z张震岳",
|
||||||
|
"v": "张震岳演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z张雨生",
|
||||||
|
"v": "张雨生演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z郑智化",
|
||||||
|
"v": "郑智化演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z卓依婷",
|
||||||
|
"v": "卓依婷演唱会超清"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "Z中岛美雪",
|
||||||
|
"v": "中岛美雪演唱会超清"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "duration",
|
||||||
|
"name": "时长",
|
||||||
|
"value": [{
|
||||||
|
"n": "全部",
|
||||||
|
"v": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "60分钟以上",
|
||||||
|
"v": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "30~60分钟",
|
||||||
|
"v": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "10~30分钟",
|
||||||
|
"v": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": "10分钟以下",
|
||||||
|
"v": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,301 @@
|
|||||||
|
{
|
||||||
|
"author": "春风",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; LYA-AL00; HMSCore 6.4.0.312; GMSCore 20.15.16) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.4.300 Mobile Safari/537.36",
|
||||||
|
"homeUrl": "https://www.nmddd.com",
|
||||||
|
"dcVipFlag": "true",
|
||||||
|
"dcPlayUrl": "true",
|
||||||
|
"cateManual": {
|
||||||
|
"电影": "1",
|
||||||
|
"连续剧": "2",
|
||||||
|
"动漫": "4",
|
||||||
|
"综艺": "3"
|
||||||
|
},
|
||||||
|
"homeVodNode": "//section/section[position()>2]//ul[@class='resize_list']/li/a",
|
||||||
|
"homeVodName": "/@title",
|
||||||
|
"homeVodId": "/@href",
|
||||||
|
"homeVodIdR": "/(S+).html",
|
||||||
|
"homeVodImg": "//@data-echo",
|
||||||
|
"homeVodImgR": "",
|
||||||
|
"homeVodMark": "/div/span[2]/span/text()",
|
||||||
|
"cateUrl": "https://www.nmddd.com/index.php?m=vod-list-id-{cateId}-pg-{catePg}.html",
|
||||||
|
"cateVodNode": "//ul[@class='resize_list']/li/a",
|
||||||
|
"cateVodName": "/@title",
|
||||||
|
"cateVodId": "/@href",
|
||||||
|
"cateVodIdR": "/(S+).html",
|
||||||
|
"cateVodImg": "//@data-echo",
|
||||||
|
"cateVodImgR": "",
|
||||||
|
"cateVodMark": "/div/span[2]/span/em/text()",
|
||||||
|
"dtUrl": "https://www.nmddd.com/{vid}",
|
||||||
|
"dtNode": "//body",
|
||||||
|
"dtName": "//section[@class='page-hd']/a/@title",
|
||||||
|
"dtNameR": "",
|
||||||
|
"dtImg": "//section[@class='page-hd']/a/img/@src",
|
||||||
|
"dtImgR": "",
|
||||||
|
"dtCate": "",
|
||||||
|
"dtCateR": "",
|
||||||
|
"dtYear": "//span[contains(text(), '年代')]/following-sibling::a/text()",
|
||||||
|
"dtYearR": "",
|
||||||
|
"dtArea": "",
|
||||||
|
"dtAreaR": "",
|
||||||
|
"dtDirector": "//span[contains(text(), '导演')]/following-sibling::a/text()",
|
||||||
|
"dtDirectorR": "",
|
||||||
|
"dtActor": "//span[contains(text(), '主演')]/following-sibling::a/text()",
|
||||||
|
"dtActorR": "",
|
||||||
|
"dtDesc": "//article[@class='detail-con']/p/text()",
|
||||||
|
"dtDescR": "",
|
||||||
|
"dtFromNode": "//div[@class='hd']/ul/li/a",
|
||||||
|
"dtFromName": "/text()",
|
||||||
|
"dtFromNameR": "",
|
||||||
|
"dtUrlNode": "//div[@class='numList']/ul",
|
||||||
|
"dtUrlSubNode": "/li/a",
|
||||||
|
"dtUrlId": "@href",
|
||||||
|
"dtUrlIdR": "/(S+).html",
|
||||||
|
"dtUrlName": "/text()",
|
||||||
|
"dtUrlNameR": "",
|
||||||
|
"playUrl": "https://www.nmddd.com/{playUrl}",
|
||||||
|
"playUa": "",
|
||||||
|
"searchUrl": "https://www.nmddd.com/index.php?m=vod-search&wd={wd}",
|
||||||
|
"scVodNode": "//ul[@class='ulPicTxt clearfix']/li",
|
||||||
|
"scVodName": "//span[@class='sTit']/text()",
|
||||||
|
"scVodId": "//span[@class='sBtn']/a/@href",
|
||||||
|
"scVodIdR": "/(S+).html",
|
||||||
|
"scVodImg": "//img/@data-src",
|
||||||
|
"scVodMark": "//span[@class='sDes'][2]/text()",
|
||||||
|
"filter":{
|
||||||
|
"1": [
|
||||||
|
{
|
||||||
|
"name":"类型",
|
||||||
|
"key":"cateId",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":"1"},
|
||||||
|
{"n":"动作片","v":"5"},
|
||||||
|
{"n":"喜剧片","v":"6"},
|
||||||
|
{"n":"爱情片","v":"7"},
|
||||||
|
{"n":"科幻片","v":"8"},
|
||||||
|
{"n":"恐怖片","v":"9"},
|
||||||
|
{"n":"剧情片","v":"10"},
|
||||||
|
{"n":"战争片","v":"11"},
|
||||||
|
{"n":"惊悚片","v":"16"},
|
||||||
|
{"n":"奇幻片","v":"17"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"年份",
|
||||||
|
"key":"year",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"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"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"地区",
|
||||||
|
"key":"area",
|
||||||
|
"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":"加拿大"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"排序",
|
||||||
|
"key":"by",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}
|
||||||
|
]}
|
||||||
|
],
|
||||||
|
"2": [
|
||||||
|
{
|
||||||
|
"name":"类型",
|
||||||
|
"key":"cateId",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":"2"},
|
||||||
|
{"n":"国产剧","v":"12"},
|
||||||
|
{"n":"港台剧","v":"13"},
|
||||||
|
{"n":"日韩剧","v":"14"},
|
||||||
|
{"n":"欧美剧","v":"15"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"年份",
|
||||||
|
"key":"year",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"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"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"地区",
|
||||||
|
"key":"area",
|
||||||
|
"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":"加拿大"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"排序",
|
||||||
|
"key":"by",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}
|
||||||
|
]}
|
||||||
|
],
|
||||||
|
"3": [
|
||||||
|
{
|
||||||
|
"name":"类型",
|
||||||
|
"key":"cateId",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":"3"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"年份",
|
||||||
|
"key":"year",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"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"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"地区",
|
||||||
|
"key":"area",
|
||||||
|
"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":"加拿大"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"排序",
|
||||||
|
"key":"by",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}
|
||||||
|
]}
|
||||||
|
],
|
||||||
|
"4": [
|
||||||
|
{
|
||||||
|
"name":"类型",
|
||||||
|
"key":"cateId",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":"4"},
|
||||||
|
{"n":"动漫剧","v":"18"},
|
||||||
|
{"n":"动漫片","v":"19"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"年份",
|
||||||
|
"key":"year",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"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"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"地区",
|
||||||
|
"key":"area",
|
||||||
|
"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":"加拿大"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"name":"排序",
|
||||||
|
"key":"by",
|
||||||
|
"value":[
|
||||||
|
{"n":"全部","v":""},
|
||||||
|
{"n":"时间","v":"time"},
|
||||||
|
{"n":"人气","v":"hits"},
|
||||||
|
{"n":"评分","v":"score"}
|
||||||
|
]}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
"作者": "小哇",
|
|
||||||
"站名": "飞云",
|
|
||||||
"首页": "电影",
|
|
||||||
"请求头": "User-Agent$Mozilla/5.0 (iPad; CPU OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1#Referer$http://www.tvyb03.com/",
|
|
||||||
"主页url": "http://nb.xzam.cn:66/api.php/provide/vod/from/FYNB?ac=detail&t=21&pg=1&f=",
|
|
||||||
"分类": "电影&电视剧&综艺&动漫",
|
|
||||||
"分类值": "1&2&4&3",
|
|
||||||
"分类url": "http://nb.xzam.cn:66/api.php/provide/vod/from/FYNB?ac=detail&t={cateId}&pg={catePg}&f=};;u0",
|
|
||||||
"数组二次截取": "list\":[&&]",
|
|
||||||
"数组": "{&&}",
|
|
||||||
"图片": "vod_pic\"*\"&&\"",
|
|
||||||
"标题": "vod_name\"*\"&&\"",
|
|
||||||
"副标题": "vod_remarks\"*\"&&\"",
|
|
||||||
"链接": "http://nb.xzam.cn:66/api.php/provide/vod/from/FYNB?ac=detail&ids=+vod_id\":&&,",
|
|
||||||
"搜索url": "http://nb.xzam.cn:66//api.php/provide/vod/from/FYNB?wd={wd}&ac=detail",
|
|
||||||
"搜索模式": "1",
|
|
||||||
"搜索二次截取": "list\":[&&]",
|
|
||||||
"搜索数组": "{&&}",
|
|
||||||
"搜索图片": "vod_pic\"*\"&&\"",
|
|
||||||
"搜索标题": "vod_name\"*\"&&\"",
|
|
||||||
"搜索副标题": "vod_remarks\"*\"&&\"",
|
|
||||||
"搜索链接": "http://nb.xzam.cn:66/api.php/provide/vod/from/FYNB?ac=detail&ids=+vod_id\":&&,",
|
|
||||||
"影片类型": "vod_class\"*\"&&\"",
|
|
||||||
"导演": "vod_director\"*\"&&\"",
|
|
||||||
"主演": "vod_actor\"*\"&&\"",
|
|
||||||
"简介": "vod_content\"*\"&&\"",
|
|
||||||
"线路二次截取": "\"list\":[&&]",
|
|
||||||
"线路数组": "\"vod_play_from\":&&,",
|
|
||||||
"线路标题": "\"&&\"",
|
|
||||||
"播放数组": "vod_play_url\":&&,[替换:\">>链表题#$>>题链#\\#>>链表表题]",
|
|
||||||
"播放二次截取": "",
|
|
||||||
"播放列表": "表&&表",
|
|
||||||
"播放标题": "题&&题",
|
|
||||||
"播放链接": "https://fy.wuye3d.com/fy27.php?url=+链&&链",
|
|
||||||
"跳转播放链接": "url*'&&'",
|
|
||||||
"嗅探词":"mp4#m3u8#.m3u8#.mp4#video_mp4#feiyunNB.mp4#.mp4#cdn.123pan.cn#huoshanvod.com",
|
|
||||||
"倒序播放": "0",
|
|
||||||
"免嗅": "0"
|
|
||||||
}
|
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"主页url":"http://dyxz.tv",
|
||||||
|
"数组":"<div class=\"stui-vodlist__box\">&&</div>",
|
||||||
|
"图片":"data-original=\"&&\"",
|
||||||
|
"标题":"title=\"&&\"",
|
||||||
|
"链接":"href=\"&&\"",
|
||||||
|
//"嗅探词":".m3u8#m3u8#mp4",
|
||||||
|
"副标题":"<span class=\"pic-text text-right\">&&</span>",
|
||||||
|
"搜索url":"http://dyxz.tv/search.php;post;searchword={wd}",
|
||||||
|
"搜索模式":"1",
|
||||||
|
"搜索数组":"<a class=\"v-thumb stui-vodlist__thumb&&</a>",
|
||||||
|
"搜索图片":"data-original=\"&&\"",
|
||||||
|
"搜索标题":"title=\"&&\"",
|
||||||
|
"搜索链接":"href=\"&&\"",
|
||||||
|
"搜索副标题":"<span class=\"pic-text text-right\">&&</span>",
|
||||||
|
"搜索后缀":"/view/",
|
||||||
|
"线路数组":"<a data-toggle=\"tab\"&&/a>",
|
||||||
|
"线路标题":">&&<",
|
||||||
|
"播放数组":"<ul class=\"stui-content__playlist clearfix&&</ul>",
|
||||||
|
"影片年代":"年份:&&</p>",
|
||||||
|
"影片地区":"地区:&&<span",
|
||||||
|
"影片类型":"类型:&&</a>",
|
||||||
|
"导演":"导演:&&</p>",
|
||||||
|
"主演":"主演:&&</p>",
|
||||||
|
"简介":"更新:&&</p>",
|
||||||
|
"播放列表":"<a&&/a>",
|
||||||
|
"播放标题":">&&<",
|
||||||
|
"播放链接":"href=\"&&\"",
|
||||||
|
"免嗅":"0",
|
||||||
|
"分类url":"http://dyxz.tv/list/{cateId}_{catePg}.html",
|
||||||
|
"分类":"电影$1#电视剧$2#动漫$3#综艺$4"}
|
||||||
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"站名": "蘑菇",
|
|
||||||
"主页url": "https://www.movie4k.vip/",
|
|
||||||
"请求头":"电脑",
|
|
||||||
"简介": "class=\"video-info-item video-info-content vod_content&&</span",
|
|
||||||
"影片状态": "集数:&&</div>",
|
|
||||||
"影片类型": "scroll-content\">&&立即播放",
|
|
||||||
"播放数组":"class=\"scroll-content\">&&</div>",
|
|
||||||
"线路数组": "class=\"module-tab-item tab-item&&</div>",
|
|
||||||
"数组": "module-item-pic\">&&module-item\">",
|
|
||||||
"搜索模式":"0",
|
|
||||||
"副标题": "module-item-text\">&&</div>",
|
|
||||||
//"搜索url":"https://www.movie4k.vip//vodsearch/{wd}-------------.html",
|
|
||||||
"线路标题": "<span>&&</small>[替换:</span><small>>>更新至]+集",
|
|
||||||
"分类url": "https://www.movie4k.vip//vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;mk",
|
|
||||||
"分类": "电影$1#国产剧$13#韩剧$14#美剧$15#泰剧$24#台剧$20#综艺$4#动漫$3"
|
|
||||||
}
|
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,275 @@
|
|||||||
|
import { _ } from './lib/cat.js';
|
||||||
|
import { findBestLCS } from './lib/similarity.js';
|
||||||
|
|
||||||
|
const http = async function (url, options = {}) {
|
||||||
|
if (options.method == 'POST' && options.data) {
|
||||||
|
options.body = JSON.stringify(options.data);
|
||||||
|
options.headers = Object.assign({ 'content-type': 'application/json' }, options.headers);
|
||||||
|
}
|
||||||
|
const res = await req(url, options);
|
||||||
|
res.json = () => (res.content ? JSON.parse(res.content) : null);
|
||||||
|
res.text = () => res.content;
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
['get', 'post'].forEach((method) => {
|
||||||
|
http[method] = function (url, options = {}) {
|
||||||
|
return http(url, Object.assign(options, { method: method.toUpperCase() }));
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const __drives = {};
|
||||||
|
const __subtitle_cache = {};
|
||||||
|
|
||||||
|
async function get_drives_path(tid) {
|
||||||
|
const index = tid.indexOf('/', 1);
|
||||||
|
const name = tid.substring(1, index);
|
||||||
|
const path = tid.substring(index);
|
||||||
|
return { drives: await get_drives(name), path };
|
||||||
|
}
|
||||||
|
|
||||||
|
async function get_drives(name) {
|
||||||
|
const { settings, api, server } = __drives[name];
|
||||||
|
if (settings.v3 == null) {
|
||||||
|
//获取 设置
|
||||||
|
settings.v3 = false;
|
||||||
|
const data = (await http.get(server + '/api/public/settings')).json().data;
|
||||||
|
if (_.isArray(data)) {
|
||||||
|
settings.title = data.find((x) => x.key == 'title')?.value;
|
||||||
|
settings.v3 = false;
|
||||||
|
settings.version = data.find((x) => x.key == 'version')?.value;
|
||||||
|
settings.enableSearch = data.find((x) => x.key == 'enable search')?.value == 'true';
|
||||||
|
} else {
|
||||||
|
settings.title = data.title;
|
||||||
|
settings.v3 = true;
|
||||||
|
settings.version = data.version;
|
||||||
|
settings.enableSearch = false; //v3 没有找到 搜索配置
|
||||||
|
}
|
||||||
|
//不同版本 接口不一样
|
||||||
|
api.path = settings.v3 ? '/api/fs/list' : '/api/public/path';
|
||||||
|
api.file = settings.v3 ? '/api/fs/get' : '/api/public/path';
|
||||||
|
api.search = settings.v3 ? '/api/public/search' : '/api/public/search';
|
||||||
|
api.other = settings.v3 ? '/api/fs/other' : null;
|
||||||
|
}
|
||||||
|
return __drives[name];
|
||||||
|
}
|
||||||
|
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
cfg.ext.forEach(
|
||||||
|
(item) =>
|
||||||
|
(__drives[item.name] = {
|
||||||
|
name: item.name,
|
||||||
|
server: item.server.endsWith('/') ? item.server.substring(0, item.server.length - 1) : item.server,
|
||||||
|
startPage: item.startPage || '/', //首页
|
||||||
|
showAll: item.showAll === true, //默认只显示 视频和文件夹,如果想显示全部 showAll 设置true
|
||||||
|
params: item.params || {},
|
||||||
|
_path_param: item.params
|
||||||
|
? _.sortBy(Object.keys(item.params), function (x) {
|
||||||
|
return -x.length;
|
||||||
|
})
|
||||||
|
: [],
|
||||||
|
settings: {},
|
||||||
|
api: {},
|
||||||
|
getParams(path) {
|
||||||
|
const key = this._path_param.find((x) => path.startsWith(x));
|
||||||
|
return Object.assign({}, this.params[key], { path });
|
||||||
|
},
|
||||||
|
async getPath(path) {
|
||||||
|
const res = (await http.post(this.server + this.api.path, { data: this.getParams(path) })).json();
|
||||||
|
return this.settings.v3 ? res.data.content : res.data.files;
|
||||||
|
},
|
||||||
|
async getFile(path) {
|
||||||
|
const res = (await http.post(this.server + this.api.file, { data: this.getParams(path) })).json();
|
||||||
|
const data = this.settings.v3 ? res.data : res.data.files[0];
|
||||||
|
if (!this.settings.v3) data.raw_url = data.url; //v2 的url和v3不一样
|
||||||
|
return data;
|
||||||
|
},
|
||||||
|
async getOther(method, path) {
|
||||||
|
const data = this.getParams(path);
|
||||||
|
data.method = method;
|
||||||
|
const res = (await http.post(this.server + this.api.other, { data: data })).json();
|
||||||
|
return res;
|
||||||
|
},
|
||||||
|
isFolder(data) {
|
||||||
|
return data.type == 1;
|
||||||
|
},
|
||||||
|
isVideo(data) {
|
||||||
|
//判断是否是 视频文件
|
||||||
|
return this.settings.v3 ? data.type == 2 : data.type == 3;
|
||||||
|
},
|
||||||
|
isSubtitle(data) {
|
||||||
|
if (data.type == 1) return false;
|
||||||
|
const ext = ['.srt', '.ass', '.scc', '.stl', '.ttml'];
|
||||||
|
return ext.some((x) => data.name.endsWith(x));
|
||||||
|
},
|
||||||
|
getType(data) {
|
||||||
|
const isVideo = this.isVideo(data);
|
||||||
|
return this.isFolder(data) ? 0 : isVideo ? 10 : 1;
|
||||||
|
},
|
||||||
|
getPic(data) {
|
||||||
|
let pic = this.settings.v3 ? data.thumb : data.thumbnail;
|
||||||
|
return pic || (this.isFolder(data) ? 'http://img1.3png.com/281e284a670865a71d91515866552b5f172b.png' : '');
|
||||||
|
},
|
||||||
|
getSize(data) {
|
||||||
|
let sz = data.size || 0;
|
||||||
|
if (sz <= 0) return '';
|
||||||
|
let filesize = '';
|
||||||
|
if (sz > 1024 * 1024 * 1024 * 1024.0) {
|
||||||
|
sz /= 1024 * 1024 * 1024 * 1024.0;
|
||||||
|
filesize = 'TB';
|
||||||
|
} else if (sz > 1024 * 1024 * 1024.0) {
|
||||||
|
sz /= 1024 * 1024 * 1024.0;
|
||||||
|
filesize = 'GB';
|
||||||
|
} else if (sz > 1024 * 1024.0) {
|
||||||
|
sz /= 1024 * 1024.0;
|
||||||
|
filesize = 'MB';
|
||||||
|
} else {
|
||||||
|
sz /= 1024.0;
|
||||||
|
filesize = 'KB';
|
||||||
|
}
|
||||||
|
return sz.toFixed(2) + filesize;
|
||||||
|
},
|
||||||
|
getRemark(data) {
|
||||||
|
return '';
|
||||||
|
},
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function dir(dir, pg) {
|
||||||
|
for (const k in __subtitle_cache) {
|
||||||
|
delete __subtitle_cache[k];
|
||||||
|
}
|
||||||
|
pg = pg || 1;
|
||||||
|
if (pg == 0) pg == 1;
|
||||||
|
if (dir === '/' || dir === '') {
|
||||||
|
const result = _.map(__drives, function (d) {
|
||||||
|
return { name: d.name, path: '/' + d.name + d.startPage, type: 0, thumb: '' };
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
parent: '',
|
||||||
|
page: pg,
|
||||||
|
pagecount: pg,
|
||||||
|
list: result,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let { drives, path } = await get_drives_path(dir);
|
||||||
|
const id = dir.endsWith('/') ? dir : dir + '/';
|
||||||
|
const list = await drives.getPath(path);
|
||||||
|
let subtList = [];
|
||||||
|
let videos = [];
|
||||||
|
let allList = [];
|
||||||
|
list.forEach((item) => {
|
||||||
|
if (drives.isSubtitle(item)) subtList.push(item.name);
|
||||||
|
const isVideo = drives.isVideo(item);
|
||||||
|
if (!drives.showAll && !drives.isFolder(item) && !isVideo) return;
|
||||||
|
const file = {
|
||||||
|
name: item.name.replaceAll('$', '_').replaceAll('#', '_'),
|
||||||
|
path: id + item.name + (drives.isFolder(item) ? '/' : ''),
|
||||||
|
thumb: drives.getPic(item),
|
||||||
|
type: drives.getType(item),
|
||||||
|
size: drives.getSize(item),
|
||||||
|
remark: drives.getRemark(item),
|
||||||
|
};
|
||||||
|
if (drives.isVideo(item)) videos.push(file);
|
||||||
|
allList.push(file);
|
||||||
|
});
|
||||||
|
if (subtList.length > 0) {
|
||||||
|
videos.forEach((item) => {
|
||||||
|
var sbust = findBestLCS(item.name, subtList);
|
||||||
|
if (sbust.bestMatch) __subtitle_cache[item.path] = [id + sbust.bestMatch.target];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
parent: id,
|
||||||
|
page: pg,
|
||||||
|
pagecount: pg,
|
||||||
|
list: allList,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function file(file) {
|
||||||
|
let { drives, path } = await get_drives_path(file);
|
||||||
|
const item = await drives.getFile(path);
|
||||||
|
const subs = [];
|
||||||
|
if (__subtitle_cache[file]) {
|
||||||
|
for (const sub of __subtitle_cache[file]) {
|
||||||
|
try {
|
||||||
|
let subP = await get_drives_path(sub);
|
||||||
|
const subItem = await drives.getFile(subP.path);
|
||||||
|
subs.push(subItem.raw_url);
|
||||||
|
} catch (error) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.provider === 'AliyundriveShare2Open' && drives.api.other) {
|
||||||
|
const urls = ['原画', item.raw_url];
|
||||||
|
try {
|
||||||
|
const res = await drives.getOther('video_preview', path);
|
||||||
|
for (const live of res.data.video_preview_play_info.live_transcoding_task_list) {
|
||||||
|
if (live.status === 'finished') {
|
||||||
|
urls.push(live.template_id);
|
||||||
|
urls.push(live.url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {}
|
||||||
|
const result = {
|
||||||
|
name: item.name,
|
||||||
|
url: urls,
|
||||||
|
size: drives.getSize(item),
|
||||||
|
remark: drives.getRemark(item),
|
||||||
|
header: {},
|
||||||
|
extra: {
|
||||||
|
subt: subs,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} else if (item.provider === '123Pan') {
|
||||||
|
let url = item.raw_url;
|
||||||
|
try {
|
||||||
|
url = (await http.get(url)).json().data.redirect_url;
|
||||||
|
} catch (error) {}
|
||||||
|
const result = {
|
||||||
|
name: item.name,
|
||||||
|
url: url,
|
||||||
|
size: drives.getSize(item),
|
||||||
|
remark: drives.getRemark(item),
|
||||||
|
header: {},
|
||||||
|
extra: {
|
||||||
|
subt: subs,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} else {
|
||||||
|
const result = {
|
||||||
|
name: item.name,
|
||||||
|
url: item.raw_url,
|
||||||
|
size: drives.getSize(item),
|
||||||
|
remark: drives.getRemark(item),
|
||||||
|
header: {},
|
||||||
|
extra: {
|
||||||
|
subt: subs,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function search(wd) {
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
dir: dir,
|
||||||
|
file: file,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,136 @@
|
|||||||
|
import { _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'bookkan';
|
||||||
|
let url = 'https://api.bookan.com.cn';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
return JSON.stringify({
|
||||||
|
class: [
|
||||||
|
{ type_id: '1305', type_name: '少年读物' },
|
||||||
|
{ type_id: '1304', type_name: '儿童文学' },
|
||||||
|
{ type_id: '1320', type_name: '国学经典' },
|
||||||
|
{ type_id: '1306', type_name: '文艺少年' },
|
||||||
|
{ type_id: '1309', type_name: '育儿心经' },
|
||||||
|
{ type_id: '1310', type_name: '心理哲学' },
|
||||||
|
{ type_id: '1307', type_name: '青春励志' },
|
||||||
|
{ type_id: '1312', type_name: '历史小说' },
|
||||||
|
{ type_id: '1303', type_name: '故事会' },
|
||||||
|
{ type_id: '1317', type_name: '音乐戏剧' },
|
||||||
|
{ type_id: '1319', type_name: '相声评书' },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
pg = pg || 1;
|
||||||
|
if (pg == 0) pg = 1;
|
||||||
|
let content = await request(`${url}/voice/book/list?instance_id=25304&page=${pg}&category_id=${tid}&num=24`);
|
||||||
|
let data = JSON.parse(content).data;
|
||||||
|
let books = [];
|
||||||
|
for (const book of data.list) {
|
||||||
|
books.push({
|
||||||
|
book_id: book.id,
|
||||||
|
book_name: book.name,
|
||||||
|
book_pic: book.cover,
|
||||||
|
book_remarks: book.extra.author,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: data.current_page,
|
||||||
|
pagecount: data.last_page,
|
||||||
|
limit: 24,
|
||||||
|
total: data.total,
|
||||||
|
list: books,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
let content = await request(`${url}/voice/album/units?album_id=${id}&page=1&num=200&order=1`);
|
||||||
|
let data = JSON.parse(content).data;
|
||||||
|
|
||||||
|
let book = {
|
||||||
|
book_id: id,
|
||||||
|
type_name: '',
|
||||||
|
book_year: '',
|
||||||
|
book_area: '',
|
||||||
|
book_remarks: '',
|
||||||
|
book_actor: '',
|
||||||
|
book_director: '',
|
||||||
|
book_content: '',
|
||||||
|
};
|
||||||
|
let us = _.map(data.list, function (b) {
|
||||||
|
return formatPlayUrl(b.title) + '$' + b.file;
|
||||||
|
}).join('#');
|
||||||
|
book.volumes = '书卷';
|
||||||
|
book.urls = us;
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [book],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatPlayUrl(name) {
|
||||||
|
return name
|
||||||
|
.trim()
|
||||||
|
.replace(/<|>|《|》/g, '')
|
||||||
|
.replace(/\$|#/g, ' ')
|
||||||
|
.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function proxy(segments, headers) {}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
pg = pg || 1;
|
||||||
|
if (pg == 0) pg = 1;
|
||||||
|
let content = await request(`https://es.bookan.com.cn/api/v3/voice/book?instanceId=25304&keyword=${wd}&pageNum=${pg}&limitNum=20`);
|
||||||
|
let data = JSON.parse(content).data;
|
||||||
|
let books = [];
|
||||||
|
for (const book of data.list) {
|
||||||
|
books.push({
|
||||||
|
book_id: book.id,
|
||||||
|
book_name: book.name,
|
||||||
|
book_pic: book.cover,
|
||||||
|
book_remarks: book.extra.author,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: data.current_page,
|
||||||
|
pagecount: data.last_page,
|
||||||
|
limit: 20,
|
||||||
|
total: data.total,
|
||||||
|
list: books,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1BMEGNhaWppLmpzGC4vbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgJfDnNpdGVLZXkQc2l0ZVR5cGUEVUEOYmFzZVVybAhpbml0EmdldEhlYWRlchJnZXRTdHJpbmcIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFpbAhwbGF5DHNlYXJjaN4BTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwOS4wLjAuMCBTYWZhcmkvNTM3LjM2BmNmZwhza2V5CnN0eXBlBmV4dAxoZWFkZXIUVXNlci1BZ2VudAZ1cmwGcmVzBnJlcQ5oZWFkZXJzDmNvbnRlbnQMZmlsdGVyDHJlcVVybA5qc29uU3RyCGRhdGEWY2xhc3Nlc3NBcnIOY2xhc3NlcxJmaWx0ZXJPYmoGb25lCnBhcnNlEHR5cGVfcGlkCHB1c2gOdHlwZV9pZBJ0eXBlX25hbWUSc3RyaW5naWZ5DmZpbHRlcnMEe30GdGlkBHBnDGV4dGVuZAx2aWRlb3MgP2FjPXZpZGVvbGlzdCZ0PQgmcGc9CGxpc3QMdm9kX2lkEHZvZF9uYW1lDnZvZF9waWMWdm9kX3JlbWFya3MQcGFyc2VJbnQIcGFnZRJwYWdlY291bnQKbGltaXQKdG90YWwEaWQGdm9kJD9hYz12aWRlb2xpc3QmaWRzPQ5pc0VtcHR5EHZvZF95ZWFyEHZvZF9hcmVhEnZvZF9hY3Rvchh2b2RfZGlyZWN0b3IWdm9kX2NvbnRlbnQadm9kX3BsYXlfZnJvbRh2b2RfcGxheV91cmwIZmxhZwR3ZApxdWljaxw/YWM9ZGV0YWlsJndkPQ+kAwGmAwEADqgDAAEAqgMADgAGAaABAAAAAQ8KRQCqAwAMrAMACa4DAQmwAwIJsgMDCbQDBAG2AwUBuAMGAboDBwG8AwgBvgMJAcADCgHCAwsBxAMMAagDDQEI6DS+AF8FAL4BXwYAvgJfBwC+A18IAL4EXwkAvgVfCgC+Bl8LAL4HXwwAvghfDQC+CV8OACm/4LPhBOMAAADiv18EACmkAwELAQA2Bg0NIQAElgIOYgYBtAMBAAECAwAjAcgDAAEArAMBCK4DAgiyAwQIz0HlAAAAEWYAAA7PQeYAAAARZgEADs9B5wAAABFmAgAOBi6kAwgEAzo6Og5DBgG2AwABAAMBABYB0AMBACCwAwMIYQAAC8diAAAE6QAAAHFlAABJYgAAKKQDDgMSDUQOYgYBuAMBAQEEAQAdAtQDAAEA1gMBACC2AwYAYQAAOOwAAADPC9vsTO0AAADui8diAABB7gAAAC6kAxQEEiYmEg5iBgG6AwEHAQcCAKIBCN4DAAEA4AMBADDiAwEBMOQDAQIw5gMBAzDoAwEEIOoDAQUg7AMCBiCyAwQIuAMHAGEFAGEEAGEDAGECAGEBAGEAAGUAAMfcYgAA7YvIOJgAAABC9wAAAGIBACQBAMliAgBBHgAAAMomAADBBAvBBWEGAGIDAH3qNsEGYgYAQfgAAACzqugoYgQAQvkAAAALYgYAQfoAAABM+gAAAGIGAEH7AAAATPsAAAAkAQAOgADoyA6DOJgAAABC/AAAAAtiBABMHgAAAGIFAEz9AAAAJAEALqQDHA5dFyZYMBwSOj/HITorKw5iBgG8AwAAAAEAAAYABP4AAAAupAMuAQMOYgYBvgMEBQQHAgDqAQn+AwABAIAEAAEA3gMAAQCCBAABAOADAQAw4gMBATDkAwECMIQEAQMg7AMDBCCyAwQIuAMHAGEDAGECAGEBAGEAANCzpOgDtNRlAAAEAwEAAJ3PnQQEAQAAndCdx9xiAADti8g4mAAAAEL3AAAAYgEAJAEAySYAAMphBABiAgBBBQEAAH3qRMEEYgMAQvkAAAALYgQAQQYBAABMBgEAAGIEAEEHAQAATAcBAABiBABBCAEAAEwIAQAAYgQAQQkBAABMCQEAACQBAA6AAOi6DoM4mAAAAEL8AAAACzgKAQAA0O1MCwEAAGICAEEMAQAATAwBAAA4CgEAAGICAEENAQAA7UwNAQAAYgIAQQ4BAABMDgEAAGIDAEwFAQAAJAEALqQDMxQ/JmcmWBdTMEREREQXIzo/RGJEKw5iBgHAAwEFAQQDAJwCBp4EAAEA4AMBADDiAwEBMOQDAQIw7AMBAzCgBAEEILIDBAi4AwcAqgMADGEEAGEDAGECAGEBAGEAAGUAAAQRAQAAnc+dx9xiAADti8g4mAAAAEL3AAAAYgEAJAEAyWICAEEFAQAAs0fKZQIAQhIBAABiAwAkAQDoBwT+AAAALgtiAwBBBgEAAEwGAQAAYgMAQQcBAABMBwEAAGIDAEH7AAAATPsAAABiAwBBCAEAAEwIAQAAYgMAQRMBAABMEwEAAGIDAEEUAQAATBQBAABiAwBBFQEAABHpAw6/TBUBAABiAwBBFgEAABHpAw6/TBYBAABiAwBBCQEAABHpAw6/TAkBAABiAwBBFwEAAEwXAQAAYgMAQRgBAABMGAEAAGIDAEEZAQAATBkBAADBBDiYAAAAQvwAAAALYgQAJgEATAUBAAAkAQAupANMGE4/Jlg6UxwICERERERERF1dXURERA46Og5iBgHCAwMAAwQAABsDtAQAAQCeBAABANoBAAEAOJgAAABC/AAAAAuzTPcAAADQTOoAAAAkAQAupANpBAM6ISEOYgYBxAMDBQMHAgDRAQi2BAABALgEAAEAgAQAAQDgAwEAMOIDAQEw5AMBAjCEBAEDIKAEAwQwsgMECLgDBwBhAwBhAgBhAQBhAADRs6ToA7TVZQAABB0BAACdz50EBAEAAJ3RncfcYgAA7YvIOJgAAABC9wAAAGIBACQBAMkmAADKYQQAYgIAQQUBAAB96kTBBGIDAEL5AAAAC2IEAEEGAQAATAYBAABiBABBBwEAAEwHAQAAYgQAQQgBAABMCAEAAGIEAEEJAQAATAkBAAAkAQAOgADoug6DOJgAAABC/AAAAAs4CgEAAGICAEELAQAA7UwLAQAAYgIAQQwBAABMDAEAAGIDAEwFAQAAJAEALqQDcRI/JmcmWBdTMEREREQXIjpiRCsOQwYBqAMAAAACBwAyALQDBQC6AwgAvAMJAL4DCgDAAwsAwgMMAMQDDQAL20zaAAAA3EzdAAAA3UzeAAAA3kzfAAAAXgQATOAAAABeBQBM4QAAAF4GAEziAAAAKKQDhwEJAwghISEhKysr
|
||||||
@ -0,0 +1,166 @@
|
|||||||
|
import { Crypto, load, _, jinja2 } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'duboku';
|
||||||
|
let url = 'https://u.duboku.io';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
const UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1';
|
||||||
|
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': agentSp || UA,
|
||||||
|
'Referer': url
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
const html = await request(url);
|
||||||
|
const $ = load(html);
|
||||||
|
const class_parse = $('ul.nav-list > li > a[href*=vodtype]');
|
||||||
|
let classes = [];
|
||||||
|
classes = _.map(class_parse, (cls) => {
|
||||||
|
let typeId = cls.attribs['href'];
|
||||||
|
typeId = typeId.substring(typeId.lastIndexOf('/') + 1).replace('.html','');
|
||||||
|
return {
|
||||||
|
type_id: typeId,
|
||||||
|
type_name: cls.children[0].data,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
let filterObj = {
|
||||||
|
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"陆剧","v":"13"},{"n":"日韩剧","v":"15"},{"n":"短剧","v":"21"},{"n":"台泰剧","v":"14"},{"n":"港剧","v":"20"}]},{"key":"class","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":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"area","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":"荷兰"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"韩语","v":"韩语"},{"n":"泰语","v":"泰语"},{"n":"法语","v":"法语"},{"n":"日语","v":"日语"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"3":[{"key":"class","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":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"4":[{"key":"class","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":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"国产","v":"国产"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"13":[{"key":"class","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":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"15":[{"key":"class","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":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"21":[{"key":"class","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":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"14":[{"key":"class","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":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"台湾","v":"台湾"},{"n":"泰国","v":"泰国"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"20":[{"key":"class","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":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
const link = url + '/vodshow/2--hits---------.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.myui-panel_bd > ul.myui-vodlist > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.pic-text')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: it.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
|
||||||
|
const link = url + '/vodshow/' + (extend.CateId || tid) + '-'+(extend.area || '')+'-'+(extend.by || 'time')+'-'+(extend.class || '')+'-'+(extend.lang || '')+'-'+(extend.letter || '')+'---' + (`${pg}`) + '---'+(extend.year || '')+'.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.myui-panel_bd > ul.myui-vodlist > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.pic-text')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: it.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('ul.myui-page > li > a:contains(下一页)').length > 0;
|
||||||
|
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(pg),
|
||||||
|
pagecount: pgCount,
|
||||||
|
limit: 24,
|
||||||
|
total: 24 * pgCount,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
const html = await request(url + '/voddetail/' + id + '.html');
|
||||||
|
const $ = load(html);
|
||||||
|
let vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('h1:first').text().trim(),
|
||||||
|
vod_type: $('.myui-content__detail p:first a').text(),
|
||||||
|
vod_actor: $('.myui-content__detail p:nth-child(5)').text().replace('主演:',''),
|
||||||
|
vod_director: $('.myui-content__detail p:nth-child(6)').text().replace('导演:',''),
|
||||||
|
vod_pic: $('div.myui-content__thumb img:first').attr('data-original'),
|
||||||
|
vod_remarks :$('#rating:first span').text().replace(/\s{2,}/g, ' '),
|
||||||
|
vod_content: $('span.data').text().trim(),
|
||||||
|
};
|
||||||
|
const playlist = _.map($('ul.sort-list > li > a'), (it) => {
|
||||||
|
return it.children[0].data + '$' + it.attribs.href.replace(/\/vodplay\/(.*).html/g, '$1');
|
||||||
|
});
|
||||||
|
vod.vod_play_from = key;
|
||||||
|
vod.vod_play_url = playlist.join('#');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
const link = url + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_data=',''));
|
||||||
|
const playUrl = js.url.replace('index.m3u8','hls\/index.m3u8');
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick) {
|
||||||
|
let data = JSON.parse(await request(url + '/index.php/ajax/suggest?mid=1&wd=' + wd)).list;
|
||||||
|
let videos = [];
|
||||||
|
for (const vod of data) {
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.id,
|
||||||
|
vod_name: vod.name,
|
||||||
|
vod_pic: vod.pic,
|
||||||
|
vod_remarks: '',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
|||||||
|
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
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
|||||||
|
function compareTwoStrings(first,second){if((first=first.replace(/\s+/g,""))===(second=second.replace(/\s+/g,"")))return 1;if(first.length<2||second.length<2)return 0;var firstBigrams=new Map;for(let i=0;i<first.length-1;i++){var bigram=first.substring(i,i+2),count=firstBigrams.has(bigram)?firstBigrams.get(bigram)+1:1;firstBigrams.set(bigram,count)}let intersectionSize=0;for(let i=0;i<second.length-1;i++){const bigram=second.substring(i,i+2),count=firstBigrams.has(bigram)?firstBigrams.get(bigram):0;0<count&&(firstBigrams.set(bigram,count-1),intersectionSize++)}return 2*intersectionSize/(first.length+second.length-2)}function findBestMatch(mainString,targetStrings){var ratings=[];let bestMatchIndex=0;for(let i=0;i<targetStrings.length;i++){var currentTargetString=targetStrings[i],currentRating=compareTwoStrings(mainString,currentTargetString);ratings.push({target:currentTargetString,rating:currentRating}),currentRating>ratings[bestMatchIndex].rating&&(bestMatchIndex=i)}return{ratings:ratings,bestMatch:ratings[bestMatchIndex],bestMatchIndex:bestMatchIndex}}function lcs(str1,str2){if(!str1||!str2)return{length:0,sequence:"",offset:0};for(var sequence="",str1Length=str1.length,str2Length=str2.length,num=new Array(str1Length),maxlen=0,lastSubsBegin=0,i=0;i<str1Length;i++){for(var subArray=new Array(str2Length),j=0;j<str2Length;j++)subArray[j]=0;num[i]=subArray}for(var thisSubsBegin=null,i=0;i<str1Length;i++)for(j=0;j<str2Length;j++)str1[i]!==str2[j]?num[i][j]=0:(num[i][j]=0===i||0===j?1:1+num[i-1][j-1],num[i][j]>maxlen&&(maxlen=num[i][j],lastSubsBegin===(thisSubsBegin=i-num[i][j]+1)?sequence+=str1[i]:(lastSubsBegin=thisSubsBegin,sequence="",sequence+=str1.substr(lastSubsBegin,i+1-lastSubsBegin))));return{length:maxlen,sequence:sequence,offset:thisSubsBegin}}function findBestLCS(mainString,targetStrings){var results=[];let bestMatchIndex=0;for(let i=0;i<targetStrings.length;i++){var currentTargetString=targetStrings[i],currentLCS=lcs(mainString,currentTargetString);results.push({target:currentTargetString,lcs:currentLCS}),currentLCS.length>results[bestMatchIndex].lcs.length&&(bestMatchIndex=i)}return{allLCS:results,bestMatch:results[bestMatchIndex],bestMatchIndex:bestMatchIndex}}export{compareTwoStrings,findBestMatch,findBestLCS};
|
||||||
@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1A0GGxpYi91dGlscy5qcwppc1N1Yg5nZXRTaXplEnJlbW92ZUV4dAZsb2caaXNWaWRlb0Zvcm1hdBJqc29uUGFyc2UKZGVidWcGZXh0BnNydAZhc3MGc3NhCHNpemUOdG9GaXhlZARUQgRHQgRNQgRLQgh0ZXh0DmluZGV4T2YCLhJzdWJzdHJpbmcWbGFzdEluZGV4T2YGc3RyDmNvbnNvbGUGdXJsCFJVTEUQdXJsPWh0dHAGLmpzCC5jc3MKLmh0bWwIdGVzdAhqc29uGGpzb25QbGF5RGF0YQ5oZWFkZXJzBHVhDnJlZmVyZXIUdGFza1Jlc3VsdApwYXJzZRRzdGFydHNXaXRoBC8vDGh0dHBzOghodHRwFHVzZXItYWdlbnQIdHJpbRRVc2VyLUFnZW50AiAOUmVmZXJlcgxoZWFkZXIGb2JqAmECPQ+kAwAHAACmAwABqAMAAqoDAAOsAwAErgMABbADAAayAwAADgAGAaABAAAAAQcHIACmAwABqAMBAaoDAgGsAwMBrgMEAbADBQGyAwYBCOgdvgDfvgHgvgLhvgPivgRfBAC+BV8FAL4GXwYAKSmkAwEFAQAfoAEOQwYBpgMBAAECAAAeAbQDAAEAzwTbAAAAqRHpFA7PBNwAAACpEekJDs8E3QAAAKkopAMDAQMOQwYBqAMBAAEDAACkAQG8AwABAM+zpOgDvyjPvAAEvAAEmrwABJq8AASapegjz7wABLwABJq8AASavAAEmpvXQt8AAAC1JAEABOAAAACdKM+8AAS8AASavAAEmqXoH8+8AAS8AASavAAEmpvXQt8AAAC1JAEABOEAAACdKM+8AAS8AASapegbz7wABLwABJqb10LfAAAAtSQBAATiAAAAnSjPvAAEm9dC3wAAALUkAQAE4wAAAJ0opAMHDQMmYl1OU0lOPzVOCCEOQwYBqgMBAAEGAAAtAcgDAAEAz0LlAAAABOYAAAAkAQCypegaz0LnAAAAs89C6AAAAATmAAAAJAEAJAIAKM8opAMYAQMOYgYBrAMBAAEDAAARAdIDAAEAOOoAAABC2QAAAM8kAQAOBi6kAxwCA04OQwYBrgMBAQEDAAJgAtYDAAEA2AMAAAC9AL0BM8fPQuUAAAAE7QAAACQBALKlEek6Ds9C5QAAAATuAAAAJAEAsqUR6SYOz0LlAAAABO8AAAAkAQCypRHpEg7PQuUAAAAE8AAAACQBALKl6AMJKMNC8QAAAM8lAQCkAyAHAyEATgIICAfCAmh0dHAoKD8haHR0cCkuKXsxMix9P1wuKG0zdTh8bXA0fGZsdnxhdml8bWt2fHJtfHdtdnxtcGd8bTRhfG1wMylcPy4qfGh0dHAoKD8haHR0cCkuKXsxMix9XC4obTN1OHxtcDR8Zmx2fGF2aXxta3Z8cm18d212fG1wZ3xtNGF8bXAzKXxodHRwKCg/IWh0dHApLikqP3ZpZGVvXC90b3MqB+YKAAYBrAIAAAgGAAAABAf1////CwAJOgIAAAklAQAAAWgAAXQAAXQAAXAADwwAAAALARgNAAAAAWgAAXQAAXQAAXAACgMMAQ7k////EAgcAAAACwEYDQAAAAFoAAF0AAF0AAFwAAoDDAEH3////wEuAAsCCaYAAAAJkwAAAAmAAAAACW0AAAAJXQAAAAlKAAAACTcAAAAJJAAAAAkRAAAAAW0AATMAAXUAATgABwkAAAABbQABcAABNAAHCQAAAAFmAAFsAAF2AAcJAAAAAWEAAXYAAWkABwkAAAABbQABawABdgAHBgAAAAFyAAFtAAcJAAAAAXcAAW0AAXYABwkAAAABbQABcAABZwAHCQAAAAFtAAE0AAFhAAcJAAAAAW0AAXAAATMADAIBPwAcAgAAAAAAAAD///9/AQAAAAMKBwsBAAABaAABdAABdAABcAAPDAAAAAsDGA0AAAABaAABdAABdAABcAAKAwwDDuT///8QCR0AAAAZCwMYDQAAAAFoAAF0AAF0AAFwAAoDDAMa3v///wEuAAsECaYAAAAJkwAAAAmAAAAACW0AAAAJXQAAAAlKAAAACTcAAAAJJAAAAAkRAAAAAW0AATMAAXUAATgABwkAAAABbQABcAABNAAHCQAAAAFmAAFsAAF2AAcJAAAAAWEAAXYAAWkABwkAAAABbQABawABdgAHBgAAAAFyAAFtAAcJAAAAAXcAAW0AAXYABwkAAAABbQABcAABZwAHCQAAAAFtAAE0AAFhAAcJAAAAAW0AAXAAATMADAQHXQAAAAFoAAF0AAF0AAFwAA0FBQgcAAAACwUYDQAAAAFoAAF0AAF0AAFwAAoDDAUH3////wF2AAFpAAFkAAFlAAFvAAEvAAF0AAFvABwEAAAAAAAAAP///38BAAAAAXMACgwACg5DBgGwAwIGAgQBALEBCLABAAEA5AMAAQDmAwAAANYDAAEA6AMAAgDqAwADAOwDAAQA7gMABQCuAwQAOJgAAABC+AAAANAkAQDLQesAAADMQvkAAAAE+gAAACQBAOgJBPsAAADEncjEQvkAAAAE/AAAACQBAJboAwcoxM+r6AnbxO2W6AMHKAvJwwT9AAAARxHpAw6/zkL+AAAAJAAA57Ol6BDFBP8AAABxBAABAADGnUnDQfYAAAAR6QMOv8IEQv4AAAAkAADns6XoEcUEAQEAAHEEAAEAAMAEnUkLxUwCAQAAxEzrAAAAwgUopAMoFgNJIVMsWAgIHCEICQ0/SU86TlQIISIOQwYBsgMBAQEGAQA3AoYEAAEAiAQAAACyAwYAz3zqL8fPw0eXBEkAAACp6Anbz8NH7Q7qGjjqAAAAQtkAAADDBAUBAACdz8NHnSQBAA5/6NAOKaQDRgcDHD8hDYEX
|
||||||
@ -0,0 +1,200 @@
|
|||||||
|
import { Crypto, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'mtsp';
|
||||||
|
let main = 'http://mt77.pw';
|
||||||
|
let url = '';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
let searchKeys = [];
|
||||||
|
|
||||||
|
let tags = 'JTVCJTIyJUU2JUI1JTkzJUU1JUFGJTg2JUU2JUJGJTgwJUU2JTgzJTg1JTIyJTJDJTIyJUU2JTkwJTlDJUU2JTlGJUE1JUU1JUFFJTk4JTIyJTJDJTIyJUU1JUE1JUIzJUU0JUJCJTg2JTIyJTJDJTIyJUU1JTkwJThFJUU1JTg1JUE1JTIyJTJDJTIyJUU3JUJFJThFJUU0JUI5JUIzJUU1JUI3JUE4JUU4JTgzJUI4JTIyJTJDJTIyJUU1JThGJUEzJUU0JUJBJUE0JUU1JThGJUEzJUU3JTg4JTg2JTIyJTJDJTIyJUU1JTg2JTg1JUU1JUIwJTg0JTIyJTJDJTIyJUU1JUE1JUIzJUU0JUI4JThBJTIyJTJDJTIyJUU3JUJFJThFJUU4JTg1JUJGJTIyJTJDJTIyJUU3JUIyJUJFJUU1JTkzJTgxJTIyJTJDJTIyJUU0JUI4JTlEJUU4JUEyJTlDJTIyJTJDJTIyJUU1JUIwJTkxJUU1JUE1JUIzJTIyJTJDJTIyJUU1JTg4JUI2JUU2JTlDJThEJTIyJTJDJTIyJUU3JUJFJUE0UCUyMiUyQyUyMiVFNyU5OSVCRCVFOCU5OSU4RSUyMiUyQyUyMiVFNiU4MyU4NSVFOCVCNiVBMyVFOCVBRiVCMSVFNiU4MyU5MSUyMiUyQyUyMiVFOSU4MSU5MyVFNSU4NSVCNyUyMiUyQyUyMiVFNSVBNSVCMyVFNyVBNSU5RSUyMiUyQyUyMiVFOSVCQSVCQiVFOCVCMSU4NiVFNCVCQyVBMCVFNSVBQSU5MiUyMiUyQyUyMiVFOSVBMiU5QyVFNSVCMCU4NCUyMiUyQyUyMiVFNSVBRCVBNiVFNyU5NCU5RiUyMiUyQyUyMiVFNCVCQSVCQSVFNSVBNiVCQiUyMiUyQyUyMiVFNyVCNCVBMCVFNCVCQSVCQSUyMiUyQyUyMiVFNiVCNSVCNCVFNSVBRSVBNCUyMiUyQyUyMiVFOSU4NSU5MiVFNSVCQSU5NyUyMiUyQyUyMiVFNyU4NiU5RiVFNSVBNSVCMyUyMiUyQyUyMiVFOCU4NyVBQSVFNiU4QiU4RCUyMiUyQyUyMiVFNSVCMCU5MSVFNSVBNiU4NyUyMiUyQyUyMiVFNSU4OSVBNyVFNiU4MyU4NSUyMiUyQyUyMiVFNCVCOSVCMyVFNCVCQSVBNCUyMiUyQyUyMiVFNiU4OCVCNyVFNSVBNCU5NiUyMiUyQyUyMlNXQUclMjIlMkMlMjIlRTUlQTUlQjMlRTQlQjglQkIlRTYlOTIlQUQlMjIlMkMlMjIlRTQlQjglQUQlRTYlOTYlODclRTUlQUQlOTclRTUlQjklOTUlMjIlMkMlMjIlRTQlQjklQjElRTQlQkMlQTYlMjIlMkMlMjIlRTglQjAlODMlRTYlOTUlOTklMjIlMkMlMjIlRTYlOEQlODYlRTclQkIlOTElMjIlMkMlMjIlRTYlQTglQTElRTclODklQjklMjIlMkMlMjIlRTclOUIlQjQlRTYlOTIlQUQlMjIlMkMlMjI5MSVFNSU4OCVCNiVFNyU4OSU4NyVFNSU4RSU4MiUyMiUyQyUyMiVFOSU4NyU4RSVFNiU4OCU5OCUyMiUyQyUyMiVFNSU4MSVCNyVFNiU4QiU4RCUyMiUyQyUyMiVFNSU4QiVCRSVFNiU5MCVBRCUyMiUyQyUyMiVFNiU5MSU4NCVFNSU4MyU4RiVFNSVBNCVCNCUyMiUyQyUyMiVFNSU4NyVCQSVFOCVCRCVBOCUyMiUyQyUyMiVFNyVCRCU5MSVFNyVCQSVBMiUyMiUyQyUyMiVFNSVCNyVBOCVFNiVBMCVCOSUyMiUyQyUyMiVFNiVBQyVBNyVFNyVCRSU4RSUyMiUyQyUyMmNvc3BsYXklMjIlMkMlMjIlRTUlQkMlQkElRTUlQTUlQjglMjIlMkMlMjIlRTUlQTQlQTklRTclQkUlOEUlRTQlQkMlQTAlRTUlQUElOTIlMjIlMkMlMjIlRTYlOEMlODklRTYlOTElQTklMjIlMkMlMjIzRCVFNSU4QSVBOCVFNiVCQyVBQiUyMiUyQyUyMiVFOCU5MCU5RCVFOCU4RSU4OSUyMiUyQyUyMiVFNSVBNyU5MCVFNSVBNiVCOSVFOCU4QSVCMSUyMiUyQyUyMiVFNSU4QSU5RSVFNSU4NSVBQyVFNSVBRSVBNCUyMiUyQyUyMiVFOCVCRCVBNiVFOSU5QyU4NyUyMiUyQyUyMiVFNSU4MSVCNyVFNiU4MyU4NSUyMiUyQyUyMiVFNiU5RSU5QyVFNSU4NiVCQiVFNCVCQyVBMCVFNSVBQSU5MiUyMiUyQyUyMiVFOCU4MiU5QiVFNCVCQSVBNCUyMiUyQyUyMlNNJTIyJTJDJTIyJUU5JTg3JThEJUU1JThGJUEzJTIyJTJDJTIyJUU2JUIzJUIzJUU4JUExJUEzJTIyJTJDJTIyU1BBJTIyJTJDJTIyJUU2JThFJUEyJUU4JThBJUIxJTIyJTJDJTIyJUU4JUI2JUIzJUU0JUJBJUE0JTIyJTJDJTIyJUU3JUE5JUJBJUU1JUE3JTkwJTIyJTJDJTIyJUU4JTlDJTlDJUU2JUExJTgzJUU0JUJDJUEwJUU1JUFBJTkyJTIyJTJDJTIyJUU2JTk1JTk5JUU1JUI4JTg4JTIyJTJDJTIyJUU2JUJEJUFFJUU1JTkwJUI5JTIyJTJDJTIyJUU5JTk3JUE4JUU0JUJBJThCJUU0JUJCJUI2JTIyJTJDJTIyJUU1JUE1JUIzJUU1JTkwJThDJTIyJTJDJTIyJUU2JThBJTgwJUU1JUI4JTg4JTIyJTJDJTIyJUU3JUIyJUJFJUU0JUI4JTlDJUU0JUJDJUEwJUU1JUFBJTkyJTIyJTJDJTIyJUU2JTk1JTk5JUU1JUFFJUE0JTIyJTJDJTIyJUU4JUJGJUI3JUU1JUE1JUI4JTIyJTJDJTIyJUU2JThEJUEyJUU1JUE2JUJCJTIyJTJDJTIyS1RWJTIyJTJDJTIyJUU2JTk4JTlGJUU3JUE5JUJBJUU0JUJDJUEwJUU1JUFBJTkyJTIyJTJDJTIyJUU2JThBJUE0JUU1JUEzJUFCJTIyJTJDJTIyJUU2JUFGJThEJUU1JUE1JUIzJTIyJTVE';
|
||||||
|
const UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36';
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
const res = await req(reqUrl, {
|
||||||
|
headers: {
|
||||||
|
'User-Agent': agentSp || UA,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
// 获取url
|
||||||
|
let html = await request(main);
|
||||||
|
url = html.match(/location\.href="(.*)"/)[1].replace('https', 'http');
|
||||||
|
tags = JSON.parse(decodeURIComponent(base64Decode(tags)));
|
||||||
|
searchKeys = cfg.tags || [];
|
||||||
|
let mainJs = await request(url + '/main.js');
|
||||||
|
url = mainJs.match(/apiurl = '(.*)'/)[1].replace('https', 'http');
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [];
|
||||||
|
let filterObj = {};
|
||||||
|
let tagIdx = 1;
|
||||||
|
_.each(_.chunk(tags, 24), (array) => {
|
||||||
|
const subs = _.chunk(array, 8);
|
||||||
|
let tid = '';
|
||||||
|
let init = '';
|
||||||
|
for (let i = 0; i < subs.length; i++) {
|
||||||
|
let tt = {
|
||||||
|
key: 'tag',
|
||||||
|
name: '',
|
||||||
|
init: '',
|
||||||
|
value: _.map(subs[i], (e) => {
|
||||||
|
return { n: e, v: e };
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
if (i == 0) {
|
||||||
|
init = tt.value[0].v;
|
||||||
|
tt['init'] = init;
|
||||||
|
tid = tt.value[0].v;
|
||||||
|
filterObj[tid] = [tt];
|
||||||
|
} else {
|
||||||
|
tt['init'] = init;
|
||||||
|
filterObj[tid].push(tt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
classes.push({
|
||||||
|
type_id: tid,
|
||||||
|
type_name: '综合' + tagIdx,
|
||||||
|
land: 1,
|
||||||
|
});
|
||||||
|
tagIdx++;
|
||||||
|
});
|
||||||
|
|
||||||
|
_.each(searchKeys, (s) => {
|
||||||
|
classes.push({
|
||||||
|
type_id: 'sc_' + s,
|
||||||
|
type_name: s,
|
||||||
|
land: 1,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
return '{}';
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let link = url;
|
||||||
|
if (tid.startsWith('sc_')) {
|
||||||
|
link = link + '/search?q=' + encodeURIComponent(tid.substr(3)) + '&page=' + pg + '&size=16';
|
||||||
|
} else {
|
||||||
|
link = link + '/vodList?&tag=' + (extend.tag || tid) + '&page=' + pg + '&size=16';
|
||||||
|
}
|
||||||
|
const data = decrypt(JSON.parse(await request(link)).data);
|
||||||
|
let videos = [];
|
||||||
|
for (const vod of data.movies) {
|
||||||
|
if (!vod.id) continue;
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.id,
|
||||||
|
vod_name: vod.name,
|
||||||
|
vod_pic: vod.thumb,
|
||||||
|
vod_remarks: vod.views,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(data.page),
|
||||||
|
pagecount: _.ceil(data.totals / 16),
|
||||||
|
limit: 16,
|
||||||
|
total: data.totals,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
const link = url + '/vodDetail?id=' + id;
|
||||||
|
const data = decrypt(JSON.parse(await request(link)).data).info;
|
||||||
|
let desc = data.name + '\n';
|
||||||
|
if (data.views) {
|
||||||
|
desc += '观看次数:' + data.views + '\n';
|
||||||
|
}
|
||||||
|
let vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: data.name,
|
||||||
|
vod_pic: data.thumb,
|
||||||
|
type_name: (data.tag || []).join(','),
|
||||||
|
vod_year: data.date,
|
||||||
|
vod_content: desc,
|
||||||
|
};
|
||||||
|
vod.vod_play_from = 'm3u8';
|
||||||
|
let urls = [];
|
||||||
|
if (data.m3u8) {
|
||||||
|
urls.push('主力$' + data.m3u8);
|
||||||
|
}
|
||||||
|
if (data.m3u8bak) {
|
||||||
|
urls.push('备用$' + data.m3u8bak);
|
||||||
|
}
|
||||||
|
vod.vod_play_url = urls.join('#');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function proxy(segments, headers) {}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let page = pg || 1;
|
||||||
|
if (page == 0) page = 1;
|
||||||
|
let videos = [];
|
||||||
|
let link = url + '/search?q=' + encodeURIComponent(wd) + '&page=' + page + '&size=16';
|
||||||
|
const data = decrypt(JSON.parse(await request(link)).data);
|
||||||
|
for (const vod of data.movies) {
|
||||||
|
if (!vod.id) continue;
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.id,
|
||||||
|
vod_name: vod.name,
|
||||||
|
vod_pic: vod.thumb,
|
||||||
|
vod_remarks: vod.views,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(data.page),
|
||||||
|
pagecount: _.ceil(data.totals / 16),
|
||||||
|
land: 1,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function decrypt(content) {
|
||||||
|
return JSON.parse(aesX('AES/CBC/PKCS7', false, content, true, 'F31F2A75FBF94099', '12345BCA901ER456', false));
|
||||||
|
}
|
||||||
|
|
||||||
|
function base64Encode(text) {
|
||||||
|
return Crypto.enc.Base64.stringify(Crypto.enc.Utf8.parse(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
function base64Decode(text) {
|
||||||
|
return Crypto.enc.Utf8.stringify(Crypto.enc.Base64.parse(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@ -0,0 +1,203 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'高清MP4吧',
|
||||||
|
host:'https://www.97tvs.com',
|
||||||
|
homeUrl: '/',
|
||||||
|
url: '/fyclass/page/fypage?',
|
||||||
|
filter_url:'{{fl.class}}',
|
||||||
|
filter:{
|
||||||
|
},
|
||||||
|
searchUrl: '/?s=**',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent': 'PC_UA',
|
||||||
|
'Cookie':'',
|
||||||
|
'Referer': 'http://www.97tvs.com/'
|
||||||
|
},
|
||||||
|
图片来源:'@Headers={"Accept":"*/*","Referer":"https://www.97tvs.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"}',
|
||||||
|
timeout:5000,
|
||||||
|
class_name: "动作片&科幻片&爱情片&喜剧片&剧情片&惊悚片&战争片&灾难片&罪案片&动画片&综艺&电视剧",
|
||||||
|
class_url: "action&science&love&comedy&story&thriller&war&disaster&crime&cartoon&variety&sitcoms",
|
||||||
|
play_parse:true,
|
||||||
|
play_json:[{
|
||||||
|
re:'*',
|
||||||
|
json:{
|
||||||
|
parse:0,
|
||||||
|
jx:0
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
推荐:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
let d = [];
|
||||||
|
let html = request(input);
|
||||||
|
let list = pdfa(html, 'div.mainleft ul#post_container li');
|
||||||
|
list.forEach(it => {
|
||||||
|
d.push({
|
||||||
|
title: pdfh(it, 'div.thumbnail img&&alt'),
|
||||||
|
desc: pdfh(it, 'div.info&&span.info_date&&Text') + ' / ' + pdfh(it, 'div.info&&span.info_category&&Text'),
|
||||||
|
pic_url: pd(it, 'div.thumbnail img&&src', HOST),
|
||||||
|
url: pd(it, 'div.thumbnail&&a&&href',HOST)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
setResult(d);
|
||||||
|
`,
|
||||||
|
一级:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
let d = [];
|
||||||
|
let html = request(input);
|
||||||
|
let list = pdfa(html, 'div.mainleft ul#post_container li');
|
||||||
|
list.forEach(it => {
|
||||||
|
d.push({
|
||||||
|
title: pdfh(it, 'div.thumbnail img&&alt'),
|
||||||
|
desc: pdfh(it, 'div.info&&span.info_date&&Text') + ' / ' + pdfh(it, 'div.info&&span.info_category&&Text'),
|
||||||
|
pic_url: pd(it, 'div.thumbnail img&&src', HOST),
|
||||||
|
url: pd(it, 'div.thumbnail&&a&&href',HOST)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
setResult(d);
|
||||||
|
`,
|
||||||
|
二级:{
|
||||||
|
title:"div.article_container h1&&Text",
|
||||||
|
img:"div#post_content img&&src",
|
||||||
|
desc:"div#post_content&&Text",
|
||||||
|
content:"div#post_content&&Text",
|
||||||
|
tabs:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
TABS=[]
|
||||||
|
let d = pdfa(html, 'div#post_content p');
|
||||||
|
let tabsa = [];
|
||||||
|
let tabsq = [];
|
||||||
|
let tabsm = false;
|
||||||
|
let tabse = false;
|
||||||
|
let tabm3u8 = [];
|
||||||
|
d.forEach(function(it) {
|
||||||
|
let burl = pdfh(it, 'a&&href');
|
||||||
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
|
tabsa.push("阿里雲盤");
|
||||||
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
|
tabsq.push("夸克網盤");
|
||||||
|
}else if (burl.startsWith("magnet")){
|
||||||
|
tabsm = true;
|
||||||
|
}else if (burl.startsWith("ed2k")){
|
||||||
|
tabse = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (tabsm === true){
|
||||||
|
TABS.push("磁力");
|
||||||
|
}
|
||||||
|
if (tabse === true){
|
||||||
|
TABS.push("電驢");
|
||||||
|
}
|
||||||
|
let tmpIndex;
|
||||||
|
tmpIndex=1;
|
||||||
|
tabsa.forEach(function(it){
|
||||||
|
TABS.push(it + tmpIndex);
|
||||||
|
tmpIndex = tmpIndex + 1;
|
||||||
|
});
|
||||||
|
tmpIndex=1;
|
||||||
|
tabsq.forEach(function(it){
|
||||||
|
TABS.push(it + tmpIndex);
|
||||||
|
tmpIndex = tmpIndex + 1;
|
||||||
|
});
|
||||||
|
tabm3u8.forEach(function(it){
|
||||||
|
TABS.push(it);
|
||||||
|
});
|
||||||
|
log('97tvs TABS >>>>>>>>>>>>>>>>>>' + TABS);
|
||||||
|
`,
|
||||||
|
lists:`js:
|
||||||
|
log(TABS);
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
LISTS = [];
|
||||||
|
let d = pdfa(html, 'div#post_content p');
|
||||||
|
let lista = [];
|
||||||
|
let listq = [];
|
||||||
|
let listm = [];
|
||||||
|
let liste = [];
|
||||||
|
let listm3u8 = {};
|
||||||
|
d.forEach(function(it){
|
||||||
|
let burl = pdfh(it, 'a&&href');
|
||||||
|
let title = pdfh(it, 'a&&Text');
|
||||||
|
log('97tvs title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
|
||||||
|
log('97tvs burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
|
||||||
|
let loopresult = title + '$' + burl;
|
||||||
|
if (burl.startsWith("https://www.aliyundrive.com/s/")){
|
||||||
|
if (true){
|
||||||
|
if (TABS.length==1){
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&confirm=0&url=" + encodeURIComponent(burl);
|
||||||
|
}else{
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&url=" + encodeURIComponent(burl);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
burl = "push://" + burl;
|
||||||
|
}
|
||||||
|
loopresult = title + '$' + burl;
|
||||||
|
lista.push(loopresult);
|
||||||
|
}else if (burl.startsWith("https://pan.quark.cn/s/")){
|
||||||
|
if (true){
|
||||||
|
if (TABS.length==1){
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&confirm=0&url=" + encodeURIComponent(burl);
|
||||||
|
}else{
|
||||||
|
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&url=" + encodeURIComponent(burl);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
burl = "push://" + burl;
|
||||||
|
}
|
||||||
|
loopresult = title + '$' + burl;
|
||||||
|
listq.push(loopresult);
|
||||||
|
}else if (burl.startsWith("magnet")){
|
||||||
|
listm.push(loopresult);
|
||||||
|
}else if (burl.startsWith("ed2k")){
|
||||||
|
liste.push(loopresult);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (listm.length>0){
|
||||||
|
LISTS.push(listm);
|
||||||
|
}
|
||||||
|
if (liste.length>0){
|
||||||
|
LISTS.push(liste);
|
||||||
|
}
|
||||||
|
lista.forEach(function(it){
|
||||||
|
LISTS.push([it]);
|
||||||
|
});
|
||||||
|
listq.forEach(function(it){
|
||||||
|
LISTS.push([it]);
|
||||||
|
});
|
||||||
|
for ( const key in listm3u8 ){
|
||||||
|
if (listm3u8.hasOwnProperty(key)){
|
||||||
|
LISTS.push(listm3u8[key]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
`,
|
||||||
|
|
||||||
|
},
|
||||||
|
搜索:`js:
|
||||||
|
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
|
||||||
|
let search_html = request(input)
|
||||||
|
//log("97tvs search result>>>>>>>>>>>>>>>" + search_html);
|
||||||
|
let d=[];
|
||||||
|
let dlist = pdfa(search_html, 'div.mainleft ul#post_container li');
|
||||||
|
dlist.forEach(function(it){
|
||||||
|
let title = pdfh(it, 'div.thumbnail img&&alt').replace( /(<([^>]+)>)/ig, '');
|
||||||
|
if (searchObj.quick === true){
|
||||||
|
if (false && title.includes(KEY)){
|
||||||
|
title = KEY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let img = pd(it, 'div.thumbnail img&&src', HOST);
|
||||||
|
let content = pdfh(it, 'div.article div.entry_post&&Text');
|
||||||
|
let desc = pdfh(it, 'div.info&&span.info_date&&Text');
|
||||||
|
let url = pd(it, 'div.thumbnail&&a&&href', HOST);
|
||||||
|
d.push({
|
||||||
|
title:title,
|
||||||
|
img:img,
|
||||||
|
content:content,
|
||||||
|
desc:desc,
|
||||||
|
url:url
|
||||||
|
});
|
||||||
|
});
|
||||||
|
setResult(d);
|
||||||
|
`,
|
||||||
|
}
|
||||||
@ -0,0 +1,136 @@
|
|||||||
|
var lists = `js:
|
||||||
|
log(TABS);
|
||||||
|
let d = [];
|
||||||
|
pdfh = jsp.pdfh;
|
||||||
|
pdfa = jsp.pdfa;
|
||||||
|
if (typeof play_url === "undefined") {
|
||||||
|
var play_url = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLists(html) {
|
||||||
|
let src = pdfh(html, ".wp-playlist-script&&Html");
|
||||||
|
src = JSON.parse(src).tracks;
|
||||||
|
let list1 = [];
|
||||||
|
let list2 = [];
|
||||||
|
let url1 = "";
|
||||||
|
let url2 = "";
|
||||||
|
src.forEach(function(it) {
|
||||||
|
let src0 = it.src0;
|
||||||
|
let src1 = it.src1;
|
||||||
|
let title = it.caption;
|
||||||
|
url1 = "https://v.ddys.pro" + src0;
|
||||||
|
url2 = "https://ddys.pro/getvddr2/video?id=" + src1 + "&type=mix";
|
||||||
|
let zm = "https://ddys.pro/subddr/" + it.subsrc;
|
||||||
|
list1.push({
|
||||||
|
title: title,
|
||||||
|
url: url1,
|
||||||
|
desc: zm
|
||||||
|
});
|
||||||
|
list2.push({
|
||||||
|
title: title,
|
||||||
|
url: url2,
|
||||||
|
desc: zm
|
||||||
|
})
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
list1: list1,
|
||||||
|
list2: list2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var data = getLists(html);
|
||||||
|
var list1 = data.list1;
|
||||||
|
var list2 = data.list2;
|
||||||
|
let nums = pdfa(html, "body&&.post-page-numbers");
|
||||||
|
nums.forEach(function(it) {
|
||||||
|
let num = pdfh(it, "body&&Text");
|
||||||
|
log(num);
|
||||||
|
let nurl = input + num + "/";
|
||||||
|
if (num == 1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log(nurl);
|
||||||
|
let html = request(nurl);
|
||||||
|
let data = getLists(html);
|
||||||
|
list1 = list1.concat(data.list1);
|
||||||
|
list2 = list2.concat(data.list2)
|
||||||
|
});
|
||||||
|
list1 = list1.map(function(item) {
|
||||||
|
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
|
||||||
|
});
|
||||||
|
list2 = list2.map(function(item) {
|
||||||
|
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
|
||||||
|
});
|
||||||
|
LISTS = [list1, list2];
|
||||||
|
`;
|
||||||
|
|
||||||
|
var lazy = `js:
|
||||||
|
let purl = input.split("|")[0];
|
||||||
|
let referer = input.split("|")[1];
|
||||||
|
let zm = input.split("|")[2];
|
||||||
|
print("purl:" + purl);
|
||||||
|
print("referer:" + referer);
|
||||||
|
print("zm:" + zm);
|
||||||
|
if (/getvddr/.test(purl)) {
|
||||||
|
let html = request(purl, {
|
||||||
|
headers: {
|
||||||
|
Referer: HOST,
|
||||||
|
"User-Agent": MOBILE_UA
|
||||||
|
}
|
||||||
|
});
|
||||||
|
print(html);
|
||||||
|
try {
|
||||||
|
input = {jx:0,url:JSON.parse(html).url,parse:0} || {}
|
||||||
|
} catch (e) {
|
||||||
|
input = purl
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
input = {
|
||||||
|
jx: 0,
|
||||||
|
url: purl,
|
||||||
|
parse: 0,
|
||||||
|
header: JSON.stringify({
|
||||||
|
'user-agent': MOBILE_UA,
|
||||||
|
'referer': HOST
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
// 网址发布页 https://ddys.site
|
||||||
|
// 网址发布页 https://ddys.wiki
|
||||||
|
var rule={
|
||||||
|
title:'ddys',
|
||||||
|
// host:'https://ddys.wiki',
|
||||||
|
// hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":MOBILE_UA}});HOST = jsp.pdfh(html,"a:eq(1)&&href")',
|
||||||
|
host:'https://ddys.pro',
|
||||||
|
// host:'https://ddys.mov',
|
||||||
|
url:'/fyclass/page/fypage/',
|
||||||
|
searchUrl:'/?s=**&post_type=post',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA',
|
||||||
|
},
|
||||||
|
class_parse:'#primary-menu li.menu-item;a&&Text;a&&href;\.pro/(.*)',
|
||||||
|
cate_exclude:'站长|^其他$|关于|^电影$|^剧集$|^类型$',
|
||||||
|
play_parse:true,
|
||||||
|
// lazy:'js:let purl=input.split("|")[0];let referer=input.split("|")[1];let zm=input.split("|")[2];print("purl:"+purl);print("referer:"+referer);print("zm:"+zm);let myua="okhttp/3.15";if(/ddrkey/.test(purl)){let ret=request(purl,{Referer:referer,withHeaders:true,"User-Agent":myua});log(ret);input=purl}else{let html=request(purl,{headers:{Referer:referer,"User-Agent":myua}});print(html);try{input=JSON.parse(html).url||{}}catch(e){input=purl}}',
|
||||||
|
lazy:lazy,
|
||||||
|
limit:6,
|
||||||
|
推荐:'*',
|
||||||
|
double:true, // 推荐内容是否双层定位
|
||||||
|
一级:'.post-box-list&&article;a:eq(-1)&&Text;.post-box-image&&style;a:eq(0)&&Text;a:eq(-1)&&href',
|
||||||
|
二级:{
|
||||||
|
"title":".post-title&&Text;.cat-links&&Text",
|
||||||
|
"img":".doulist-item&&img&&data-cfsrc",
|
||||||
|
"desc":".published&&Text",
|
||||||
|
"content":".abstract&&Text",
|
||||||
|
// "tabs":"js:TABS=['国内','海外(貌似不能播放)']",
|
||||||
|
"tabs":"js:TABS=['国内(改Exo播放器)','国内2']",
|
||||||
|
// "lists":"js:log(TABS);let d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url===\"undefined\"){var play_url=\"\"}function getLists(html){let src=pdfh(html,\".wp-playlist-script&&Html\");src=JSON.parse(src).tracks;let list1=[];let list2=[];src.forEach(function(it){let src0=it.src0;let src1=it.src1;let src2=it.src2;let title=it.caption;let url1=\"https://ddys.tv/getvddr/video?id=\"+src1+\"&dim=1080P+&type=mix\";let url2=\"https://w.ddys.tv\"+src0+\"?ddrkey=\"+src2;let zm=\"https://ddys.tv/subddr/\"+it.subsrc;list1.push({title:title,url:url1,desc:zm});list2.push({title:title,url:url2,desc:zm})});return{list1:list1,list2:list2}}var data=getLists(html);var list1=data.list1;var list2=data.list2;let nums=pdfa(html,\"body&&.post-page-numbers\");nums.forEach(function(it){let num=pdfh(it,\"body&&Text\");log(num);let nurl=input+num+\"/\";if(num==1){return}log(nurl);let html=request(nurl);let data=getLists(html);list1=list1.concat(data.list1);list2=list2.concat(data.list2)});list1=list1.map(function(item){return item.title+\"$\"+play_url+urlencode(item.url+\"|\"+input+\"|\"+item.desc)});list2=list2.map(function(item){return item.title+\"$\"+play_url+urlencode(item.url+\"|\"+input+\"|\"+item.desc)});LISTS=[list1,list2];",
|
||||||
|
// lists:'js:log(TABS);let d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url==="undefined"){var play_url=""}function getLists(html){let src=pdfh(html,".wp-playlist-script&&Html");src=JSON.parse(src).tracks;let list1=[];let list2=[];src.forEach(function(it){let src0=it.src0;let src1=it.src1;let src2=it.src2;let title=it.caption;let url1="https://ddys.pro/getvddr/video?id="+src1+"&dim=1080P+&type=mix";let url2="https://w.ddys.pro"+src0+"?ddrkey="+src2;let zm="https://ddys.pro/subddr/"+it.subsrc;list1.push({title:title,url:url1,desc:zm});list2.push({title:title,url:url2,desc:zm})});return{list1:list1,list2:list2}}var data=getLists(html);var list1=data.list1;var list2=data.list2;let nums=pdfa(html,"body&&.post-page-numbers");nums.forEach(function(it){let num=pdfh(it,"body&&Text");log(num);let nurl=input+num+"/";if(num==1){return}log(nurl);let html=request(nurl);let data=getLists(html);list1=list1.concat(data.list1);list2=list2.concat(data.list2)});list1=list1.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});list2=list2.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});LISTS=[list1,list2];',
|
||||||
|
"lists":lists
|
||||||
|
},
|
||||||
|
搜索:'#main&&article;.post-title&&Text;;.published&&Text;a&&href'
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@ -1,31 +0,0 @@
|
|||||||
var rule = {
|
|
||||||
title: '迷你库[V2]', // csp_AppYsV2
|
|
||||||
host: 'http://www.miniku.cc',
|
|
||||||
homeUrl:'/xgapp.php/v1/index_video',
|
|
||||||
// url: '/xgapp.php/v1/video?tid=fyclass&class=&area=&lang=&year=&limit=20&pg=fypage',
|
|
||||||
url: '/xgapp.php/v1/video?tid=fyclassfyfilter&limit=20&pg=fypage',
|
|
||||||
filter_url:'&class={{fl.class}}&area={{fl.area}}&lang={{fl.lang}}&year={{fl.year}}',
|
|
||||||
filter: {
|
|
||||||
"1":[{"key":"class","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":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","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":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]}],
|
|
||||||
"2":[{"key":"class","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":"其他"}]},{"key":"area","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":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]}],
|
|
||||||
"3":[{"key":"class","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":"area","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":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]}],
|
|
||||||
"4":[{"key":"class","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":"area","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":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"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"}]}]
|
|
||||||
},
|
|
||||||
detailUrl:'/xgapp.php/v1/video_detail?id=fyid',
|
|
||||||
searchUrl: '/xgapp.php/v1/search?text=**&pg=fypage',
|
|
||||||
searchable: 2,
|
|
||||||
quickSearch: 0,
|
|
||||||
filterable:1,//是否启用分类筛选,
|
|
||||||
headers:{'User-Agent':'Dart/2.14 (dart:io)'},
|
|
||||||
timeout:5000,
|
|
||||||
class_name:'剧集&电影&综艺&动漫&直播', // 分类筛选 /xgapp.php/v1/nav
|
|
||||||
class_url:'2&1&3&4&22',
|
|
||||||
play_parse:true,
|
|
||||||
pagecount:{"22":1},
|
|
||||||
lazy:'js:input=/.m3u8|.mp4/.test(input)?input:input=/caihong|luanzi|zb-/.test(input)?"http://42.157.128.109:2323/CH/app/app.php?url="+input:input=/tucheng/.test(input)?JSON.parse(request("https://sssvipapi.tucheng5566.cc:22222/api/?key=qbZ2n0Kwbrvdtqsw1s&url="+input)).url:input=/^\\d+$/.test(input)?"https://rdxnnnnnnnn.json123456789.com:2222/huya.php?id="+input:JSON.parse(request("https://vip.mosangkeji.com/api/?key=PLvqEH5S4OsBrVdzv6&url="+input)).url',
|
|
||||||
limit:6,
|
|
||||||
推荐:'json:data[0].vlist;*;*;*;*',
|
|
||||||
一级:'json:data;vod_name;vod_pic;vod_remarks;vod_id',
|
|
||||||
二级:'js:try{let html=request(input);print(html);html=JSON.parse(html);let node=html.data.vod_info;VOD={vod_id:node["vod_id"],vod_name:node["vod_name"],vod_pic:node["vod_pic"],type_name:node["vod_class"],vod_year:node["vod_year"],vod_area:node["vod_area"],vod_remarks:node["vod_remarks"],vod_actor:node["vod_actor"],vod_director:node["vod_director"],vod_content:node["vod_content"].strip()};let episodes=node.vod_url_with_player;let playMap={};if(typeof play_url==="undefined"){var play_url=""}episodes.forEach(function(ep){let source=ep["name"];if(!playMap.hasOwnProperty(source)){playMap[source]=[]}playMap[source].append(ep["url"])});let playFrom=[];let playList=[];Object.keys(playMap).forEach(function(key){playFrom.append(key);playList.append(playMap[key])});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}catch(e){log("获取二级详情页发生错误:"+e.message)}',
|
|
||||||
搜索:'*',
|
|
||||||
}
|
|
||||||
Loading…
Reference in new issue