上传文件至 jtxtv09/js
This commit is contained in:
26
jtxtv09/js/兔小贝.js
Normal file
26
jtxtv09/js/兔小贝.js
Normal file
@@ -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',
|
||||||
|
}
|
||||||
211
jtxtv09/js/央视大全.js
Normal file
211
jtxtv09/js/央视大全.js
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'央视频',
|
||||||
|
host:'https://api.cntv.cn',
|
||||||
|
homeUrl: '/lanmu/columnSearch?&fl=&fc=&cid=&p=1&n=500&serviceId=tvcctv&t=json',
|
||||||
|
url:'/list/getVideoAlbumList?fyfilter&area=&letter=&n=24&serviceId=tvcctv&t=json',
|
||||||
|
searchUrl:'',
|
||||||
|
searchable:0,
|
||||||
|
quickSearch:0,
|
||||||
|
class_name: '栏目大全&特别节目&纪录片&电视剧&动画片',
|
||||||
|
class_url: '栏目大全&特别节目&纪录片&电视剧&动画片',
|
||||||
|
filterable: 1,
|
||||||
|
filter_url: 'channel={{fl.channel}}&sc={{fl.sc}}&year={{fl.year}}',
|
||||||
|
filter: {
|
||||||
|
"纪录片":[
|
||||||
|
{"key":"channel","name":"频道","value":[{"n":"全部","v":""},{"n":"CCTV-1综合","v":"CCTV-1综合,CCTV-1高清,CCTV-1综合高清"},{"n":"CCTV-2财经","v":"CCTV-2财经,CCTV-2高清,CCTV-2财经高清"},{"n":"CCTV-3综艺","v":"CCTV-3综艺,CCTV-3高清,CCTV-3综艺高清"},{"n":"CCTV-4中文国际","v":"CCTV-4中文国际,CCTV-4高清,CCTV-4中文国际(亚)高清"},{"n":"CCTV-5体育","v":"CCTV-5体育,CCTV-5高清,CCTV-5体育高清"},{"n":"CCTV-6电影","v":"CCTV-6电影,CCTV-6高清,CCTV-6电影高清"},{"n":"CCTV-7国防军事","v":"CCTV-7国防军事,CCTV-7高清,CCTV-7国防军事高清"},{"n":"CCTV-8电视剧","v":"CCTV-8电视剧,CCTV-8高清,CCTV-8电视剧高清"},{"n":"CCTV-9纪录","v":"CCTV-9纪录,CCTV-9高清,CCTV-9纪录高清"},{"n":"CCTV-10科教","v":"CCTV-10科教,CCTV-10高清,CCTV-10科教高清"},{"n":"CCTV-11戏曲","v":"CCTV-11戏曲,CCTV-11高清,CCTV-11戏曲高清"},{"n":"CCTV-12社会与法","v":"CCTV-12社会与法,CCTV-12高清,CCTV-12社会与法高清"},{"n":"CCTV-13新闻","v":"CCTV-13新闻,CCTV-13高清,CCTV-13新闻高清"},{"n":"CCTV-14少儿","v":"CCTV-14少儿,CCTV-14高清,CCTV-14少儿高清"},{"n":"CCTV-15音乐","v":"CCTV-15音乐,CCTV-15高清,CCTV-15音乐高清"},{"n":"CCTV-17农业农村","v":"CCTV-17农业农村,高清,高清"}]},
|
||||||
|
{"key":"sc","name":"类型","value":[{"n":"全部","v":""},{"n":"人文历史","v":"人文历史"},{"n":"人物","v":"人物"},{"n":"军事","v":"军事"},{"n":"探索","v":"探索"},{"n":"社会","v":"社会"},{"n":"时政","v":"时政"},{"n":"经济","v":"经济"},{"n":"科技","v":"科技"}]},
|
||||||
|
{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"}]},
|
||||||
|
],
|
||||||
|
"特别节目":[
|
||||||
|
{"key":"channel","name":"频道","value":[{"n":"全部","v":""},{"n":"CCTV-1综合","v":"CCTV-1综合,CCTV-1高清,CCTV-1综合高清"},{"n":"CCTV-2财经","v":"CCTV-2财经,CCTV-2高清,CCTV-2财经高清"},{"n":"CCTV-3综艺","v":"CCTV-3综艺,CCTV-3高清,CCTV-3综艺高清"},{"n":"CCTV-4中文国际","v":"CCTV-4中文国际,CCTV-4高清,CCTV-4中文国际(亚)高清"},{"n":"CCTV-5体育","v":"CCTV-5体育,CCTV-5高清,CCTV-5体育高清"},{"n":"CCTV-6电影","v":"CCTV-6电影,CCTV-6高清,CCTV-6电影高清"},{"n":"CCTV-7国防军事","v":"CCTV-7国防军事,CCTV-7高清,CCTV-7国防军事高清"},{"n":"CCTV-8电视剧","v":"CCTV-8电视剧,CCTV-8高清,CCTV-8电视剧高清"},{"n":"CCTV-9纪录","v":"CCTV-9纪录,CCTV-9高清,CCTV-9纪录高清"},{"n":"CCTV-10科教","v":"CCTV-10科教,CCTV-10高清,CCTV-10科教高清"},{"n":"CCTV-11戏曲","v":"CCTV-11戏曲,CCTV-11高清,CCTV-11戏曲高清"},{"n":"CCTV-12社会与法","v":"CCTV-12社会与法,CCTV-12高清,CCTV-12社会与法高清"},{"n":"CCTV-13新闻","v":"CCTV-13新闻,CCTV-13高清,CCTV-13新闻高清"},{"n":"CCTV-14少儿","v":"CCTV-14少儿,CCTV-14高清,CCTV-14少儿高清"},{"n":"CCTV-15音乐","v":"CCTV-15音乐,CCTV-15高清,CCTV-15音乐高清"},{"n":"CCTV-17农业农村","v":"CCTV-17农业农村,高清,高清"}]},
|
||||||
|
{"key":"sc","name":"类型","value":[{"n":"全部","v":""},{"n":"新闻","v":"新闻"},{"n":"经济","v":"经济"},{"n":"综艺","v":"综艺"},{"n":"体育","v":"体育"},{"n":"军事","v":"军事"},{"n":"影视","v":"影视"},{"n":"科教","v":"科教"},{"n":"戏曲","v":"戏曲"},{"n":"青少","v":"青少"},{"n":"音乐","v":"音乐"},{"n":"社会","v":"社会"},{"n":"公益","v":"公益"},{"n":"其他","v":"其他"}]},
|
||||||
|
],
|
||||||
|
"电视剧":[
|
||||||
|
{"key":"sc","name":"类型","value":[{"n":"全部","v":""},{"n":"谍战","v":"谍战"},{"n":"悬疑","v":"悬疑"},{"n":"刑侦","v":"刑侦"},{"n":"历史","v":"历史"},{"n":"古装","v":"古装"},{"n":"武侠","v":"武侠"},{"n":"军旅","v":"军旅"},{"n":"战争","v":"战争"},{"n":"喜剧","v":"喜剧"},{"n":"青春","v":"青春"},{"n":"言情","v":"言情"},{"n":"偶像","v":"偶像"},{"n":"家庭","v":"家庭"},{"n":"年代","v":"年代"},{"n":"革命","v":"革命"},{"n":"农村","v":"农村"},{"n":"都市","v":"都市"},{"n":"其他","v":"其他"}]},
|
||||||
|
{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"},{"n":"1999","v":"1999"},{"n":"1998","v":"1998"},{"n":"1997","v":"1997"}]},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'PC_UA'
|
||||||
|
},
|
||||||
|
timeout:10000,
|
||||||
|
play_parse:true,
|
||||||
|
|
||||||
|
lazy: $js.toString(() => {
|
||||||
|
let id = input.split("|")[0];
|
||||||
|
let k4 = input.split("|")[1];
|
||||||
|
let fc = input.split("|")[2];
|
||||||
|
if (k4 === '7' && fc!== '体育'){
|
||||||
|
input = 'https://hls.cntv.myhwcdn.cn/asp/hls/850/0303000a/3/default/' + id + '/850.m3u8';
|
||||||
|
} else {
|
||||||
|
input = 'https://hls.cntv.myhwcdn.cn/asp/hls/850/0303000a/3/default/' + id + '/850.m3u8';
|
||||||
|
|
||||||
|
}
|
||||||
|
//https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid='+input
|
||||||
|
}),
|
||||||
|
//海阔
|
||||||
|
/*
|
||||||
|
lazy: $js.toString(() => {
|
||||||
|
input=JSON.parse(request('https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid='+input)).hls_url;
|
||||||
|
id = input.split('/')[9];
|
||||||
|
input = 'https://hls.cntv.myalicdn.com//asp/hls/2000/0303000a/3/default/' + id + '/2000.m3u8';
|
||||||
|
}),
|
||||||
|
*/
|
||||||
|
//影视
|
||||||
|
//lazy: $js.toString(() => {
|
||||||
|
//input=JSON.parse(request('https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid='+input)).hls_url.replaceAll('main','2000')
|
||||||
|
//.replaceAll('cntv.lxdns','cntv.myalicdn').replaceAll('n.cn','n.com').replaceAll('myhwcdn','myalicdn').replaceAll('kcdnvip','myalicdn').replaceAll('newcntv.qcloudcdn','cntv.myalicdn')
|
||||||
|
//;
|
||||||
|
//}),
|
||||||
|
|
||||||
|
limit:6,
|
||||||
|
double:false,
|
||||||
|
|
||||||
|
推荐: $js.toString(() => {
|
||||||
|
var d = [];
|
||||||
|
var list = JSON.parse(request(input)).response.docs;
|
||||||
|
|
||||||
|
list.forEach(it => {
|
||||||
|
// 一级标题
|
||||||
|
let title1 = it.column_name;
|
||||||
|
// 一级描述
|
||||||
|
let desc1 = it.channel_name;
|
||||||
|
// 一级图片URL
|
||||||
|
let picUrl1 = it.column_logo;
|
||||||
|
// 一级URL(id 地区 类型 标题 演员 年份 频道 简介 图片 更新至)
|
||||||
|
let url1 = it.lastVIDE.videoSharedCode + '|' + '' + '|' + it.column_firstclass + '|' + it.column_name + '|' + '' + '|' + it.column_playdate + '|' + it.channel_name + '|' + it.column_brief + '|' + it.column_logo + '|' + '' + '|' + it.lastVIDE.videoTitle;
|
||||||
|
|
||||||
|
d.push({
|
||||||
|
desc : desc1,
|
||||||
|
title : title1,
|
||||||
|
pic_url : picUrl1,
|
||||||
|
url : url1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
setResult(d);
|
||||||
|
}),
|
||||||
|
|
||||||
|
|
||||||
|
一级: $js.toString(() => {
|
||||||
|
var d = [];
|
||||||
|
if(MY_CATE==='栏目大全') {
|
||||||
|
var list = JSON.parse(request(HOST+'/lanmu/columnSearch?&fl=&fc=&cid=&p='+MY_PAGE+'&n=500&serviceId=tvcctv&t=json')).response.docs;
|
||||||
|
list.forEach(it => {
|
||||||
|
// 一级标题
|
||||||
|
let title1 = it.column_name;
|
||||||
|
// 一级描述
|
||||||
|
let desc1 = it.channel_name;
|
||||||
|
// 一级图片URL
|
||||||
|
let picUrl1 = it.column_logo;
|
||||||
|
// 一级URL(id 地区 类型 标题 演员 年份 频道 简介 图片 更新至)
|
||||||
|
let url1 = it.lastVIDE.videoSharedCode + '|' + '' + '|' + it.column_firstclass + '|' + it.column_name + '|' + '' + '|' + it.column_playdate + '|' + it.channel_name + '|' + it.column_brief + '|' + it.column_logo + '|' + '' + '|' + it.lastVIDE.videoTitle;
|
||||||
|
d.push({
|
||||||
|
desc : desc1,
|
||||||
|
title : title1,
|
||||||
|
pic_url : picUrl1,
|
||||||
|
url : url1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var channelMap = {
|
||||||
|
"特别节目": "CHAL1460955953877151",
|
||||||
|
"纪录片": "CHAL1460955924871139",
|
||||||
|
"电视剧": "CHAL1460955853485115",
|
||||||
|
"动画片": "CHAL1460955899450127",
|
||||||
|
};
|
||||||
|
var list = JSON.parse(request(input+'&channelid='+channelMap[MY_CATE]+'&fc='+MY_CATE+'&p='+MY_PAGE)).data.list;
|
||||||
|
list.forEach(it => {
|
||||||
|
// 一级标题
|
||||||
|
let title1 = it.title;
|
||||||
|
// 一级描述
|
||||||
|
let desc1 = it.sc + ((typeof it.year==='undefined' || it.year==='')?'':('•'+it.year)) + ((typeof it.count==='undefined' || it.count==='')?'':('•共' + it.count + '集'));
|
||||||
|
// 一级图片URL
|
||||||
|
let picUrl1 = it.image;
|
||||||
|
// 一级URL(id 地区 类型 标题 演员 年份 频道 简介 图片 集数)
|
||||||
|
let url1 = it.id + '|' + it.area + '|' + it.sc + '|' + it.title + '|' + it.actors + '|' + it.year + '|' + it.channel + '|' + it.brief + '|' + it.image + '|' + it.count + '|' + '' + '|' + MY_CATE;
|
||||||
|
d.push({
|
||||||
|
desc : desc1,
|
||||||
|
title : title1,
|
||||||
|
pic_url : picUrl1,
|
||||||
|
url : url1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
setResult(d);
|
||||||
|
}),
|
||||||
|
|
||||||
|
二级: $js.toString(() => {
|
||||||
|
let info = input.split("|");
|
||||||
|
|
||||||
|
VOD = {
|
||||||
|
vod_id: info[0],
|
||||||
|
vod_name: info[3],
|
||||||
|
vod_pic: info[8],
|
||||||
|
type_name: info[2]==='undefined'?'':info[2],
|
||||||
|
vod_year: info[5]==='undefined'?'':info[5],
|
||||||
|
vod_area: info[1]==='undefined'?'':info[1],
|
||||||
|
vod_remarks: info[9]===''?('更新至'+info[10]):('共'+info[9]+'集'),
|
||||||
|
vod_director: info[6]==='undefined'?'':info[6],
|
||||||
|
vod_actor: info[4]==='undefined'?'':info[4],
|
||||||
|
vod_content: info[7]==='undefined'?'':info[7],
|
||||||
|
};
|
||||||
|
var modeMap = {
|
||||||
|
"特别节目": "0",
|
||||||
|
"纪录片": "0",
|
||||||
|
"电视剧": "0",
|
||||||
|
"动画片": "1",
|
||||||
|
};
|
||||||
|
var ctid = info[0].replace('https://api.cntv.cn/lanmu/','');
|
||||||
|
var link = 'https://api.cntv.cn/NewVideo/getVideoListByAlbumIdNew?id='+ctid+'&serviceId=tvcctv&p=1&n=100&mode='+modeMap[info[11]]+'&pub=1';
|
||||||
|
var html = JSON.parse(request(link));
|
||||||
|
var playUrls;
|
||||||
|
if(html.errcode==='1001'){
|
||||||
|
var guid = info[0].replace('https://api.cntv.cn/lanmu/','');
|
||||||
|
var link1 = 'https://api.cntv.cn/video/videoinfoByGuid?guid='+guid+'&serviceId=tvcctv';
|
||||||
|
ctid = JSON.parse(request(link1)).ctid.replace('https://api.cntv.cn/lanmu/','');
|
||||||
|
var link2 = 'https://api.cntv.cn/NewVideo/getVideoListByColumn?id='+ctid+'&d=&p=1&n=100&sort=desc&mode=0&serviceId=tvcctv&t=json';
|
||||||
|
playUrls = JSON.parse(request(link2)).data.list;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
playUrls = html.data.list;
|
||||||
|
// 获取更多数据,暂不需要
|
||||||
|
var flag = '';
|
||||||
|
if(playUrls===''){
|
||||||
|
flag = 'true';
|
||||||
|
}
|
||||||
|
var page = 1;
|
||||||
|
while(flag===''){
|
||||||
|
page = page+1;
|
||||||
|
var burl = 'https://api.cntv.cn/NewVideo/getVideoListByAlbumIdNew?id='+ctid+'&serviceId=tvcctv&p='+page+'&n=100&mode='+modeMap[info[11]]+'&pub=1';
|
||||||
|
var list = JSON.parse(request(burl)).data.list;
|
||||||
|
if (list.length!==0){
|
||||||
|
list.forEach(it => {
|
||||||
|
playUrls.push(it);
|
||||||
|
})
|
||||||
|
continue;
|
||||||
|
}else{
|
||||||
|
flag='true';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let playFrom = [];
|
||||||
|
let playList = [];
|
||||||
|
playFrom.append('央视频');
|
||||||
|
playUrls.forEach(it => {
|
||||||
|
playList.append(playUrls.map(function(it) {
|
||||||
|
return it.title + "$" + it.guid
|
||||||
|
}).join("#"))
|
||||||
|
});
|
||||||
|
|
||||||
|
// 最后封装所有线路
|
||||||
|
let vod_play_from = playFrom.join('$$$');
|
||||||
|
let vod_play_url = playList.join('$$$');
|
||||||
|
VOD['vod_play_from'] = vod_play_from;
|
||||||
|
VOD['vod_play_url'] = vod_play_url;
|
||||||
|
}),
|
||||||
|
|
||||||
|
搜索:'',
|
||||||
|
}
|
||||||
97
jtxtv09/js/央视少儿.js
Normal file
97
jtxtv09/js/央视少儿.js
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'央视频',
|
||||||
|
host:'https://api.cntv.cn',
|
||||||
|
homeUrl: '/lanmu/columnSearch?&fl=&fc=&cid=&p=1&n=500&serviceId=tvcctv&t=json',
|
||||||
|
// url:'/list/getVideoAlbumList?fyfilter&area=&letter=&n=24&serviceId=tvcctv&t=json',
|
||||||
|
url: '/NewVideo/getVideoListByColumn?id=fyclass&n=10&sort=desc&p=fypage&mode=0&serviceId=tvcctv',
|
||||||
|
searchUrl:'',
|
||||||
|
searchable:0,
|
||||||
|
quickSearch:0,
|
||||||
|
|
||||||
|
class_name: '周末动画片&快乐体验&小小智慧树&智力快车&音乐快递&英雄出少年&快乐大巴&动漫世界&新闻袋袋裤&大风车&七巧板&大手牵小手&智慧树&动感特区&动画大放映&看我 72 变&快乐童行&风车剧场',
|
||||||
|
class_url:'TOPC1451559836238828&TOPC1451559479171411&TOPC1451559205464876&TOPC1451559756374759&TOPC1451559666055645&TOPC1451559695702690&TOPC1451559161446811&TOPC1451559448233349&TOPC1451559603261584&TOPC1451558929123462&TOPC1451559569040502&TOPC1451558967135492&TOPC1451447359806385&TOPC1451559378830189&TOPC1451559025546574&TOPC1451559131256781&TOPC1628144739712839&TOPC1573528152700717',
|
||||||
|
|
||||||
|
filterable: 1,
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'PC_UA'
|
||||||
|
},
|
||||||
|
timeout:10000,
|
||||||
|
play_parse:true,
|
||||||
|
|
||||||
|
limit:6,
|
||||||
|
double:false,
|
||||||
|
/*
|
||||||
|
推荐: $js.toString(() => {
|
||||||
|
var d = [];
|
||||||
|
var list = JSON.parse(request(input)).response.docs;
|
||||||
|
|
||||||
|
list.forEach(it => {
|
||||||
|
// 一级标题
|
||||||
|
let title1 = it.column_name;
|
||||||
|
// 一级描述
|
||||||
|
let desc1 = it.channel_name;
|
||||||
|
// 一级图片URL
|
||||||
|
let picUrl1 = it.column_logo;
|
||||||
|
// 一级URL(id 地区 类型 标题 演员 年份 频道 简介 图片 更新至)
|
||||||
|
let url1 = it.lastVIDE.videoSharedCode + '|' + '' + '|' + it.column_firstclass + '|' + it.column_name + '|' + '' + '|' + it.column_playdate + '|' + it.channel_name + '|' + it.column_brief + '|' + it.column_logo + '|' + '' + '|' + it.lastVIDE.videoTitle;
|
||||||
|
|
||||||
|
d.push({
|
||||||
|
desc : desc1,
|
||||||
|
title : title1,
|
||||||
|
pic_url : picUrl1,
|
||||||
|
url : url1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
setResult(d);
|
||||||
|
}),
|
||||||
|
*/
|
||||||
|
|
||||||
|
一级: $js.toString(() => {
|
||||||
|
|
||||||
|
var d = [];
|
||||||
|
|
||||||
|
var list = JSON.parse(request(input)).data.list;
|
||||||
|
list.forEach(it => {
|
||||||
|
//一级id
|
||||||
|
let guid1 = it.guid;
|
||||||
|
// 一级标题
|
||||||
|
let title1 = it.title
|
||||||
|
// 一级描述
|
||||||
|
let desc1 = it.time;
|
||||||
|
// 一级图片URL
|
||||||
|
let picUrl1 = it.image;
|
||||||
|
// 一级URL(id 地区 类型 标题 演员 年份 频道 简介 图片 集数)
|
||||||
|
let url1 =it.guid + '|' + it.id + '|' + it.time + '|' + it.title + '|' + it.length + '|' + it.image + '|' + it.focus_date + '|' + it.brief + '|' + it.url + '|' + '' + '|' + MY_CATE;
|
||||||
|
d.push({
|
||||||
|
desc : desc1,
|
||||||
|
title : title1,
|
||||||
|
pic_url : picUrl1,
|
||||||
|
guid : guid1,
|
||||||
|
url : url1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
setResult(d);
|
||||||
|
}),
|
||||||
|
|
||||||
|
二级 : $js.toString(() => {
|
||||||
|
let info = input.split("|");
|
||||||
|
let guid = info[0].replaceAll('https://api.cntv.cn/lanmu/', '');
|
||||||
|
VOD = {
|
||||||
|
vod_id: info[1],
|
||||||
|
vod_name: info[3],
|
||||||
|
vod_pic: info[5],
|
||||||
|
type_name: info[2],
|
||||||
|
vod_year: info[2],
|
||||||
|
vod_area: info[1],
|
||||||
|
vod_remarks: 'ƪ(˘⌣˘)ʃ天微',
|
||||||
|
vod_director: 'ƪ(˘⌣˘)ʃ天微',
|
||||||
|
vod_actor: 'ƪ(˘⌣˘)ʃ天微',
|
||||||
|
vod_content: info[7],
|
||||||
|
vod_play_from: '央视频',
|
||||||
|
//https://hls.cntv.myalicdn.com//asp/hls/2000/0303000a/3/default/https://api.cntv.cn/lanmu/1a01871d6d5f4d4bbe82b9c62650f100/2000.m3u8
|
||||||
|
vod_play_url: '立即播放$https://hls.cntv.myhwcdn.cn/asp/hls/850/0303000a/3/default/' + guid + '/850.m3u8'
|
||||||
|
};
|
||||||
|
|
||||||
|
}),
|
||||||
|
搜索:'',
|
||||||
|
}
|
||||||
343
jtxtv09/js/星芽短剧.py
Normal file
343
jtxtv09/js/星芽短剧.py
Normal file
@@ -0,0 +1,343 @@
|
|||||||
|
# coding = utf-8
|
||||||
|
# !/usr/bin/python
|
||||||
|
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
|
||||||
|
from Crypto.Util.Padding import unpad
|
||||||
|
from Crypto.Util.Padding import pad
|
||||||
|
from urllib.parse import unquote
|
||||||
|
from Crypto.Cipher import ARC4
|
||||||
|
from urllib.parse import quote
|
||||||
|
from base.spider import Spider
|
||||||
|
from Crypto.Cipher import AES
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
from base64 import b64decode
|
||||||
|
import urllib.request
|
||||||
|
import urllib.parse
|
||||||
|
import binascii
|
||||||
|
import requests
|
||||||
|
import base64
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
|
||||||
|
sys.path.append('..')
|
||||||
|
|
||||||
|
xurl = "https://app.whjzjx.cn"
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
'User-Agent': 'Linux; Android 12; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.101 Mobile Safari/537.36'
|
||||||
|
}
|
||||||
|
|
||||||
|
headerf = {
|
||||||
|
"platform": "1",
|
||||||
|
"user_agent": "Mozilla/5.0 (Linux; Android 9; V1938T Build/PQ3A.190705.08211809; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Safari/537.36",
|
||||||
|
"content-type": "application/json; charset=utf-8"
|
||||||
|
}
|
||||||
|
|
||||||
|
times = int(time.time() * 1000)
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"device": "2a50580e69d38388c94c93605241fb306",
|
||||||
|
"package_name": "com.jz.xydj",
|
||||||
|
"android_id": "ec1280db12795506",
|
||||||
|
"install_first_open": True,
|
||||||
|
"first_install_time": 1752505243345,
|
||||||
|
"last_update_time": 1752505243345,
|
||||||
|
"report_link_url": "",
|
||||||
|
"authorization": "",
|
||||||
|
"timestamp": times
|
||||||
|
}
|
||||||
|
|
||||||
|
plain_text = json.dumps(data, separators=(',', ':'), ensure_ascii=False)
|
||||||
|
|
||||||
|
key = "B@ecf920Od8A4df7"
|
||||||
|
key_bytes = key.encode('utf-8')
|
||||||
|
plain_bytes = plain_text.encode('utf-8')
|
||||||
|
cipher = AES.new(key_bytes, AES.MODE_ECB)
|
||||||
|
padded_data = pad(plain_bytes, AES.block_size)
|
||||||
|
ciphertext = cipher.encrypt(padded_data)
|
||||||
|
encrypted = base64.b64encode(ciphertext).decode('utf-8')
|
||||||
|
|
||||||
|
response = requests.post("https://u.shytkjgs.com/user/v3/account/login", headers=headerf, data=encrypted)
|
||||||
|
response_data = response.json()
|
||||||
|
Authorization = response_data['data']['token']
|
||||||
|
|
||||||
|
headerx = {
|
||||||
|
'authorization': Authorization,
|
||||||
|
'platform': '1',
|
||||||
|
'version_name': '3.8.3.1'
|
||||||
|
}
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
global xurl
|
||||||
|
global headerx
|
||||||
|
global headers
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
return "首页"
|
||||||
|
|
||||||
|
def init(self, extend):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def extract_middle_text(self, text, start_str, end_str, pl, start_index1: str = '', end_index2: str = ''):
|
||||||
|
if pl == 3:
|
||||||
|
plx = []
|
||||||
|
while True:
|
||||||
|
start_index = text.find(start_str)
|
||||||
|
if start_index == -1:
|
||||||
|
break
|
||||||
|
end_index = text.find(end_str, start_index + len(start_str))
|
||||||
|
if end_index == -1:
|
||||||
|
break
|
||||||
|
middle_text = text[start_index + len(start_str):end_index]
|
||||||
|
plx.append(middle_text)
|
||||||
|
text = text.replace(start_str + middle_text + end_str, '')
|
||||||
|
if len(plx) > 0:
|
||||||
|
purl = ''
|
||||||
|
for i in range(len(plx)):
|
||||||
|
matches = re.findall(start_index1, plx[i])
|
||||||
|
output = ""
|
||||||
|
for match in matches:
|
||||||
|
match3 = re.search(r'(?:^|[^0-9])(\d+)(?:[^0-9]|$)', match[1])
|
||||||
|
if match3:
|
||||||
|
number = match3.group(1)
|
||||||
|
else:
|
||||||
|
number = 0
|
||||||
|
if 'http' not in match[0]:
|
||||||
|
output += f"#{match[1]}${number}{xurl}{match[0]}"
|
||||||
|
else:
|
||||||
|
output += f"#{match[1]}${number}{match[0]}"
|
||||||
|
output = output[1:]
|
||||||
|
purl = purl + output + "$$$"
|
||||||
|
purl = purl[:-3]
|
||||||
|
return purl
|
||||||
|
else:
|
||||||
|
return ""
|
||||||
|
else:
|
||||||
|
start_index = text.find(start_str)
|
||||||
|
if start_index == -1:
|
||||||
|
return ""
|
||||||
|
end_index = text.find(end_str, start_index + len(start_str))
|
||||||
|
if end_index == -1:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
if pl == 0:
|
||||||
|
middle_text = text[start_index + len(start_str):end_index]
|
||||||
|
return middle_text.replace("\\", "")
|
||||||
|
|
||||||
|
if pl == 1:
|
||||||
|
middle_text = text[start_index + len(start_str):end_index]
|
||||||
|
matches = re.findall(start_index1, middle_text)
|
||||||
|
if matches:
|
||||||
|
jg = ' '.join(matches)
|
||||||
|
return jg
|
||||||
|
|
||||||
|
if pl == 2:
|
||||||
|
middle_text = text[start_index + len(start_str):end_index]
|
||||||
|
matches = re.findall(start_index1, middle_text)
|
||||||
|
if matches:
|
||||||
|
new_list = [f'{item}' for item in matches]
|
||||||
|
jg = '$$$'.join(new_list)
|
||||||
|
return jg
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
result = {}
|
||||||
|
result = {"class": [{"type_id": "1", "type_name": "七星剧场"},
|
||||||
|
{"type_id": "3", "type_name": "七星新剧"},
|
||||||
|
{"type_id": "2", "type_name": "七星热播"},
|
||||||
|
{"type_id": "7", "type_name": "七星星选"},
|
||||||
|
{"type_id": "5", "type_name": "七星阳光"}],
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
videos = []
|
||||||
|
|
||||||
|
url= f'{xurl}/v1/theater/home_page?theater_class_id=1&class2_id=4&page_num=1&page_size=24'
|
||||||
|
detail = requests.get(url=url, headers=headerx)
|
||||||
|
detail.encoding = "utf-8"
|
||||||
|
if detail.status_code == 200:
|
||||||
|
data = detail.json()
|
||||||
|
|
||||||
|
for vod in data['data']['list']:
|
||||||
|
|
||||||
|
name = vod['theater']['title']
|
||||||
|
|
||||||
|
id = vod['theater']['id']
|
||||||
|
|
||||||
|
pic = vod['theater']['cover_url']
|
||||||
|
|
||||||
|
remark = vod['theater']['play_amount_str']
|
||||||
|
|
||||||
|
video = {
|
||||||
|
"vod_id": id,
|
||||||
|
"vod_name": name,
|
||||||
|
"vod_pic": pic,
|
||||||
|
"vod_remarks": remark
|
||||||
|
}
|
||||||
|
videos.append(video)
|
||||||
|
|
||||||
|
result = {'list': videos}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def categoryContent(self, cid, pg, filter, ext):
|
||||||
|
result = {}
|
||||||
|
videos = []
|
||||||
|
|
||||||
|
url = f'{xurl}/v1/theater/home_page?theater_class_id={cid}&page_num={pg}&page_size=24'
|
||||||
|
detail = requests.get(url=url,headers=headerx)
|
||||||
|
detail.encoding = "utf-8"
|
||||||
|
if detail.status_code == 200:
|
||||||
|
data = detail.json()
|
||||||
|
|
||||||
|
for vod in data['data']['list']:
|
||||||
|
|
||||||
|
name = vod['theater']['title']
|
||||||
|
|
||||||
|
id = vod['theater']['id']
|
||||||
|
|
||||||
|
pic = vod['theater']['cover_url']
|
||||||
|
|
||||||
|
remark = vod['theater']['theme']
|
||||||
|
|
||||||
|
video = {
|
||||||
|
"vod_id": id,
|
||||||
|
"vod_name": name,
|
||||||
|
"vod_pic": pic,
|
||||||
|
"vod_remarks": remark
|
||||||
|
}
|
||||||
|
videos.append(video)
|
||||||
|
|
||||||
|
result = {'list': videos}
|
||||||
|
result['page'] = pg
|
||||||
|
result['pagecount'] = 9999
|
||||||
|
result['limit'] = 90
|
||||||
|
result['total'] = 999999
|
||||||
|
return result
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
did = ids[0]
|
||||||
|
result = {}
|
||||||
|
videos = []
|
||||||
|
xianlu = ''
|
||||||
|
bofang = ''
|
||||||
|
|
||||||
|
url = f'{xurl}/v2/theater_parent/detail?theater_parent_id={did}'
|
||||||
|
detail = requests.get(url=url, headers=headerx)
|
||||||
|
detail.encoding = "utf-8"
|
||||||
|
if detail.status_code == 200:
|
||||||
|
data = detail.json()
|
||||||
|
|
||||||
|
url = 'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1732707176882/jiduo.txt'
|
||||||
|
response = requests.get(url)
|
||||||
|
response.encoding = 'utf-8'
|
||||||
|
code = response.text
|
||||||
|
name = self.extract_middle_text(code, "s1='", "'", 0)
|
||||||
|
Jumps = self.extract_middle_text(code, "s2='", "'", 0)
|
||||||
|
|
||||||
|
content = '剧情:' + data['data']['introduction']
|
||||||
|
|
||||||
|
area = data['data']['desc_tags'][0]
|
||||||
|
|
||||||
|
remarks = data['data']['filing']
|
||||||
|
|
||||||
|
# 修复剧集只有一集的问题 - 检查theaters数据是否存在且不为空
|
||||||
|
if 'theaters' in data['data'] and data['data']['theaters']:
|
||||||
|
for sou in data['data']['theaters']:
|
||||||
|
id = sou['son_video_url']
|
||||||
|
name = sou['num']
|
||||||
|
bofang = bofang + str(name) + '$' + id + '#'
|
||||||
|
|
||||||
|
bofang = bofang[:-1] if bofang.endswith('#') else bofang
|
||||||
|
xianlu = '七星'
|
||||||
|
else:
|
||||||
|
# 如果没有theaters数据,检查是否有单个视频URL
|
||||||
|
if 'video_url' in data['data'] and data['data']['video_url']:
|
||||||
|
bofang = '1$' + data['data']['video_url']
|
||||||
|
xianlu = '七星'
|
||||||
|
else:
|
||||||
|
bofang = Jumps
|
||||||
|
xianlu = '1'
|
||||||
|
|
||||||
|
videos.append({
|
||||||
|
"vod_id": did,
|
||||||
|
"vod_content": content,
|
||||||
|
"vod_remarks": remarks,
|
||||||
|
"vod_area": area,
|
||||||
|
"vod_play_from": xianlu,
|
||||||
|
"vod_play_url": bofang
|
||||||
|
})
|
||||||
|
|
||||||
|
result['list'] = videos
|
||||||
|
return result
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
|
||||||
|
result = {}
|
||||||
|
result["parse"] = 0
|
||||||
|
result["playUrl"] = ''
|
||||||
|
result["url"] = id
|
||||||
|
result["header"] = headers
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContentPage(self, key, quick, page):
|
||||||
|
result = {}
|
||||||
|
videos = []
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"text": key
|
||||||
|
}
|
||||||
|
|
||||||
|
url = f"{xurl}/v3/search"
|
||||||
|
detail = requests.post(url=url, headers=headerx, json=payload)
|
||||||
|
if detail.status_code == 200:
|
||||||
|
detail.encoding = "utf-8"
|
||||||
|
data = detail.json()
|
||||||
|
|
||||||
|
for vod in data['data']['theater']['search_data']:
|
||||||
|
|
||||||
|
name = vod['title']
|
||||||
|
|
||||||
|
id = vod['id']
|
||||||
|
|
||||||
|
pic = vod['cover_url']
|
||||||
|
|
||||||
|
remark = vod['score_str']
|
||||||
|
|
||||||
|
video = {
|
||||||
|
"vod_id": id,
|
||||||
|
"vod_name": name,
|
||||||
|
"vod_pic": pic,
|
||||||
|
"vod_remarks": remark
|
||||||
|
}
|
||||||
|
videos.append(video)
|
||||||
|
|
||||||
|
result['list'] = videos
|
||||||
|
result['page'] = page
|
||||||
|
result['pagecount'] = 9999
|
||||||
|
result['limit'] = 90
|
||||||
|
result['total'] = 999999
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg="1"):
|
||||||
|
return self.searchContentPage(key, quick, '1')
|
||||||
|
|
||||||
|
def localProxy(self, params):
|
||||||
|
if params['type'] == "m3u8":
|
||||||
|
return self.proxyM3u8(params)
|
||||||
|
elif params['type'] == "media":
|
||||||
|
return self.proxyMedia(params)
|
||||||
|
elif params['type'] == "ts":
|
||||||
|
return self.proxyTs(params)
|
||||||
|
return None
|
||||||
36
jtxtv09/js/武享吧.js
Normal file
36
jtxtv09/js/武享吧.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'武享吧',
|
||||||
|
host:'https://www.hula8.net',
|
||||||
|
url: '/fyclass/page/fypage',
|
||||||
|
searchUrl: '/page/fypage/?s=**',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
headers:{
|
||||||
|
'User-Agent': 'PC_UA',
|
||||||
|
'Referer': 'https://www.hula8.net/',
|
||||||
|
'Cookie':'esc_search_captcha=1;result=12'
|
||||||
|
},
|
||||||
|
timeout:5000,//网站的全局请求超时,默认是3000毫秒
|
||||||
|
class_parse: '#menu-xinjian&&li;a&&Text;a&&href;net/(.*)',
|
||||||
|
play_parse:true,
|
||||||
|
cate_exclude:'首 页|赛事预告|美国格斗赛|亚洲格斗赛|其他格斗赛|日本搏击赛|裸拳赛',
|
||||||
|
limit:6,
|
||||||
|
推荐: 'div.apc-grid-item;*;*;.views&&Text;a&&href',
|
||||||
|
一级: '.site-main&&article;img&&alt;img&&data-original;.grid-inf-l&&Text;a&&href',
|
||||||
|
二级: {
|
||||||
|
"title": "h1&&Text;.module-info-tag&&Text",
|
||||||
|
"img": ".aligncenter&&data-original",
|
||||||
|
"desc": ";;;.views:eq(0)&&Text;",
|
||||||
|
"content": "h1&&Text",
|
||||||
|
"tabs": "js:TABS=['道长在线']",
|
||||||
|
"lists": `js:
|
||||||
|
var html = JSON.parse(request(input).match(/var bevideo_vids_.*?=({[\\s\\S]*?});/)[1]);
|
||||||
|
let list = [];
|
||||||
|
list = html.m3u8dplayer.map(function(item) {
|
||||||
|
return item.pre + "$" + item.video
|
||||||
|
});
|
||||||
|
LISTS = [list];
|
||||||
|
`
|
||||||
|
},
|
||||||
|
搜索: '*;*;*;.entry-meta&&Text;*',
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user