mirror of https://github.com/qist/tvbox.git
parent
a70366fafa
commit
d3b8c7fe8f
@ -0,0 +1,22 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'310直播',
|
||||||
|
host:'http://www.310.tv',
|
||||||
|
url:'/?s=0&t=1&a=fyclass&g=fypage',
|
||||||
|
searchUrl:'',
|
||||||
|
searchable:0,
|
||||||
|
quickSearch:0,
|
||||||
|
class_name:'热门&足球&篮球',
|
||||||
|
class_url:'0&1&2',
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
play_parse:false,
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
double:false,
|
||||||
|
推荐:'*',
|
||||||
|
一级:'.list_content a;.jiabifeng&&p:lt(5)&&Text;.feleimg img&&src;a&&t-nzf-o;a&&href',
|
||||||
|
二级:'*',
|
||||||
|
搜索:'',
|
||||||
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'88看球',
|
||||||
|
// host:'http://www.88kanqiu.cc',
|
||||||
|
host:'http://www.88kanqiu.win',
|
||||||
|
url:'/match/fyclass/live',
|
||||||
|
searchUrl:'',
|
||||||
|
searchable:0,
|
||||||
|
quickSearch:0,
|
||||||
|
class_parse:'.nav-pills li;a&&Text;a&&href;/match/(\\d+)/live',
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'PC_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
play_parse:true,
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
double:false,
|
||||||
|
推荐:'*',
|
||||||
|
一级:'.list-group .group-game-item;.d-none&&Text;img&&src;.btn&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
"title":".game-info-container&&Text;.customer-navbar-nav li&&Text",
|
||||||
|
"img":"img&&src",
|
||||||
|
"desc":";;;div.team-name:eq(0)&&Text;div.team-name:eq(1)&&Text",
|
||||||
|
"content":"div.game-time&&Text",
|
||||||
|
"tabs":"js:TABS=['实时直播']",
|
||||||
|
"lists":"js:LISTS=[];input=input+'-url';let html=request(input);let data=JSON.parse(html);TABS.forEach(function(tab){let m3u=data.links;let d=m3u.map(function(it){return it.name+'$'+it.url});LISTS.push(d)});"
|
||||||
|
},
|
||||||
|
搜索:'',
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
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,306 @@
|
|||||||
|
{
|
||||||
|
"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://nmddd.com",
|
||||||
|
"homeUrl": "https://m.xiangdao.me/",
|
||||||
|
"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://m.xiangdao.me/vod-list-id-{cateId}-pg-{catePg}-order--by-{by}-class-0-year-{year}-letter--area-{area}-lang-.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://m.xiangdao.me/{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://m.xiangdao.me/{playUrl}",
|
||||||
|
"playUa": "",
|
||||||
|
"searchUrl": "https://m.xiangdao.me/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":"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"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"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":"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"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"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":"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"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"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":"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"}
|
||||||
|
]},
|
||||||
|
{
|
||||||
|
"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"}
|
||||||
|
]}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'兔小贝',
|
||||||
|
host:'https://www.tuxiaobei.com',
|
||||||
|
homeUrl:'',
|
||||||
|
url:'/list/mip-data?typeId=fyclass&page=fypage&callback=',
|
||||||
|
detailUrl:'/play/fyid',
|
||||||
|
searchUrl:'/search/index?key=**',
|
||||||
|
searchable:2,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
class_url:'2&3&4&25',
|
||||||
|
class_name:'儿歌&故事&国学&启蒙',
|
||||||
|
//class_name:'#page-viewport&&ul&&li;.text&&Text;a&&href;/(.*)',
|
||||||
|
cate_exclude:'应用',
|
||||||
|
推荐:'.pic-list.list-box;.items;.text&&Text;mip-img&&src;.all&&Text;a&&href',
|
||||||
|
double:true,
|
||||||
|
limit:5,
|
||||||
|
play_parse:true,
|
||||||
|
lazy:'js:fetch_params.headers["user-agent"] = IOS_UA;let html=fetch(input,fetch_params);let src = jsp.pdfh(html,"body&&#videoWrap&&video-src");input=src;',
|
||||||
|
// 一级:'json:data.items;name;image;collect_num;category_id+video_id',
|
||||||
|
一级:'json:data.items;name;image;duration_string;video_id',
|
||||||
|
二级:'*',
|
||||||
|
搜索:'.list-con&&.items;.text&&Text;mip-img&&src;.time&&Text;a&&href',
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
var rule = {
|
||||||
|
title:'有声小说吧',
|
||||||
|
编码:'gb18030',
|
||||||
|
host:'http://m.ysxs8.vip',
|
||||||
|
url:'/downlist/fyclass_fypage.html',
|
||||||
|
searchUrl:'/search.asp?page=fypage&searchword=**&searchtype=-1',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
// homeUrl:'/fenlei/',
|
||||||
|
// class_parse: '.pd-class:eq(0) dd;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
class_name:'网络玄幻&恐怖悬疑&传统武侠&都市言情&官场刑侦&历史军事&探险盗墓&职场商战&明朝那些事儿&评书下载&相声戏曲&人物传记&广播剧&百家讲坛&外语读物&有声文学&儿童读物&管理营销',
|
||||||
|
class_url:'r52&r17&r12&r13&r14&r15&r45&r81&r36&r3&r7&r16&r18&r32&r35&r41&r4&r6',
|
||||||
|
play_parse:true,
|
||||||
|
lazy:'',
|
||||||
|
limit:6,
|
||||||
|
// double:true,
|
||||||
|
推荐:'.list-ul .list-li;.list-name&&Text;*;.module-slide-author&&Text;*',
|
||||||
|
一级:'.book-ol&&li;h4&&Text;img&&data-original;.book-meta&&Text;a&&href',
|
||||||
|
二级:{
|
||||||
|
// title:'h2&&Text;.book-cell .book-rand-a:eq(2)&&Text',
|
||||||
|
title:'h1&&Text;.book-cell .book-rand-a:eq(0)&&a&&Text',
|
||||||
|
img:'.book img&&src',
|
||||||
|
// desc:';;;;.book-des p&&Text',
|
||||||
|
desc:';;;.book-rand-a:eq(2)&&Text;.book-des p&&Text',
|
||||||
|
content:'.book-des--p&&Text',
|
||||||
|
tabs:'.playlist-top&&h2',
|
||||||
|
// lists:'js:pd=jsp.pd;let url=pd(html,".bookbutton&&a&&href");log(url);html=request(url);let v=pd(html,".booksite&&script&&Html");var document={};var VideoListJson;VideoListJson=eval(v.split("VideoListJson=")[1].split(",urlinfo")[0]);log(typeof VideoListJson);let list1=VideoListJson[0][1];LISTS=[list1];log(LISTS);',
|
||||||
|
// 有声小说有防盗链,我服了(上面的列表数据正常拿到了,没法播放)
|
||||||
|
// lists:'#playlist:eq(#id)&&ul&&li',
|
||||||
|
lists:'#playlist ul li',
|
||||||
|
},
|
||||||
|
搜索:'*',
|
||||||
|
}
|
||||||
@ -0,0 +1,304 @@
|
|||||||
|
if (typeof Object.assign != 'function') {
|
||||||
|
Object.assign = function () {
|
||||||
|
var target = arguments[0];
|
||||||
|
for (var i = 1; i < arguments.length; i++) {
|
||||||
|
var source = arguments[i];
|
||||||
|
for (var key in source) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
||||||
|
target[key] = source[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return target;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function getMubans() {
|
||||||
|
var mubanDict = { // 模板字典
|
||||||
|
mxpro: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
// homeUrl:'/',
|
||||||
|
url: '/vodshow/fyclass--------fypage---.html',
|
||||||
|
searchUrl: '/vodsearch/**----------fypage---.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
// "Cookie": "searchneed=ok"
|
||||||
|
},
|
||||||
|
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h1&&Text;.module-info-tag&&Text",
|
||||||
|
"img": ".lazyload&&data-original",
|
||||||
|
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
|
||||||
|
"content": ".module-info-introduction&&Text",
|
||||||
|
"tabs": ".module-tab-item",
|
||||||
|
"lists": ".module-play-list:eq(#id) a"
|
||||||
|
},
|
||||||
|
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
|
||||||
|
},
|
||||||
|
mxone5: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/show/fyclass--------fypage---.html',
|
||||||
|
searchUrl: '/search/**----------fypage---.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h1&&Text;.tag-link&&Text",
|
||||||
|
"img": ".module-item-pic&&img&&data-src",
|
||||||
|
"desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
|
||||||
|
"content": ".vod_content&&Text",
|
||||||
|
"tabs": ".module-tab-item",
|
||||||
|
"lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
|
||||||
|
},
|
||||||
|
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
|
||||||
|
},
|
||||||
|
首图: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/vodshow/fyclass--------fypage---/',
|
||||||
|
searchUrl: '/vodsearch/**----------fypage---.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
// "Cookie": "searchneed=ok"
|
||||||
|
},
|
||||||
|
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
|
||||||
|
"img": ".myui-content__thumb .lazyload&&data-original",
|
||||||
|
"desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
|
||||||
|
"content": ".content&&Text",
|
||||||
|
"tabs": ".nav-tabs:eq(0) li",
|
||||||
|
"lists": ".myui-content__list:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
|
||||||
|
},
|
||||||
|
首图2: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/list/fyclass-fypage.html',
|
||||||
|
searchUrl: '/vodsearch/**----------fypage---.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'UC_UA',
|
||||||
|
// "Cookie": ""
|
||||||
|
},
|
||||||
|
// class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
|
||||||
|
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
|
||||||
|
"img": ".stui-content__thumb .lazyload&&data-original",
|
||||||
|
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
|
||||||
|
"content": ".detail&&Text",
|
||||||
|
"tabs": ".stui-vodlist__head h3",
|
||||||
|
"lists": ".stui-content__playlist:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
|
||||||
|
搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
|
||||||
|
搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
|
||||||
|
},
|
||||||
|
默认: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/vodshow/fyclass--------fypage---.html',
|
||||||
|
searchUrl: '/vodsearch/-------------.html?wd=**',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
},
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
},
|
||||||
|
vfed: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
|
||||||
|
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'UC_UA',
|
||||||
|
},
|
||||||
|
// class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
|
||||||
|
"img": ".fed-list-info&&a&&data-original",
|
||||||
|
"desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
|
||||||
|
"content": ".fed-part-esan&&Text",
|
||||||
|
"tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
|
||||||
|
"lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
|
||||||
|
},
|
||||||
|
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
|
||||||
|
},
|
||||||
|
海螺3: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
searchUrl: '/v_search/**----------fypage---.html',
|
||||||
|
url: '/vod_____show/fyclass--------fypage---.html',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout: 5000,
|
||||||
|
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
cate_exclude: '明星|专题|最新|排行',
|
||||||
|
limit: 40,
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
|
||||||
|
double: true,
|
||||||
|
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
|
||||||
|
"img": ".hl-lazy&&data-original",
|
||||||
|
"desc": ".hl-infos-content&&.hl-text-conch&&Text",
|
||||||
|
"content": ".hl-content-text&&Text",
|
||||||
|
"tabs": ".hl-tabs&&a",
|
||||||
|
"lists": ".hl-plays-list:eq(#id)&&li"
|
||||||
|
},
|
||||||
|
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
},
|
||||||
|
海螺2: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
|
||||||
|
url: '/index.php/vod/show/id/fyclass/page/fypage/',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA'
|
||||||
|
},
|
||||||
|
timeout: 5000,
|
||||||
|
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
|
||||||
|
limit: 40,
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
|
||||||
|
double: true,
|
||||||
|
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h2&&Text;.deployment&&Text",
|
||||||
|
"img": ".lazy&&data-original",
|
||||||
|
"desc": ".deployment&&Text",
|
||||||
|
"content": ".ec-show&&Text",
|
||||||
|
"tabs": "#tag&&a",
|
||||||
|
"lists": ".play_list_box:eq(#id)&&li"
|
||||||
|
},
|
||||||
|
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
},
|
||||||
|
短视: {
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
// homeUrl:'/',
|
||||||
|
url: '/channel/fyclass-fypage.html',
|
||||||
|
searchUrl: '/search.html?wd=**',
|
||||||
|
searchable: 2,//是否启用全局搜索,
|
||||||
|
quickSearch: 0,//是否启用快速搜索,
|
||||||
|
filterable: 0,//是否启用分类筛选,
|
||||||
|
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
|
||||||
|
'User-Agent': 'MOBILE_UA',
|
||||||
|
// "Cookie": "searchneed=ok"
|
||||||
|
},
|
||||||
|
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
|
||||||
|
cate_exclude: '解析|动态',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
|
||||||
|
double: true, // 推荐内容是否双层定位
|
||||||
|
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
|
||||||
|
"img": ".img&&img&&data-src",
|
||||||
|
"desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
|
||||||
|
"content": ".zkjj_a&&Text",
|
||||||
|
"tabs": ".py-tabs&&option",
|
||||||
|
"lists": ".player:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
|
||||||
|
},
|
||||||
|
短视2:{
|
||||||
|
title: '',
|
||||||
|
host: '',
|
||||||
|
class_name:'电影&电视剧&综艺&动漫',
|
||||||
|
class_url:'1&2&3&4',
|
||||||
|
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
|
||||||
|
searchable: 2,
|
||||||
|
quickSearch: 0,
|
||||||
|
headers:{'User-Agent':'MOBILE_UA'},
|
||||||
|
url: '/index.php/api/vod#type=fyclass&page=fypage',
|
||||||
|
filterable:0,//是否启用分类筛选,
|
||||||
|
filter_url:'',
|
||||||
|
filter: {},
|
||||||
|
filter_def:{},
|
||||||
|
detailUrl:'/index.php/vod/detail/id/fyid.html',
|
||||||
|
play_parse: true,
|
||||||
|
lazy: '',
|
||||||
|
limit: 6,
|
||||||
|
推荐:'.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
|
||||||
|
一级:'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
|
||||||
|
二级:{
|
||||||
|
"title":".slide-info-title&&Text;.slide-info:eq(3)--strong&&Text",
|
||||||
|
"img":".detail-pic&&data-original",
|
||||||
|
"desc":".fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text",
|
||||||
|
"content":"#height_limit&&Text",
|
||||||
|
"tabs":".anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a",
|
||||||
|
"tab_text":".swiper-slide&&Text",
|
||||||
|
"lists":".anthology-list-box:eq(#id) li"
|
||||||
|
},
|
||||||
|
搜索:'json:list;name;pic;;id',
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return JSON.parse(JSON.stringify(mubanDict));
|
||||||
|
}
|
||||||
|
var mubanDict = getMubans();
|
||||||
|
var muban = getMubans();
|
||||||
|
export default {muban,getMubans};
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
// 搜寻验证
|
||||||
|
var rule = {
|
||||||
|
title:'短视频',
|
||||||
|
host:'http://www.sharenice.net',
|
||||||
|
url:'/fyclass?page=fypage',
|
||||||
|
//searchUrl:'/video/search?search_key=**',
|
||||||
|
searchable:0,
|
||||||
|
quickSearch:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'PC_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
// class_name:'抖音&快手&微视&火山&场库&体育&美拍&秒拍&全民&梨&好兔&美女&正能量&搞笑&社会&游戏&娱乐&旅游&萌系&生活&音乐&美食&明星&动漫&影视&时尚',
|
||||||
|
class_name:'抖音&快手&微视&火山&场库&美拍&秒拍&全民&澎湃&好兔&开眼&美女&搞笑&社会&影视&音乐&娱乐&正能量&生活&动漫&体育&美食&萌系&旅游&游戏&明星&时尚',
|
||||||
|
// class_url:'douyin&kuaishou&weishi&huoshan&changku&tags/t-5L2T6IKy.html&meipai&miaopai&quanmin&lishipin&haotu&tags/t-576O5aWz.html&tags/t-5q2j6IO96YeP.html&tags/t-5pCe56yR.html&tags/t-56S+5Lya.html&tags/t-5ri45oiP.html&tags/t-5aix5LmQ.html&tags/t-5peF5ri4.html&tags/t-6JCM57O7.html&tags/t-55Sf5rS7.html&tags/t-6Z+z5LmQ.html&tags/t-576O6aOf.html&tags/t-5piO5pif.html&tags/t-5Yqo5ryr.html&tags/t-5b2x6KeG.html&tags/t-5pe25bCa.html',
|
||||||
|
class_url:'douyin&kuaishou&weishi&huoshan&changku&meipai&miaopai&quanmin&lishipin&haotu&kaiyan&t-576O5aWz&t-5pCe56yR&t-56S+5Lya&t-5b2x6KeG&t-6Z+z5LmQ&t-5aix5LmQ&t-5q2j6IO96YeP&t-55Sf5rS7&t-5Yqo5ryr&t-5L2T6IKy&t-576O6aOf&t-6JCM57O7&t-5peF5ri4&t-5ri45oiP&t-5piO5pif&t-5pe25bCa',
|
||||||
|
play_parse:true,
|
||||||
|
lazy:'js:/kuaishou/.test(input)?input=jsp.pdfh(request("http://m.sharenice.net/mobile"+input.split("net")[1]),".video-play-box&&video&&src"):input=jsp.pdfh(request("http://m.sharenice.net/mobile"+input.split("net")[1]),".video-play-box&&video&&src")+"#.mp4"',
|
||||||
|
limit:6,
|
||||||
|
double:false,
|
||||||
|
推荐:'*',
|
||||||
|
一级:'.item-box&&ul&&li;a&&title;img&&data-original;;a&&href',
|
||||||
|
二级:'*',
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,277 @@
|
|||||||
|
import { Crypto, load, _ } from 'assets://js/lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'star';
|
||||||
|
let host = 'https://www.histar.tv';
|
||||||
|
let apiHost = 'https://aws.ulivetv.net';
|
||||||
|
let types = {};
|
||||||
|
// let ver = '';
|
||||||
|
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, method, data) {
|
||||||
|
const headers = {
|
||||||
|
'User-Agent': UA,
|
||||||
|
};
|
||||||
|
if (method == 'post') {
|
||||||
|
headers['Content-Type'] = 'application/json';
|
||||||
|
} else {
|
||||||
|
headers['Cookie'] = 'userIP=127.0.0.1; aws-waf-token=';
|
||||||
|
headers['Referer'] = host;
|
||||||
|
}
|
||||||
|
const res = await req(reqUrl, {
|
||||||
|
method: method || 'get',
|
||||||
|
headers: headers,
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
types = {
|
||||||
|
'movie': '电影',
|
||||||
|
'drama': '电视剧',
|
||||||
|
'animation': '动漫',
|
||||||
|
'variety': '综艺',
|
||||||
|
'documentary': '纪录片',
|
||||||
|
};
|
||||||
|
// ver = await getVer();
|
||||||
|
}
|
||||||
|
|
||||||
|
// async function getVer() {
|
||||||
|
// const html = await request(host);
|
||||||
|
// const $ = load(html);
|
||||||
|
// const srcAttr = $('script[src*=\'buildManifest.js\']').attr('src');
|
||||||
|
// return srcAttr.split('/')[3];
|
||||||
|
// }
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
const typeList = _.keys(types);
|
||||||
|
const classes = _.map(typeList, (item) => {
|
||||||
|
return { type_id: item, type_name: types[item] };
|
||||||
|
});
|
||||||
|
const filterConfig = {};
|
||||||
|
const jsonData = JSON.stringify(typeList);
|
||||||
|
for (const typeId of typeList) {
|
||||||
|
const html = await request(host + '/' + typeId + '/all/all/all');
|
||||||
|
const $ = load(html);
|
||||||
|
const json = $('#__NEXT_DATA__')[0].children[0].data;
|
||||||
|
const obj = JSON.parse(json).props.pageProps.filterCondition;
|
||||||
|
const label = convertTypeData(obj, 'label', '类型');
|
||||||
|
const country = convertTypeData(obj, 'country', '地区');
|
||||||
|
const time = convertTypeData(obj, 'time', '年份');
|
||||||
|
const filterArray = [label, country, time];
|
||||||
|
filterConfig[typeId] = filterArray;
|
||||||
|
};
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterConfig,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function convertTypeData(typeData, key, name) {
|
||||||
|
if (!typeData || !typeData[key] || typeData[key].length <= 2) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
let valueList = typeData[key];
|
||||||
|
if (key == 'time') {
|
||||||
|
valueList = valueList.sort((a, b) => { return b - a;});
|
||||||
|
valueList.pop();
|
||||||
|
}
|
||||||
|
const values = _.map(valueList, (item) => {
|
||||||
|
let name;
|
||||||
|
let value;
|
||||||
|
if (item instanceof Array) {
|
||||||
|
name = item[0];
|
||||||
|
value = item[0];
|
||||||
|
} else {
|
||||||
|
name = item.toString();
|
||||||
|
value = item.toString();
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
n: name,
|
||||||
|
v: value,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
values.unshift({
|
||||||
|
n: '全部',
|
||||||
|
v: '',
|
||||||
|
});
|
||||||
|
const typeClass = {
|
||||||
|
key: key,
|
||||||
|
name: name,
|
||||||
|
init: '',
|
||||||
|
value: values,
|
||||||
|
};
|
||||||
|
return typeClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
const html = await request(host);
|
||||||
|
const $ = load(html);
|
||||||
|
const json = $('#__NEXT_DATA__')[0].children[0].data;
|
||||||
|
const obj = JSON.parse(json).props.pageProps.cards;
|
||||||
|
const videos = [];
|
||||||
|
_.each(obj, (cards) => {
|
||||||
|
if (cards.name == '电视直播') return;
|
||||||
|
_.each(cards.cards, (card) => {
|
||||||
|
const v = {
|
||||||
|
vod_id: card.id,
|
||||||
|
vod_name: card.name,
|
||||||
|
vod_pic: card.img,
|
||||||
|
vod_remarks: card.countStr,
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
const limit = 16;
|
||||||
|
const param = {
|
||||||
|
chName: types[tid],
|
||||||
|
page: pg,
|
||||||
|
pageSize: limit,
|
||||||
|
label: extend.label,
|
||||||
|
country: extend.country,
|
||||||
|
};
|
||||||
|
if (extend.time) {
|
||||||
|
const year = parseInt(extend.time);
|
||||||
|
param.startTime = year;
|
||||||
|
param.endTime = year;
|
||||||
|
}
|
||||||
|
const json = await request(apiHost + '/v3/web/api/filter', 'post', JSON.stringify(param));
|
||||||
|
const data = JSON.parse(json).data;
|
||||||
|
const videos = _.map(data.list, (card) => {
|
||||||
|
return {
|
||||||
|
vod_id: card.id,
|
||||||
|
vod_name: card.name,
|
||||||
|
vod_pic: card.img,
|
||||||
|
vod_remarks: card.countStr,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const page = parseInt(pg);
|
||||||
|
const count = parseInt(data.total / limit);
|
||||||
|
return JSON.stringify({
|
||||||
|
page: page,
|
||||||
|
pagecount: count,
|
||||||
|
limit: limit,
|
||||||
|
total: data.total,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
const html = await request(host + '/vod/detail/' + id);
|
||||||
|
const $ = load(html);
|
||||||
|
const json = $('#__NEXT_DATA__')[0].children[0].data;
|
||||||
|
const obj = JSON.parse(json).props.pageProps;
|
||||||
|
const vObj = obj.pageData;
|
||||||
|
const vodAtom = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: vObj.name,
|
||||||
|
vod_type: vObj.chname,
|
||||||
|
vod_pic: vObj.picurl,
|
||||||
|
vod_area: vObj.country,
|
||||||
|
vod_lang: vObj.language,
|
||||||
|
vod_remarks: vObj.countStr,
|
||||||
|
vod_actor: vObj.actor,
|
||||||
|
vod_director: vObj.director,
|
||||||
|
vod_content: vObj.desc,
|
||||||
|
}
|
||||||
|
const playInfo = obj.videosGroup;
|
||||||
|
const playVod = {};
|
||||||
|
_.each(playInfo, (info) => {
|
||||||
|
const sourceName = info.name;
|
||||||
|
let playList = '';
|
||||||
|
const videoInfo = info.videos;
|
||||||
|
const vodItems = _.map(videoInfo, (epObj) => {
|
||||||
|
const epName = epObj.epInfo;
|
||||||
|
const playUrl = epObj.purl
|
||||||
|
return epName + '$' + playUrl;
|
||||||
|
});
|
||||||
|
if (_.isEmpty(vodItems)) return;
|
||||||
|
playList = vodItems.join('#');
|
||||||
|
playVod[sourceName] = playList;
|
||||||
|
});
|
||||||
|
vodAtom.vod_play_from = _.keys(playVod).join('$$$');
|
||||||
|
vodAtom.vod_play_url = _.values(playVod).join('$$$');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vodAtom],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
let playUrl = id;
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
// const limit = 10;
|
||||||
|
// const json = await request(host + '/_next/data/' + ver + '/search.json?word=' + encodeURIComponent(wd) + '&page=' + pg);
|
||||||
|
// const data = JSON.parse(json).pageProps;
|
||||||
|
// const videos = _.map(data.initList, (card) => {
|
||||||
|
// return {
|
||||||
|
// vod_id: card.id,
|
||||||
|
// vod_name: card.name,
|
||||||
|
// vod_pic: card.picurl,
|
||||||
|
// vod_remarks: card.countStr,
|
||||||
|
// };
|
||||||
|
// });
|
||||||
|
// const page = parseInt(pg);
|
||||||
|
// const count = parseInt(data.total / limit);
|
||||||
|
// return JSON.stringify({
|
||||||
|
// page: page,
|
||||||
|
// pagecount: count,
|
||||||
|
// limit: limit,
|
||||||
|
// total: data.total,
|
||||||
|
// list: videos,
|
||||||
|
// });
|
||||||
|
const limit = 10;
|
||||||
|
const param = {
|
||||||
|
word: wd,
|
||||||
|
page: pg,
|
||||||
|
pageSize: limit,
|
||||||
|
};
|
||||||
|
const json = await request(apiHost + '/v3/web/api/search', 'post', JSON.stringify(param));
|
||||||
|
const data = JSON.parse(json).data;
|
||||||
|
const videos = _.map(data.list, (card) => {
|
||||||
|
return {
|
||||||
|
vod_id: card.id,
|
||||||
|
vod_name: card.name,
|
||||||
|
vod_pic: card.picurl,
|
||||||
|
vod_remarks: card.countStr,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const page = parseInt(pg);
|
||||||
|
const count = parseInt(data.total / limit);
|
||||||
|
return JSON.stringify({
|
||||||
|
page: page,
|
||||||
|
pagecount: count,
|
||||||
|
limit: limit,
|
||||||
|
total: data.total,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -0,0 +1,271 @@
|
|||||||
|
import { Crypto, load, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let siteUrl = 'https://www.cs1369.com';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
let headers = {};
|
||||||
|
|
||||||
|
async function request(reqUrl, postData, agentSp, get) {
|
||||||
|
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: get ? 'get' : 'post',
|
||||||
|
headers: headers,
|
||||||
|
data: postData || {},
|
||||||
|
postType: get ? '' : 'form',
|
||||||
|
});
|
||||||
|
|
||||||
|
let content = res.content;
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{
|
||||||
|
type_id: '1',
|
||||||
|
type_name: '电影',
|
||||||
|
},{
|
||||||
|
type_id: '2',
|
||||||
|
type_name: '电视',
|
||||||
|
},{
|
||||||
|
type_id: '3',
|
||||||
|
type_name: '动漫',
|
||||||
|
}];
|
||||||
|
|
||||||
|
let filterObj = genFilterObj();
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
let videos = await getVideos(siteUrl);
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
let url = siteUrl;
|
||||||
|
if (filter) {
|
||||||
|
url = url + '/show';
|
||||||
|
let area = extend['area'];
|
||||||
|
if (area && area != '') {
|
||||||
|
url = url + '/area/' + area;
|
||||||
|
}
|
||||||
|
let clazz = extend['class']
|
||||||
|
if (clazz && clazz != '') {
|
||||||
|
url = url + '/class/' + clazz;
|
||||||
|
}
|
||||||
|
let id = extend['id'];
|
||||||
|
if(id && id != '') {
|
||||||
|
url = url + '/id/' + id;
|
||||||
|
} else {
|
||||||
|
url = url + '/id/' + tid;
|
||||||
|
}
|
||||||
|
let year = extend['year'];
|
||||||
|
if (year && year != '') {
|
||||||
|
url = url + '/year/' + year;
|
||||||
|
}
|
||||||
|
if (pg && pg > 1) {
|
||||||
|
url = url + '/page/' + pg;
|
||||||
|
}
|
||||||
|
url = url + '.html';
|
||||||
|
} else {
|
||||||
|
url = url + '/vod/type';
|
||||||
|
url = url + '/id/' + tid;
|
||||||
|
if (pg && pg > 1) {
|
||||||
|
url = url + '/page/' + pg;
|
||||||
|
}
|
||||||
|
url = url + '.html';
|
||||||
|
}
|
||||||
|
//console.log('cate page url:', url);
|
||||||
|
|
||||||
|
let videos = await getVideos(url);
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
try {
|
||||||
|
let url = siteUrl + id;
|
||||||
|
const html = await request(url);
|
||||||
|
const $ = load(html);
|
||||||
|
let actors = _.map($('div.stui-content__detail > p:nth-child(3) > a'), (n) => {
|
||||||
|
return $(n).text();
|
||||||
|
});
|
||||||
|
let actor = actors.join(' ');
|
||||||
|
let director = $('div.stui-content__detail > p:nth-child(4) > a').text();
|
||||||
|
let title = $('div.stui-content__detail > h1.title').text();
|
||||||
|
let content = $('div.stui-pannel_bd > p').text();
|
||||||
|
const cards = $('div.stui-pannel_bd.col-pd.clearfix > ul > li > a');
|
||||||
|
let playUrls = _.map(cards, (n) => {
|
||||||
|
return $(n).text() + '$' + n.attribs['href'];
|
||||||
|
});
|
||||||
|
|
||||||
|
const video = {
|
||||||
|
vod_actor: actor,
|
||||||
|
vod_play_from: 'Leospring',
|
||||||
|
vod_play_url: playUrls.join('#'),
|
||||||
|
vod_director: director,
|
||||||
|
vod_content: content,
|
||||||
|
};
|
||||||
|
const list = [video];
|
||||||
|
const result = { list };
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {
|
||||||
|
//console.log('err', e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let url = siteUrl + '/search/wd/' + wd + '.html';
|
||||||
|
//console.log('search url:', url);
|
||||||
|
const html = await request(url);
|
||||||
|
const $ = load(html);
|
||||||
|
const cards = $('div.stui-pannel_bd > ul.stui-vodlist__media.col-pd.clearfix > li');
|
||||||
|
let videos = _.map(cards, (n) => {
|
||||||
|
let id = $($(n).find('div.thumb > a')[0]).attr('href');
|
||||||
|
let name = $($(n).find('div.thumb > a')[0]).attr('title');
|
||||||
|
let pic = $($(n).find('div.thumb > a')[0]).attr('data-original');
|
||||||
|
let remark = $($(n).find('div.thumb > a > span:nth-child(2)')[0]).text();
|
||||||
|
|
||||||
|
return {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: name,
|
||||||
|
vod_pic: pic,
|
||||||
|
vod_remarks: remark,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
let url = siteUrl + id;
|
||||||
|
const html = await request(url);
|
||||||
|
const $ = load(html);
|
||||||
|
let info = '';
|
||||||
|
for(const n of $('script')) {
|
||||||
|
if($(n).text().indexOf('player_aaaa=') > 0) {
|
||||||
|
info = $(n).text().split('player_aaaa=')[1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//console.log('info', info);
|
||||||
|
let obj = JSON.parse(info);
|
||||||
|
let playUrl = obj.url;
|
||||||
|
if(obj.encrypt == 1) {
|
||||||
|
playUrl = unescape(playUrl);
|
||||||
|
} else if (obj.encrypt == 2) {
|
||||||
|
playUrl = unescape(base64Decode(playUrl))
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function genFilterObj() {
|
||||||
|
return {
|
||||||
|
'1':[
|
||||||
|
{
|
||||||
|
key: 'id',
|
||||||
|
name: '类型',
|
||||||
|
value: [{n:'全部',v:''},{n:'动作片',v:'6'},{n:'喜剧片',v:'7'},{n:'爱情片',v:'8'},{n:'科幻片',v:'9'},{n:'恐怖片',v:'10'},{n:'剧情片',v:'11'},{n:'战争片',v:'12'},{n:'动画片',v:'13'},{n:'纪录片',v:'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:'历史',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'},{n:'2009',v:'2009'},{n:'2008',v:'2008'},{n:'2007',v:'2007'},{n:'2006',v:'2006'},{n:'2005',v:'2005'},{n:'2004',v:'2004'},{n:'2003',v:'2003'},{n:'2002',v:'2002'},{n:'2001',v:'2001'},{n:'2000',v:'2000'}]
|
||||||
|
}],
|
||||||
|
'2':[{
|
||||||
|
key: 'id',
|
||||||
|
name: '类型',
|
||||||
|
value: [{n:'全部',v:''},{n:'内地',v:'15'},{n:'美国',v:'16'},{n:'英国',v:'17'},{n:'韩国',v:'18'},{n:'泰国',v:'20'},{n:'日本',v:'21'},{n:'香港',v:'22'},{n:'台湾',v:'23'}]
|
||||||
|
},{
|
||||||
|
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:'网剧'}]
|
||||||
|
},{
|
||||||
|
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'},{n:'2009',v:'2009'},{n:'2008',v:'2008'},{n:'2007',v:'2007'},{n:'2006',v:'2006'},{n:'2005',v:'2005'},{n:'2004',v:'2004'},{n:'2003',v:'2003'},{n:'2002',v:'2002'},{n:'2001',v:'2001'},{n:'2000',v:'2000'}]
|
||||||
|
}],
|
||||||
|
'3':[{
|
||||||
|
key: 'id',
|
||||||
|
name: '类型',
|
||||||
|
value: [{n:'全部',v:''},{n:'内地',v:'25'},{n:'日漫',v:'26'},{n:'欧美',v:'27'},{n:'其他',v:'28'}]
|
||||||
|
},{
|
||||||
|
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:'励志'}]
|
||||||
|
},{
|
||||||
|
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'},{n:'2009',v:'2009'},{n:'2008',v:'2008'},{n:'2007',v:'2007'},{n:'2006',v:'2006'},{n:'2005',v:'2005'},{n:'2004',v:'2004'},{n:'2003',v:'2003'},{n:'2002',v:'2002'},{n:'2001',v:'2001'},{n:'2000',v:'2000'}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getVideos(url) {
|
||||||
|
const html = await request(url);
|
||||||
|
const $ = load(html);
|
||||||
|
const cards = $('div.stui-vodlist__box > a')
|
||||||
|
let videos = _.map(cards, (n) => {
|
||||||
|
let id = n.attribs['href'];
|
||||||
|
let name = n.attribs['title'];
|
||||||
|
let pic = n.attribs['data-original'];
|
||||||
|
let remark = $($(n).find('span:nth-child(2)')[0]).text();
|
||||||
|
return {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: name,
|
||||||
|
vod_pic: pic,
|
||||||
|
vod_remarks: remark,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return videos;
|
||||||
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -0,0 +1,162 @@
|
|||||||
|
import { Crypto, load, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let siteUrl = 'https://gh.7761.cf/https://zz123.com';
|
||||||
|
let imgUrl = 'https://music.jsbaidu.com';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
let headers = {};
|
||||||
|
|
||||||
|
async function request(reqUrl, postData, agentSp, get) {
|
||||||
|
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: get ? 'get' : 'post',
|
||||||
|
headers: headers,
|
||||||
|
data: postData || {},
|
||||||
|
postType: get ? '' : 'form',
|
||||||
|
});
|
||||||
|
|
||||||
|
let content = res.content;
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
if (cfg.ext) {
|
||||||
|
siteUrl = cfg.ext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
const html = await request(siteUrl);
|
||||||
|
const $ = load(html);
|
||||||
|
const cates = $('ul.aside-menu-list.channel > li')
|
||||||
|
let classes = _.map(cates, (n) => {
|
||||||
|
let id = n.attribs['data-id'];
|
||||||
|
let name = $($(n).find('a > span')[0]).text();
|
||||||
|
return {
|
||||||
|
type_id: id,
|
||||||
|
type_name: name,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
const html = await request(siteUrl);
|
||||||
|
const $ = load(html);
|
||||||
|
const cards = $('div.page-main-wrap > div > div > div.card-list.d-none.d-md-block > div')
|
||||||
|
let videos = _.map(cards, (n) => {
|
||||||
|
let id = n.attribs['data-id'];
|
||||||
|
let name = $($(n).find('div.item-info > div > div.songname.text-ellipsis.color-link-content-primary > a')[0]).text();
|
||||||
|
let pic = $($(n).find('div.item-cover-wrap > a > img')[0]).attr('data-src').replace('/img', imgUrl);
|
||||||
|
let remark = $($(n).find('div.item-cover-wrap > div.item-time')[0]).text();
|
||||||
|
return {
|
||||||
|
book_id: id,
|
||||||
|
book_name: name,
|
||||||
|
book_pic: pic,
|
||||||
|
book_remarks: remark,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let url = siteUrl + '/ajax/';
|
||||||
|
let res = await req(url, {
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
act: 'tag_music',
|
||||||
|
type: 'tuijian',
|
||||||
|
tid: tid,
|
||||||
|
page: pg,
|
||||||
|
lang: '',
|
||||||
|
},
|
||||||
|
postType: 'form',
|
||||||
|
});
|
||||||
|
//console.log('catedata:', res);
|
||||||
|
let data = JSON.parse(res.content).data;
|
||||||
|
let videos = [];
|
||||||
|
for(let i=0;i<data.length;i++){
|
||||||
|
const item = data[i];
|
||||||
|
videos.push({
|
||||||
|
book_id: item['mp3'],
|
||||||
|
book_name: item['mname'],
|
||||||
|
book_pic: item['pic'].replace('/img', imgUrl),
|
||||||
|
book_remarks: item['play_time'],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
try {
|
||||||
|
let playUrl = id;
|
||||||
|
if(!id.startsWith('http')) {
|
||||||
|
playUrl = siteUrl + '/xplay/?act=songplay&id=' + id;
|
||||||
|
}
|
||||||
|
|
||||||
|
const video = {
|
||||||
|
book_id: id,
|
||||||
|
book_actor: 'Leospring',
|
||||||
|
book_play_from: 'Leospring',
|
||||||
|
urls: '播放$' + playUrl,
|
||||||
|
book_director: 'Leospring',
|
||||||
|
book_content: '该音乐由公众号【蚂蚁科技杂谈】用爱发电制作,欢迎收听!',
|
||||||
|
};
|
||||||
|
const list = [video];
|
||||||
|
const result = { list };
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let url = siteUrl + '/search/?key=' + wd;
|
||||||
|
const html = await request(url);
|
||||||
|
const $ = load(html);
|
||||||
|
const cards = $('div.tab-item.tab-song > div.card-list.d-none.d-md-block > div')
|
||||||
|
let videos = _.map(cards, (n) => {
|
||||||
|
let id = n.attribs['data-id'];
|
||||||
|
let name = $($(n).find('div.item-info > div > div.songname.text-ellipsis.color-link-content-primary > a')[0]).text();
|
||||||
|
let pic = $($(n).find('div.item-cover-wrap > a > img')[0]).attr('data-src').replace('/img', imgUrl);
|
||||||
|
let remark = $($(n).find('div.item-cover-wrap > div.item-time')[0]).text();
|
||||||
|
|
||||||
|
return {
|
||||||
|
book_id: id,
|
||||||
|
book_name: name,
|
||||||
|
book_pic: pic,
|
||||||
|
book_remarks: remark,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -0,0 +1,163 @@
|
|||||||
|
import { Crypto, load, _ } from './lib/cat.js';
|
||||||
|
//代理地址
|
||||||
|
let siteUrl = 'https://gh.7761.cf/https://zz123.com';
|
||||||
|
let imgUrl = 'https://music.jsbaidu.com';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
let headers = {};
|
||||||
|
|
||||||
|
async function request(reqUrl, postData, agentSp, get) {
|
||||||
|
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: get ? 'get' : 'post',
|
||||||
|
headers: headers,
|
||||||
|
data: postData || {},
|
||||||
|
postType: get ? '' : 'form',
|
||||||
|
});
|
||||||
|
|
||||||
|
let content = res.content;
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
if (cfg.ext) {
|
||||||
|
siteUrl = cfg.ext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
const html = await request(siteUrl);
|
||||||
|
const $ = load(html);
|
||||||
|
const cates = $('ul.aside-menu-list.channel > li')
|
||||||
|
let classes = _.map(cates, (n) => {
|
||||||
|
let id = n.attribs['data-id'];
|
||||||
|
let name = $($(n).find('a > span')[0]).text();
|
||||||
|
return {
|
||||||
|
type_id: id,
|
||||||
|
type_name: name
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
const html = await request(siteUrl);
|
||||||
|
const $ = load(html);
|
||||||
|
const cards = $('div.page-main-wrap > div > div > div.card-list.d-none.d-md-block > div');
|
||||||
|
let videos = _.map(cards, (n) => {
|
||||||
|
let id = n.attribs['data-id'];
|
||||||
|
let name = $($(n).find('div.item-info > div > div.songname.text-ellipsis.color-link-content-primary > a')[0]).text();
|
||||||
|
let pic = $($(n).find('div.item-cover-wrap > a > img')[0]).attr('data-src').replace('/img', imgUrl);
|
||||||
|
let remark = $($(n).find('div.item-cover-wrap > div.item-time')[0]).text();
|
||||||
|
return {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: name,
|
||||||
|
vod_pic: pic,
|
||||||
|
vod_remarks: remark
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let url = siteUrl + '/ajax/';
|
||||||
|
let res = await req(url, {
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
act: 'tag_music',
|
||||||
|
type: 'tuijian',
|
||||||
|
tid: tid,
|
||||||
|
page: pg,
|
||||||
|
lang: ''
|
||||||
|
},
|
||||||
|
postType: 'form'
|
||||||
|
});
|
||||||
|
//console.log('catedata:', res);
|
||||||
|
let data = JSON.parse(res.content).data;
|
||||||
|
let videos = [];
|
||||||
|
for(let i=0;i<data.length;i++){
|
||||||
|
const item = data[i];
|
||||||
|
videos.push({
|
||||||
|
vod_id: item['mp3'],
|
||||||
|
vod_name: item['mname'],
|
||||||
|
vod_pic: item['pic'].replace('/img', imgUrl),
|
||||||
|
vod_remarks: item['play_time']
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
try {
|
||||||
|
let playUrl = id;
|
||||||
|
if(!id.startsWith('http')) {
|
||||||
|
playUrl = siteUrl + '/xplay/?act=songplay&id=' + id;
|
||||||
|
}
|
||||||
|
|
||||||
|
const video = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_actor: 'Leospring',
|
||||||
|
vod_play_from: 'Leospring',
|
||||||
|
vod_play_url: '播放$' + playUrl,
|
||||||
|
vod_director: 'Leospring',
|
||||||
|
vod_content: '该音乐由公众号【蚂蚁科技杂谈】用爱发电制作,欢迎收听!',
|
||||||
|
};
|
||||||
|
const list = [video];
|
||||||
|
const result = { list };
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let url = siteUrl + '/search/?key=' + wd;
|
||||||
|
const html = await request(url);
|
||||||
|
const $ = load(html);
|
||||||
|
const cards = $('div.tab-item.tab-song > div.card-list.d-none.d-md-block > div')
|
||||||
|
let videos = _.map(cards, (n) => {
|
||||||
|
let id = n.attribs['data-id'];
|
||||||
|
let name = $($(n).find('div.item-info > div > div.songname.text-ellipsis.color-link-content-primary > a')[0]).text();
|
||||||
|
let pic = $($(n).find('div.item-cover-wrap > a > img')[0]).attr('data-src').replace('/img', imgUrl);
|
||||||
|
let remark = $($(n).find('div.item-cover-wrap > div.item-time')[0]).text();
|
||||||
|
|
||||||
|
return {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: name,
|
||||||
|
vod_pic: pic,
|
||||||
|
vod_remarks: remark,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"drives": [
|
|
||||||
{
|
|
||||||
"name": "alist.jar",
|
|
||||||
"search": true,
|
|
||||||
"searchable": true,
|
|
||||||
"server": "http://192.168.101.13:5244"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
[
|
|
||||||
{"name":"范明明OfficalSite","url":"https://live.fanmingming.com/tv/m3u/global.m3u"},
|
|
||||||
{"name":"范明明GitHub","url":"https://mirror.ghproxy.com/raw.githubusercontent.com/fanmingming/live/main/tv/m3u/global.m3u"},
|
|
||||||
{"name":"范明明IPV6","url":"https://live.fanmingming.com/tv/m3u/ipv6.m3u"}
|
|
||||||
]
|
|
||||||
@ -1,72 +0,0 @@
|
|||||||
{
|
|
||||||
"author": "率性而活",
|
|
||||||
"ua":"Mozilla/5.0 (Linux; Android 8.1.0; OPPO R11t Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.19 SP-engine/2.15.0 baiduboxapp/11.19.5.10 (Baidu; P1 8.1.0)",
|
|
||||||
//125.88.199.34 m.live.qq.com
|
|
||||||
|
|
||||||
//"dcVipFlag": "true",
|
|
||||||
//"dcPlayUrl": "true",
|
|
||||||
"homeUrl": "https://m.live.qq.com/directory/game/Basketball",
|
|
||||||
"cateManual": {
|
|
||||||
"篮球": "@directory/game/Basketball",
|
|
||||||
"足球":"@directory/game/Football",
|
|
||||||
"搏击":"@directory/game/Fight",
|
|
||||||
"网球排球":"@directory/game/Tennis",
|
|
||||||
"英文原声":"@directory/game/English",
|
|
||||||
"台球":"@directory/game/Billiards",
|
|
||||||
"棒球/橄榄球/冰球":"@directory/game/MLB",
|
|
||||||
"NBA":"@directory/game/NBA",
|
|
||||||
"CBA":"@directory/game/CBA",
|
|
||||||
"颜值":"@directory/game/YZ",
|
|
||||||
"棋牌/游戏":"@directory/game/Game"
|
|
||||||
|
|
||||||
},
|
|
||||||
"homeVodNode": "//a[contains(@href,'/10')]","homeVodName": "/div/following-sibling::p[1]/text()","homeVodId": "/@href","homeVodIdR": "/(\\S+)","homeVodImg": "//div[contains(@style,'http')]/@style","homeVodImgR": "(http.*?jpg)","homeVodMark": "",
|
|
||||||
|
|
||||||
"cateUrl2": "https://m.live.qq.com/{cateId}",
|
|
||||||
|
|
||||||
"cateVodNode": "//a[contains(@href,'/10')]",
|
|
||||||
|
|
||||||
"cateVodName": "/div/following-sibling::p[1]/text()",
|
|
||||||
|
|
||||||
"cateVodId": "/@href",
|
|
||||||
|
|
||||||
"cateVodIdR": "/(\\S+)",
|
|
||||||
|
|
||||||
"cateVodImg": "//div[contains(@style,'http')]/@style",
|
|
||||||
|
|
||||||
"cateVodImgR": "(http.*?jpg)",
|
|
||||||
|
|
||||||
"cateVodMark": "",
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
"dtUrl": "https://m.live.qq.com/{vid}",
|
|
||||||
"dtNode": "//body",
|
|
||||||
"dtName": "//p[contains(@class,'p-title')]/text()",
|
|
||||||
"dtNameR": "(“.*?”)",
|
|
||||||
"dtImg": "//div[contains(@class,'share-bar')]/@data-pic",
|
|
||||||
"dtImgR": "",
|
|
||||||
"dtCate": "",
|
|
||||||
"dtCateR": "",
|
|
||||||
"dtYear": "",
|
|
||||||
"dtYearR": "",
|
|
||||||
"dtArea": "",
|
|
||||||
"dtAreaR": "",
|
|
||||||
"dtDirector": "",
|
|
||||||
"dtDirectorR": "",
|
|
||||||
"dtActor": "",
|
|
||||||
"dtActorR": "",
|
|
||||||
"dtDesc": "",
|
|
||||||
"dtDescR": "",
|
|
||||||
"dtFromNode": "//p[contains(@class,'p-title')]",
|
|
||||||
"dtFromName": "/text()",
|
|
||||||
"dtFromNameR": "(\\企鹅体育)",
|
|
||||||
"dtUrlNode": "//div[contains(@class,'wenzi')]",
|
|
||||||
"dtUrlSubNode": "/a",
|
|
||||||
"dtUrlId": "/text()",
|
|
||||||
"dtUrlIdR": "m.live.qq.com/(\\S+)",
|
|
||||||
"dtUrlName": "/text()",
|
|
||||||
"dtUrlNameR": "(\\d+)",
|
|
||||||
"playUrl": "https://m.live.qq.com/{playUrl}",
|
|
||||||
"playUa":"{\"User-Agent\":\"okhttp/3.12.11\"}"
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue