添加新配置

This commit is contained in:
qist
2023-09-11 11:59:56 +08:00
parent 5cecf0d2d9
commit a444383e1c
84 changed files with 8272 additions and 1934 deletions
-253
View File
@@ -1,253 +0,0 @@
// 网站搜索异常
import { load, _ } from './lib/cat.js';
let key = '爱上你听书网';
let HOST = 'https://wap.230ts.net';
let siteKey = '';
let siteType = 0;
const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36';
async function request(reqUrl, agentSp) {
let res = await req(reqUrl, {
method: 'get',
headers: {
'User-Agent': agentSp || MOBILE_UA,
'Referer': HOST
},
});
return res.content;
}
// cfg = {skey: siteKey, ext: extend}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
}
async function home(filter) {
const html = await request(HOST + '/sort/');
const $ = load(html);
let filterObj = {};
const class_parse = $('dl.pd-class:first > dd > a[href*=sort]');
let classes = [];
classes = _.map(class_parse, (cls) => {
let typeId = cls.attribs['href'];
typeId = typeId.replace(/.*?\/sort\/(.*).html/g, '$1');
return {
type_id: typeId,
type_name: cls.children[0].data,
};
});
const sortName = ['玄幻有声', '灵异有声', '综艺娱乐', '长篇评书', '都市有声', '军事有声', '职场有声', '其他有声'];
classes = _.sortBy(classes, (c) => {
const index = sortName.indexOf(c.type_name);
return index === -1 ? sortName.length : index;
});
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
const link = HOST + '/top/lastupdate/1.html';
const html = await request(link);
const $ = load(html);
const items = $('ul.list-ul > li');
let videos = _.map(items, (item) => {
const it = $(item).find('a:first')[0];
const img = $(item).find('img:first')[0];
const remarks = $($(item).find('p.module-slide-author')[0]).text().trim();
return {
vod_id: it.attribs.href.replace(/.*?\/tingshu\/(.*)/g, '$1'),
vod_name: it.attribs.title.replace('有声小说',''),
vod_pic: HOST + img.attribs['data-original'],
vod_remarks: remarks || '',
};
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg <= 0) pg = 1;
const link = HOST + '/sort/' + tid +'/' + (`${pg}`) + '.html';
const html = await request(link);
const $ = load(html);
const items = $('ul.book-ol > li');
let videos = _.map(items, (item) => {
const it = $(item).find('a:first')[0];
const img = $(item).find('img:first')[0];
const remarks = $($(item).find('div.book-meta')[0]).text().trim();
return {
vod_id: it.attribs.href.replace(/.*?\/tingshu\/(.*)/g, '$1'),
vod_name: it.attribs.title.replace('有声小说',''),
vod_pic: HOST + img.attribs['data-original'],
vod_remarks: remarks.replace('佚名(著)','').replace('佚名(播)','').replace('未知(著)','').replace('未知(播)','') || '',
};
});
const hasMore = $('div.paging > a:contains(下一页)').length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 24,
total: 24 * pgCount,
list: videos,
});
}
async function detail(id) {
const html = await request(HOST + '/tingshu/' + id);
const $ = load(html);
const detail = $('div.book-cell:first > div');
let vod = {
vod_id: id,
vod_name: $('h1:first').text().trim().replace('有声小说',''),
vod_pic: HOST + $('div.myui-content__thumb img:first').attr('data-original'),
vod_content: $('div.ellipsis').text().trim(),
};
for (const info of detail) {
const i = $(info).text().trim();
if (i.startsWith('类型:')) {
vod.vod_type = _.map($(info).find('a'), (a) => {
return a.children[0].data;
}).join('/');
} else if (i.startsWith('作者:')) {
vod.vod_director = _.map($(info).find('a'), (a) => {
return a.children[0].data;
}).join('/');
} else if (i.startsWith('演播:')) {
vod.vod_actor = _.map($(info).find('a'), (a) => {
return a.children[0].data;
}).join('/');
} else if (i.startsWith('连载中')) {
vod.vod_remarks = i.substring(3);
}
}
const playlist = _.map($('#playlist > ul > li > a'), (it) => {
return it.children[0].data + '$' + it.attribs.href.replace(/\/mp3\/(.*).html/g, '$1');
});
vod.vod_play_from = '道长在线';
vod.vod_play_url = playlist.join('#');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
const link = HOST + '/mp3/' + id + '.html';
const html = await request(link);
const $ = load(html);
const iframe = $('body iframe[src*=player]');
const iframeHtml = (
await req(HOST + iframe[0].attribs.src, {
headers: {
'Referer': link,
'User-Agent': MOBILE_UA,
},
})
).content;
const playUrl = iframeHtml.match(/mp3:'(.*?)'/)[1];
if (playUrl.indexOf('m4a') >= 0 || playUrl.indexOf('mp3') >= 0 ) {
return JSON.stringify({
parse: 0,
url: playUrl,
});
} else {
try {
const iframeHtml = (
await req(HOST + iframe[0].attribs.src, {
headers: {
'Referer': link,
'User-Agent': MOBILE_UA,
},
})
).content;
const playUrl = playUrl + '.m4a' + iframeHtml.match(/(\?.*?)'/)[1];
if (playUrl.indexOf('http') >= 0) {
return JSON.stringify({
parse: 0,
url: playUrl,
});
} else {
const iframeHtml = (
await req(HOST + iframe[0].attribs.src, {
headers: {
'Referer': link,
'User-Agent': MOBILE_UA,
},
})
).content;
const playUrl2 = iframeHtml.match(/url[\s\S]*?(http.*?)'/)[1];
if (playUrl2.indexOf('\?') >= 0) {
return JSON.stringify({
parse: 0,
url: playUrl2,
});
} else {
const playUrl3 = playUrl2 + playUrl
return JSON.stringify({
parse: 0,
url: playUrl3,
});
}
}
} catch (e) {}
if (playUrl.indexOf('http') >= 0) {
const playUrl = playUrl + '.m4a';
return JSON.stringify({
parse: 0,
url: playUrl,
});
} else {
const iframeHtml = (
await req(HOST + iframe[0].attribs.src, {
headers: {
'Referer': link,
'User-Agent': MOBILE_UA,
},
})
).content;
const playUrl4 = iframeHtml.match(/url[\s\S]*?(http.*?)'/)[1];
return JSON.stringify({
parse: 0,
url: playUrl4 + '.m4a',
});
}
}
}
async function search(wd, quick) {
const link = HOST + '/search.html?searchtype=name&searchword=' + wd +'&page=1';
const html = await request(link);
const $ = load(html);
const items = $('ul.book-ol > li');
let videos = _.map(items, (item) => {
const it = $(item).find('a:first')[0];
const img = $(item).find('img:first')[0];
const remarks = $($(item).find('div.book-meta')[0]).text().trim();
return {
vod_id: it.attribs.href.replace(/.*?\/tingshu\/(.*)/g, '$1'),
vod_name: it.attribs.title.replace('有声小说',''),
vod_pic: img.attribs['data-original'],
vod_remarks: remarks.replace('佚名(著)','').replace('佚名(播)','').replace('未知(著)','').replace('未知(播)','') || '',
};
});
return JSON.stringify({
list: videos,
});
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
+2 -2
View File
@@ -45,9 +45,9 @@ let tabse = false;
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
+203
View File
@@ -0,0 +1,203 @@
var rule = {
title:'高清MP4吧',
host:'https://www.97tvs.com',
homeUrl: '/',
url: '/fyclass/page/fypage?',
filter_url:'{{fl.class}}',
filter:{
},
searchUrl: '/?s=**',
searchable:2,
quickSearch:0,
filterable:0,
headers:{
'User-Agent': 'PC_UA',
'Cookie':'',
'Referer': 'http://www.97tvs.com/'
},
图片来源:'@Headers={"Accept":"*/*","Referer":"https://www.97tvs.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"}',
timeout:5000,
class_name: "动作片&科幻片&爱情片&喜剧片&剧情片&惊悚片&战争片&灾难片&罪案片&动画片&综艺&电视剧",
class_url: "action&science&love&comedy&story&thriller&war&disaster&crime&cartoon&variety&sitcoms",
play_parse:true,
play_json:[{
re:'*',
json:{
parse:0,
jx:0
}
}],
lazy:'',
limit:6,
推荐:`js:
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
let d = [];
let html = request(input);
let list = pdfa(html, 'div.mainleft ul#post_container li');
list.forEach(it => {
d.push({
title: pdfh(it, 'div.thumbnail img&&alt'),
desc: pdfh(it, 'div.info&&span.info_date&&Text') + ' / ' + pdfh(it, 'div.info&&span.info_category&&Text'),
pic_url: pd(it, 'div.thumbnail img&&src', HOST),
url: pd(it, 'div.thumbnail&&a&&href',HOST)
});
});
setResult(d);
`,
一级:`js:
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
let d = [];
let html = request(input);
let list = pdfa(html, 'div.mainleft ul#post_container li');
list.forEach(it => {
d.push({
title: pdfh(it, 'div.thumbnail img&&alt'),
desc: pdfh(it, 'div.info&&span.info_date&&Text') + ' / ' + pdfh(it, 'div.info&&span.info_category&&Text'),
pic_url: pd(it, 'div.thumbnail img&&src', HOST),
url: pd(it, 'div.thumbnail&&a&&href',HOST)
});
})
setResult(d);
`,
二级:{
title:"div.article_container h1&&Text",
img:"div#post_content img&&src",
desc:"div#post_content&&Text",
content:"div#post_content&&Text",
tabs:`js:
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
TABS=[]
let d = pdfa(html, 'div#post_content p');
let tabsa = [];
let tabsq = [];
let tabsm = false;
let tabse = false;
let tabm3u8 = [];
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里雲盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克網盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
tabse = true;
}
});
if (tabsm === true){
TABS.push("磁力");
}
if (tabse === true){
TABS.push("電驢");
}
let tmpIndex;
tmpIndex=1;
tabsa.forEach(function(it){
TABS.push(it + tmpIndex);
tmpIndex = tmpIndex + 1;
});
tmpIndex=1;
tabsq.forEach(function(it){
TABS.push(it + tmpIndex);
tmpIndex = tmpIndex + 1;
});
tabm3u8.forEach(function(it){
TABS.push(it);
});
log('97tvs TABS >>>>>>>>>>>>>>>>>>' + TABS);
`,
lists:`js:
log(TABS);
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
LISTS = [];
let d = pdfa(html, 'div#post_content p');
let lista = [];
let listq = [];
let listm = [];
let liste = [];
let listm3u8 = {};
d.forEach(function(it){
let burl = pdfh(it, 'a&&href');
let title = pdfh(it, 'a&&Text');
log('97tvs title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
log('97tvs burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
let loopresult = title + '$' + burl;
if (burl.startsWith("https://www.aliyundrive.com/s/")){
if (true){
if (TABS.length==1){
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&confirm=0&url=" + encodeURIComponent(burl);
}else{
burl = "http://127.0.0.1:9978/proxy?do=ali&type=push&url=" + encodeURIComponent(burl);
}
}else{
burl = "push://" + burl;
}
loopresult = title + '$' + burl;
lista.push(loopresult);
}else if (burl.startsWith("https://pan.quark.cn/s/")){
if (true){
if (TABS.length==1){
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&confirm=0&url=" + encodeURIComponent(burl);
}else{
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&url=" + encodeURIComponent(burl);
}
}else{
burl = "push://" + burl;
}
loopresult = title + '$' + burl;
listq.push(loopresult);
}else if (burl.startsWith("magnet")){
listm.push(loopresult);
}else if (burl.startsWith("ed2k")){
liste.push(loopresult);
}
});
if (listm.length>0){
LISTS.push(listm);
}
if (liste.length>0){
LISTS.push(liste);
}
lista.forEach(function(it){
LISTS.push([it]);
});
listq.forEach(function(it){
LISTS.push([it]);
});
for ( const key in listm3u8 ){
if (listm3u8.hasOwnProperty(key)){
LISTS.push(listm3u8[key]);
}
};
`,
},
搜索:`js:
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
let search_html = request(input)
//log("97tvs search result>>>>>>>>>>>>>>>" + search_html);
let d=[];
let dlist = pdfa(search_html, 'div.mainleft ul#post_container li');
dlist.forEach(function(it){
let title = pdfh(it, 'div.thumbnail img&&alt').replace( /(<([^>]+)>)/ig, '');
if (searchObj.quick === true){
if (false && title.includes(KEY)){
title = KEY;
}
}
let img = pd(it, 'div.thumbnail img&&src', HOST);
let content = pdfh(it, 'div.article div.entry_post&&Text');
let desc = pdfh(it, 'div.info&&span.info_date&&Text');
let url = pd(it, 'div.thumbnail&&a&&href', HOST);
d.push({
title:title,
img:img,
content:content,
desc:desc,
url:url
});
});
setResult(d);
`,
}
+1 -1
View File
@@ -44,7 +44,7 @@ d.forEach(function(it) {
if (!/(猜你|喜欢|剧情|热播)/.test(name)){
log("libvio tabs name>>>>>>>>>>>>>>>" + name);
if (name.includes("夸克")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (name.includes("阿里")){
tabsq.push("阿里雲盤");
}else{
+1 -1
View File
@@ -38,7 +38,7 @@ var rule = {
tabs:`js:
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
TABS=[]
TABS.push("夸克盤");
TABS.push("夸克盤");
log('meijumi TABS >>>>>>>>>>>>>>>>>>' + TABS);
`,
lists:`js:
-8
View File
@@ -1,8 +0,0 @@
function __jsEvalReturn() {
return {
isVideoFormat: function (url) {
return !0;
},
};
}
export { __jsEvalReturn };
-618
View File
@@ -1,618 +0,0 @@
import { Crypto, jinja2, _ } from 'assets://js/lib/cat.js';
let siteKey = '';
let siteType = 0;
let cookie = '';
let login = '';
let vip = false;
let extendObj = {};
let bili_jct = '';
let vod_audio_id = {
30280: 192000,
30232: 132000,
30216: 64000,
};
let vod_codec = {
// 13: 'AV1',
12: 'HEVC',
7: 'AVC',
};
const UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36';
async function request(reqUrl, ua, buffer) {
let res = await req(reqUrl, {
method: 'get',
headers: ua ? ua : { 'User-Agent': UA },
timeout: 60000,
buffer: buffer ? 1 : 0,
});
return res.content;
}
async function post(reqUrl, postData, ua, posttype) {
let res = await req(reqUrl, {
method: 'post',
headers: ua ? ua : { 'User-Agent': UA },
data: postData,
timeout: 60000,
postType: posttype,
});
return res.content;
}
function getHeaders() {
const headers = {
'User-Agent': UA,
};
if (!_.isEmpty(cookie)) {
headers.cookie = cookie;
}
return headers;
}
async function getCookie() {
let result = await req('https://www.bilibili.com', {
method: 'get',
headers: { 'User-Agent': UA },
timeout: 60000,
});
const setCookieHeaders = result.headers['set-cookie'];
cookie = setCookieHeaders.map((kk) => kk.split(';')[0] + ';').join('');
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
let extend = cfg.ext;
if (cfg.ext.hasOwnProperty('categories')) extend = cfg.ext.categories;
if (cfg.ext.hasOwnProperty('cookie')) cookie = cfg.ext.cookie;
// 获取csrf
const cookies = cookie.split(';');
cookies.forEach(cookie => {
if (cookie.includes('bili_jct')) {
bili_jct = cookie.split('=')[1];
}
});
if (_.isEmpty(cookie)) await getCookie();
let result = JSON.parse(await request('https://api.bilibili.com/x/web-interface/nav', getHeaders()));
login = result.data.isLogin;
vip = result.data.vipStatus;
const ext = extend.split('#');
const jsonData = [
{
key: 'order',
name: '排序',
value: [
{ n: '综合排序', v: '0' },
{ n: '最多点击', v: 'click' },
{ n: '最新发布', v: 'pubdate' },
{ n: '最多弹幕', v: 'dm' },
{ n: '最多收藏', v: 'stow' },
],
},
{
key: 'duration',
name: '时长',
value: [
{ n: '全部时长', v: '0' },
{ n: '60分钟以上', v: '4' },
{ n: '30~60分钟', v: '3' },
{ n: '10~30分钟', v: '2' },
{ n: '10分钟以下', v: '1' },
],
},
];
const newarr = [];
const d = {};
const sc = {
type_name: "首页",
type_id: "首页",
land: 1,
ratio: 1.33,
}
newarr.push(sc);
for (const kk of ext) {
const c = {
type_name: kk,
type_id: kk,
land: 1,
ratio: 1.33,
};
newarr.push(c);
d[kk] = jsonData;
}
if (!_.isEmpty(bili_jct)) {
const hc = {
type_name: "历史记录",
type_id: "历史记录",
land: 1,
ratio: 1.33,
}
newarr.push(hc);
}
extendObj = {
classes: newarr,
filter: d,
};
}
function home(filter) {
try {
const jSONObject = {
class: extendObj.classes,
};
if (filter) {
jSONObject.filters = extendObj.filter;
}
return JSON.stringify(jSONObject);
} catch (e) {
return '';
}
}
async function homeVod() {
try {
const list = [];
const url = 'https://api.bilibili.com/x/web-interface/index/top/rcmd?ps=14&fresh_idx=1&fresh_idx_1h=1';
const response = await request(url, getHeaders());
const responseData = JSON.parse(response);
const vods = responseData.data.item;
for (const item of vods) {
const vod = {};
let imageUrl = item.pic;
if (imageUrl.startsWith('//')) {
imageUrl = 'https:' + imageUrl;
}
let cd = getFullTime(item.duration);
vod.vod_id = item.bvid;
vod.vod_name = removeTags(item.title);
vod.vod_pic = imageUrl;
vod.vod_remarks = cd;
vod.style = {
type: 'rect',
ratio: 1.33,
},
list.push(vod);
}
const result = { list: list };
return JSON.stringify(result);
} catch (e) { }
}
async function category(tid, page, filter, ext) {
if (page < 1) page = 1;
try {
if (Object.keys(ext).length > 0 && ext.hasOwnProperty('tid') && ext['tid'].length > 0) {
tid = ext['tid'];
}
let url = '';
url = `https://api.bilibili.com/x/web-interface/search/type?search_type=video&keyword=${encodeURIComponent(tid)}`;
if (Object.keys(ext).length > 0) {
for (const k in ext) {
if (k == 'tid') {
continue;
}
url += `&${encodeURIComponent(k)}=${encodeURIComponent(ext[k])}`;
}
}
url += `&page=${encodeURIComponent(page)}`;
if (tid == "首页") {
url = "https://api.bilibili.com/x/web-interface/index/top/rcmd?ps=14&fresh_idx=" + page + "&fresh_idx_1h=" + page;
} else if (tid == "历史记录") {
url = "https://api.bilibili.com/x/v2/history?pn=" + page;
}
const data = JSON.parse(await request(url, getHeaders())).data;
let items = data.result;
if (tid == "首页") {
items = data.item;
} else if (tid == "历史记录") {
items = data;
}
const videos = [];
for (const item of items) {
const video = {};
let pic = item.pic;
if (pic.startsWith('//')) {
pic = 'https:' + pic;
}
let cd = getFullTime(item.duration);
video.vod_remarks = cd;
video.vod_id = item.bvid;
video.vod_name = removeTags(item.title);
video.vod_pic = pic;
video.style = {
type: 'rect',
ratio: 1.33,
},
videos.push(video);
}
const result = {
page: page,
pagecount: data.numPages ?? (page + 1),
limit: videos.length,
total: videos.length * (page + 1),
list: videos,
};
return JSON.stringify(result);
} catch (e) { }
return null;
}
async function detail(ids) {
try {
const bvid = ids;
const detailUrl = `https://api.bilibili.com/x/web-interface/view?bvid=${bvid}`;
const detailData = JSON.parse(await request(detailUrl, getHeaders())).data;
// 记录历史
if (!_.isEmpty(bili_jct)) {
const historyReport = 'https://api.bilibili.com/x/v2/history/report';
let dataPost = {
aid: detailData.aid,
cid: detailData.cid,
csrf: bili_jct,
}
await post(historyReport, dataPost, getHeaders(), 'form');
}
let cd = getFullTime(detailData.duration);
const aid = detailData.aid;
const video = {
vod_id: bvid,
vod_name: detailData.title,
vod_pic: detailData.pic,
type_name: detailData.tname,
vod_year: '',
vod_area: '',
vod_remarks: cd,
vod_actor: '',
vod_director: '',
vod_content: detailData.desc,
};
const playurldata = 'https://api.bilibili.com/x/player/playurl?avid=' + aid + '&cid=' + detailData.cid + '&qn=127&fnval=4048&fourk=1';
const playurldatas = JSON.parse(await request(playurldata, getHeaders()));
const playurldatalist = playurldatas.data;
const accept_quality = playurldatalist.accept_quality;
const accept_description = playurldatalist.accept_description;
const qualitylist = [];
const descriptionList = [];
for (let i = 0; i < accept_quality.length; i++) {
if (!vip) {
if (!login) {
if (accept_quality[i] > 32) continue;
} else {
if (accept_quality[i] > 80) continue;
}
}
descriptionList.push(base64Encode(accept_description[i]));
qualitylist.push(accept_quality[i]);
}
let treeMap = {};
const jSONArray = detailData.pages;
let playList = [];
for (let j = 0; j < jSONArray.length; j++) {
const jSONObject6 = jSONArray[j];
const cid = jSONObject6.cid;
const playUrl = j + '$' + aid + '+' + cid + '+' + qualitylist.join(':') + '+' + descriptionList.join(':');
playList.push(playUrl);
}
treeMap['dash'] = playList.join('#');
treeMap['mp4'] = playList.join('#');
const relatedUrl = 'https://api.bilibili.com/x/web-interface/archive/related?bvid=' + bvid;
const relatedData = JSON.parse(await request(relatedUrl, getHeaders())).data;
playList = [];
for (let j = 0; j < relatedData.length; j++) {
const jSONObject6 = relatedData[j];
const cid = jSONObject6.cid;
const title = jSONObject6.title;
const aaid = jSONObject6.aid;
const playUrl = title + '$' + aaid + '+' + cid + '+' + qualitylist.join(':') + '+' + descriptionList.join(':');
playList.push(playUrl);
}
treeMap['相关'] = playList.join('#');
video.vod_play_from = Object.keys(treeMap).join("$$$");
video.vod_play_url = Object.values(treeMap).join("$$$");
const list = [video];
const result = { list };
return JSON.stringify(result);
} catch (e) { }
return null;
}
async function play(flag, id, flags) {
try {
const playHeaders = { Referer: 'https://www.bilibili.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' };
const ids = id.split('+');
const aid = ids[0];
const cid = ids[1];
const qualityIds = ids[2].split(':');
const qualityName = ids[3].split(':');
if (flag == 'dash' || flag == '相关') {
// dash mpd 代理
const js2Base = await js2Proxy(true, siteType, siteKey, 'dash/', {});
let urls = [];
for (let i = 0; i < qualityIds.length; i++) {
urls.push(base64Decode(qualityName[i]), js2Base + base64Encode(aid + '+' + cid + '+' + qualityIds[i]));
}
return JSON.stringify({
parse: 0,
url: urls,
header: playHeaders,
});
} else if (flag == 'mp4') {
// 直链
let urls = [];
for (let i = 0; i < qualityIds.length; i++) {
const url = `https://api.bilibili.com/x/player/playurl?avid=${aid}&cid=${cid}&qn=${qualityIds[i]}&fourk=1`;
const resp = JSON.parse(await request(url, getHeaders()));
const data = resp.data;
if (data.quality != qualityIds[i]) continue;
let durl = data.durl[0].url;
urls.push(base64Decode(qualityName[i]), durl);
}
return JSON.stringify({
parse: 0,
url: urls,
header: playHeaders,
});
} else {
// 音频外挂
let urls = [];
let audios = [];
for (let i = 0; i < qualityIds.length; i++) {
const url = `https://api.bilibili.com/x/player/playurl?avid=${aid}&cid=${cid}&qn=${qualityIds[i]}&fnval=4048&fourk=1`;
let resp = JSON.parse(await request(url, getHeaders()));
const dash = resp.data.dash;
const video = dash.video;
const audio = dash.audio;
for (let j = 0; j < video.length; j++) {
const dashjson = video[j];
if (dashjson.id == qualityIds[i]) {
for (const key in vod_codec) {
if (dashjson.codecid == key) {
urls.push(base64Decode(qualityName[i]) + ' ' + vod_codec[key], dashjson.baseUrl);
}
}
}
}
if (audios.length == 0) {
for (let j = 0; j < audio.length; j++) {
const dashjson = audio[j];
for (const key in vod_audio_id) {
if (dashjson.id == key) {
audios.push({
title: _.floor(parseInt(vod_audio_id[key]) / 1024) + 'Kbps',
bit: vod_audio_id[key],
url: dashjson.baseUrl,
});
}
}
}
audios = _.sortBy(audios, 'bit');
}
}
return JSON.stringify({
parse: 0,
url: urls,
extra: {
audio: audios,
},
header: playHeaders,
});
}
} catch (e) { }
return null;
}
async function search(key, quick, pg) {
let page = pg || 1;
if (page == 0) page = 1;
try {
const ext = {
duration: '0',
};
let resp = JSON.parse(await category(key, page, true, ext));
const catVideos = resp.list;
const pageCount = resp.pagecount;
const videos = [];
for (let i = 0; i < catVideos.length; ++i) {
videos.push(catVideos[i]);
}
const result = {
page: page,
pagecount: pageCount,
land: 1,
ratio: 1.33,
list: videos,
};
return JSON.stringify(result);
} catch (e) { }
return null;
}
async function proxy(segments, headers) {
let what = segments[0];
let url = base64Decode(segments[1]);
if (what == 'dash') {
const ids = url.split('+');
const aid = ids[0];
const cid = ids[1];
const str5 = ids[2];
const urls = `https://api.bilibili.com/x/player/playurl?avid=${aid}&cid=${cid}&qn=${str5}&fnval=4048&fourk=1`;
let videoList = '';
let audioList = '';
let resp = JSON.parse(await request(urls, getHeaders()));
const dash = resp.data.dash;
const video = dash.video;
const audio = dash.audio;
for (let i = 0; i < video.length; i++) {
// if (i > 0) continue; // 只取一个
const dashjson = video[i];
if (dashjson.id == str5) {
videoList += getDashMedia(dashjson);
}
}
for (let i = 0; i < audio.length; i++) {
// if (i > 0) continue;
const ajson = audio[i];
for (const key in vod_audio_id) {
if (ajson.id == key) {
audioList += getDashMedia(ajson);
}
}
}
let mpd = getDash(resp, videoList, audioList);
return JSON.stringify({
code: 200,
content: mpd,
headers: {
'Content-Type': 'application/dash+xml',
},
});
}
return JSON.stringify({
code: 500,
content: '',
});
}
function getDashMedia(dash) {
try {
let qnid = dash.id;
const codecid = dash.codecid;
const media_codecs = dash.codecs;
const media_bandwidth = dash.bandwidth;
const media_startWithSAP = dash.startWithSap;
const media_mimeType = dash.mimeType;
const media_BaseURL = dash.baseUrl.replace(/&/g, '&amp;');
const media_SegmentBase_indexRange = dash.SegmentBase.indexRange;
const media_SegmentBase_Initialization = dash.SegmentBase.Initialization;
const mediaType = media_mimeType.split('/')[0];
let media_type_params = '';
if (mediaType == 'video') {
const media_frameRate = dash.frameRate;
const media_sar = dash.sar;
const media_width = dash.width;
const media_height = dash.height;
media_type_params = `height='${media_height}' width='${media_width}' frameRate='${media_frameRate}' sar='${media_sar}'`;
} else if (mediaType == 'audio') {
for (const key in vod_audio_id) {
if (qnid == key) {
const audioSamplingRate = vod_audio_id[key];
media_type_params = `numChannels='2' sampleRate='${audioSamplingRate}'`;
}
}
}
qnid += '_' + codecid;
return `<AdaptationSet lang="chi">
<ContentComponent contentType="${mediaType}"/>
<Representation id="${qnid}" bandwidth="${media_bandwidth}" codecs="${media_codecs}" mimeType="${media_mimeType}" ${media_type_params} startWithSAP="${media_startWithSAP}">
<BaseURL>${media_BaseURL}</BaseURL>
<SegmentBase indexRange="${media_SegmentBase_indexRange}">
<Initialization range="${media_SegmentBase_Initialization}"/>
</SegmentBase>
</Representation>
</AdaptationSet>`;
} catch (e) {
// Handle exceptions here
}
}
function getDash(ja, videoList, audioList) {
const duration = ja.data.dash.duration;
const minBufferTime = ja.data.dash.minBufferTime;
return `<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:mpeg:dash:schema:mpd:2011" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" type="static" mediaPresentationDuration="PT${duration}S" minBufferTime="PT${minBufferTime}S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<Period duration="PT${duration}S" start="PT0S">
${videoList}
${audioList}
</Period>
</MPD>`;
}
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));
}
function removeTags(input) {
return input.replace(/<[^>]*>/g, '');
}
function getFullTime(numberSec) {
let totalSeconds = '';
try {
var timeParts = numberSec.split(":");
var min = parseInt(timeParts[0]);
var sec = parseInt(timeParts[1]);
totalSeconds = min * 60 + sec;
} catch (e) {
totalSeconds = parseInt(numberSec);
}
if (isNaN(totalSeconds)) {
return '无效输入';
}
if (totalSeconds >= 3600) {
const hours = Math.floor(totalSeconds / 3600);
const remainingSecondsAfterHours = totalSeconds % 3600;
const minutes = Math.floor(remainingSecondsAfterHours / 60);
const seconds = remainingSecondsAfterHours % 60;
return `${hours}小时 ${minutes}分钟 ${seconds}`;
} else {
const minutes = Math.floor(totalSeconds / 60);
const seconds = totalSeconds % 60;
return `${minutes}分钟 ${seconds}`;
}
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
proxy: proxy,
search: search,
};
}
-190
View File
@@ -1,190 +0,0 @@
import { load, _ } from './lib/cat.js';
let key = '童趣';
let HOST = 'https://www.boosj.com';
let siteKey = '';
let siteType = 0;
const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36';
async function request(reqUrl, agentSp) {
let res = await req(reqUrl, {
method: 'get',
headers: {
'User-Agent': agentSp || MOBILE_UA,
'Referer': HOST
},
});
return res.content;
}
// cfg = {skey: siteKey, ext: extend}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
}
async function home(filter) {
const classes = [{ type_id: '', type_name: '全部' }, { type_id: 28, type_name: '辅食' }, { type_id: 582, type_name: '动画' }, { type_id: 3364, type_name: '儿童舞蹈' }, { type_id: 3366, type_name: '少儿英语' }, { type_id: 3367, type_name: '儿童歌曲' }, { type_id: 3622, type_name: '才艺' }, { type_id: 3782, type_name: '播视自制' }, { type_id: 3822, type_name: '故事' }, { type_id: 3842, type_name: '亲子教育' }, { type_id: 4402, type_name: '美术' }, { type_id: 4583, type_name: '其他' }, { type_id: 4762, type_name: '儿童游戏' }, { type_id: 4842, type_name: '识物' }, { type_id: 4843, type_name: '绘本' }, { type_id: 4844, type_name: '古诗' }, { type_id: 4845, type_name: '科普' }, { type_id: 5102, type_name: '儿童玩具' }, { type_id: 5142, type_name: '播视童趣儿童玩具' }];
const filterObj = {};
const jsonData = [
{
key: 'age',
name: '年龄段',
value: [
{ n: '全部', v: '' },
{ n: '6岁以上', v: '?p367=370' },
{ n: '3~6岁', v: '?p367=369' },
{ n: '0~3岁', v: '?p367=368' },
],
init: '',
},
{
key: 'by',
name: '排序',
value: [
{ n: '全部', v: '' },
{ n: '最新发布', v: 'lately' },
{ n: '最多播放', v: 'pop' },
{ n: '最多评论', v: 'view' },
],
init: '',
},
];
return JSON.stringify({
class: _.map(classes, (cls) => {
cls.land = 1;
cls.ratio = 1.78;
filterObj[cls.type_id] = jsonData;
return cls;
}),
filters: filterObj,
});
}
async function homeVod() {
const link = HOST + '/search_res_3362__3364_1_.html';
const html = await request(link);
const $ = load(html);
const items = $('body div.bj-col4:has(h3)');
let videos = _.map(items, (it) => {
const a = $(it).find('a:first')[0];
const img = $(it).find('img:first')[0];
const remarks = $(it).find('span.played')[0];
return {
vod_id: a.attribs.href,
vod_name: a.attribs.title,
vod_pic: img.attribs['data-original'],
vod_remarks: remarks.children[0].data || '',
};
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof (pg) == 'undefined') pg = 1;
const link = HOST + '/search_res_3362__' + tid + '_' + pg + '_' + (extend.by || '') + '.html' + (extend.age || '');
const html = await request(link);
const $ = load(html);
const items = $('body div.bj-col4:has(h3)');
let videos = _.map(items, (it) => {
const a = $(it).find('a:first')[0];
const img = $(it).find('img:first')[0];
const remarks = $(it).find('span.played')[0];
return {
vod_id: a.attribs.href,
vod_name: a.attribs.title,
vod_pic: img.attribs['data-original'],
vod_remarks: remarks.children[0].data || '',
};
});
const hasMore = $('div.pub_paging > a:contains(下一页)').length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 30,
total: 30 * pgCount,
list: videos,
});
}
async function detail(id) {
const vod = {
vod_id: id,
vod_remarks: "",
};
const playlist = ["点击播放" + "$" + vod.vod_id];
vod.vod_play_from = "道长在线";
vod.vod_play_url = playlist.join("#");
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
const body = JSON.parse(await request('https://gslb.boosj.com/ipv2.json'));
body._id = id.match(/\d+/)[0];
const json = JSON.parse(await request(buildUrl(body.gslb, body)));
const purl = json.url + '?' + json.t
// console.debug('童趣purl =====>' + purl); // js_debug.log
let headers = {
'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 9; 22081212C Build/PQ3B.190801.002)',
};
return JSON.stringify({
parse: 0,
url: purl,
header: headers,
});
}
async function search(wd, quick) {
var data = JSON.parse(await request('https://search.boosj.com/m_ajax?q=' + wd + '&p=' + pg + '&typeId=3362')).body;
let videos = _.map(data.result, (it) => {
return {
vod_id: it.playUrl,
vod_name: it.resourceName,
vod_pic: it.imageUrl,
vod_remarks: it.clickNumStr || '',
}
});
return JSON.stringify({
page: parseInt(pg),
pagecount: data.pageCount,
limit: 30,
total: data.rowCount,
list: videos,
});
}
function buildUrl(url, obj) {
obj = obj || {};
if (url.indexOf('?') < 0) {
url += '?'
}
let param_list = [];
let keys = Object.keys(obj);
keys.forEach(it => {
param_list.push(it + '=' + obj[it])
});
let prs = param_list.join('&');
if (keys.length > 0 && !url.endsWith('?')) {
url += '&'
}
url += prs;
return url
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
-61
View File
@@ -1,61 +0,0 @@
import fs from 'node:fs';
import path from 'path';
import uglifyjs from 'uglify-js';
const copySpider = ['app', 'kunyu77_open', 'alist_open'];
const root = process.cwd();
const src = path.join(root);
const out = path.join(root, 'dist');
function minify(s, d) {
var jsContent = fs.readFileSync(s).toString();
jsContent = jsContent.replace('./lib/cat.js', 'assets://js/lib/cat.js');
jsContent = jsContent.replace('./cat.js', 'assets://js/lib/cat.js');
jsContent = uglifyjs.minify(jsContent, {
mangle: false,
});
fs.writeFileSync(d, jsContent.code);
}
function listAllFiles(dirPath, arrayOfFiles) {
var files = fs.readdirSync(dirPath);
arrayOfFiles = arrayOfFiles || [];
files.forEach(function (file) {
if (fs.statSync(dirPath + '/' + file).isDirectory()) {
arrayOfFiles = listAllFiles(dirPath + '/' + file, arrayOfFiles);
} else {
arrayOfFiles.push(path.join(dirPath, '/', file));
}
});
return arrayOfFiles;
}
function src2Out() {
if (fs.existsSync(out)) fs.rmSync(out, { recursive: true, force: true });
fs.mkdirSync(out, { recursive: true });
const libSrc = path.join(src, 'lib');
const libOut = path.join(out, 'lib');
fs.mkdirSync(libOut, { recursive: true });
const libs = listAllFiles(libSrc);
for (let index = 0; index < libs.length; index++) {
const element = libs[index];
const relative = path.relative(libSrc, element);
minify(element, path.join(libOut, relative));
}
for (const sp of copySpider) {
minify(path.join(src, sp + '.js'), path.join(out, sp + '.js'));
}
}
src2Out();
fs.copyFileSync(path.join(src, 'config_open.json'), path.join(out, 'config_open.json'));
console.log('done');
-109
View File
@@ -1,109 +0,0 @@
// 无搜索功能
import { _ } from './lib/cat.js';
let key = '视聚场';
let HOST = 'http://api.cntv.cn';
let siteKey = '';
let siteType = 0;
const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36';
async function request(reqUrl, agentSp) {
let res = await req(reqUrl, {
method: 'get',
headers: {
'User-Agent': agentSp || MOBILE_UA,
},
});
return res.content
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype
}
async function home(filter) {
const classes = [{ type_id: "TOPC1451528971114112", type_name: "新闻联播" }, { type_id: "TOPC1451558976694518", type_name: "焦点访谈" }, { type_id: "TOPC1451464665008914", type_name: "今日说法" }, { type_id: "TOPC1451378757637200", type_name: "等着我" }, { type_id: "TOPC1451559129520755", type_name: "新闻直播间" }, { type_id: "TOPC1451540328102649", type_name: "海峡两岸" }, { type_id: "TOPC1451530382483536", type_name: "天网" }, { type_id: "TOPC1451540389082713", type_name: "今日关注" }, { type_id: "TOPC1451557893544236", type_name: "探索·发现" }, { type_id: "TOPC1665739007799851", type_name: "高端访谈" }, { type_id: "TOPC1451557052519584", type_name: "百家讲坛" }, { type_id: "TOPC1451464884159276", type_name: "开讲啦" }, { type_id: "TOPC1451464884159276", type_name: "故事里的中国" }, { type_id: "TOPC1514182710380601", type_name: "对话" }, { type_id: "TOPC1451559038345600", type_name: "面对面" }, { type_id: "TOPC1451378967257534", type_name: "动物世界" }, { type_id: "TOPC1451558190239536", type_name: "走进科学" }, { type_id: "TOPC1451525103989666", type_name: "人与自然" }, { type_id: "TOPC1451557421544786", type_name: "地理·中国" }, { type_id: "TOPC1451541349400938", type_name: "远方的家" }, { type_id: "TOPC1451558150787467", type_name: "自然传奇" }, { type_id: "TOPC1451534366388377", type_name: "是真的吗" }, { type_id: "TOPC1451467630488780", type_name: "星光大道" }, { type_id: "TOPC1451557646802924", type_name: "健康之路" }, { type_id: "TOPC1451559025546574", type_name: "动画大放映" }, { type_id: "TOPC1451378857272262", type_name: "第一动画乐园" }, { type_id: "TOPC1451541414450906", type_name: "精彩音乐汇" }, { type_id: "TOPC1451534421925242", type_name: "音乐厅" }, { type_id: "TOPC1451541994820527", type_name: "民歌·中国" }, { type_id: "TOPC1575253587571324", type_name: "跟着书本去旅行" }, { type_id: "TOPC1451354597100320", type_name: "中国电影报道" }, { type_id: "TOPC1451469943519994", type_name: "星推荐" }, { type_id: "TOPC1571217727564820", type_name: "方圆剧阵" }, { type_id: "TOPC1451558856402351", type_name: "空中剧院" }, { type_id: "TOPC1650782829200997", type_name: "正大综艺" }, { type_id: "TOPC1451550970356385", type_name: "体坛快讯" }, { type_id: "TOPC1451530259915198", type_name: "第一时间" }, { type_id: "TOPC1451465894294259", type_name: "开门大吉" }, { type_id: "TOPC1451464884159276", type_name: "开讲啦" }, { type_id: "TOPC1451558858788377", type_name: "共同关注" }, { type_id: "TOPC1451527941788652", type_name: "军事报道" }, { type_id: "TOPC1451558819463311", type_name: "新闻调查" }, { type_id: "TOPC1451559097947700", type_name: "新闻30分" }, { type_id: "TOPC1451559066181661", type_name: "新闻1+1" }, { type_id: "TOPC1451540448405749", type_name: "今日亚洲" }, { type_id: "TOPC1451559129520755", type_name: "新闻直播间" }, { type_id: "TOPC1451558428005729", type_name: "24小时" }, { type_id: "TOPC1451539894330405", type_name: "中国新闻" }, { type_id: "TOPC1451558779639282", type_name: "午夜新闻" }, { type_id: "TOPC1451558496100826", type_name: "朝闻天下" }, { type_id: "TOPC1451528792881669", type_name: "晚间新闻" }, { type_id: "TOPC1451559180488841", type_name: "新闻周刊" }, { type_id: "TOPC1601362002656197", type_name: "经济半小时" }, { type_id: "TOPC1451533652476962", type_name: "经济大讲堂" }, { type_id: "TOPC1453100395512779", type_name: "正点财经" }, { type_id: "TOPC1451546588784893", type_name: "生活圈" }, { type_id: "TOPC1451526037568184", type_name: "生活提示" }, { type_id: "TOPC1451558532019883", type_name: "东方时空" }, { type_id: "TOPC1451533782742171", type_name: "经济信息联播" }, { type_id: "TOPC1571034705435323", type_name: "今日环球" }, { type_id: "TOPC1451543462858283", type_name: "一线" }];
const filterObj = {};
return JSON.stringify({
class: _.map(classes, (cls) => {
cls.land = 1;
cls.ratio = 1.78;
return cls;
}),
filters: filterObj,
})
}
async function homeVod() {
const data = JSON.parse(await request(HOST + '/NewVideo/getVideoListByColumn?id=TOPC1451558856402351&n=10&sort=desc&p=1&mode=0&serviceId=tvcctv'));
let videos = _.map(data.data.list, (it) => {
return {
vod_id: it.guid,
vod_name: it.title,
vod_pic: it.image,
vod_remarks: it.time || '',
}
});
return JSON.stringify({
list: videos,
})
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof pg == 'undefined') pg = 1;
const data = JSON.parse(await request(HOST + '/NewVideo/getVideoListByColumn?id=' + tid + '&n=10&sort=desc&p=' + pg + '&mode=0&serviceId=tvcctv'));
let videos = _.map(data.data.list, (it) => {
return {
vod_id: it.guid,
vod_name: it.title,
vod_pic: it.image,
vod_remarks: it.time || '',
}
});
const pgChk = JSON.parse(await request(HOST + '/NewVideo/getVideoListByColumn?id=' + tid + '&n=10&sort=desc&p=' + (parseInt(pg) + 1) + '&mode=0&serviceId=tvcctv')).data.list;
const pgCount = pgChk.length > 0 ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: parseInt(pgCount),
limit: 10,
total: parseInt(data.total),
list: videos,
})
}
async function detail(id) {
const vod = {
vod_id: id,
vod_remarks: '',
};
const playlist = ['点击播放' + '$' + 'https://hls.cntv.myhwcdn.cn/asp/hls/2000/0303000a/3/default/' + id + '/2000.m3u8'];
vod.vod_play_from = key;
vod.vod_play_url = playlist.join('#');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
// console.debug('视聚场 id =====>' + id); // js_debug.log
return JSON.stringify({
parse: 0,
url: id,
})
}
async function search(wd, quick, pg) {
return '{}'
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
}
}
-241
View File
@@ -1,241 +0,0 @@
import { Crypto, load, _ } from './lib/cat.js';
let key = 'czzy';
let url = 'https://cz01.cc';
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';
const cookie = {};
async function request(reqUrl, referer, mth, data, hd) {
const headers = {
'User-Agent': UA,
Cookie: _.map(cookie, (value, key) => {
return `${key}=${value}`;
}).join(';'),
};
if (referer) headers.referer = encodeURIComponent(referer);
let res = await req(reqUrl, {
method: mth || 'get',
headers: headers,
data: data,
postType: mth === 'post' ? 'form' : '',
});
if (res.headers['set-cookie']) {
const set_cookie = _.isArray(res.headers['set-cookie']) ? res.headers['set-cookie'].join(';') : res.headers['set-cookie'];
const cks = set_cookie.split(';');
for (const c of cks) {
const tmp = c.trim();
if (tmp.startsWith('result=')) {
cookie.result = tmp.substring(7);
return await request(reqUrl, reqUrl, 'post', {
result: cookie.result,
});
} else if (tmp.startsWith('esc_search_captcha=1')) {
cookie.esc_search_captcha = 1;
delete cookie.result;
return await request(reqUrl);
}
}
// console.log(res.headers['set-cookie']);
}
return res.content;
}
// cfg = {skey: siteKey, ext: extend}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
}
async function home(filter) {
let filterObj = {};
const html = await request(url + '/movie_bt');
const $ = load(html);
const series = $('div#beautiful-taxonomy-filters-tax-movie_bt_series > a[cat-url*=movie_bt_series]');
const tags = $('div#beautiful-taxonomy-filters-tax-movie_bt_tags > a');
let tag = {
key: 'tag',
name: '类型',
value: _.map(tags, (n) => {
let v = n.attribs['cat-url'] || '';
v = v.substring(v.lastIndexOf('/') + 1);
return { n: n.children[0].data, v: v };
}),
};
tag['init'] = tag.value[0].v;
let classes = _.map(series, (s) => {
let typeId = s.attribs['cat-url'];
typeId = typeId.substring(typeId.lastIndexOf('/') + 1);
filterObj[typeId] = [tag];
return {
type_id: typeId,
type_name: s.children[0].data,
};
});
const sortName = ['电影', '电视剧', '国产剧', '美剧', '韩剧', '日剧', '海外剧(其他)', '华语电影', '印度电影', '日本电影', '欧美电影', '韩国电影', '动画', '俄罗斯电影', '加拿大电影'];
classes = _.sortBy(classes, (c) => {
const index = sortName.indexOf(c.type_name);
return index === -1 ? sortName.length : index;
});
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
return '{}';
}
async function category(tid, pg, filter, extend) {
if (pg <= 0) pg = 1;
const tag = extend.tag || '';
const link = url + '/movie_bt' + (tag.length > 0 ? `/movie_bt_tags/${tag}` : '') + '/movie_bt_series/' + tid + (pg > 1 ? `/page/${pg}` : '');
const html = await request(link);
const $ = load(html);
const items = $('div.mrb > ul > li');
let videos = _.map(items, (item) => {
const img = $(item).find('img:first')[0];
const a = $(item).find('a:first')[0];
const hdinfo = $($(item).find('div.hdinfo')[0]).text().trim();
const jidi = $($(item).find('div.jidi')[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/movie\/(.*).html/g, '$1'),
vod_name: img.attribs.alt,
vod_pic: img.attribs['data-original'],
vod_remarks: jidi || hdinfo || '',
};
});
const hasMore = $('div.mrb > div.pagenavi_txt > a:contains(>)').length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 20,
total: 20 * pgCount,
list: videos,
});
}
function stripHtmlTag(src) {
return src
.replace(/<\/?[^>]+(>|$)/g, '')
.replace(/&.{1,5};/g, '')
.replace(/\s{2,}/g, ' ');
}
async function detail(id) {
const html = await request(url + '/movie/' + id + '.html');
const $ = load(html);
const detail = $('ul.moviedteail_list > li');
let vod = {
vod_id: id,
vod_name: $('div.moviedteail_tt > h1').text().trim(),
vod_pic: $('div.dyimg img:first').attr('src'),
vod_remarks: '',
vod_content: stripHtmlTag($('div.yp_context').html()).trim(),
};
for (const info of detail) {
const i = $(info).text().trim();
if (i.startsWith('地区:')) {
vod.vod_area = i.substring(3);
} else if (i.startsWith('年份:')) {
vod.vod_year = i.substring(3);
} else if (i.startsWith('导演:')) {
vod.vod_director = _.map($(info).find('a'), (a) => {
return a.children[0].data;
}).join('/');
} else if (i.startsWith('主演:')) {
vod.vod_actor = _.map($(info).find('a'), (a) => {
return a.children[0].data;
}).join('/');
} else if (i.startsWith('语言:')) {
vod.vod_lang = i.substring(3);
}
}
const playlist = _.map($('div.paly_list_btn > a'), (a) => {
return a.children[0].data + '$' + a.attribs.href.replace(/.*?\/v_play\/(.*).html/g, '$1');
});
vod.vod_play_from = key;
vod.vod_play_url = playlist.join('#');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
const link = url + '/v_play/' + id + '.html';
const html = await request(link);
const $ = load(html);
const iframe = $('body iframe[src*=Cloud]');
if (iframe.length > 0) {
const iframeHtml = (
await req(iframe[0].attribs.src, {
headers: {
Referer: link,
'User-Agent': UA,
},
})
).content;
let code = iframeHtml
.match(/var url = '(.*?)'/)[1]
.split('')
.reverse()
.join('');
let temp = '';
for (let i = 0x0; i < code.length; i = i + 0x2) {
temp += String.fromCharCode(parseInt(code[i] + code[i + 0x1], 0x10));
}
const playUrl = temp.substring(0x0, (temp.length - 0x7) / 0x2) + temp.substring((temp.length - 0x7) / 0x2 + 0x7);
return JSON.stringify({
parse: 0,
url: playUrl,
});
} else {
const js = $('script:contains(window.wp_nonce)').html();
const group = js.match(/(var.*)eval\((\w*\(\w*\))\)/);
const md5 = Crypto;
const result = eval(group[1] + group[2]);
const playUrl = result.match(/url:.*?['"](.*?)['"]/)[1];
return JSON.stringify({
parse: 0,
url: playUrl,
});
}
}
async function search(wd, quick) {
const html = await request(url + '/?s=' + wd);
const $ = load(html);
const items = $('div.search_list > ul > li');
let videos = _.map(items, (item) => {
const img = $(item).find('img:first')[0];
const a = $(item).find('a:first')[0];
const hdinfo = $($(item).find('div.hdinfo')[0]).text().trim();
const jidi = $($(item).find('div.jidi')[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/movie\/(.*).html/g, '$1'),
vod_name: img.attribs.alt,
vod_pic: img.attribs['data-original'],
vod_remarks: jidi || hdinfo || '',
};
});
return JSON.stringify({
list: videos,
});
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
+1 -1
View File
@@ -152,7 +152,7 @@ let tabsq=[];
d.forEach(function(it){
let burl = pd(it, 'a&&href', HOST);
if (burl.includes("pan.quark.cn")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.includes("www.aliyundrive.com")){
tabsq.push("阿里雲盤");
}
+136
View File
@@ -0,0 +1,136 @@
var lists = `js:
log(TABS);
let d = [];
pdfh = jsp.pdfh;
pdfa = jsp.pdfa;
if (typeof play_url === "undefined") {
var play_url = ""
}
function getLists(html) {
let src = pdfh(html, ".wp-playlist-script&&Html");
src = JSON.parse(src).tracks;
let list1 = [];
let list2 = [];
let url1 = "";
let url2 = "";
src.forEach(function(it) {
let src0 = it.src0;
let src1 = it.src1;
let title = it.caption;
url1 = "https://v.ddys.pro" + src0;
url2 = "https://ddys.pro/getvddr2/video?id=" + src1 + "&type=mix";
let zm = "https://ddys.pro/subddr/" + it.subsrc;
list1.push({
title: title,
url: url1,
desc: zm
});
list2.push({
title: title,
url: url2,
desc: zm
})
});
return {
list1: list1,
list2: list2
}
}
var data = getLists(html);
var list1 = data.list1;
var list2 = data.list2;
let nums = pdfa(html, "body&&.post-page-numbers");
nums.forEach(function(it) {
let num = pdfh(it, "body&&Text");
log(num);
let nurl = input + num + "/";
if (num == 1) {
return
}
log(nurl);
let html = request(nurl);
let data = getLists(html);
list1 = list1.concat(data.list1);
list2 = list2.concat(data.list2)
});
list1 = list1.map(function(item) {
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
});
list2 = list2.map(function(item) {
return item.title + "$" + play_url + urlencode(item.url + "|" + input + "|" + item.desc)
});
LISTS = [list1, list2];
`;
var lazy = `js:
let purl = input.split("|")[0];
let referer = input.split("|")[1];
let zm = input.split("|")[2];
print("purl:" + purl);
print("referer:" + referer);
print("zm:" + zm);
if (/getvddr/.test(purl)) {
let html = request(purl, {
headers: {
Referer: HOST,
"User-Agent": MOBILE_UA
}
});
print(html);
try {
input = {jx:0,url:JSON.parse(html).url,parse:0} || {}
} catch (e) {
input = purl
}
} else {
input = {
jx: 0,
url: purl,
parse: 0,
header: JSON.stringify({
'user-agent': MOBILE_UA,
'referer': HOST
})
}
}
`;
// 网址发布页 https://ddys.site
// 网址发布页 https://ddys.wiki
var rule={
title:'ddys',
// host:'https://ddys.wiki',
// hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":MOBILE_UA}});HOST = jsp.pdfh(html,"a:eq(1)&&href")',
host:'https://ddys.pro',
// host:'https://ddys.mov',
url:'/fyclass/page/fypage/',
searchUrl:'/?s=**&post_type=post',
searchable:2,
quickSearch:0,
filterable:0,
headers:{
'User-Agent':'MOBILE_UA',
},
class_parse:'#primary-menu li.menu-item;a&&Text;a&&href;\.pro/(.*)',
cate_exclude:'站长|^其他$|关于|^电影$|^剧集$|^类型$',
play_parse:true,
// lazy:'js:let purl=input.split("|")[0];let referer=input.split("|")[1];let zm=input.split("|")[2];print("purl:"+purl);print("referer:"+referer);print("zm:"+zm);let myua="okhttp/3.15";if(/ddrkey/.test(purl)){let ret=request(purl,{Referer:referer,withHeaders:true,"User-Agent":myua});log(ret);input=purl}else{let html=request(purl,{headers:{Referer:referer,"User-Agent":myua}});print(html);try{input=JSON.parse(html).url||{}}catch(e){input=purl}}',
lazy:lazy,
limit:6,
推荐:'*',
double:true, // 推荐内容是否双层定位
一级:'.post-box-list&&article;a:eq(-1)&&Text;.post-box-image&&style;a:eq(0)&&Text;a:eq(-1)&&href',
二级:{
"title":".post-title&&Text;.cat-links&&Text",
"img":".doulist-item&&img&&data-cfsrc",
"desc":".published&&Text",
"content":".abstract&&Text",
// "tabs":"js:TABS=['国内','海外(貌似不能播放)']",
"tabs":"js:TABS=['国内(改Exo播放器)','国内2']",
// "lists":"js:log(TABS);let d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url===\"undefined\"){var play_url=\"\"}function getLists(html){let src=pdfh(html,\".wp-playlist-script&&Html\");src=JSON.parse(src).tracks;let list1=[];let list2=[];src.forEach(function(it){let src0=it.src0;let src1=it.src1;let src2=it.src2;let title=it.caption;let url1=\"https://ddys.tv/getvddr/video?id=\"+src1+\"&dim=1080P+&type=mix\";let url2=\"https://w.ddys.tv\"+src0+\"?ddrkey=\"+src2;let zm=\"https://ddys.tv/subddr/\"+it.subsrc;list1.push({title:title,url:url1,desc:zm});list2.push({title:title,url:url2,desc:zm})});return{list1:list1,list2:list2}}var data=getLists(html);var list1=data.list1;var list2=data.list2;let nums=pdfa(html,\"body&&.post-page-numbers\");nums.forEach(function(it){let num=pdfh(it,\"body&&Text\");log(num);let nurl=input+num+\"/\";if(num==1){return}log(nurl);let html=request(nurl);let data=getLists(html);list1=list1.concat(data.list1);list2=list2.concat(data.list2)});list1=list1.map(function(item){return item.title+\"$\"+play_url+urlencode(item.url+\"|\"+input+\"|\"+item.desc)});list2=list2.map(function(item){return item.title+\"$\"+play_url+urlencode(item.url+\"|\"+input+\"|\"+item.desc)});LISTS=[list1,list2];",
// lists:'js:log(TABS);let d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url==="undefined"){var play_url=""}function getLists(html){let src=pdfh(html,".wp-playlist-script&&Html");src=JSON.parse(src).tracks;let list1=[];let list2=[];src.forEach(function(it){let src0=it.src0;let src1=it.src1;let src2=it.src2;let title=it.caption;let url1="https://ddys.pro/getvddr/video?id="+src1+"&dim=1080P+&type=mix";let url2="https://w.ddys.pro"+src0+"?ddrkey="+src2;let zm="https://ddys.pro/subddr/"+it.subsrc;list1.push({title:title,url:url1,desc:zm});list2.push({title:title,url:url2,desc:zm})});return{list1:list1,list2:list2}}var data=getLists(html);var list1=data.list1;var list2=data.list2;let nums=pdfa(html,"body&&.post-page-numbers");nums.forEach(function(it){let num=pdfh(it,"body&&Text");log(num);let nurl=input+num+"/";if(num==1){return}log(nurl);let html=request(nurl);let data=getLists(html);list1=list1.concat(data.list1);list2=list2.concat(data.list2)});list1=list1.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});list2=list2.map(function(item){return item.title+"$"+play_url+urlencode(item.url+"|"+input+"|"+item.desc)});LISTS=[list1,list2];',
"lists":lists
},
搜索:'#main&&article;.post-title&&Text;;.published&&Text;a&&href'
}
-156
View File
@@ -1,156 +0,0 @@
import { load, _ } from "assets://js/lib/cat.js";
let key = "世纪DJ音乐网";
let HOST = "http://m.dj0898.com";
let siteKey = "";
let siteType = 0;
const MOBILE_UA = "Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";
async function request(reqUrl, agentSp) {
let res = await req(reqUrl, {
method: "get",
headers: {
"User-Agent": agentSp || MOBILE_UA,
Referer: HOST,
},
});
return res.content;
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
}
async function home(filter) {
const classes = [{ type_id: 1, type_name: "🎧串烧舞曲" }, { type_id: 2, type_name: "🎧外文舞曲" }, { type_id: 3, type_name: "🎧早场暖场" }, { type_id: 4, type_name: "🎧中文舞曲" }, { type_id: 5, type_name: "🎧其他舞曲" }, { type_id: 6, type_name: "🎧国外电音" }, { type_id: 8, type_name: "🎧慢歌连版" }, { type_id: 9, type_name: "🎧酒吧潮歌" }, { type_id: 10, type_name: "🎧中文串烧" }, { type_id: 11, type_name: "🎧外文串烧" }, { type_id: 12, type_name: "🎧中外串烧" }, { type_id: 13, type_name: "🎧车载串烧" }, { type_id: 14, type_name: "🎧越鼓串烧" }, { type_id: 40, type_name: "🎧3D/环绕" }, { type_id: 45, type_name: "🎧口水旋律" }, { type_id: 46, type_name: "🎧精品收藏" }, { type_id: 47, type_name: "🎧开场舞曲" }, { type_id: 48, type_name: "🎧印度舞曲" }, { type_id: 49, type_name: "🎧编排套曲" }, { type_id: 20, type_name: "🎧DuTch" }, { type_id: 21, type_name: "🎧Mash up" }, { type_id: 22, type_name: "🎧ClubHouse" }, { type_id: 23, type_name: "🎧ElectroHouse" }, { type_id: 24, type_name: "🎧越南鼓Dj" }, { type_id: 30, type_name: "🎧Funky" }, { type_id: 31, type_name: "🎧Reggae" }, { type_id: 32, type_name: "🎧Rnb" }, { type_id: 33, type_name: "🎧Hip Hop" }, { type_id: 34, type_name: "🎧Dubstep" }, { type_id: 8017, type_name: "🎧Hardstyle" }, { type_id: 8018, type_name: "🎧Hands Up" }];
const filterObj = {};
return JSON.stringify({
class: _.map(classes, (cls) => {
cls.land = 1;
cls.ratio = 1.78;
return cls;
}),
filters: filterObj,
});
}
async function homeVod() {
const link = HOST + "/dance/lists/id/10/1";
const html = await request(link);
const $ = load(html);
const list = $("ul.djddv_djList > li");
let videos = _.map(list, (it) => {
const a = $(it).find("a")[1];
const img = $(it).find("img:first")[0];
const tt = $(it).find("strong:first")[0];
const remarks = $(it).find("font")[5];
return {
vod_id: a.attribs.href,
vod_name: tt.children[0].data,
vod_pic: img.attribs["src"],
vod_remarks: "🎵" + remarks.children[0].data || "",
};
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof pg == "undefined") pg = 1;
const link = HOST + "/dance/lists/id/" + tid + "/" + pg;
const html = await request(link);
const $ = load(html);
const list = $("ul.djddv_djList > li");
let videos = _.map(list, (it) => {
const a = $(it).find("a")[1];
const img = $(it).find("img:first")[0];
const tt = $(it).find("strong:first")[0];
const remarks = $(it).find("font")[5];
return {
vod_id: a.attribs.href,
vod_name: tt.children[0].data,
vod_pic: img.attribs["src"],
vod_remarks: "🎵" + remarks.children[0].data || "",
};
});
const hasMore = $("ul.page_link > li > a:contains(\u00a0)").length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 60,
total: 60 * pgCount,
list: videos,
});
}
async function detail(id) {
const vod = {
vod_id: id,
vod_remarks: "",
};
const playlist = ["点击播放" + "$" + vod.vod_id];
vod.vod_play_from = "道长在线";
vod.vod_play_url = playlist.join("#");
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
const html = await request(id);
const $ = load(html);
const audio = $("body audio[src*=http]");
const audioUrl = audio[0].attribs.src;
// console.debug('世纪DJ音乐网 audioUrl =====>' + audioUrl); // js_debug.log
return JSON.stringify({
parse: 0,
url: audioUrl,
});
}
async function search(wd, quick, pg) {
if (pg <= 0 || typeof pg == "undefined") pg = 1;
const link = HOST + "/index.php/dance/so/key?key=" + wd + "&cid=0&p=" + pg;
const html = await request(link);
const $ = load(html);
const list = $("ul.djddv_djList > li");
let videos = _.map(list, (it) => {
const a = $(it).find("a")[1];
const img = $(it).find("img:first")[0];
const tt = $(it).find("strong:first")[0];
const remarks = $(it).find("font:first")[0];
return {
vod_id: a.attribs.href,
vod_name: tt.children[0].data,
vod_pic: img.attribs["src"],
vod_remarks: "🎵" + remarks.children[0].data || "",
};
});
const hasMore = $("ul.page_link > li > a:contains(\u00a0)").length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 60,
total: 60 * pgCount,
list: videos,
land: 1,
ratio: 1.78,
});
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
-37
View File
@@ -1,37 +0,0 @@
var rule = {
title:'drpy',
host:'https://frodo.douban.com',
apidoc:'https://www.doubanapi.com',
homeUrl:'',
searchUrl:'',
searchable:1,
quickSearch:1,
filterable:1,
// 分类链接fypage参数支持1个()表达式
url:'/?pg=fypage&class=fyclass&douban=1311269',
filter_url:'fl={{fl}}',
图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
headers:{
"Host": "frodo.douban.com",
// "Host": "api.douban.com",
"Connection": "Keep-Alive",
"Referer": "https://servicewechat.com/wx2f9b06c1de1ccfca/84/page-frame.html",
// "content-type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat"
},
timeout:5000,
class_name:'我的豆瓣&热门电影&热播剧集&热播综艺&电影筛选&电视筛选&电影榜单&电视榜单',
class_url:'interests&hot_gaia&tv_hot&show_hot&movie&tv&rank_list_movie&rank_list_tv',
filter:{'interests': [{'key': 'status', 'name': '状态', 'value': [{'n': '想看', 'v': 'mark'}, {'n': '在看', 'v': 'doing'}, {'n': '看过', 'v': 'done'}]}, {'key': 'subtype_tag', 'name': '形式', 'value': [{'n': '全部', 'v': ''}, {'n': '电影', 'v': 'movie'}, {'n': '电视', 'v': 'tv'}]}, {'key': 'year_tag', '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': '2010年代', 'v': '2010年代'}, {'n': '2000年代', 'v': '2000年代'}, {'n': '90年代', 'v': '90年代'}, {'n': '80年代', 'v': '80年代'}, {'n': '70年代', 'v': '70年代'}, {'n': '60年代', 'v': '60年代'}, {'n': '更早', 'v': '更早'}]}], 'hot_gaia': [{'key': 'sort', 'name': '排序', 'value': [{'n': '热度', 'v': 'recommend'}, {'n': '最新', 'v': 'time'}, {'n': '评分', 'v': 'rank'}]}, {'key': 'area', 'name': '地区', 'value': [{'n': '全部', 'v': '全部'}, {'n': '华语', 'v': '华语'}, {'n': '欧美', 'v': '欧美'}, {'n': '韩国', 'v': '韩国'}, {'n': '日本', 'v': '日本'}]}], 'tv_hot': [{'key': 'type', 'name': '分类', 'value': [{'n': '综合', 'v': 'tv_hot'}, {'n': '国产剧', 'v': 'tv_domestic'}, {'n': '欧美剧', 'v': 'tv_american'}, {'n': '日剧', 'v': 'tv_japanese'}, {'n': '韩剧', 'v': 'tv_korean'}, {'n': '动画', 'v': 'tv_animation'}]}], 'show_hot': [{'key': 'type', 'name': '分类', 'value': [{'n': '综合', 'v': 'show_hot'}, {'n': '国内', 'v': 'show_domestic'}, {'n': '国外', 'v': 'show_foreign'}]}], 'movie': [{'key': '类型', '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': '短片'}]}, {'key': '地区', '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': '丹麦'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '近期热度', 'v': 'T'}, {'n': '首映时间', 'v': 'R'}, {'n': '高分优先', 'v': 'S'}]}, {'key': '年代', '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': '2010年代', 'v': '2010年代'}, {'n': '2000年代', 'v': '2000年代'}, {'n': '90年代', 'v': '90年代'}, {'n': '80年代', 'v': '80年代'}, {'n': '70年代', 'v': '70年代'}, {'n': '60年代', 'v': '60年代'}, {'n': '更早', 'v': '更早'}]}], 'tv': [{'key': '类型', 'name': '类型', 'value': [{'n': '不限', 'v': ''}, {'n': '电视剧', 'v': '电视剧'}, {'n': '综艺', 'v': '综艺'}]}, {'key': '电视剧形式', 'name': '电视剧形式', 'value': [{'n': '不限', 'v': ''}, {'n': '喜剧', 'v': '喜剧'}, {'n': '爱情', 'v': '爱情'}, {'n': '悬疑', 'v': '悬疑'}, {'n': '动画', 'v': '动画'}, {'n': '武侠', 'v': '武侠'}, {'n': '古装', 'v': '古装'}, {'n': '家庭', 'v': '家庭'}, {'n': '犯罪', 'v': '犯罪'}, {'n': '科幻', 'v': '科幻'}, {'n': '恐怖', 'v': '恐怖'}, {'n': '历史', 'v': '历史'}, {'n': '战争', 'v': '战争'}, {'n': '动作', 'v': '动作'}, {'n': '冒险', 'v': '冒险'}, {'n': '传记', 'v': '传记'}, {'n': '剧情', 'v': '剧情'}, {'n': '奇幻', 'v': '奇幻'}, {'n': '惊悚', 'v': '惊悚'}, {'n': '灾难', 'v': '灾难'}, {'n': '歌舞', 'v': '歌舞'}, {'n': '音乐', 'v': '音乐'}]}, {'key': '综艺形式', 'name': '综艺形式', 'value': [{'n': '不限', 'v': ''}, {'n': '真人秀', 'v': '真人秀'}, {'n': '脱口秀', 'v': '脱口秀'}, {'n': '音乐', 'v': '音乐'}, {'n': '歌舞', 'v': '歌舞'}]}, {'key': '地区', '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': '澳大利亚'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '近期热度', 'v': 'T'}, {'n': '首播时间', 'v': 'R'}, {'n': '高分优先', 'v': 'S'}]}, {'key': '年代', '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': '2010年代', 'v': '2010年代'}, {'n': '2000年代', 'v': '2000年代'}, {'n': '90年代', 'v': '90年代'}, {'n': '80年代', 'v': '80年代'}, {'n': '70年代', 'v': '70年代'}, {'n': '60年代', 'v': '60年代'}, {'n': '更早', 'v': '更早'}]}, {'key': '平台', 'name': '平台', 'value': [{'n': '全部', 'v': ''}, {'n': '腾讯视频', 'v': '腾讯视频'}, {'n': '爱奇艺', 'v': '爱奇艺'}, {'n': '优酷', 'v': '优酷'}, {'n': '湖南卫视', 'v': '湖南卫视'}, {'n': 'Netflix', 'v': 'Netflix'}, {'n': 'HBO', 'v': 'HBO'}, {'n': 'BBC', 'v': 'BBC'}, {'n': 'NHK', 'v': 'NHK'}, {'n': 'CBS', 'v': 'CBS'}, {'n': 'NBC', 'v': 'NBC'}, {'n': 'tvN', 'v': 'tvN'}]}], 'rank_list_movie': [{'key': '榜单', 'name': '榜单', 'value': [{'n': '实时热门电影', 'v': 'movie_real_time_hotest'}, {'n': '一周口碑电影榜', 'v': 'movie_weekly_best'}, {'n': '豆瓣电影Top250', 'v': 'movie_top250'}]}], 'rank_list_tv': [{'key': '榜单', 'name': '榜单', 'value': [{'n': '实时热门电视', 'v': 'tv_real_time_hotest'}, {'n': '华语口碑剧集榜', 'v': 'tv_chinese_best_weekly'}, {'n': '全球口碑剧集榜', 'v': 'tv_global_best_weekly'}, {'n': '国内口碑综艺榜', 'v': 'show_chinese_best_weekly'}, {'n': '国外口碑综艺榜', 'v': 'show_global_best_weekly'}]}]},
limit:20,
play_parse:false,
推荐:'',
推荐:'js:let d=[];let douban_api_host="http://api.douban.com/api/v2";let miniapp_apikey="0ac44ae016490db2204ce0a042db2916";const count=30;function miniapp_request(path,query){try{let url=douban_api_host+path;query.apikey=miniapp_apikey;fetch_params.headers=oheaders;url=buildUrl(url,query);let html=fetch(url,fetch_params);return JSON.parse(html)}catch(e){print("发生了错误:"+e.message);return{}}}function subject_real_time_hotest(){try{let res=miniapp_request("/subject_collection/subject_real_time_hotest/items",{});let lists=[];let arr=res.subject_collection_items||[];arr.forEach(function(item){if(item.type==="movie"||item.type==="tv"){let rating=item.rating?item.rating.value:"暂无评分";let honnor=(item.honor_infos||[]).map(function(it){return it.title}).join("|");lists.append({vod_id:"msearch:"+TYPE,vod_name:item.title||"",vod_pic:item.pic.normal,vod_remarks:rating+" "+honnor})}});return lists}catch(e){print("发生了错误:"+e.message);return[]}}VODS=subject_real_time_hotest();print(VODS);',
// 手动调用解析请求json的url,此lazy不方便
lazy:'',
// 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
一级:'',
一级:'js:let d=[];let douban=input.split("douban=")[1].split("&")[0];let douban_api_host="http://api.douban.com/api/v2";let miniapp_apikey="0ac44ae016490db2204ce0a042db2916";const count=30;function miniapp_request(path,query){try{let url=douban_api_host+path;query.apikey=miniapp_apikey;fetch_params.headers=oheaders;url=buildUrl(url,query);let html=fetch(url,fetch_params);if(/request_error/.test(html)){print(html)}return JSON.parse(html)}catch(e){print("发生了错误:"+e.message);return{}}}function cate_filter(d,douban){douban=douban||"";try{let res={};if(MY_CATE==="interests"){if(douban){let status=MY_FL.status||"mark";let subtype_tag=MY_FL.subtype_tag||"";let year_tag=MY_FL.year_tag||"全部";let path="/user/"+douban+"/interests";res=miniapp_request(path,{type:"movie",status:status,subtype_tag:subtype_tag,year_tag:year_tag,start:(MY_PAGE-1)*count,count:count})}else{return{}}}else if(MY_CATE==="hot_gaia"){let sort=MY_FL.sort||"recommend";let area=MY_FL.area||"全部";let path="/movie/"+MY_CATE;res=miniapp_request(path,{area:area,sort:sort,start:(MY_PAGE-1)*count,count:count})}else if(MY_CATE==="tv_hot"||MY_CATE==="show_hot"){let stype=MY_FL.type||MY_CATE;let path="/subject_collection/"+stype+"/items";res=miniapp_request(path,{start:(MY_PAGE-1)*count,count:count})}else if(MY_CATE.startsWith("rank_list")){let id=MY_CATE==="rank_list_movie"?"movie_real_time_hotest":"tv_real_time_hotest";id=MY_FL.榜单||id;let path="/subject_collection/"+id+"/items";res=miniapp_request(path,{start:(MY_PAGE-1)*count,count:count})}else{let path="/"+MY_CATE+"/recommend";let selected_categories;let tags;let sort;if(Object.keys(MY_FL).length>0){sort=MY_FL.sort||"T";tags=Object.values(MY_FL).join(",");if(MY_CATE==="movie"){selected_categories={"类型":MY_FL.类型||"","地区":MY_FL.地区||""}}else{selected_categories={"类型":MY_FL.类型||"","形式":MY_FL.类型?MY_FL.类型+"地区":"","地区":MY_FL.地区||""}}}else{sort="T";tags="";if(MY_CATE==="movie"){selected_categories={"类型":"","地区":""}}else{selected_categories={"类型":"","形式":"","地区":""}}}let params={tags:tags,sort:sort,refresh:0,selected_categories:stringify(selected_categories),start:(MY_PAGE-1)*count,count:count};res=miniapp_request(path,params)}let result={page:MY_PAGE,pagecount:Math.ceil(res.total/count),limit:count,total:res.total};let items=[];if(/^rank_list|tv_hot|show_hot/.test(MY_CATE)){items=res["subject_collection_items"]}else if(MY_CATE==="interests"){res["interests"].forEach(function(it){items.push(it.subject)})}else{items=res.items}let lists=[];items.forEach(function(item){if(item.type==="movie"||item.type==="tv"){let rating=item.rating?item.rating.value:"";let rat_str=rating||"暂无评分";let title=item.title;let honor=item.honor_infos||[];let honor_str=honor.map(function(it){return it.title}).join("|");let vod_obj={vod_name:title!=="未知电影"?title:"暂不支持展示",vod_pic:item.pic.normal,vod_remarks:rat_str+" "+honor_str};let vod_obj_d={url:item.type+"$"+item.id,title:title!=="未知电影"?title:"暂不支持展示",pic_url:item.pic.normal,desc:rat_str+" "+honor_str};lists.push(vod_obj);d.push(vod_obj_d)}});result.list=lists;return result}catch(e){print(e.message)}return{}}let res=cate_filter(d,douban);setResult2(res);',
二级:'',
搜索:'',
}
-166
View File
@@ -1,166 +0,0 @@
import { Crypto, load, _, jinja2 } from './lib/cat.js';
let key = 'duboku';
let url = 'https://www.duboku.tv';
let siteKey = '';
let siteType = 0;
const UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1';
async function request(reqUrl, agentSp) {
let res = await req(reqUrl, {
method: 'get',
headers: {
'User-Agent': agentSp || UA,
'Referer': url
},
});
return res.content;
}
// cfg = {skey: siteKey, ext: extend}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
}
async function home(filter) {
const html = await request(url);
const $ = load(html);
const class_parse = $('ul.nav-list > li > a[href*=vodtype]');
let classes = [];
classes = _.map(class_parse, (cls) => {
let typeId = cls.attribs['href'];
typeId = typeId.substring(typeId.lastIndexOf('/') + 1).replace('.html','');
return {
type_id: typeId,
type_name: cls.children[0].data,
};
});
let filterObj = {
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"陆剧","v":"13"},{"n":"日韩剧","v":"15"},{"n":"短剧","v":"21"},{"n":"台泰剧","v":"14"},{"n":"港剧","v":"20"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"韩国","v":"韩国"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"英国","v":"英国"},{"n":"巴西","v":"巴西"},{"n":"泰国","v":"泰国"},{"n":"法国","v":"法国"},{"n":"日本","v":"日本"},{"n":"荷兰","v":"荷兰"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"韩语","v":"韩语"},{"n":"泰语","v":"泰语"},{"n":"法语","v":"法语"},{"n":"日语","v":"日语"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"真人秀","v":"真人秀"},{"n":"选秀","v":"选秀"},{"n":"竞演","v":"竞演"},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"玄幻","v":"玄幻"},{"n":"武侠","v":"武侠"},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":"冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":"社会","v":"社会"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"国产","v":"国产"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"13":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"15":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"21":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"14":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"台湾","v":"台湾"},{"n":"泰国","v":"泰国"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"20":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
};
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
const link = url + '/vodshow/2--hits---------.html';
const html = await request(link);
const $ = load(html);
const items = $('div.myui-panel_bd > ul.myui-vodlist > li');
let videos = _.map(items, (item) => {
const it = $(item).find('a:first')[0];
const remarks = $($(item).find('span.pic-text')[0]).text().trim();
return {
vod_id: it.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
vod_name: it.attribs.title,
vod_pic: it.attribs['data-original'],
vod_remarks: remarks || '',
};
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg <= 0) pg = 1;
const link = url + '/vodshow/' + (extend.CateId || tid) + '-'+(extend.area || '')+'-'+(extend.by || 'time')+'-'+(extend.class || '')+'-'+(extend.lang || '')+'-'+(extend.letter || '')+'---' + (`${pg}`) + '---'+(extend.year || '')+'.html';
const html = await request(link);
const $ = load(html);
const items = $('div.myui-panel_bd > ul.myui-vodlist > li');
let videos = _.map(items, (item) => {
const it = $(item).find('a:first')[0];
const remarks = $($(item).find('span.pic-text')[0]).text().trim();
return {
vod_id: it.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
vod_name: it.attribs.title,
vod_pic: it.attribs['data-original'],
vod_remarks: remarks || '',
};
});
const hasMore = $('ul.myui-page > li > a:contains(下一页)').length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 24,
total: 24 * pgCount,
list: videos,
});
}
async function detail(id) {
const html = await request(url + '/voddetail/' + id + '.html');
const $ = load(html);
let vod = {
vod_id: id,
vod_name: $('h1:first').text().trim(),
vod_type: $('.myui-content__detail p:first a').text(),
vod_actor: $('.myui-content__detail p:nth-child(5)').text().replace('主演:',''),
vod_director: $('.myui-content__detail p:nth-child(6)').text().replace('导演:',''),
vod_pic: $('div.myui-content__thumb img:first').attr('data-original'),
vod_remarks :$('#rating:first span').text().replace(/\s{2,}/g, ' '),
vod_content: $('span.data').text().trim(),
};
const playlist = _.map($('ul.sort-list > li > a'), (it) => {
return it.children[0].data + '$' + it.attribs.href.replace(/\/vodplay\/(.*).html/g, '$1');
});
vod.vod_play_from = key;
vod.vod_play_url = playlist.join('#');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
const link = url + '/vodplay/' + id + '.html';
const html = await request(link);
const $ = load(html);
const js = JSON.parse($('script:contains(player_)').html().replace('var player_data=',''));
const playUrl = js.url.replace('index.m3u8','hls\/index.m3u8');
return JSON.stringify({
parse: 0,
url: playUrl,
});
}
async function search(wd, quick) {
let data = JSON.parse(await request(url + '/index.php/ajax/suggest?mid=1&wd=' + wd)).list;
let videos = [];
for (const vod of data) {
videos.push({
vod_id: vod.id,
vod_name: vod.name,
vod_pic: vod.pic,
vod_remarks: '',
});
}
return JSON.stringify({
list: videos,
});
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
+2 -2
View File
@@ -45,9 +45,9 @@ let tabse = false;
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
+2 -2
View File
@@ -67,9 +67,9 @@ let tabm3u8 = [];
d.forEach(function(it) {
let burl = pd(it, 'a&&href',HOST);
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
+2 -2
View File
@@ -31,11 +31,11 @@ var rule = {
推荐:'',
一级:'',
二级:`js:
VOD.vod_play_from = "夸克盤";
VOD.vod_play_from = "夸克盤";
VOD.vod_remarks = detailUrl;
VOD.vod_actor = "沒有二級,只有一級鏈接直接推送播放";
VOD.vod_content = MY_URL;
VOD.vod_play_url = "夸克$" + detailUrl;
VOD.vod_play_url = "夸克$" + detailUrl;
`,
搜索:`js:
let postJson = {
-203
View File
@@ -1,203 +0,0 @@
import { Crypto, load, _ } from './lib/cat.js';
let key = 'ikanbot';
let url = 'https://www.ikanbot.com';
let siteKey = '';
let siteType = 0;
const UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1';
async function request(reqUrl, agentSp) {
let res = await req(reqUrl, {
method: 'get',
headers: {
'User-Agent': agentSp || UA,
},
});
return res.content;
}
// cfg = {skey: siteKey, ext: extend}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
}
function getClass($) {
const nav = $('ul.nav-pills:eq(1) > li > a');
let tags = {
key: 'tag',
name: '标签',
value: _.map(nav, (n) => {
return { n: n.children[0].data, v: n.attribs.href };
}),
};
tags['init'] = tags.value[0].v;
const title = $('title:first').text().split('-')[0].substring(2);
return { cls: { type_id: tags.value[0].v, type_name: title }, tags: [tags] };
}
async function home(filter) {
let classes = [];
let filterObj = {};
for (const cate of ['/hot/index-movie-热门.html', '/hot/index-tv-热门.html']) {
const html = await request(url + cate);
const $ = load(html);
const { cls, tags } = getClass($);
classes.push(cls);
filterObj[cls.type_id] = tags;
}
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
return '{}';
}
async function category(tid, pg, filter, extend) {
if (pg <= 0) pg = 1;
const link = url + (extend.tag || tid).replace('.html', pg > 1 ? `-p-${pg}.html` : '.html');
const html = await request(link);
const $ = load(html);
const items = $('div.v-list a.item');
var jsBase = await js2Proxy(true, siteType, siteKey, 'img/', {});
let videos = _.map(items, (item) => {
const img = $(item).find('img:first')[0];
return {
vod_id: item.attribs.href,
vod_name: img.attribs.alt,
vod_pic: jsBase + base64Encode(img.attribs['data-src']),
vod_remarks: '',
};
});
const hasMore = $('div.page-more > a:contains(下一页)').length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 24,
total: 24 * pgCount,
list: videos,
});
}
async function detail(id) {
const html = await request(url + id);
const $ = load(html);
var jsBase = await js2Proxy(true, siteType, siteKey, 'img/', {});
const detail = $('div.detail > .meta');
let vod = {
vod_id: id,
vod_pic: jsBase + base64Encode($('div.item-root > img')[0].attribs['data-src']),
vod_remarks: '',
};
for (const info of detail) {
if ($(info).hasClass('title')) {
vod.vod_name = info.children[0].data;
} else if ($(info).hasClass('year')) {
vod.vod_area = info.children[0].data;
} else if ($(info).hasClass('country')) {
vod.vod_area = info.children[0].data;
} else if ($(info).hasClass('celebrity')) {
vod.vod_actor = info.children[0].data;
}
}
const res = await req(url + '/api/getResN?videoId=' + id.substring(id.lastIndexOf('/') + 1) + '&mtype=2', {
headers: {
Referer: url,
'User-Agent': UA,
},
});
const list = JSON.parse(res.content).data.list;
let playlist = {};
for (const l of list) {
const flagData = JSON.parse(l.resData);
for (const f of flagData) {
const from = f.flag;
const urls = f.url;
if (!from || !urls) continue;
if (playlist[from]) continue;
playlist[from] = urls;
}
}
vod.vod_play_from = _.keys(playlist).join('$$$');
vod.vod_play_url = _.values(playlist).join('$$$');
return JSON.stringify({
list: [vod],
});
}
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));
}
async function proxy(segments, headers) {
let what = segments[0];
let url = base64Decode(segments[1]);
if (what == 'img') {
var resp = await req(url, {
buffer: 2,
headers: {
Referer: url,
'User-Agent': UA,
},
});
return JSON.stringify({
code: resp.code,
buffer: 2,
content: resp.content,
headers: resp.headers,
});
}
return JSON.stringify({
code: 500,
content: '',
});
}
async function play(flag, id, flags) {
return JSON.stringify({
parse: 0,
url: id,
});
}
async function search(wd, quick) {
const html = await request(url + '/search?q=' + wd);
const $ = load(html);
const items = $('div.media > div.media-left > a');
var jsBase = await js2Proxy(true, siteType, siteKey, 'img/', {});
let videos = _.map(items, (item) => {
const img = $(item).find('img:first')[0];
return {
vod_id: item.attribs.href,
vod_name: img.attribs.alt,
vod_pic: jsBase + base64Encode(img.attribs['data-src']),
vod_remarks: '',
};
});
return JSON.stringify({
list: videos,
});
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
proxy: proxy,
search: search,
};
}
+4 -4
View File
@@ -51,9 +51,9 @@ let d = pdfa(html, '#post_content p a');
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
@@ -64,9 +64,9 @@ d = pdfa(html, 'div#down p.down-list3 a');
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
+4 -4
View File
@@ -51,9 +51,9 @@ let d = pdfa(html, '#post_content p a');
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
@@ -64,9 +64,9 @@ d = pdfa(html, 'div#down p.down-list3 a');
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
+1 -1
View File
@@ -63,7 +63,7 @@ if (false && d.length>1){
TABS.push("選擇右側綫路");
}
d.forEach(function(it) {
TABS.push("夸克盤" + index);
TABS.push("夸克盤" + index);
index = index + 1;
});
log('meijumi TABS >>>>>>>>>>>>>>>>>>' + TABS);
-412
View File
@@ -1,412 +0,0 @@
import { Crypto, dayjs, jinja2, _ } from './lib/cat.js';
let key = 'kkys';
let url = 'https://api1.baibaipei.com:8899';
let device = {};
let siteKey = '';
let siteType = 0;
async function request(reqUrl, postData, agentSp, get) {
let ts = dayjs().valueOf().toString();
let rand = randStr(32);
let sign = Crypto.MD5('abcdexxxdd2daklmn25129_' + ts + '_' + rand)
.toString()
.toLowerCase();
let headers = {
'user-agent': agentSp || device.ua,
};
if (reqUrl.includes('baibaipei')) {
headers['device-id'] = device.id;
headers['push-token'] = '';
headers['sign'] = sign;
headers['time'] = ts;
headers['md5'] = rand;
headers['version'] = '2.1.0';
headers['system-model'] = device.model;
headers['system-brand'] = device.brand;
headers['system-version'] = device.release;
}
let res = await req(reqUrl, {
method: get ? 'get' : 'post',
headers: headers,
data: postData || {},
postType: get ? '' : 'form',
});
let content = res.content;
// console.log(content);
return content;
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
var deviceKey = 'device';
var deviceInfo = await local.get(key, deviceKey);
if (deviceInfo.length > 0) {
try {
device = JSON.parse(deviceInfo);
} catch (error) {}
}
if (_.isEmpty(device)) {
device = randDevice();
device.id = randStr(33).toLowerCase();
device.ua = 'okhttp/4.1.0';
await local.set(key, deviceKey, JSON.stringify(device));
}
}
async function home(filter) {
// await req('https://www.facebook.com', {});
let data = JSON.parse(await request(url + '/api.php/Index/getTopVideoCategory')).data;
let classes = [];
let filterObj = {};
for (const type of data) {
let typeName = type.nav_name;
if (typeName == '推荐') continue;
let typeId = type.nav_type_id.toString();
classes.push({
type_id: typeId,
type_name: typeName,
});
if (!filter) continue;
try {
let filterAll = [];
let filterData = JSON.parse(await request(url + '/api.php/Video/getFilterType', { type: typeId })).data;
for (let key of Object.keys(filterData)) {
let itemValues = filterData[key];
if (key === 'plot') key = 'class';
let typeExtendName = '';
switch (key) {
case 'class':
typeExtendName = '类型';
break;
case 'area':
typeExtendName = '地区';
break;
case 'lang':
typeExtendName = '语言';
break;
case 'year':
typeExtendName = '年代';
break;
case 'sort':
typeExtendName = '排序';
break;
}
if (typeExtendName.length === 0) continue;
let newTypeExtend = {
key: key,
name: typeExtendName,
};
let newTypeExtendKV = [];
for (let j = 0; j < itemValues.length; j++) {
const name = itemValues[j];
let value = key === 'sort' ? j + '' : name === '全部' ? '0' : name;
newTypeExtendKV.push({ n: name, v: value });
}
newTypeExtend['init'] = key === 'sort' ? '1' : newTypeExtendKV[0]['v'];
newTypeExtend.value = newTypeExtendKV;
filterAll.push(newTypeExtend);
}
if (!_.isEmpty(filterAll)) {
filterObj[typeId] = filterAll;
}
} catch (e) {
console.log(e);
}
}
// console.log(await homeVod());
// console.log(classes);
// console.log(filterObj);
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
let jsonArray = JSON.parse(await request(url + '/api.php/Index/getHomePage', { type: 1, p: 1 })).data.video;
let videos = [];
for (const item of jsonArray) {
if (item.title.styleType !== 0) continue;
for (const vObj of item.list) {
videos.push({
vod_id: vObj.vod_id,
vod_name: vObj.vod_name,
vod_pic: vObj.vod_pic,
vod_remarks: vObj.vod_remarks || vObj.vod_score || '',
});
}
}
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg == 0) pg = 1;
let reqUrl = url + '/api.php/Video/getFilterVideoList';
var formData = JSON.parse(
jinja2(
`{
"type": "{{tid}}",
"p": "{{pg}}",
"area": "{{ext.area|default(0)}}",
"year": "{{ext.year|default(0)}}",
"sort": "{{ext.sort|default(0)}}",
"class": "{{ext.class|default(0)}}"
}`,
{ ext: extend, tid: tid, pg: pg }
)
);
console.log(formData);
let data = JSON.parse(await request(reqUrl, formData)).data;
let videos = [];
for (const vod of data.data) {
videos.push({
vod_id: vod.vod_id,
vod_name: vod.vod_name,
vod_pic: vod.vod_pic,
vod_remarks: vod.vod_remarks || vod.vod_score || '',
});
}
return JSON.stringify({
page: parseInt(data.current_page),
pagecount: parseInt(data.last_page),
limit: parseInt(data.per_page),
total: parseInt(data.total),
list: videos,
});
}
async function detail(id) {
let data = JSON.parse(await request(url + '/api.php/Video/getVideoInfo', { video_id: id })).data.video;
let vod = {
vod_id: data.vod_id,
vod_name: data.vod_name,
vod_pic: data.vod_pic,
type_name: data.vod_class,
vod_year: data.vod_year,
vod_area: data.vod_area,
vod_remarks: data.vod_remarks || '',
vod_actor: data.vod_actor,
vod_director: data.vod_director,
vod_content: data.vod_content.trim(),
};
let playlist = {};
for (const item of data.vod_play) {
let from = item.playerForm;
if (from === 'jp') continue;
if (from === 'xg') continue;
let urls = [];
for (const u of item.url) {
urls.push(formatPlayUrl(vod.vod_name, u.title) + '$' + u.play_url);
}
if (!playlist.hasOwnProperty(from) && urls.length > 0) {
playlist[from] = urls;
}
}
parse = data.parse || [];
vod.vod_play_from = _.keys(playlist).join('$$$');
let urls = _.values(playlist);
let vod_play_url = [];
for (const urlist of urls) {
vod_play_url.push(urlist.join('#'));
}
vod.vod_play_url = vod_play_url.join('$$$');
return JSON.stringify({
list: [vod],
});
}
var parse = [];
async function play(flag, id, flags) {
try {
if (id.indexOf('youku') >= 0 || id.indexOf('iqiyi') >= 0 || id.indexOf('v.qq.com') >= 0 || id.indexOf('pptv') >= 0 || id.indexOf('le.com') >= 0 || id.indexOf('1905.com') >= 0 || id.indexOf('mgtv') >= 0) {
if (parse.length > 0) {
for (let index = 0; index < parse.length; index++) {
try {
const p = parse[index];
let res = await req(p + id, {
headers: { 'user-agent': 'okhttp/4.1.0' },
});
var result = jsonParse(id, JSON.parse(res.content));
if (result.url) {
result.parse = 0;
return JSON.stringify(result);
}
} catch (error) {}
}
}
}
if (id.indexOf('jqq-') >= 0) {
var jqqHeader = await request(url + '/jqqheader.json', null, null, true);
var jqqHeaders = JSON.parse(jqqHeader);
var ids = id.split('-');
var jxJqq = await req('https://api.juquanquanapp.com/app/drama/detail?dramaId=' + ids[1] + '&episodeSid=' + ids[2] + '&quality=LD', { headers: jqqHeaders });
var jqqInfo = JSON.parse(jxJqq.content);
if (jqqInfo.data.playInfo.url) {
return JSON.stringify({
parse: 0,
playUrl: '',
url: jqqInfo.data.playInfo.url,
});
}
}
let res = await request(url + '/video.php', { url: id });
var result = jsonParse(id, JSON.parse(res).data);
if (result.url) {
result.parse = 0;
// demo of block hls ads
if (/vip\.lz|hd\.lz/.test(result.url)) {
result.url = await js2Proxy(true, siteType, siteKey, 'lzm3u8/' + base64Encode(result.url), {});
}
return JSON.stringify(result);
}
return JSON.stringify({
parse: 0,
playUrl: '',
url: id,
});
} catch (e) {
console.log(e);
return JSON.stringify({
parse: 0,
url: id,
});
}
}
async function proxy(segments, headers) {
let what = segments[0];
let url = base64Decode(segments[1]);
if (what == 'lzm3u8') {
const resp = await req(url, {});
let hls = resp.content;
const jsBase = await js2Proxy(false, siteType, siteKey, 'lzm3u8/', {});
const baseUrl = url.substr(0, url.lastIndexOf('/') + 1);
console.log(hls.length);
hls = hls.replace(/#EXT-X-DISCONTINUITY\r*\n*#EXTINF:6.433333,[\s\S]*?#EXT-X-DISCONTINUITY/, '');
console.log(hls.length);
hls = hls.replace(/(#EXT-X-KEY\S+URI=")(\S+)("\S+)/g, function (match, p1, p2, p3) {
let up = (!p2.startsWith('http') ? baseUrl : '') + p2;
return p1 + up + p3;
});
hls = hls.replace(/(#EXT-X-STREAM-INF:.*\n)(.*)/g, function (match, p1, p2) {
let up = (!p2.startsWith('http') ? baseUrl : '') + p2;
return p1 + jsBase + base64Encode(up);
});
hls = hls.replace(/(#EXTINF:.*\n)(.*)/g, function (match, p1, p2) {
let up = (!p2.startsWith('http') ? baseUrl : '') + p2;
return p1 + up;
});
return JSON.stringify({
code: resp.code,
content: hls,
headers: resp.headers,
});
}
return JSON.stringify({
code: 500,
content: '',
});
}
async function search(wd, quick) {
let data = JSON.parse(await request(url + '/api.php/Search/getSearch', { key: wd, type_id: 0, p: 1 })).data;
let videos = [];
for (const vod of data.data) {
videos.push({
vod_id: vod.vod_id,
vod_name: vod.vod_name,
vod_pic: vod.vod_pic,
vod_remarks: vod.vod_remarks || vod.vod_score || '',
});
}
return JSON.stringify({
list: 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));
}
const charStr = 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789';
function randStr(len, withNum) {
var _str = '';
let containsNum = withNum === undefined ? true : withNum;
for (var i = 0; i < len; i++) {
let idx = _.random(0, containsNum ? charStr.length - 1 : charStr.length - 11);
_str += charStr[idx];
}
return _str;
}
function randDevice() {
return {
brand: 'Huawei',
model: 'HUAWEI Mate 20',
release: '10',
buildId: randStr(3, false).toUpperCase() + _.random(11, 99) + randStr(1, false).toUpperCase(),
};
}
function formatPlayUrl(src, name) {
return name
.trim()
.replaceAll(src, '')
.replace(/<|>|《|》/g, '')
.replace(/\$|#/g, ' ')
.trim();
}
function jsonParse(input, json) {
try {
let url = json.url ?? '';
if (url.startsWith('//')) {
url = 'https:' + url;
}
if (!url.startsWith('http')) {
return {};
}
let headers = json['headers'] || {};
let ua = (json['user-agent'] || '').trim();
if (ua.length > 0) {
headers['User-Agent'] = ua;
}
let referer = (json['referer'] || '').trim();
if (referer.length > 0) {
headers['Referer'] = referer;
}
_.keys(headers).forEach((hk) => {
if (!headers[hk]) delete headers[hk];
});
return {
header: headers,
url: url,
};
} catch (error) {
console.log(error);
}
return {};
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
proxy: proxy,
search: search,
};
}
-346
View File
@@ -1,346 +0,0 @@
import { Crypto, dayjs, jinja2, Uri, _ } from './lib/cat.js';
let key = 'kunyu77';
let url = 'http://api.tyun77.cn';
let device = {};
let timeOffset = 0;
let siteKey = '';
let siteType = 0;
async function request(reqUrl, agentSp) {
let sj = dayjs().unix() - timeOffset;
let uri = new Uri(reqUrl);
uri.addQueryParam('pcode', '010110005');
uri.addQueryParam('version', '2.1.6');
uri.addQueryParam('devid', device.id);
uri.addQueryParam('package', 'com.sevenVideo.app.android');
uri.addQueryParam('sys', 'android');
uri.addQueryParam('sysver', device.release);
uri.addQueryParam('brand', device.brand);
uri.addQueryParam('model', device.model.replaceAll(' ', '_'));
uri.addQueryParam('sj', sj);
let keys = [];
for (var i = 0; i < uri.queryPairs.length; i++) {
keys.push(uri.queryPairs[i][0]);
}
keys = _.sortBy(keys, function (name) {
return name;
});
let tkSrc = uri.path();
for (let k of keys) {
let v = uri.getQueryParamValue(k);
v = encodeURIComponent(v);
tkSrc += v;
}
tkSrc += sj;
tkSrc += 'XSpeUFjJ';
console.log(tkSrc);
let tk = Crypto.MD5(tkSrc).toString().toLowerCase();
console.log(tk);
let header = {
'user-agent': agentSp || 'okhttp/3.12.0',
t: sj,
TK: tk,
};
let res = await req(uri.toString(), {
headers: header,
});
let serverTime = res.headers.date; // dart all response header key is lowercase
let content = res.content;
let serverTimeS = dayjs(serverTime).unix();
timeOffset = dayjs().unix() - serverTimeS;
// console.log(content);
return content;
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
var deviceKey = 'device';
var deviceInfo = await local.get(key, deviceKey);
if (deviceInfo.length > 0) {
try {
device = JSON.parse(deviceInfo);
} catch (error) {}
}
if (_.isEmpty(device)) {
device = randDevice();
device.id = randStr(32).toLowerCase();
device.ua = 'Dalvik/2.1.0 (Linux; U; Android ' + device.release + '; ' + device.model + ' Build/' + device.buildId + ')';
await local.set(key, deviceKey, JSON.stringify(device));
}
await request(url + '/api.php/provide/getDomain');
await request(url + '/api.php/provide/config');
await request(url + '/api.php/provide/checkUpgrade');
await request(url + '/api.php/provide/channel');
}
async function home(filter) {
let data = JSON.parse(await request(url + '/api.php/provide/filter')).data;
let classes = [];
let filterObj = {};
let filterAll = [];
for (const key in data) {
classes.push({
type_id: key,
type_name: data[key][0].cat,
});
if (!filter) continue;
try {
let typeId = key.toString();
if (_.isEmpty(filterAll)) {
let filterData = JSON.parse(await request(url + '/api.php/provide/searchFilter?type_id=0&pagenum=1&pagesize=1')).data.conditions;
// console.log(filterData);
// 年份
let year = {
key: 'year',
name: '年份',
init: '',
};
let yearValues = [];
yearValues.push({ n: '全部', v: '' });
filterData.y.forEach((e) => {
yearValues.push({ n: e.name, v: e.value });
});
year['value'] = yearValues;
// 地区
let area = {
key: 'area',
name: '地区',
init: '',
};
let areaValues = [];
areaValues.push({ n: '全部', v: '' });
filterData.a.forEach((e) => {
areaValues.push({ n: e.name, v: e.value });
});
area['value'] = areaValues;
// 类型
let type = {
key: 'category',
name: '类型',
init: '',
};
let typeValues = [];
typeValues.push({ n: '全部', v: '' });
filterData.scat.forEach((e) => {
typeValues.push({ n: e.name, v: e.value });
});
type['value'] = typeValues;
filterAll.push(year, area, type);
}
if (!_.isEmpty(filterAll)) {
filterObj[typeId] = filterAll;
}
} catch (e) {
console.log(e);
}
}
// console.log(classes);
// console.log(filterObj);
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
let data = JSON.parse(await request(url + '/api.php/provide/homeBlock?type_id=0')).data;
let blocks = data.blocks;
let videos = [];
for (const block of blocks) {
let name = block.block_name;
if (name.indexOf('热播') >= 0) continue;
let contents = block.contents;
for (const content of contents) {
videos.push({
vod_id: content.id,
vod_name: content.title,
vod_pic: content.videoCover,
vod_remarks: content.msg,
});
}
}
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
let reqUrl = url + '/api.php/provide/searchFilter?type_id=' + tid + '&pagenum=' + pg + '&pagesize=24&';
reqUrl += jinja2('year={{ext.year}}&category={{ext.category}}&area={{ext.area}}', { ext: extend });
let data = JSON.parse(await request(reqUrl)).data;
let videos = [];
for (const vod of data.result) {
videos.push({
vod_id: vod.id,
vod_name: vod.title,
vod_pic: vod.videoCover,
vod_remarks: vod.msg,
});
}
return JSON.stringify({
page: parseInt(data.page),
pagecount: data.pagesize,
limit: 24,
total: data.total,
list: videos,
});
}
async function detail(id) {
let data = JSON.parse(await request(url + '/api.php/provide/videoDetail?ids=' + id)).data;
console.log(data);
let vod = {
vod_id: data.id,
vod_name: data.videoName,
vod_pic: data.videoCover,
type_name: data.subCategory,
vod_year: data.year,
vod_area: data.area,
vod_remarks: data.msg,
vod_actor: data.actor,
vod_director: data.director,
vod_content: data.brief.trim(),
};
let episodes = JSON.parse(await request(url + '/api.php/provide/videoPlaylist?ids=' + id)).data.episodes;
let playlist = {};
for (const episode of episodes) {
let playurls = episode.playurls;
for (const playurl of playurls) {
let from = playurl.playfrom;
let t = formatPlayUrl(vod.vod_name, playurl.title);
if (t.length == 0) t = playurl.title.trim();
if (!playlist.hasOwnProperty(from)) {
playlist[from] = [];
}
playlist[from].push(t + '$' + playurl.playurl);
}
}
vod.vod_play_from = _.keys(playlist).join('$$$');
let urls = _.values(playlist);
let vod_play_url = [];
for (const urlist of urls) {
vod_play_url.push(urlist.join('#'));
}
vod.vod_play_url = vod_play_url.join('$$$');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
try {
let data = JSON.parse(await request(url + '/api.php/provide/parserUrl?url=' + id + '&retryNum=0')).data;
let playHeader = data.playHeader;
let jxUrl = data.url;
let res = await req(jxUrl, {
headers: {
'user-agent': 'okhttp/3.12.0',
},
});
let result = jsonParse(id, JSON.parse(res.content));
result['parse'] = 0;
if (playHeader) {
result.header = _.merge(result.header, playHeader);
}
return JSON.stringify(result);
} catch (e) {
return JSON.stringify({
parse: 0,
url: id,
});
}
}
async function search(wd, quick, pg) {
let page = pg || 1;
if (page == 0) page = 1;
let data = JSON.parse(await request(url + '/api.php/provide/searchVideo?searchName=' + wd + '&pg=' + page, 'okhttp/3.12.0'));
let videos = [];
for (const vod of data.data) {
videos.push({
vod_id: vod.id,
vod_name: vod.videoName,
vod_pic: vod.videoCover,
vod_remarks: vod.msg,
});
}
return JSON.stringify({
page: page,
pagecount: data.pages,
list: videos,
});
}
const charStr = 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789';
function randStr(len, withNum) {
var _str = '';
let containsNum = withNum === undefined ? true : withNum;
for (var i = 0; i < len; i++) {
let idx = _.random(0, containsNum ? charStr.length - 1 : charStr.length - 11);
_str += charStr[idx];
}
return _str;
}
function randDevice() {
return {
brand: 'Huawei',
model: 'HUAWEI Mate 20',
release: '10',
buildId: randStr(3, false).toUpperCase() + _.random(11, 99) + randStr(1, false).toUpperCase(),
};
}
function formatPlayUrl(src, name) {
return name
.trim()
.replaceAll(src, '')
.replace(/<|>|《|》/g, '')
.replace(/\$|#/g, ' ')
.trim();
}
function jsonParse(input, json) {
try {
let url = json.url ?? '';
if (url.startsWith('//')) {
url = 'https:' + url;
}
if (!url.startsWith('http')) {
return {};
}
let headers = json['headers'] || {};
let ua = (json['user-agent'] || '').trim();
if (ua.length > 0) {
headers['User-Agent'] = ua;
}
let referer = (json['referer'] || '').trim();
if (referer.length > 0) {
headers['Referer'] = referer;
}
return {
header: headers,
url: url,
};
} catch (error) {
console.log(error);
}
return {};
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
-173
View File
@@ -1,173 +0,0 @@
// 修正:分类改静态 (网站频繁变动分类)
import { load, _ } from "assets://js/lib/cat.js";
let key = "酷奇MV";
let HOST = "https://www.kuqimv.com";
let siteKey = "";
let siteType = 0;
const PC_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36";
async function request(reqUrl, referer, mth, data, hd) {
const headers = {
"User-Agent": PC_UA,
};
if (referer) headers.referer = encodeURIComponent(referer);
let res = await req(reqUrl, {
method: mth || "get",
headers: headers,
data: data,
postType: mth === "post" ? "form" : "",
});
return res.content;
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
}
async function home(filter) {
var classes = [{ "type_id": "1", "type_name": "华语高清" }, { "type_id": "2", "type_name": "日韩精选" }, { "type_id": "3", "type_name": "欧美MV" }, { "type_id": "4", "type_name": "高清现场" }, { "type_id": "5", "type_name": "影视MV" }, { "type_id": "6", "type_name": "夜店视频" }, { "type_id": "7", "type_name": "车模视频" }, { "type_id": "8", "type_name": "热舞视频" }, { "type_id": "9", "type_name": "美女写真" }, { "type_id": "10", "type_name": "美女打碟" }];
// const html = await request(HOST);
// const $ = load(html);
// const class_parse = $(".lei_fl > a[href*=play]");
// const classes = [];
// classes = _.map(class_parse, (cls) => {
// const typeId = cls.attribs["href"];
// typeId = typeId.substring(typeId.lastIndexOf("/") + 1).replace(".html", "");
// return {
// type_id: typeId,
// type_name: cls.children[0].data,
// };
// });
const filterObj = {};
return JSON.stringify({
class: _.map(classes, (cls) => {
cls.land = 1;
cls.ratio = 1.78;
return cls;
}),
filters: filterObj,
});
}
async function homeVod() {
const link = HOST + "/play/9_1.html";
const html = await request(link);
const $ = load(html);
const items = $("div.mv_list > li");
let videos = _.map(items, (it) => {
const a = $(it).find("a:first")[0];
const img = $(it).find("img:first")[0];
const singer = $($(it).find("div.singer")[0]).text().trim();
const remarks = $($(it).find("span.lei_03")[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/play\/(.*).html/g, "$1"),
vod_name: a.attribs.title,
vod_pic: img.attribs["src"],
vod_remarks: "🎤" + singer + "" + remarks || "",
};
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof pg == "undefined") pg = 1;
const link = HOST + "/play/" + tid + "_" + pg + ".html";
const html = await request(link);
const $ = load(html);
const items = $("div.mv_list > li");
let videos = _.map(items, (it) => {
const a = $(it).find("a:first")[0];
const img = $(it).find("img:first")[0];
const singer = $($(it).find("div.singer")[0]).text().trim();
const remarks = $($(it).find("span.lei_03")[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/play\/(.*).html/g, "$1"),
vod_name: a.attribs.title,
vod_pic: img.attribs["src"],
vod_remarks: "🎤" + singer + "" + remarks || "",
};
});
const hasMore = $("div.lei_page > a:contains(下一页)").length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 24,
total: 24 * pgCount,
list: videos,
});
}
async function detail(id) {
const vod = {
vod_id: id,
vod_remarks: "",
};
const playlist = ["观看视频" + "$" + id];
vod.vod_play_from = "道长在线";
vod.vod_play_url = playlist.join("#");
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
const link = HOST + "/skin/kuqimv/play.php";
const ref = HOST + "/play/" + id + ".html";
const pdata = { id: id };
const playUrl = JSON.parse(await request(link, ref, "post", pdata)).url;
const headers = {
Referer: HOST,
};
return JSON.stringify({
parse: 0,
url: playUrl,
header: headers,
});
}
async function search(wd, quick, pg) {
if (pg <= 0 || typeof pg == "undefined") pg = 1;
const link = HOST + "/search.php?key=" + wd + "&pages=" + pg;
const html = await request(link);
const $ = load(html);
const items = $("div.video_list > li");
let videos = _.map(items, (it) => {
const a = $(it).find("a:first")[0];
const singer = $($(it).find("div.singer")[0]).text().trim();
const remarks = $($(it).find("span.lei_04")[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/play\/(.*).html/g, "$1"),
vod_name: a.attribs.title,
vod_pic: "https://www.kuqimv.com/static/images/cover/singer.jpg",
vod_remarks: "🎤" + singer + "" + remarks || "",
};
});
const hasMore = $("div.lei_page > a:contains(>)").length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 20,
total: 20 * pgCount,
list: videos,
land: 1,
ratio: 1.78,
});
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
-195
View File
@@ -1,195 +0,0 @@
// 自动从 地址发布页 获取&跳转url地址
import { load, _ } from './lib/cat.js';
var key = 'libvio';
var HOST = 'https://libvio.app'; // 地址发布页
var host = '';
var siteKey = '';
var siteType = 0;
const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36';
async function request(reqUrl, agentSp) {
var res = await req(reqUrl, {
method: 'get',
headers: {
'User-Agent': agentSp || MOBILE_UA,
'Referer': host
},
});
return res.content;
}
// cfg = {skey: siteKey, ext: extend}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
var html = await request(HOST);
var $ = load(html);
host = $('div.content-top > ul > li').find('a:first')[0].attribs.href;
// console.debug('libvio跳转地址 =====>' + urls); // js_debug.log
}
async function home(filter) {
var html = await request(host);
var $ = load(html);
var class_parse = $('ul.stui-header__menu > li > a[href*=type]');
var classes = [];
classes = _.map(class_parse, (cls) => {
var typeId = cls.attribs['href'];
typeId = typeId.substring(typeId.lastIndexOf('/') + 1).replace('.html','');
return {
type_id: typeId,
type_name: cls.children[0].data,
};
});
var filterObj = {
1:[{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'}]},{key:'lang',name:'语言',value:[{n:'全部',v:''},{n:'国语',v:'国语'},{n:'英语',v:'英语'},{n:'粤语',v:'粤语'},{n:'闽南语',v:'闽南语'},{n:'韩语',v:'韩语'},{n:'日语',v:'日语'},{n:'法语',v:'法语'},{n:'德语',v:'德语'},{n:'其它',v:'其它'}]},{key:'by',name:'排序',value:[{n:'时间',v:'time'},{n:'人气',v:'hits'},{n:'评分',v:'score'}]}],
2:[{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:'其他'}]},{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'}]},{key:'lang',name:'语言',value:[{n:'全部',v:''},{n:'国语',v:'国语'},{n:'英语',v:'英语'},{n:'粤语',v:'粤语'},{n:'闽南语',v:'闽南语'},{n:'韩语',v:'韩语'},{n:'日语',v:'日语'},{n:'其它',v:'其它'}]},{key:'by',name:'排序',value:[{n:'时间',v:'time'},{n:'人气',v:'hits'},{n:'评分',v:'score'}]}],
4:[{key:'area',name:'地区',value:[{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'}]},{key:'lang',name:'语言',value:[{n:'全部',v:''},{n:'国语',v:'国语'},{n:'英语',v:'英语'},{n:'粤语',v:'粤语'},{n:'闽南语',v:'闽南语'},{n:'韩语',v:'韩语'},{n:'日语',v:'日语'},{n:'其它',v:'其它'}]},{key:'by',name:'排序',value:[{n:'时间',v:'time'},{n:'人气',v:'hits'},{n:'评分',v:'score'}]}],
27:[{key:'by',name:'排序',value:[{n:'时间',v:'time'},{n:'人气',v:'hits'},{n:'评分',v:'score'}]}],
15:[{key:'area',name:'地区',value:[{n:'全部',v:''},{n:'日本',v:'日本'},{n:'韩国',v:'韩国'}]},{key:'year',name:'年份',value:[{n:'全部',v:''},{n:'2023',v:'2023'},{n:'2022',v:'2022'},{n:'2021',v:'2021'},{n:'2020',v:'2020'},{n:'2019',v:'2019'},{n:'2018',v:'2018'},{n:'2017',v:'2017'},{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'}]},{key:'lang',name:'语言',value:[{n:'全部',v:''},{n:'国语',v:'国语'},{n:'英语',v:'英语'},{n:'粤语',v:'粤语'},{n:'闽南语',v:'闽南语'},{n:'韩语',v:'韩语'},{n:'日语',v:'日语'},{n:'其它',v:'其它'}]},{key:'by',name:'排序',value:[{n:'时间',v:'time'},{n:'人气',v:'hits'},{n:'评分',v:'score'}]}],
16:[{key:'area',name:'地区',value:[{n:'全部',v:''},{n:'美国',v:'美国'},{n:'英国',v:'英国'},{n:'德国',v:'德国'},{n:'加拿大',v:'加拿大'},{n:'其他',v:'其他'}]},{key:'year',name:'年份',value:[{n:'全部',v:''},{n:'2023',v:'2023'},{n:'2022',v:'2022'},{n:'2021',v:'2021'},{n:'2020',v:'2020'},{n:'2019',v:'2019'},{n:'2018',v:'2018'},{n:'2017',v:'2017'},{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'}]},{key:'lang',name:'语言',value:[{n:'全部',v:''},{n:'国语',v:'国语'},{n:'英语',v:'英语'},{n:'粤语',v:'粤语'},{n:'闽南语',v:'闽南语'},{n:'韩语',v:'韩语'},{n:'日语',v:'日语'},{n:'其它',v:'其它'}]},{key:'by',name:'排序',value:[{n:'时间',v:'time'},{n:'人气',v:'hits'},{n:'评分',v:'score'}]}]
};
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
var link = host + '/show/1--hits---------.html';
var html = await request(link);
var $ = load(html);
var items = $('ul.stui-vodlist > li');
let videos = _.map(items, (item) => {
var a = $(item).find('a:first')[0];
var remarks = $($(item).find('span.pic-text')[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/detail\/(.*).html/g, '$1'),
vod_name: a.attribs.title,
vod_pic: a.attribs['data-original'],
vod_remarks: remarks || '',
};
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof(pg) == 'undefined') pg = 1;
var link = host + '/show/' + tid + '-' + (extend.area || '') + '-' + (extend.by || 'time') + '--' + (extend.lang || '') + '----' + pg + '---' + (extend.year || '') + '.html';
var html = await request(link);
var $ = load(html);
var items = $('ul.stui-vodlist > li');
let videos = _.map(items, (item) => {
var a = $(item).find('a:first')[0];
var remarks = $($(item).find('span.pic-text')[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/detail\/(.*).html/g, '$1'),
vod_name: a.attribs.title,
vod_pic: a.attribs['data-original'],
vod_remarks: remarks || '',
};
});
var hasMore = $('ul.stui-page__item > li > a:contains(下一页)').length > 0;
var pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 24,
total: 24 * pgCount,
list: videos,
});
}
async function detail(id) {
var html = await request(host + '/detail/' + id + '.html');
var $ = load(html);
var vod = {
vod_id: id,
vod_name: $('h1:first').text().trim(),
vod_type: $('.stui-content__detail p:first a').text(),
vod_actor: $('.stui-content__detail p:nth-child(3)').text().replace('主演:',''),
vod_pic: $('.stui-content__thumb img:first').attr('data-original'),
vod_remarks : $('.stui-content__detail p:nth-child(5)').text() || '',
vod_content: $('span.detail-content').text().trim(),
};
var playMap = {};
var tabs = $('div.stui-pannel__head > h3[class*=iconfont]');
var playlists = $('ul.stui-content__playlist');
_.each(tabs, (tab, i) => {
var from = tab.children[0].data;
var list = playlists[i];
list = $(list).find('a');
_.each(list, (it) => {
var title = it.children[0].data;
var playUrl = it.attribs.href;
if (title.length == 0) title = it.children[0].data.trim();
if (!playMap.hasOwnProperty(from)) {
playMap[from] = [];
}
playMap[from].push( title + '$' + playUrl);
});
});
vod.vod_play_from = _.keys(playMap).join('$$$');
var urls = _.values(playMap);
var vod_play_url = _.map(urls, (urlist) => {
return urlist.join('#');
});
vod.vod_play_url = vod_play_url.join('$$$');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
var html = await request(host + id);
html = html.match(/r player_.*?=(.*?)</)[1];
var js = JSON.parse(html);
var url = js.url;
var from = js.from;
var next = js.link_next;
var id = js.id;
var nid = js.nid;
var paurl = await request(host +'/static/player/' + from + '.js');
paurl = paurl.match(/ src="(.*?)'/)[1];
var purl = paurl + url + '&next=' + next + '&id=' + id + '&nid=' + nid;
var playUrl = await request(purl);
playUrl = playUrl.match(/var .* = '(.*?)'/)[1];
// console.debug('libvio playUrl =====>' + playUrl); // js_debug.log
return JSON.stringify({
parse: 0,
url: playUrl,
});
}
async function search(wd, quick) {
var data = JSON.parse(await request(host + '/index.php/ajax/suggest?mid=1&wd=' + wd + '&limit=50')).list;
var videos = [];
for (const vod of data) {
videos.push({
vod_id: vod.id,
vod_name: vod.name,
vod_pic: vod.pic,
vod_remarks: '',
});
}
return JSON.stringify({
list: videos,
limit: 50,
});
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
+1 -1
View File
@@ -189,7 +189,7 @@ playGroups.forEach(function (it) {
haveDelay = true;
TABS.push("選擇右側綫路");
}
TABS.push("夸克盤" + groupIndex);
TABS.push("夸克盤" + groupIndex);
}
groupIndex = groupIndex + 1;
}
+1 -1
View File
@@ -189,7 +189,7 @@ playGroups.forEach(function (it) {
haveDelay = true;
TABS.push("選擇右側綫路");
}
TABS.push("夸克盤" + groupIndex);
TABS.push("夸克盤" + groupIndex);
}
groupIndex = groupIndex + 1;
}
+2 -2
View File
@@ -45,9 +45,9 @@ let tabse = false;
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
-265
View File
@@ -1,265 +0,0 @@
// 一级&搜索页 直向改横向 --> land:1, ratio:1.78,
import { _ } from "assets://js/lib/cat.js";
let key = '我的哔哩';
let HOST = 'https://api.bilibili.com';
let siteKey = '';
let siteType = 0;
const PC_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.361";
// let cookie = "DedeUserID=690781341;DedeUserID__ckMd5=cabc96906269c5b6;SESSDATA=2245ba24%2C1684212125%2C466fd%2Ab2;bili_jct=de6fdb60c10f8a83910aa55d79407b4e;"; // 可更换成自己的cookie
let cookie = "http://127.0.0.1:9978/file/tvfan/cookie.txt"; // 可更换成自己的cookie
async function request(reqUrl) {
const res = await req(reqUrl, {
headers: getMb(),
});
return res.content;
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
if (cookie.startsWith('http')) cookie = await request(cookie);
// console.debug('我的哔哩 cookie =====>' + cookie); // js_debug.log
}
async function home(filter) {
let classes = [{"type_id":"经典无损音乐合集","type_name":"经典无损音乐合集"},{"type_id":"帕梅拉","type_name":"帕梅拉"},{"type_id":"太极拳","type_name":"太极拳"},{"type_id":"健身","type_name":"健身"},{"type_id":"舞蹈","type_name":"舞蹈"},{"type_id":"音乐","type_name":"音乐"},{"type_id":"歌曲","type_name":"歌曲"},{"type_id":"MV4K","type_name":"MV"},{"type_id":"演唱会4K","type_name":"演唱会"},{"type_id":"白噪音4K","type_name":"白噪音"},{"type_id":"知名UP主","type_name":"知名UP主"},{"type_id":"说案","type_name":"说案"},{"type_id":"解说","type_name":"解说"},{"type_id":"演讲","type_name":"演讲"},{"type_id":"时事","type_name":"时事"},{"type_id":"探索发现超清","type_name":"探索发现"},{"type_id":"纪录片超清","type_name":"纪录片"},{"type_id":"平面设计教学","type_name":"平面设计教学"},{"type_id":"软件教程","type_name":"软件教程"},{"type_id":"实用教程","type_name":"实用教程"},{"type_id":"旅游","type_name":"旅游"},{"type_id":"风景4K","type_name":"风景"},{"type_id":"食谱","type_name":"食谱"},{"type_id":"美食超清","type_name":"美食"},{"type_id":"搞笑","type_name":"搞笑"},{"type_id":"球星","type_name":"球星"},{"type_id":"动物世界超清","type_name":"动物世界"},{"type_id":"相声小品","type_name":"相声小品"},{"type_id":"戏曲","type_name":"戏曲"},{"type_id":"儿童","type_name":"儿童"},{"type_id":"小姐姐4K","type_name":"小姐姐"},{"type_id":"热门","type_name":"热门"},{"type_id":"旅行探险","type_name":"旅行探险"}];
let filterObj = {
经典无损音乐合集:[{key:'tid',name:'分类','value':[{n:'全部',v:'经典无损音乐合集'},{n:'粤语',v:'粤语歌曲超清'},{n:'热榜',v:'2022年热们歌曲'},{n:'经典',v:'经典老歌'},{n:'古风',v:'古风歌曲'},{n:'闽南',v:'闽南语歌曲'},{n:'舞曲',v:'DJ歌曲'},{n:'翻唱',v:'网红翻唱歌曲'},{n:'音乐',v:'音乐 4k'},{n:'阿黛尔',v:'阿黛尔演唱会超清超清'},{n:'Blackpink',v:'blackpink演唱会超清'},{n:'Beyond',v:'beyond演唱会超清'},{n:'坂井泉水',v:'坂井泉水演唱会超清'},{n:'宝丽金',v:'宝丽金演唱会超清'},{n:'布兰妮',v:'布兰妮演唱会超清'},{n:'陈瑞',v:'陈瑞演唱会超清'},{n:'陈奕迅',v:'陈奕迅演唱会超清'},{n:'崔健',v:'崔健演唱会超清'},{n:'Coldplay',v:'coldplay演唱会超清'},{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:'H黑豹乐队'},{n:'降央卓玛',v:'降央卓玛演唱会超清'},{n:'江慧',v:'江慧歌曲'},{n:'吉永小百合',v:'吉永小百合歌曲'},{n:'金庸',v:'金庸影视歌曲'},{n:'刘德华',v:'刘德华演唱会超清'},{n:'Lady Gaga',v:'Lady Gaga演唱会超清'},{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:'McHotdog',v:'MC Hotdog演唱会超清'},{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:'TFBOYS',v:'TFBOYS演唱会超清'},{n:'太极乐队',v:'太极乐队演唱会超清'},{n:'唐朝摇滚',v:'唐朝摇滚演唱会超清'},{n:'谭咏麟',v:'谭咏麟演唱会超清'},{n:'王琪',v:'王琪歌曲'},{n:'伍珂玥',v:'伍珂玥演唱会超清'},{n:'王杰',v:'王杰演唱会超清'},{n:'伍佰',v:'伍佰演唱会超清'},{n:'温兆伦',v:'温兆伦演唱会超清'},{n:'王菲',v:'王菲演唱会超清'},{n:'熊天平',v:'熊天平演唱会超清'},{n:'徐小凤',v:'徐小凤演唱会超清'},{n:'席琳迪翁',v:'席琳迪翁演唱会超清'},{n:'许嵩',v:'黄许嵩演唱会超清'},{n:'许美静',v:'许美静演唱会超清'},{n:'许冠杰',v:'许冠杰演唱会超清'},{n:'小虎队',v:'小虎队演唱会超清'},{n:'许巍',v:'许巍演唱会超清'},{n:'叶启田',v:'叶启田演唱会超清'},{n:'叶玉卿',v:'叶玉卿演唱会超清'},{n:'杨千嬅',v:'杨千嬅演唱会超清'},{n:'左麟右李',v:'左麟右李演唱会超清'},{n:'赵传',v:'赵传演唱会超清'},{n:'周华健',v:'周华健演唱会超清'},{n:'周启生',v:'周启生演唱会超清'},{n:'张信哲',v:'张信哲演唱会超清'},{n:'周慧敏',v:'周慧敏演唱会超清'},{n:'张碧晨',v:'张碧晨演唱会超清'},{n:'中岛美雪',v:'中岛美雪演唱会超清'},{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:'tid',name:'分类','value':[{n:'全部',v:'帕梅拉'},{n:'瘦腿',v:'帕梅拉瘦腿'},{n:'腹部',v:'帕梅拉腹部'},{n:'手臂',v:'帕梅拉手臂'},{n:'热身',v:'帕梅拉热身'},{n:'舞蹈',v:'帕梅拉舞蹈'},{n:'燃脂',v:'帕梅拉燃脂'},{n:'有氧',v:'帕梅拉有氧'},{n:'拉伸',v:'帕梅拉拉伸'}]}],
太极拳:[{key:'tid',name:'分类','value':[{n:'全部',v:'太极拳'},{n:'邱慧芳',v:'太极拳邱慧芳'},{n:'陈氏',v:'太极拳陈氏'},{n:'武当',v:'太极拳武当'},{n:'二十四式',v:'太极拳二十四式'},{n:'三十六式',v:'太极拳三十六式'},{n:'五禽戏',v:'五禽戏'},{n:'八段锦',v:'八段锦'}]}],
健身:[{key:'tid',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:'冥想'}]}],
舞蹈:[{key:'tid',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:'河南卫视国风'}]}],
歌曲:[{key:'tid',name:'分类','value':[{n:'全部',v:'歌曲超清'},{n:'歌曲合集',v:'经典无损音乐合集'},{n:'歌曲热榜',v:'2022年歌曲排行榜'},{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:'DJ歌曲'},{n:'欢快歌曲',v:'欢快歌曲'},{n:'伤感歌曲',v:'伤感歌曲'},{n:'70年代歌曲',v:'70年代歌曲'},{n:'80年代歌曲',v:'80年代歌曲'},{n:'90年代歌曲',v:'90年代歌曲'},{n:'00年代歌曲',v:'00年代歌曲'},{n:'10年代歌曲',v:'10年代歌曲'},{n:'2020年歌曲',v:'2020年歌曲'},{n:'2021年歌曲',v:'2021年歌曲'},{n:'2022年歌曲',v:'2022年歌曲'},{n:'经典儿歌',v:'经典儿歌'},{n:'大合唱',v:'大合唱'},{n:'音乐汇',v:'音乐汇'},{n:'美声歌曲',v:'美声歌曲'},{n:'通俗歌曲',v:'通俗歌曲'},{n:'民族歌曲',v:'民族歌曲'}]}],
音乐:[{key:'tid',name:'分类','value':[{n:'全部',v:'音乐4K'},{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:'DJ舞曲',v:'DJ舞曲'}]}],
MV4K:[{key:'tid',name:'分类','value':[{n:'全部',v:'MV4K'},{n:'A阿杜',v:'阿杜MV4K'},{n:'A阿黛尔',v:'阿黛尔MV4K'},{n:'BBeyond',v:'BeyondMV4K'},{n:'BBy2',v:'By2MV4K'},{n:'BBIGBANG',v:'BIGBANGMV4K'},{n:'B布兰妮',v:'布兰妮MV4K'},{n:'C陈奕迅',v:'陈奕迅MV4K'},{n:'C蔡依林',v:'蔡依林MV4K'},{n:'C初音未来',v:'初音未来MV4K'},{n:'C蔡健雅',v:'蔡健雅MV4K'},{n:'C陈小春',v:'陈小春MV4K'},{n:'C草蜢',v:'草蜢MV4K'},{n:'C陈慧娴',v:'陈慧娴MV4K'},{n:'C崔健',v:'崔健MV4K'},{n:'C仓木麻衣',v:'仓木麻衣MV4K'},{n:'D戴荃',v:'戴荃MV4K'},{n:'D动力火车',v:'动力火车MV4K'},{n:'D邓丽君',v:'邓丽君MV4K'},{n:'D丁当',v:'丁当MV4K'},{n:'D刀郎',v:'刀郎MV4K'},{n:'D邓紫棋',v:'邓紫棋MV4K'},{n:'D戴佩妮',v:'戴佩妮MV4K'},{n:'D邓丽君',v:'邓丽君MV4K'},{n:'F飞儿乐队',v:'飞儿乐队MV4K'},{n:'F费玉清',v:'费玉清MV4K'},{n:'F费翔',v:'费翔MV4K'},{n:'F方大同',v:'方大同MV4K'},{n:'F房东的猫',v:'房东的猫MV4K'},{n:'F凤飞飞',v:'凤飞飞MV4K'},{n:'F凤凰传奇',v:'凤凰传奇MV4K'},{n:'G古风歌曲',v:'古风歌曲4K'},{n:'G国乐大典',v:'国乐大典4K'},{n:'G郭采洁',v:'郭采洁MV4K'},{n:'G光良',v:'光良MV4K'},{n:'G郭静',v:'郭静MV4K'},{n:'G郭富城',v:'郭富城MV4K'},{n:'H胡彦斌',v:'胡彦斌MV4K'},{n:'H胡夏',v:'胡夏MV4K'},{n:'H韩红',v:'韩红MV4K'},{n:'H黄品源',v:'黄品源MV4K'},{n:'H黄小琥',v:'黄小琥MV4K'},{n:'H花儿乐队',v:'花儿乐队MV4K'},{n:'H黄家强',v:'黄家强MV4K'},{n:'H后街男孩',v:'后街男孩MV4K'},{n:'J经典老歌',v:'经典老歌4K'},{n:'J贾斯丁比伯',v:'贾斯丁比伯MV4K'},{n:'J金池',v:'金池MV4K'},{n:'J金志文',v:'金志文MV4K'},{n:'J焦迈奇',v:'焦迈奇MV4K'},{n:'K筷子兄弟',v:'筷子兄弟MV4K'},{n:'L李玟',v:'李玟MV4K'},{n:'L林忆莲',v:'林忆莲MV4K'},{n:'L李克勤',v:'李克勤MV4K'},{n:'L刘宪华',v:'刘宪华MV4K'},{n:'L李圣杰',v:'李圣杰MV4K'},{n:'L林宥嘉',v:'林宥嘉MV4K'},{n:'L梁静茹',v:'梁静茹MV4K'},{n:'L李健',v:'李健MV4K'},{n:'L林俊杰',v:'林俊杰MV4K'},{n:'L李玉刚',v:'李玉刚MV4K'},{n:'L林志炫',v:'林志炫MV4K'},{n:'L李荣浩',v:'李荣浩MV4K'},{n:'L李宇春',v:'李宇春MV4K'},{n:'L洛天依',v:'洛天依MV4K'},{n:'L林子祥',v:'林子祥MV4K'},{n:'L李宗盛',v:'李宗盛MV4K'},{n:'L黎明',v:'黎明MV4K'},{n:'L刘德华',v:'刘德华MV4K'},{n:'L罗大佑',v:'罗大佑MV4K'},{n:'L林肯公园',v:'林肯公园MV4K'},{n:'LLadyGaga',v:'LadyGagaMV4K'},{n:'L旅行团乐队',v:'旅行团乐队MV4K'},{n:'M莫文蔚',v:'莫文蔚MV4K'},{n:'M毛不易',v:'毛不易MV4K'},{n:'M梅艳芳',v:'梅艳芳MV4K'},{n:'M迈克尔杰克逊',v:'迈克尔杰克逊MV4K'},{n:'N南拳妈妈',v:'南拳妈妈MV4K'},{n:'P朴树',v:'朴树MV4K'},{n:'Q齐秦',v:'齐秦MV4K'},{n:'Q青鸟飞鱼',v:'青鸟飞鱼MV4K'},{n:'R容祖儿',v:'容祖儿MV4K'},{n:'R热歌',v:'热歌MV4K'},{n:'R任贤齐',v:'任贤齐MV4K'},{n:'S水木年华',v:'水木年华MV4K'},{n:'S孙燕姿',v:'孙燕姿MV4K'},{n:'S苏打绿',v:'苏打绿MV4K'},{n:'SSHE',v:'SHEMV4K'},{n:'S孙楠',v:'孙楠MV4K'},{n:'T陶喆',v:'陶喆MV4K'},{n:'T谭咏麟',v:'谭咏麟MV4K'},{n:'T田馥甄',v:'田馥甄MV4K'},{n:'T谭维维',v:'谭维维MV4K'},{n:'T逃跑计划',v:'逃跑计划MV4K'},{n:'T田震',v:'田震MV4K'},{n:'T谭晶',v:'谭晶MV4K'},{n:'T屠洪刚',v:'屠洪刚MV4K'},{n:'T泰勒·斯威夫特',v:'泰勒·斯威夫特MV4K'},{n:'W王力宏',v:'王力宏MV4K'},{n:'W王杰',v:'王杰MV4K'},{n:'W吴克群',v:'吴克群MV4K'},{n:'W王心凌',v:'王心凌MV4K'},{n:'W汪峰',v:'汪峰MV4K'},{n:'W伍佰',v:'伍佰MV4K'},{n:'W王菲',v:'王菲MV4K'},{n:'W五月天',v:'五月天MV4K'},{n:'W汪苏泷',v:'汪苏泷MV4K'},{n:'X徐佳莹',v:'徐佳莹MV4K'},{n:'X弦子',v:'弦子MV4K'},{n:'X萧亚轩',v:'萧亚轩MV4K'},{n:'X许巍',v:'许巍MV4K'},{n:'X薛之谦',v:'薛之谦MV4K'},{n:'X许嵩',v:'许嵩MV4K'},{n:'X小虎队',v:'小虎队MV4K'},{n:'X萧敬腾',v:'萧敬腾MV4K'},{n:'X谢霆锋',v:'谢霆锋MV4K'},{n:'X徐小凤',v:'徐小凤MV4K'},{n:'X信乐队',v:'信乐队MV4K'},{n:'Y夜愿乐队',v:'夜愿乐队MV4K'},{n:'Y原创音乐',v:'原创音乐MV4K'},{n:'Y羽泉',v:'羽泉MV4K'},{n:'Y粤语',v:'粤语MV4K'},{n:'Y郁可唯',v:'郁可唯MV4K'},{n:'Y叶倩文',v:'叶倩文MV4K'},{n:'Y杨坤',v:'杨坤MV4K'},{n:'Y庾澄庆',v:'庾澄庆MV4K'},{n:'Y尤长靖',v:'尤长靖MV4K'},{n:'Y易烊千玺',v:'易烊千玺MV4K'},{n:'Y袁娅维',v:'袁娅维MV4K'},{n:'Y杨丞琳',v:'杨丞琳MV4K'},{n:'Y杨千嬅',v:'杨千嬅MV4K'},{n:'Y杨宗纬',v:'杨宗纬MV4K'},{n:'Z周杰伦',v:'周杰伦MV4K'},{n:'Z张学友',v:'张学友MV4K'},{n:'Z张信哲',v:'张信哲MV4K'},{n:'Z张宇',v:'张宇MV4K'},{n:'Z周华健',v:'周华健MV4K'},{n:'Z张韶涵',v:'张韶涵MV4K'},{n:'Z周深',v:'周深MV4K'},{n:'Z纵贯线',v:'纵贯线MV4K'},{n:'Z赵雷',v:'赵雷MV4K'},{n:'Z周传雄',v:'周传雄MV4K'},{n:'Z张国荣',v:'张国荣MV4K'},{n:'Z周慧敏',v:'周慧敏MV4K'},{n:'Z张惠妹',v:'张惠妹MV4K'},{n:'Z周笔畅',v:'周笔畅MV4K'},{n:'Z郑中基',v:'郑中基MV4K'},{n:'Z张艺兴',v:'张艺兴MV4K'},{n:'Z张震岳',v:'张震岳MV4K'},{n:'Z中国好声音',v:'中国好声音MV4K'},{n:'Z张雨生',v:'张雨生MV4K'},{n:'Z郑智化',v:'郑智化MV4K'},{n:'Z卓依婷',v:'卓依婷MV4K'},{n:'Z中岛美雪',v:'中岛美雪MV4K'}]}],
演唱会4K:[{key:'tid',name:'分类','value':[{n:'全部',v:'演唱会4K'},{n:'A阿杜',v:'阿杜演唱会4K'},{n:'A阿黛尔',v:'阿黛尔演唱会4K'},{n:'BBeyond',v:'Beyond演唱会4K'},{n:'BBy2',v:'By2演唱会4K'},{n:'BBIGBANG',v:'BIGBANG演唱会4K'},{n:'B布兰妮',v:'布兰妮演唱会4K'},{n:'B坂井泉水',v:'坂井泉水演唱会4K'},{n:'C陈奕迅',v:'陈奕迅演唱会4K'},{n:'C蔡依林',v:'蔡依林演唱会4K'},{n:'C初音未来',v:'初音未来演唱会4K'},{n:'C蔡健雅',v:'蔡健雅演唱会4K'},{n:'C陈小春',v:'陈小春演唱会4K'},{n:'C草蜢',v:'草蜢演唱会4K'},{n:'C陈慧娴',v:'陈慧娴演唱会4K'},{n:'C崔健',v:'崔健演唱会4K'},{n:'C仓木麻衣',v:'仓木麻衣演唱会4K'},{n:'D戴荃',v:'戴荃演唱会4K'},{n:'D动力火车',v:'动力火车演唱会4K'},{n:'D邓丽君',v:'邓丽君演唱会4K'},{n:'D丁当',v:'丁当演唱会4K'},{n:'D刀郎',v:'刀郎演唱会4K'},{n:'D邓紫棋',v:'邓紫棋演唱会4K'},{n:'D戴佩妮',v:'戴佩妮演唱会4K'},{n:'D邓丽君',v:'邓丽君演唱会4K'},{n:'F飞儿乐队',v:'飞儿乐队演唱会4K'},{n:'F费玉清',v:'费玉清演唱会4K'},{n:'F费翔',v:'费翔演唱会4K'},{n:'F方大同',v:'方大同演唱会4K'},{n:'F房东的猫',v:'房东的猫演唱会4K'},{n:'F凤飞飞',v:'凤飞飞演唱会4K'},{n:'F凤凰传奇',v:'凤凰传奇演唱会4K'},{n:'G郭采洁',v:'郭采洁演唱会4K'},{n:'G光良',v:'光良演唱会4K'},{n:'G郭静',v:'郭静演唱会4K'},{n:'G郭富城',v:'郭富城演唱会4K'},{n:'H胡彦斌',v:'胡彦斌演唱会4K'},{n:'H胡夏',v:'胡夏演唱会4K'},{n:'H韩红',v:'韩红演唱会4K'},{n:'H黄品源',v:'黄品源演唱会4K'},{n:'H黄小琥',v:'黄小琥演唱会4K'},{n:'H花儿乐队',v:'花儿乐队演唱会4K'},{n:'H黄家强',v:'黄家强演唱会4K'},{n:'H后街男孩',v:'后街男孩演唱会4K'},{n:'J经典老歌',v:'经典老歌演唱会4K'},{n:'J贾斯丁比伯',v:'贾斯丁比伯演唱会4K'},{n:'J金池',v:'金池演唱会4K'},{n:'J金志文',v:'金志文演唱会4K'},{n:'J焦迈奇',v:'焦迈奇演唱会4K'},{n:'K筷子兄弟',v:'筷子兄弟演唱会4K'},{n:'L李玟',v:'李玟演唱会4K'},{n:'L林忆莲',v:'林忆莲演唱会4K'},{n:'L李克勤',v:'李克勤演唱会4K'},{n:'L刘宪华',v:'刘宪华演唱会4K'},{n:'L李圣杰',v:'李圣杰演唱会4K'},{n:'L林宥嘉',v:'林宥嘉演唱会4K'},{n:'L梁静茹',v:'梁静茹演唱会4K'},{n:'L李健',v:'李健演唱会4K'},{n:'L林俊杰',v:'林俊杰演唱会4K'},{n:'L李玉刚',v:'李玉刚演唱会4K'},{n:'L林志炫',v:'林志炫演唱会4K'},{n:'L李荣浩',v:'李荣浩演唱会4K'},{n:'L李宇春',v:'李宇春演唱会4K'},{n:'L洛天依',v:'洛天依演唱会4K'},{n:'L林子祥',v:'林子祥演唱会4K'},{n:'L李宗盛',v:'李宗盛演唱会4K'},{n:'L黎明',v:'黎明演唱会4K'},{n:'L刘德华',v:'刘德华演唱会4K'},{n:'L罗大佑',v:'罗大佑演唱会4K'},{n:'L林肯公园',v:'林肯公园演唱会4K'},{n:'LLadyGaga',v:'LadyGaga演唱会4K'},{n:'L旅行团乐队',v:'旅行团乐队演唱会4K'},{n:'M莫文蔚',v:'莫文蔚演唱会4K'},{n:'M毛不易',v:'毛不易演唱会4K'},{n:'M梅艳芳',v:'梅艳芳演唱会4K'},{n:'M迈克尔杰克逊',v:'迈克尔杰克逊演唱会4K'},{n:'N南拳妈妈',v:'南拳妈妈演唱会4K'},{n:'P朴树',v:'朴树演唱会4K'},{n:'Q齐秦',v:'齐秦演唱会4K'},{n:'Q青鸟飞鱼',v:'青鸟飞鱼演唱会4K'},{n:'R容祖儿',v:'容祖儿演唱会4K'},{n:'R任贤齐',v:'任贤齐演唱会4K'},{n:'S水木年华',v:'水木年华演唱会4K'},{n:'S孙燕姿',v:'孙燕姿演唱会4K'},{n:'S苏打绿',v:'苏打绿演唱会4K'},{n:'SSHE',v:'SHE演唱会4K'},{n:'S孙楠',v:'孙楠演唱会4K'},{n:'T陶喆',v:'陶喆演唱会4K'},{n:'T谭咏麟',v:'谭咏麟演唱会4K'},{n:'T田馥甄',v:'田馥甄演唱会4K'},{n:'T谭维维',v:'谭维维演唱会4K'},{n:'T逃跑计划',v:'逃跑计划演唱会4K'},{n:'T田震',v:'田震演唱会4K'},{n:'T谭晶',v:'谭晶演唱会4K'},{n:'T屠洪刚',v:'屠洪刚演唱会4K'},{n:'T泰勒·斯威夫特',v:'泰勒·斯威夫特演唱会4K'},{n:'W王力宏',v:'王力宏演唱会4K'},{n:'W王杰',v:'王杰演唱会4K'},{n:'W吴克群',v:'吴克群演唱会4K'},{n:'W王心凌',v:'王心凌演唱会4K'},{n:'W汪峰',v:'汪峰演唱会4K'},{n:'W伍佰',v:'伍佰演唱会4K'},{n:'W王菲',v:'王菲演唱会4K'},{n:'W五月天',v:'五月天演唱会4K'},{n:'W汪苏泷',v:'汪苏泷演唱会4K'},{n:'X徐佳莹',v:'徐佳莹演唱会4K'},{n:'X弦子',v:'弦子演唱会4K'},{n:'X萧亚轩',v:'萧亚轩演唱会4K'},{n:'X许巍',v:'许巍演唱会4K'},{n:'X薛之谦',v:'薛之谦演唱会4K'},{n:'X许嵩',v:'许嵩演唱会4K'},{n:'X小虎队',v:'小虎队演唱会4K'},{n:'X萧敬腾',v:'萧敬腾演唱会4K'},{n:'X谢霆锋',v:'谢霆锋演唱会4K'},{n:'X徐小凤',v:'徐小凤演唱会4K'},{n:'X信乐队',v:'信乐队演唱会4K'},{n:'Y夜愿乐队',v:'夜愿乐队演唱会4K'},{n:'Y羽泉',v:'羽泉演唱会4K'},{n:'Y郁可唯',v:'郁可唯演唱会4K'},{n:'Y叶倩文',v:'叶倩文演唱会4K'},{n:'Y杨坤',v:'杨坤演唱会4K'},{n:'Y庾澄庆',v:'庾澄庆演唱会4K'},{n:'Y尤长靖',v:'尤长靖演唱会4K'},{n:'Y易烊千玺',v:'易烊千玺演唱会4K'},{n:'Y袁娅维',v:'袁娅维演唱会4K'},{n:'Y杨丞琳',v:'杨丞琳演唱会4K'},{n:'Y杨千嬅',v:'杨千嬅演唱会4K'},{n:'Y杨宗纬',v:'杨宗纬演唱会4K'},{n:'Z周杰伦',v:'周杰伦演唱会4K'},{n:'Z张学友',v:'张学友演唱会4K'},{n:'Z张信哲',v:'张信哲演唱会4K'},{n:'Z张宇',v:'张宇演唱会4K'},{n:'Z周华健',v:'周华健演唱会4K'},{n:'Z张韶涵',v:'张韶涵演唱会4K'},{n:'Z周深',v:'周深演唱会4K'},{n:'Z纵贯线',v:'纵贯线演唱会4K'},{n:'Z赵雷',v:'赵雷演唱会4K'},{n:'Z周传雄',v:'周传雄演唱会4K'},{n:'Z张国荣',v:'张国荣演唱会4K'},{n:'Z周慧敏',v:'周慧敏演唱会4K'},{n:'Z张惠妹',v:'张惠妹演唱会4K'},{n:'Z周笔畅',v:'周笔畅演唱会4K'},{n:'Z郑中基',v:'郑中基演唱会4K'},{n:'Z张艺兴',v:'张艺兴演唱会4K'},{n:'Z张震岳',v:'张震岳演唱会4K'},{n:'Z张雨生',v:'张雨生演唱会4K'},{n:'Z郑智化',v:'郑智化演唱会4K'},{n:'Z卓依婷',v:'卓依婷演唱会4K'},{n:'Z中岛美雪',v:'中岛美雪演唱会4K'}]}],
白噪音4K:[{key:'tid',name:'分类','value':[{n:'全部',v:'白噪音4K'},{n:'窗白噪音',v:'窗白噪音4K'},{n:'环境白噪音',v:'环境白噪音4K'},{n:'自然白噪音',v:'自然白噪音4K'},{n:'助眠白噪音',v:'助眠白噪音4K'}]}],
知名UP主:[{key:'tid',name:'分类','value':[{n:'全部',v:'知名UP主'},{n:'菠萝赛东',v:'菠萝赛东'},{n:'冯提莫',v:'冯提莫'},{n:'徐云流浪中国',v:'徐云流浪中国'},{n:'YanGeographer',v:'YanGeographer'},{n:'棋手战鹰',v:'棋手战鹰'},{n:'林延秋',v:'林延秋'},{n:'吴sir说电影',v:'吴sir说电影'},{n:'李子柒',v:'李子柒'},{n:'美食作家王刚R',v:'美食作家王刚R'},{n:'智能路障',v:'智能路障'},{n:'于赓哲老师',v:'于赓哲老师'},{n:'一战成名_功夫',v:'一战成名_功夫'},{n:'历史调研室',v:'历史调研室'},{n:'利利川',v:'利利川'},{n:'我叫孙火旺',v:'我叫孙火旺'},{n:'渤海小吏',v:'渤海小吏'},{n:'无穷小亮的科普日常',v:'无穷小亮的科普日常'},{n:'申六宫',v:'申六宫'},{n:'-LKs-',v:'-LKs-'},{n:'小约翰可汗',v:'小约翰可汗'},{n:'low馆长',v:'low馆长'},{n:'自说自话的总裁',v:'自说自话的总裁'},{n:'所长林超',v:'所长林超'},{n:'世界未解之谜M',v:'世界未解之谜M'},{n:'李永乐老师官方',v:'李永乐老师官方'},{n:'罗兹',v:'罗兹'},{n:'回到2049',v:'回到2049'},{n:'二次元的中科院物理所',v:'二次元的中科院物理所'},{n:'毕导THU',v:'毕导THU'},{n:'罗翔讲刑法',v:'罗翔讲刑法'},{n:'戴博士实验室',v:'戴博士实验室'},{n:'芳斯塔芙',v:'芳斯塔芙'},{n:'参赛者网',v:'参赛者网'},{n:'三维地图看世界',v:'三维地图看世界'},{n:'有机社会',v:'有机社会'},{n:'乌鸦校尉CaptainWuya',v:'乌鸦校尉CaptainWuya'},{n:'果壳',v:'果壳'},{n:'严伯钧',v:'严伯钧'},{n:'是你们的康康',v:'是你们的康康'},{n:'老爸评测',v:'老爸评测'},{n:'硬核的半佛仙人',v:'硬核的半佛仙人'},{n:'盗月社食遇记',v:'盗月社食遇记'},{n:'我是郭杰瑞',v:'我是郭杰瑞'},{n:'papi酱',v:'papi酱'},{n:'老番茄',v:'老番茄'},{n:'绵羊料理',v:'绵羊料理'},{n:'老师好我叫何同学',v:'老师好我叫何同学'},{n:'敬汉卿',v:'敬汉卿'},{n:'周六野Zoey',v:'周六野Zoey'},{n:'木鱼水心',v:'木鱼水心'},{n:'凉风Kaze',v:'凉风Kaze'},{n:'小潮院长',v:'小潮院长'},{n:'中国BOY超级大猩猩',v:'中国BOY超级大猩猩'},{n:'敖厂长',v:'敖厂长'},{n:'A阿阳热爱前端',v:'阿阳热爱前端'},{n:'A艾栗夏',v:'艾栗夏'},{n:'A爱读书的King',v:'爱读书的King'},{n:'A爱看报的Kris',v:'爱看报的Kris'},{n:'A安森垚',v:'安森垚'},{n:'A安慰记心理小店',v:'安慰记心理小店'},{n:'A安因思谈',v:'安因思谈'},{n:'A昂克英文君',v:'昂克英文君'},{n:'B阪神电车',v:'阪神电车'},{n:'B宝剑侍从',v:'宝剑侍从'},{n:'B北京青年x凉子访谈录',v:'北京青年x凉子访谈录'},{n:'B北师大刘文利',v:'北师大刘文利'},{n:'B备胎说车',v:'备胎说车'},{n:'B毕导THU',v:'毕导THU'},{n:'B哔哩哔哩纪录片',v:'哔哩哔哩纪录片'},{n:'B蝙蝠音乐',v:'蝙蝠音乐'},{n:'B冰零-Mahiru忠诚眷属',v:'冰零-Mahiru忠诚眷属'},{n:'B冰糖雪梨Cherie',v:'冰糖雪梨Cherie'},{n:'B波普尔2020',v:'波普尔2020'},{n:'B不务正业的李雷',v:'不务正业的李雷'},{n:'B不正经老丝',v:'不正经老丝'},{n:'C草说木言',v:'草说木言'},{n:'C柴知道',v:'柴知道'},{n:'C程十安',v:'C程十安'},{n:'D大啊毛君',v:'大啊毛君'},{n:'D大连老师王博文',v:'大连老师王博文'},{n:'D大门ZRR',v:'大门ZRR'},{n:'D大象放映室',v:'大象放映室'},{n:'D大又元',v:'大又元'},{n:'D戴建业老师',v:'戴建业老师'},{n:'D调侃企业发展史',v:'调侃企业发展史'},{n:'D动画讲编程',v:'动画讲编程'},{n:'D动物学博士陈睿',v:'动物学博士陈睿'},{n:'D杜滑滑',v:'杜滑滑'},{n:'E鹅姐职场',v:'鹅姐职场'},{n:'F帆雨动画',v:'帆雨动画'},{n:'F反诈骗',v:'反诈骗'},{n:'F方猫boom',v:'方猫boom'},{n:'F芳斯塔芙',v:'芳斯塔芙'},{n:'F菲比老司机',v:'菲比老司机'},{n:'F附议YJango',v:'附议YJango'},{n:'G肝帝董佳宁',v:'肝帝董佳宁'},{n:'G高盛元',v:'高盛元'},{n:'G龚老师课堂',v:'龚老师课堂'},{n:'G郭爷物理',v:'郭爷物理'},{n:'G国家玮-开明致学',v:'国家玮-开明致学'},{n:'G果壳',v:'果壳'},{n:'G果木浪子',v:'果木浪子'},{n:'H哈佛雪梨',v:'哈佛雪梨'},{n:'H韩顺平',v:'韩顺平'},{n:'H韩语养乐多老师',v:'韩语养乐多老师'},{n:'H画画的番木',v:'画画的番木'},{n:'H画渣花小烙',v:'画渣花小烙'},{n:'H幻海航行',v:'幻海航行'},{n:'H灰细胞',v:'灰细胞'},{n:'H回到2049',v:'回到2049'},{n:'H会放羊的教书匠',v:'会放羊的教书匠'},{n:'J机械百宝箱',v:'机械百宝箱'},{n:'J纪录片我去看世界',v:'纪录片我去看世界'},{n:'J纪录片之家字幕组',v:'纪录片之家字幕组'},{n:'J技术研究院',v:'技术研究院'},{n:'J季绝学',v:'季绝学'},{n:'J夹性芝士',v:'夹性芝士'},{n:'J讲历史的赵冬梅',v:'讲历史的赵冬梅'},{n:'J经济研究室-祈祷',v:'经济研究室-祈祷'},{n:'J军武志',v:'军武志'},{n:'K看懂村',v:'看懂村'},{n:'K科普中国',v:'科普中国'},{n:'K科学声音',v:'科学声音'},{n:'L拉片实验室',v:'拉片实验室'},{n:'L唠点历史',v:'唠点历史'},{n:'L老K的无聊杂谈',v:'老K的无聊杂谈'},{n:'L老爸评测',v:'老爸评测'},{n:'L老龙山下的狐狸',v:'老龙山下的狐狸'},{n:'L老师好我叫何同学',v:'老师好我叫何同学'},{n:'L乐乐老师的网络课堂',v:'乐乐老师的网络课堂'},{n:'L乐有为医生',v:'乐有为医生'},{n:'L冷静医夏',v:'冷静医夏'},{n:'L李船长笔记',v:'李船长笔记'},{n:'L李永乐老师官方',v:'李永乐老师官方'},{n:'L历史调研室',v:'历史调研室'},{n:'L历史启示录',v:'历史启示录'},{n:'L罗翔说刑法',v:'罗翔说刑法'},{n:'M木鱼水心',v:'木鱼水心'},{n:'S森纳映画',v:'森纳映画'},{n:'S沙盘上的战争',v:'沙盘上的战争'},{n:'S设计师的睡前毒物',v:'设计师的睡前毒物'},{n:'S生命中国',v:'生命中国'},{n:'S史图馆',v:'史图馆'},{n:'S世界记忆大师龙雅',v:'世界记忆大师龙雅'},{n:'S司马南',v:'司马南'},{n:'S思想史万有引力',v:'思想史万有引力'},{n:'S所长林超',v:'所长林超'},{n:'T汤质看本质',v:'汤质看本质'},{n:'T天真的和感伤的小说家',v:'天真的和感伤的小说家'},{n:'T听君一席课',v:'听君一席课'},{n:'W唯一讲述者',v:'唯一讲述者'},{n:'X心理学陈祉妍',v:'心理学陈祉妍'},{n:'X心理学于悦',v:'心理学于悦'},{n:'X心医林霖',v:'心医林霖'},{n:'X刑法学',v:'刑法学'},{n:'Y有观点大历史',v:'有观点大历史'},{n:'Z这知识好冷',v:'这知识好冷'},{n:'Z中科院格致论道讲坛',v:'中科院格致论道讲坛'},{n:'Z中医基础理论',v:'中医基础理论'},{n:'Z周观鱼UP',v:'周观鱼UP'},{n:'Z周末音乐',v:'周末音乐'},{n:'Z诸葛呈像',v:'诸葛呈像'},{n:'Z子小孙的老年生活',v:'子小孙的老年生活'},{n:'Z专心种花兔',v:'专心种花兔'},{n:'Z子都忆情',v:'子都忆情'}]}],
说案:[{key:'tid',name:'分类','value':[{n:'全部',v:'说案'},{n:'汤圆',v:'汤圆说案'},{n:'唐唐',v:'唐唐说案'},{n:'罗翔',v:'罗翔说刑法'},{n:'何家弘',v:'何家弘说案'},{n:'韩诺',v:'韩诺说案'},{n:'老V',v:'老V说案'},{n:'禁播档案',v:'禁播档案'}]}],
解说:[{key:'tid',name:'分类','value':[{n:'全部',v:'解说'},{n:'电影',v:'电影解说'},{n:'电视',v:'电视解说'},{n:'小说',v:'小说解说'},{n:'历史',v:'历史解说'},{n:'动漫',v:'动漫解说'},{n:'电影',v:'歌词解说'},{n:'科普',v:'科普'}]}],
演讲:[{key:'tid',name:'分类','value':[{n:'全部',v:'全部演讲4K'},{n:'A艾跃进',v:'艾跃进演讲4K'},{n:'C超级演说家',v:'超级演说家4K'},{n:'D电影',v:'电影演讲4K'},{n:'D典籍里的中国',v:'典籍里的中国4K'},{n:'G感动中国',v:'感动中国4K'},{n:'G郭继承',v:'郭继承演讲4K'},{n:'H华春莹',v:'华春莹演讲4K'},{n:'L雷军',v:'雷军演讲4K'},{n:'L罗翔',v:'罗翔演讲4K'},{n:'R任正非',v:'任正非演讲4K'},{n:'TED',v:'TED演讲4K'},{n:'W汪文斌',v:'汪文斌演讲4K'},{n:'Y一刻',v:'一刻演讲4K'},{n:'Z赵立坚',v:'赵立坚演讲4K'},{n:'Z郑强',v:'郑强演讲4K'}]}],
时事:[{key:'tid',name:'分类','value':[{n:'全部',v:'时事'},{n:'时事热点',v:'时事热点'},{n:'时事评论',v:'时事评论'},{n:'时事新闻',v:'时事新闻'},{n:'时事开讲',v:'时事开讲'},{n:'时事报告',v:'时事报告'},{n:'时事纵横',v:'时事纵横'},{n:'时事政治',v:'时事政治'},{n:'时事亮亮点',v:'时事亮亮点'},{n:'时事直通车',v:'时事直通车'}]}],
平面设计教学:[{key:'tid',name:'分类','value':[{n:'全部',v:'平面设计教学'},{n:'AI绘画',v:'AI绘画'},{n:'AdobePhotoshop',v:'AdobePhotoshop教程'},{n:'AdobeIllustrator',v:'AdobeIllustrator教程'},{n:'CorelDRAW',v:'CorelDRAW教程'},{n:'AdobeInDesign',v:'AdobeInDesign教程'},{n:'AdobePagermaker',v:'AdobePagermaker教程'},{n:'SAI',v:'SAI教程'},{n:'AdobeBridge',v:'AdobeBridge教程'},{n:'AdobePagermaker',v:'AdobePagermake教程r'},{n:'3DStudioMax',v:'3DStudioMax教程'},{n:'PR',v:'PR教程'},{n:'AE',v:'AE教程'},{n:'CINEMA4D',v:'CINEMA4D教程'}]}],
软件教程:[{key:'tid',name:'分类','value':[{n:'全部',v:'软件教程'},{n:'Windows',v:'Windows'},{n:'MT管理器',v:'MT管理器'},{n:'NP管理器',v:'NP管理器'},{n:'mixplorer',v:'mixplorer'},{n:'脱壳',v:'脱壳'},{n:'爬虫',v:'爬虫'},{n:'json&jar',v:'json&jar'},{n:'网盘挂载',v:'网盘挂载'},{n:'alist+WebDav',v:'alist+WebDav'},{n:'TVBox',v:'TVBox'},{n:'EXCEL',v:'EXCEL教程'},{n:'Git入门到精通',v:'Git入门到精通'},{n:'java',v:'java教程'},{n:'phyton',v:'phyton教程'},{n:'xml',v:'xml教程'}]}],
实用教程:[{key:'tid',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:'tid',name:'分类','value':[{n:'全部',v:'旅游'},{n:'A澳门',v:'澳门旅游'},{n:'A安徽',v:'安徽旅游'},{n:'B布达拉宫',v:'布达拉宫旅游'},{n:'B北京',v:'北京旅游'},{n:'C重庆',v:'重庆旅游'},{n:'C草原',v:'草原旅游'},{n:'D大海',v:'大海旅游'},{n:'F福建',v:'福建旅游'},{n:'G广东',v:'广东旅游'},{n:'G广西',v:'广西旅游'},{n:'G贵州',v:'贵州旅游'},{n:'G甘肃',v:'甘肃旅游'},{n:'H海南',v:'海南旅游'},{n:'H河北',v:'河北旅游'},{n:'H河南',v:'河南旅游'},{n:'H湖北',v:'湖北旅游'},{n:'H湖南',v:'湖南旅游'},{n:'H黑龙江',v:'黑龙江旅游'},{n:'J吉林',v:'吉林旅游'},{n:'J江苏',v:'江苏旅游'},{n:'J江西',v:'江西旅游'},{n:'L辽宁',v:'辽宁旅游'},{n:'M民宿',v:'民宿旅游'},{n:'N内蒙古',v:'内蒙古旅游'},{n:'N宁夏',v:'宁夏旅游'},{n:'Q青海',v:'青海旅游'},{n:'S上海',v:'上海旅游'},{n:'S陕西',v:'陕西旅游'},{n:'S四川',v:'四川旅游'},{n:'S山西',v:'山西旅游'},{n:'S山东',v:'山东旅游'},{n:'T天津',v:'天津旅游'},{n:'T台湾',v:'台湾旅游'},{n:'T天空',v:'天空旅游'},{n:'X西湖',v:'西湖旅游'},{n:'X西藏',v:'西藏旅游'},{n:'X新疆',v:'新疆旅游'},{n:'X香港',v:'香港旅游'},{n:'Y云南',v:'云南旅游'},{n:'Z浙江',v:'浙江旅游'}]}],
风景4K:[{key:'tid',name:'分类','value':[{n:'全部',v:'风景4K'},{n:'A澳门',v:'澳门风景4K'},{n:'A安徽',v:'安徽风景4K'},{n:'B布达拉宫',v:'布达拉宫风景4K'},{n:'B北京',v:'北京风景4K'},{n:'C重庆',v:'重庆风景4K'},{n:'C草原',v:'草原风景4K'},{n:'D大海',v:'大海风景4K'},{n:'F福建',v:'福建风景4K'},{n:'G广东',v:'广东风景4K'},{n:'G广西',v:'广西风景4K'},{n:'G贵州',v:'贵州风景4K'},{n:'G甘肃',v:'甘肃风景4K'},{n:'H海南',v:'海南风景4K'},{n:'H河北',v:'河北风景4K'},{n:'H河南',v:'河南风景4K'},{n:'H湖北',v:'湖北风景4K'},{n:'H湖南',v:'湖南风景4K'},{n:'H黑龙江',v:'黑龙江风景4K'},{n:'J吉林',v:'吉林风景4K'},{n:'J江苏',v:'江苏风景4K'},{n:'J江西',v:'江西风景4K'},{n:'L辽宁',v:'辽宁风景4K'},{n:'L洛阳',v:'洛阳风景4K'},{n:'M民宿',v:'民宿风景4K'},{n:'N南京',v:'南京风景4K'},{n:'N内蒙古',v:'内蒙古风景4K'},{n:'N宁夏',v:'宁夏风景4K'},{n:'Q青海',v:'青海风景4K'},{n:'S上海',v:'上海风景4K'},{n:'S陕西',v:'陕西风景4K'},{n:'S四川',v:'四川风景4K'},{n:'S山西',v:'山西风景4K'},{n:'S山东',v:'山东风景4K'},{n:'S苏州',v:'苏州风景4K'},{n:'T天津',v:'天津风景4K'},{n:'T台湾',v:'台湾风景4K'},{n:'T天空',v:'天空风景4K'},{n:'X西安',v:'西安风景4K'},{n:'X西湖',v:'西湖风景4K'},{n:'X西藏',v:'西藏风景4K'},{n:'X新疆',v:'新疆风景4K'},{n:'X香港',v:'香港风景4K'},{n:'Y云南',v:'云南风景4K'},{n:'Z浙江',v:'浙江风景4K'}]}],
食谱:[{key:'tid',name:'分类','value':[{n:'全部',v:'食谱'},{n:'川菜食谱',v:'川菜食谱'},{n:'豫菜食谱',v:'豫菜食谱'},{n:'淮扬菜食谱',v:'淮扬菜食谱'},{n:'湘菜食谱',v:'湘菜食谱'},{n:'鲁菜食谱',v:'鲁菜食谱'},{n:'粤菜食谱',v:'粤菜食谱'},{n:'浙菜食谱',v:'浙菜食谱'},{n:'徽菜食谱',v:'徽菜食谱'},{n:'闽菜食谱',v:'闽菜食谱'},{n:'苏菜食谱',v:'苏菜食谱'},{n:'健康食谱',v:'健康食谱'},{n:'面食',v:'面食'},{n:'米饭',v:'米饭'},{n:'粥',v:'粥的做法'},{n:'酿酒',v:'自酿酒'},{n:'小吃',v:'小吃制作'}]}],
美食超清:[{key:'tid',name:'分类','value':[{n:'全部',v:'美食超清'},{n:'舌尖上的中国',v:'舌尖上的中国超清'},{n:'老字号',v:'老字号美食超清'},{n:'家常菜',v:'家常菜美食超清'},{n:'香港美食探店',v:'香港美食探店超清'},{n:'澳门美食探店',v:'澳门美食探店超清'},{n:'上海美食探店',v:'上海美食探店超清'},{n:'北京美食探店',v:'北京美食探店超清'},{n:'重庆美食探店',v:'重庆美食探店超清'},{n:'南京美食探店',v:'南京美食探店超清'},{n:'广州美食探店',v:'广州美食探店超清'},{n:'杭州美食探店',v:'杭州美食探店超清'},{n:'成都美食探店',v:'成都美食探店超清'},{n:'苏州美食探店',v:'苏州美食探店超清'},{n:'武汉美食探店',v:'武汉美食探店超清'},{n:'台湾美食探店',v:'台湾美食探店超清'},{n:'川菜',v:'川菜美食超清'},{n:'豫菜',v:'豫菜美食超清'},{n:'淮扬菜',v:'淮扬菜美食超清'},{n:'湘菜',v:'湘菜美食超清'},{n:'鲁菜',v:'鲁菜美食超清'},{n:'粤菜',v:'粤菜美食超清'},{n:'潮菜',v:'潮菜美食超清'},{n:'浙菜',v:'浙菜美食超清'},{n:'徽菜',v:'徽菜美食超清'},{n:'闽菜',v:'闽菜美食超清'},{n:'东北菜',v:'东北菜美食超清'},{n:'客家菜',v:'客家菜美食超清'},{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:'tid',name:'分类','value':[{n:'全部',v:'搞笑'},{n:'搞笑配音',v:'搞笑配音'},{n:'搞笑电影',v:'搞笑电影'},{n:'搞笑综艺',v:'搞笑综艺'},{n:'鬼畜电影',v:'鬼畜电影'},{n:'搞笑动画',v:'搞笑动画'},{n:'搞笑番',v:'搞笑番'},{n:'十万个冷笑话',v:'十万个冷笑话'}]}],
球星:[{key:'tid',name:'分类','value':[{n:'全部',v:'球星'},{n:'B巴萨',v:'巴萨4K'},{n:'B巴黎圣日耳曼',v:'巴黎圣日耳曼4K'},{n:'B贝克汉姆',v:'贝克汉姆4K'},{n:'C罗',v:'C罗4K'},{n:'D杜兰特',v:'杜兰特4K'},{n:'D德布劳内',v:'德布劳内4K'},{n:'D德甲',v:'德甲4K'},{n:'F1',v:'F14K'},{n:'G国米',v:'国米4K'},{n:'G高尔夫',v:'高尔夫4K'},{n:'H亨利',v:'亨利4K'},{n:'H皇马',v:'皇马4K'},{n:'K库里',v:'库里4K'},{n:'L罗纳尔多',v:'罗纳尔多4K'},{n:'M梅西',v:'梅西4K'},{n:'M曼联',v:'曼联4K'},{n:'M曼城',v:'曼城4K'},{n:'NBA',v:'NBA4K'},{n:'N内马尔',v:'内马尔4K'},{n:'O欧冠',v:'欧冠4K'},{n:'Q齐达内',v:'齐达内4K'},{n:'S世界杯',v:'世界杯4K'},{n:'S斯诺克',v:'斯诺克4K'},{n:'T天下足球',v:'天下足球4K'},{n:'UFC',v:'UFC4K'},{n:'W网球',v:'网球4K'},{n:'X小罗',v:'小罗4K'},{n:'X西甲',v:'西甲4K'},{n:'Y英超',v:'英超4K'},{n:'Y意甲',v:'意甲4K'},{n:'Z詹姆斯',v:'詹姆斯4K'}]}],
相声小品:[{key:'tid',name:'分类','value':[{n:'全部',v:'相声小品'},{n:'C陈佩斯',v:'陈佩斯小品4K'},{n:'C春晚小品',v:'春晚小品4K'},{n:'C曹云金',v:'曹云金相声4K'},{n:'D单口相声',v:'单口相声4K'},{n:'D德云社',v:'德云社小品4K'},{n:'E二人转',v:'二人转4K'},{n:'F冯巩',v:'冯巩小品4K'},{n:'G郭德纲',v:'郭德纲相声4K'},{n:'G郭冬临',v:'郭冬临小品4K'},{n:'G郭达',v:'郭达小品4K'},{n:'K开心麻花',v:'开心麻花小品4K'},{n:'P评书',v:'评书4K'},{n:'P潘长江',v:'潘长江小品4K'},{n:'Q青曲社',v:'青曲社相声4K'},{n:'Q群口相声',v:'群口相声4K'},{n:'S宋小宝',v:'宋小宝小品4K'},{n:'W文松',v:'文松小品4K'},{n:'X小曲',v:'小曲相声4K'},{n:'X喜剧综艺',v:'喜剧综艺4K'},{n:'Y严顺开',v:'严顺开小品4K'},{n:'Y岳云鹏',v:'岳云鹏相声小品4K'},{n:'Z赵本山',v:'赵本山小品4K'},{n:'Z赵丽蓉',v:'赵丽蓉小品4K'}]}],
戏曲:[{key:'tid',name:'分类','value':[{n:'全部',v:'戏曲4K'},{n:'B梆子腔',v:'梆子腔戏曲4K'},{n:'C采茶戏',v:'采茶戏戏曲4K'},{n:'C潮剧',v:'潮剧戏曲4K'},{n:'C彩调',v:'彩调戏曲4K'},{n:'C川剧',v:'川剧戏曲4K'},{n:'D滇剧',v:'滇剧戏曲4K'},{n:'D傣剧',v:'傣剧戏曲4K'},{n:'E二人台',v:'二人台戏曲4K'},{n:'G高腔',v:'高腔戏曲4K'},{n:'G高甲戏',v:'高甲戏戏曲4K'},{n:'G赣剧',v:'赣剧戏曲4K'},{n:'G桂剧',v:'桂剧戏曲4K'},{n:'H黄梅戏',v:'黄梅戏戏曲4K'},{n:'H河北梆子',v:'河北梆子戏曲4K'},{n:'H河南曲剧',v:'河南曲剧戏曲4K'},{n:'H淮剧',v:'淮剧戏曲4K'},{n:'H沪剧',v:'沪剧戏曲4K'},{n:'H滑稽戏',v:'滑稽戏戏曲4K'},{n:'H徽剧',v:'徽剧4K'},{n:'H汉剧',v:'汉剧戏曲4K'},{n:'H湖南花鼓戏',v:'湖南花鼓戏戏曲4K'},{n:'J京剧',v:'京剧戏曲4K'},{n:'J晋剧',v:'晋剧戏曲4K'},{n:'J吉剧',v:'吉剧戏曲4K'},{n:'K昆曲',v:'昆曲戏曲4K'},{n:'L梨园戏',v:'梨园戏戏曲4K'},{n:'L龙江剧',v:'龙江剧戏曲4K'},{n:'M闽剧',v:'闽剧戏曲4K'},{n:'P评剧',v:'评剧戏曲4K'},{n:'P蒲剧',v:'蒲剧戏曲4K'},{n:'P皮影戏',v:'皮影戏戏曲4K'},{n:'P莆仙戏',v:'莆仙戏戏曲4K'},{n:'Q黔剧',v:'黔剧戏曲4K'},{n:'Q祁剧',v:'祁剧戏曲4K'},{n:'Q秦腔',v:'秦腔戏曲4K'},{n:'S上党梆子',v:'上党梆子戏曲4K'},{n:'S山东梆子',v:'山东梆子戏曲4K'},{n:'S绍剧',v:'绍剧戏曲4K'},{n:'W武安平调',v:'武安平调戏曲4K'},{n:'W婺剧',v:'婺剧戏曲4K'},{n:'X湘剧',v:'湘剧戏曲4K'},{n:'Y越剧',v:'越剧戏曲4K'},{n:'Y豫剧',v:'豫剧戏曲4K'},{n:'Y雁剧',v:'雁剧戏曲4K'},{n:'Y越调',v:'越调戏曲4K'},{n:'Y粤剧',v:'粤剧戏曲4K'},{n:'Z壮剧',v:'壮剧戏曲4K'},{n:'Z藏剧',v:'藏剧戏曲4K'}]}],
儿童:[{key:'tid',name:'分类','value':[{n:'全部',v:'儿童'},{n:'教育',v:'儿童早教'},{n:'歌曲',v:'贝瓦儿歌'},{n:'舞蹈',v:'儿童舞蹈'},{n:'成语故事',v:'儿童成语故事'},{n:'安全教育',v:'儿童安全教育'},{n:'睡前故事',v:'儿童睡前故事'},{n:'贝乐虎',v:'贝乐虎'},{n:'宝宝巴士',v:'宝宝巴士'},{n:'儿童好声音',v:'儿童好声音'}]}],
小姐姐4K:[{key:'tid',name:'分类','value':[{n:'全部',v:'小姐姐4K'},{n:'比基尼',v:'比基尼美女4K'},{n:'内衣',v:'内衣模特4K'},{n:'车模',v:'美女车模4K'},{n:'健身',v:'美女健身4K'},{n:'翻唱',v:'美女翻唱4K'},{n:'舞蹈',v:'美女舞蹈4K'},{n:'美妆',v:'美女美妆4K'},{n:'Cos',v:'美女Cos4K'},{n:'户外',v:'美女户外4K'},{n:'居家',v:'美女居家4K'},{n:'自习',v:'自习小姐姐4K'},{n:'职场',v:'职场美女4K'},{n:'工地',v:'工地美女4K'},{n:'安静',v:'安静小姐姐4K'},{n:'活泼',v:'活泼小姐姐4K'}]}],
热门:[{key:'tid',name:'分类','value':[{n:'全部',v:'热门'},{n:'刀郎',v:'刀郎'},{n:'罗刹海市',v:'罗刹海市'},{n:'狂飙',v:'狂飙'},{n:'淄博烧烤',v:'淄博烧烤'},{n:'原神',v:'原神'},{n:'漫长的季节',v:'漫长的季节'},{n:'AI',v:'AI'},{n:'俄乌',v:'俄乌'},{n:'ChatGPT',v:'ChatGPT'},{n:'重启人生',v:'重启人生'},{n:'棋手战鹰',v:'棋手战鹰'},{n:'中国奇谭',v:'中国奇谭'},{n:'三体',v:'三体'},{n:'刘慈欣',v:'刘慈欣'},{n:'鬼吹灯',v:'鬼吹灯'},{n:'天下霸唱',v:'天下霸唱'}]}],
旅行探险:[{key:'tid',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:'冲浪'}]}]
};
let filOrd = {key:'order',name:'排序',value:[{n:'综合排序',v:'0'},{n:'最多点击',v:'click'},{n:'最新发布',v:'pubdate'},{n:'最多弹幕',v:'dm'},{n:'最多收藏',v:'stow'}]};
filOrd['init'] = filOrd.value[0].v;
let filDur = {key:'duration',name:'时长',value:[{n:'全部',v:'0'},{n:'60分钟以上',v:'4'},{n:'30~60分钟',v:'3'},{n:'10~30分钟',v:'2'},{n:'10分钟以下',v:'1'}]};
filDur['init'] = filDur.value[0].v;
return JSON.stringify({
class: _.map(classes, (cls) => {
cls.land = 1;
cls.ratio = 1.78;
if (filterObj[cls.type_id]){
filterObj[cls.type_id].push(filOrd, filDur);
filterObj[cls.type_id][0]['init'] = filterObj[cls.type_id][0].value[0].v;
} else {
filterObj[cls.type_id] = [];
filterObj[cls.type_id].push(filOrd, filDur)
}
return cls;
}),
filters: filterObj,
});
}
async function homeVod() {
let html = HOST + '/x/web-interface/popular?ps=20';
let data = JSON.parse(await request(html)).data.list;
let videos = [];
data.forEach(function(it) {
videos.push({
vod_id: it.aid,
vod_name: stripHtmlTag(it.title),
vod_pic: it.pic,
vod_remarks: '🔥 ' + it.vt_display || '',
});
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
let html = HOST + '/x/web-interface/search/type?search_type=video&page=' + pg + '&keyword=' + (extend.tid || tid) + '&duration=' + (extend.duration || '') + '&order=' + (extend.order || '');
let data = JSON.parse(await request(html)).data;
let videos = [];
data.result.forEach(function(it) {
videos.push({
vod_id: it.aid,
vod_name: stripHtmlTag(it.title),
vod_pic: 'https:' + it.pic,
vod_remarks: turnDHM(it.duration) || '',
});
});
return JSON.stringify({
page: parseInt(data.page),
pagecount: data.numPages,
limit: 20,
total: data.numResults,
list: videos,
});
}
async function detail(id) {
let data = JSON.parse(await request(HOST + '/x/web-interface/view?aid=' + id)).data;
let vod = {
vod_id: data.aid,
vod_name: stripHtmlTag(data.title),
vod_pic: data.pic,
type_name: data.tname,
vod_year: new Date(data.pubdate*1000).getFullYear(),
vod_remarks: data.duration || '',
vod_director: data.owner.name,
vod_content: stripHtmlTag(data.desc),
};
let episodes = data.pages;
let playurls = [];
episodes.forEach(function(it) {
let cid = it.cid;
let part = it.part.replace('#', '﹟').replace('$', '﹩');
playurls.push(
part + '$' + data.aid + '_' + cid
)
});
let playUrl = playurls.join('#');
vod.vod_play_from = '道长在线';
vod.vod_play_url = playUrl;
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
let ids = id.split('_');
let html = HOST + '/x/player/playurl?avid=' + ids[0] + '&cid=' + ids[1] + '&qn=116';
let data = JSON.parse(await request(html)).data.durl;
let maxSize = -1;
let position = -1;
data.forEach(function(it, i) {
if (maxSize < Number(it.size)) {
maxSize = Number(it.size);
position = i
}
});
let purl = '';
if (data.length > 0) {
if (position === -1) {
position = 0
}
purl = data[position].url
}
// console.debug('我的哔哩 purl =====>' + purl); // js_debug.log
return JSON.stringify({
parse: 0,
url: purl,
header: getMb(),
});
}
async function search(wd, quick, pg) {
if (pg <= 0 || typeof(pg) == 'undefined') pg = 1;
let html = HOST + '/x/web-interface/search/type?search_type=video&keyword=' + wd + '&page=' + pg;
let data = JSON.parse(await request(html)).data;
let videos = [];
data.result.forEach(function(it) {
videos.push({
vod_id: it.aid,
vod_name: stripHtmlTag(it.title),
vod_pic: 'https:' + it.pic,
vod_remarks: turnDHM(it.duration) || '',
});
});
return JSON.stringify({
page: parseInt(data.page),
pagecount: data.numPages,
limit: 20,
total: data.numResults,
list: videos,
land: 1,
ratio: 1.78,
});
}
function getHeader(cookie) {
let header = {};
header['cookie'] = cookie;
header['User-Agent'] = PC_UA;
header['Referer'] = 'https://www.bilibili.com';
return header;
}
function getMb() {
return getHeader(cookie);
}
function stripHtmlTag(src) {
return src
.replace(/<\/?[^>]+(>|$)/g, '')
.replace(/&.{1,5};/g, '')
.replace(/\s{2,}/g, ' ');
}
function turnDHM(duration) {
let min = duration.split(':')[0];
let sec = duration.split(':')[1];
if (min == 0) {
return sec + '秒';
} else if (0 < min && min < 60) {
return min + '分';
} else if (60 <= min && min < 1440) {
if (min % 60 == 0) {
let h = min / 60;
return h + '小时';
} else {
let h = min / 60;
h = (h + '').split('.')[0];
let m = min % 60;
return h + '小时' + m + '分';
}
} else if (min >= 1440) {
let d = min / 60 / 24;
d = (d + '').split('.')[0];
let h = min / 60 % 24;
h = (h + '').split('.')[0];
let m = min % 60;
let dhm = '';
if (d > 0) {
dhm = d + '天'
}
if (h >= 1) {
dhm = dhm + h + '小时'
}
if (m > 0) {
dhm = dhm + m + '分'
}
return dhm;
}
return null;
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
-213
View File
@@ -1,213 +0,0 @@
import { Crypto, jinja2, _ } from './lib/cat.js';
let key = '南瓜影视';
let HOST = 'http://ys.changmengyun.com';
let siteKey = '';
let siteType = 0;
let MOBILE_UA = 'okhttp/4.6.0'
async function request(reqUrl) {
let t = new Date().getTime().toString();
let res = await req(reqUrl, {
method: 'get',
headers: {
'version_name': '1.0.6',
'version_code': '6',
'package_name': 'com.app.nanguatv',
'sign': Crypto.MD5('c431ea542cee9679#uBFszdEM0oL0JRn@' + t).toString().toLowerCase(),
'imei': 'c431ea542cee9679',
'timeMillis': t,
'User-Agent': MOBILE_UA
},
});
return res.content;
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
}
async function home(filter) {
let data = JSON.parse(await request(HOST + '/api.php/provide/home_nav'));
let classes = [];
for (const key in data) {
if (data[key].name != '精选')
classes.push({
type_id: data[key].id,
type_name: data[key].name,
});
}
let filterObj = {
"2":[{"key":"class","name":"类型","value":[{"n":"全部","v":"类型"},{"n":"国产剧","v":"国产剧"},{"n":"港台剧","v":"港台剧"}]},{"key":"area","name":"地区","value":[{"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":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"好评榜","v":"好评榜"},{"n":"新上线","v":"新上线"}]}],
"1":[{"key":"class","name":"类型","value":[{"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":"其它"}]},{"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":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"好评榜","v":"好评榜"},{"n":"新上线","v":"新上线"}]}],
"4":[{"key":"class","name":"类型","value":[{"n":"全部","v":"类型"},{"n":"国产漫","v":"国产漫"},{"n":"欧美漫","v":"欧美漫"},{"n":"日韩漫","v":"日韩漫"},{"n":"港台漫","v":"港台漫"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"地区"},{"n":"中国大陆","v":"中国大陆"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"欧美","v":"欧美"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"年份"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"新上线","v":"新上线"}]},{"key":"total","name":"状态","value":[{"n":"全部","v":"状态"},{"n":"连载","v":"连载"},{"n":"完结","v":"完结"}]}],
"3":[{"key":"class","name":"类型","value":[{"n":"全部","v":"类型"},{"n":"大陆","v":"大陆"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"地区"},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"年份"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"新上线","v":"新上线"}]}],
"46":[{"key":"class","name":"类型","value":[{"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":"其他"}]},{"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":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"好评榜","v":"好评榜"},{"n":"新上线","v":"新上线"}]}]
};
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
let data = JSON.parse(await request(HOST + '/api.php/provide/vod_rank?app=ylys&sort_type=month&imei=c431ea542cee9679&id=2&page=1'));
let videos = [];
data.forEach(function(it) {
videos.push({
vod_id: it.id,
vod_name: it.name,
vod_pic: it.img,
vod_remarks: it.remarks,
});
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof(pg) == 'undefined') pg = 1;
let reqUrl = HOST + '/api.php/provide/vod_list?app=ylys&id=' + tid + '&page=' + pg + '&imei=c431ea542cee9679&';
reqUrl += jinja2('area={{ext.area}}&year={{ext.year}}&type={{ext.class}}&total={{ext.total}}&order={{ext.by}}', { ext: extend });
// let data = JSON.parse(await request(reqUrl));
let data = JSON.parse(await request(reqUrl)).list;
let videos = [];
data.forEach(function(it) {
videos.push({
vod_id: it.id,
vod_name: it.name,
vod_pic: it.img,
vod_remarks: it.remarks,
});
});
let pgChk = JSON.parse(await request(HOST + '/api.php/provide/vod_list?app=ylys&id=' + tid + '&page=' + (parseInt(pg) + 1) + '&imei=c431ea542cee9679&')).msg;
const pgCount = (pgChk == 'ok') ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 20,
total: 20 * pgCount,
list: videos,
});
}
async function detail(id) {
let data = JSON.parse(await request(HOST + '/api.php/provide/vod_detail?app=ylys&imei=c431ea542cee9679&id=' + id)).data;
let vod = {
vod_id: data.id,
vod_name: data.name,
vod_pic: data.img,
type_name: data.type,
vod_year: data.year,
vod_remarks: '更新至: ' + data.msg + ' / 评分: ' + data.score,
vod_content: stripHtmlTag(data.info),
};
let episodes = data.player_info;
let playlist = {};
episodes.forEach(function(it) {
let playurls = it.video_info;
playurls.forEach(function(playurl) {
let source = it.show;
let t = formatPlayUrl(vod.vod_name, playurl.name);
if (t.length == 0) t = playurl.name.trim();
if (!playlist.hasOwnProperty(source)) {
playlist[source] = [];
}
playlist[source].push(t + '$' + playurl.url);
});
});
vod.vod_play_from = _.keys(playlist).join('$$$');
let urls = _.values(playlist);
let vod_play_url = [];
urls.forEach(function(it) {
vod_play_url.push(it.join('#'));
});
vod.vod_play_url = vod_play_url.join('$$$');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
try {
if (id.indexOf('m3u8') != -1) {
let mjurl = id.split('url=')[1]
return JSON.stringify({
parse: 0,
url: mjurl,
});
} else if (id.indexOf(',') != -1) {
let mjurl = id.split(',')[1]
let jData = JSON.parse(await request(mjurl));
return JSON.stringify({
parse: 0,
url: jData.data.url,
});
} else {
let mjurl = 'http://43.154.104.152:1234/jhapi/cs.php?url=' + id.split('url=')[1]
let jData = JSON.parse(await request(mjurl));
return JSON.stringify({
parse: 0,
url: jData.data.url,
});
}
} catch (e) {
return JSON.stringify({
parse: 0,
url: id,
});
}
}
async function search(wd, quick, pg) {
if (pg <= 0 || typeof(pg) == 'undefined') pg = 1;
let data = JSON.parse(await request(HOST + '/api.php/provide/search_result_more?app=ylys&video_name=' + wd + '&pageSize=20&tid=0&imei=c431ea542cee9679&page=' + pg, 'okhttp/4.6.0')).data;
let videos = [];
data.forEach(function(it) {
videos.push({
vod_id: it.id,
vod_name: it.video_name,
vod_pic: it.img,
vod_remarks: it.qingxidu + '/' + it.category,
});
});
let pgChk = JSON.parse(await request(HOST + '/api.php/provide/search_result_more?app=ylys&video_name=' + wd + '&pageSize=20&tid=0&imei=c431ea542cee9679&page=' + (parseInt(pg) + 1), 'okhttp/4.6.0')).msg;
const pgCount = (pgChk == 'ok') ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 20,
total: 20 * pgCount,
list: videos,
});
}
function stripHtmlTag(src) {
return src
.replace(/<\/?[^>]+(>|$)/g, '')
.replace(/&.{1,5};/g, '')
.replace(/\s{2,}/g, ' ');
}
function formatPlayUrl(src, name) {
return name
.trim()
.replaceAll(src, '')
.replace(/<|>|《|》/g, '')
.replace(/\$|#/g, ' ')
.trim();
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
-1
View File
File diff suppressed because one or more lines are too long
+22 -22
View File
@@ -1,23 +1,21 @@
var rule = {
title: 'kk小站',
host: 'http://127.0.0.1:10079',
homeUrl: '/p/0/socks5:%252F%252F192.168.101.1:1080/https://kkxz.vip/',
url: '/p/0/socks5:%252F%252F192.168.101.1:1080/https://kkxz.vip/t/fyclass?',
title: 'RRDY網',
host: 'https://www.rrdynb.com',
homeUrl: '/',
url: '/fyclass_fypage.html?',
filter_url: '{{fl.class}}',
filter: {},
searchUrl: '/p/0/socks5:%252F%252F192.168.101.1:1080/https://kkxz.vip/?q=**',
searchUrl: '/plus/search.php?q=**&pagesize=10&submit=',
searchable: 2,
quickSearch: 1,
filterable: 0,
headers: {
'User-Agent': PC_UA,
'Accept': '*/*',
'Cookie':'http://127.0.0.1:9978/file:///tvbox/JS/lib/kkxz.txt',
'Referer': 'https://kkxz.vip/'
'User-Agent': 'PC_UA',
'Cookie': ''
},
class_name: '電視劇&電影',
class_url: 'tv&movie',
timeout: 5000,
class_name: '影视&電視劇&電影&動漫',
class_url: 'movie/list_2&dianshiju/list_6&zongyi/list_10&dongman/list_13',
play_parse: true,
play_json: [{
re: '*',
@@ -29,17 +27,17 @@ var rule = {
lazy: '',
limit: 6,
推荐: '',
一级: 'div.DiscussionList li;h3&&Text;img&src;;a&&href',
一级: 'li:has(img);img&&alt;img&&data-original;;a&&href',
二级: {
title: "h2&&Text",
title: "h1&&Text",
img: "img&&src",
desc: "p&&Text",
content: "p&&Text",
desc: "",
content: "span&&Text",
tabs: `js: pdfh = jsp.pdfh;
pdfa = jsp.pdfa;
pd = jsp.pd;
TABS = [];
let d = pdfa(html, '.Post-body p a');
TABS = []
let d = pdfa(html, 'span a');
let tabsa = [];
let tabsq = [];
let tabsm = false;
@@ -47,9 +45,9 @@ var rule = {
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")) {
tabsa.push("阿里盤");
tabsa.push("阿里盤");
} else if (burl.startsWith("https://pan.quark.cn/s/")) {
tabsq.push("夸克盤");
tabsq.push("夸克盤");
} else if (burl.startsWith("magnet")) {
tabsm = true;
} else if (burl.startsWith("ed2k")) {
@@ -79,7 +77,7 @@ var rule = {
pdfa = jsp.pdfa;
pd = jsp.pd;
LISTS = [];
let d = pdfa(html, '.Post-body p a');
let d = pdfa(html, 'span a');
let lista = [];
let listq = [];
let listm = [];
@@ -100,8 +98,10 @@ var rule = {
lista.push(loopresult);
} else if (burl.startsWith("https://pan.quark.cn/s/")) {
if (TABS.length == 1) {
burl = burl.replace("?entry=sjss", ""),
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&confirm=0&url=" + encodeURIComponent(burl);
} else {
burl = burl.replace("?entry=sjss", ""),
burl = "http://127.0.0.1:9978/proxy?do=quark&type=push&url=" + encodeURIComponent(burl);
}
loopresult = title + '$' + burl;
@@ -126,5 +126,5 @@ var rule = {
});`,
},
搜索: 'div.Discussionlist li;h3&&Text;img&&src;span.TagLabel-text;a&&href',
搜索: 'li:has(img);h2&&Text;img&&data-original;.tags&&Text;a&&href',
}
-135
View File
@@ -1,135 +0,0 @@
// 搜索滑块验证
import { load, _ } from './lib/cat.js';
let key = '短视频';
let HOST = 'http://www.sharenice.net';
let siteKey = '';
let siteType = 0;
let PC_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36';
async function request(reqUrl, agentSp) {
let res = await req(reqUrl, {
method: 'get',
headers: {
'User-Agent': agentSp || PC_UA,
},
});
return res.content;
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
}
function clsjoin(cls) {
_.each(cls, (s) => {
let typeId = s.attribs['href'];
typeId = typeId.substring(typeId.lastIndexOf('t/') + 2);
classes.push({
type_id: typeId,
type_name: s.children[0].data,
});
});
}
let classes = [];
async function home(filter) {
let filterObj = {};
let html = await request(HOST);
let $ = load(html);
let series = $('div.nav > ul > li > a[href*=net/]');
let tag = $('div.hot-tags-list > a[href*=net]');
clsjoin(series);
clsjoin(tag);
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
let link = HOST + '/t-576O5aWz';
let html = await request(link);
let $ = load(html);
let items = $('div.item-box ul li');
let videos = _.map(items, (item) => {
let a = $(item).find('a:first')[0];
let img = $(item).find('img:first')[0];
return {
vod_id: a.attribs.href,
vod_name: a.attribs.title,
vod_pic: img.attribs['data-original'],
vod_remarks: '',
};
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof(pg) == 'undefined') pg = 1;
let link = HOST + '/' + tid + '?page=' + pg;
let html = await request(link);
let $ = load(html);
let items = $('div.item-box ul li');
let videos = _.map(items, (item) => {
let a = $(item).find('a:first')[0];
let img = $(item).find('img:first')[0];
return {
vod_id: a.attribs.href,
vod_name: a.attribs.title,
vod_pic: img.attribs['data-original'],
vod_remarks: '',
};
});
let hasMore = $('ul.pagination > li > a:contains(»)').length > 0;
let pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 16,
total: 16 * pgCount,
list: videos,
});
}
async function detail(id) {
let vod = {
vod_id: id,
vod_remarks: '',
};
let playlist = ['观看视频' + '$' + id];
vod.vod_play_from = '道长在线';
vod.vod_play_url = playlist.join('#');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
let html = await request(id);
let $ = load(html);
let playUrl = $('div.video-play-box').find('video:first')[0].attribs.src + '#.mp4';
return JSON.stringify({
parse: 0,
url: playUrl,
});
}
async function search(wd, quick, pg) {
return '{}';
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
};
}
-182
View File
@@ -1,182 +0,0 @@
// 搜索数字验证
// 20230812 变更 分类&筛选
import { Crypto, load, _ } from './lib/cat.js';
let key = "素白白",
url = "https://www.subaibaiys.com",
siteKey = "",
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",
cookie = {};
async function request(reqUrl, referer, mth, data, hd) {
var headers = {
"User-Agent": UA,
Cookie: _.map(cookie, (value, key) => key + "=" + value).join(";")
},
referer = (referer && (headers.referer = encodeURIComponent(referer)), await req(reqUrl, {
method: mth || "get",
headers: headers,
data: data,
postType: "post" === mth ? "form" : ""
}));
if (referer.headers["set-cookie"])
for (const c of (_.isArray(referer.headers["set-cookie"]) ? referer.headers["set-cookie"].join(";") : referer.headers["set-cookie"]).split(";")) {
var tmp = c.trim();
if (tmp.startsWith("result=")) return cookie.result = tmp.substring(7), request(reqUrl, reqUrl, "post", {
result: cookie.result
});
if (tmp.startsWith("esc_search_captcha=1")) return cookie.esc_search_captcha = 1, delete cookie.result, request(reqUrl)
}
return referer.content
}
async function init(cfg) {
siteKey = cfg.skey, siteType = cfg.stype
}
async function home(filter) {
let classes = [{"type_id":"movie_bt","type_name":"影视筛选"},{"type_id":"new-movie","type_name":"电影"},{"type_id":"tv-drama","type_name":"电视剧"},{"type_id":"hot-month","type_name":"热门电影"},{"type_id":"high-movie","type_name":"高分电影"},{"type_id":"cartoon-movie","type_name":"动漫电影"},{"type_id":"hongkong-movie","type_name":"香港经典电影"},{"type_id":"domestic-drama","type_name":"国产剧"},{"type_id":"american-drama","type_name":"欧美剧"},{"type_id":"korean-drama","type_name":"韩剧"},{"type_id":"anime-drama","type_name":"动漫剧"},{"type_id":"marvel-movies","type_name":"漫威宇宙电影系列"},{"type_id":"fastfurious","type_name":"速度与激情电影系列"},{"type_id":"zero-zero-seven","type_name":"007系列(25部正传+2部外传)"}];
let filterObj = {
"movie_bt":[{"key":"catedd","name":"分类","value":[{"n":"全部","v":""},{"v":"/movie_bt_series/dongmanju","n":"动漫剧"},{"v":"/movie_bt_series/dongmandy","n":"动漫电影"},{"v":"/movie_bt_series/yindudy","n":"印度电影"},{"v":"/movie_bt_series/guochanju","n":"国产剧"},{"v":"/movie_bt_series/guochandy","n":"国产电影"},{"v":"/movie_bt_series/riju","n":"日剧"},{"v":"/movie_bt_series/rihandy","n":"日韩电影"},{"v":"/movie_bt_series/oumeiju","n":"欧美剧"},{"v":"/movie_bt_series/oumeidy","n":"欧美电影"},{"v":"/movie_bt_series/taiju","n":"泰剧"},{"v":"/movie_bt_series/thaidy","n":"泰国电影"},{"v":"/movie_bt_series/gangju","n":"港台剧"},{"v":"/movie_bt_series/gangtaidy","n":"港台电影"},{"v":"/movie_bt_series/documentary","n":"纪录片"},{"v":"/movie_bt_series/zongyi","n":"综艺"},{"v":"/movie_bt_series/hanju","n":"韩剧"},{"v":"/movie_bt_series/xianggangdy","n":"香港经典电影"}]},{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"v":"/movie_bt_cat/bhutan","n":"不丹"},{"v":"/movie_bt_cat/china","n":"中国"},{"v":"/movie_bt_cat/china-taiwan","n":"中国台湾"},{"v":"/movie_bt_cat/china-mainland","n":"中国大陆"},{"v":"/movie_bt_cat/china-hongkong","n":"中国香港"},{"v":"/movie_bt_cat/denmark","n":"丹麦"},{"v":"/movie_bt_cat/ukraine","n":"乌克兰"},{"v":"/movie_bt_cat/uruguay","n":"乌拉圭"},{"v":"/movie_bt_cat/israel","n":"以色列"},{"v":"/movie_bt_cat/iraq","n":"伊拉克"},{"v":"/movie_bt_cat/iran","n":"伊朗"},{"v":"/movie_bt_cat/russia","n":"俄罗斯"},{"v":"/movie_bt_cat/bulgaria","n":"保加利亚"},{"v":"/movie_bt_cat/croatia","n":"克罗地亚"},{"v":"/movie_bt_cat/iceland","n":"冰岛"},{"v":"/movie_bt_cat/canada","n":"加拿大"},{"v":"/movie_bt_cat/hungary","n":"匈牙利"},{"v":"/movie_bt_cat/south-africa","n":"南非"},{"v":"/movie_bt_cat/botswana","n":"博茨瓦纳"},{"v":"/movie_bt_cat/qatar","n":"卡塔尔"},{"v":"/movie_bt_cat/luxembourg","n":"卢森堡"},{"v":"/movie_bt_cat/india","n":"印度"},{"v":"/movie_bt_cat/indonesia","n":"印度尼西亚"},{"v":"/movie_bt_cat/kazakhstan","n":"哈萨克斯坦"},{"v":"/movie_bt_cat/colombia","n":"哥伦比亚"},{"v":"/movie_bt_cat/turkey","n":"土耳其"},{"v":"/movie_bt_cat/serbia","n":"塞尔维亚"},{"v":"/movie_bt_cat/cyprus","n":"塞浦路斯"},{"v":"/movie_bt_cat/mexico","n":"墨西哥"},{"v":"/movie_bt_cat/dominica","n":"多米尼加"},{"v":"/movie_bt_cat/austria","n":"奥地利"},{"v":"/movie_bt_cat/venezuela","n":"委内瑞拉"},{"v":"/movie_bt_cat/nigeria","n":"尼日利亚"},{"v":"/movie_bt_cat/巴基斯坦","n":"巴基斯坦"},{"v":"/movie_bt_cat/paraguay","n":"巴拉圭"},{"v":"/movie_bt_cat/brazil","n":"巴西"},{"v":"/movie_bt_cat/greece","n":"希腊"},{"v":"/movie_bt_cat/germany","n":"德国"},{"v":"/movie_bt_cat/italy","n":"意大利"},{"v":"/movie_bt_cat/latvia","n":"拉脱维亚"},{"v":"/movie_bt_cat/norway","n":"挪威"},{"v":"/movie_bt_cat/chech","n":"捷克"},{"v":"/movie_bt_cat/摩洛哥","n":"摩洛哥"},{"v":"/movie_bt_cat/斯洛伐克","n":"斯洛伐克"},{"v":"/movie_bt_cat/slovenia","n":"斯洛文尼亚"},{"v":"/movie_bt_cat/singapore","n":"新加坡"},{"v":"/movie_bt_cat/zealand","n":"新西兰"},{"v":"/movie_bt_cat/japan","n":"日本"},{"v":"/movie_bt_cat/chile","n":"智利"},{"v":"/movie_bt_cat/north-korea","n":"朝鲜"},{"v":"/movie_bt_cat/cambodia","n":"柬埔寨"},{"v":"/movie_bt_cat/georgia","n":"格鲁吉亚"},{"v":"/movie_bt_cat/belgium","n":"比利时"},{"v":"/movie_bt_cat/saudi-arabia","n":"沙特阿拉伯"},{"v":"/movie_bt_cat/france","n":"法国"},{"v":"/movie_bt_cat/poland","n":"波兰"},{"v":"/movie_bt_cat/puertorco","n":"波多黎各"},{"v":"/movie_bt_cat/bohei","n":"波黑"},{"v":"/movie_bt_cat/thailand","n":"泰国"},{"v":"/movie_bt_cat/australia","n":"澳大利亚"},{"v":"/movie_bt_cat/ireland","n":"爱尔兰"},{"v":"/movie_bt_cat/estonia","n":"爱沙尼亚"},{"v":"/movie_bt_cat/sweden","n":"瑞典"},{"v":"/movie_bt_cat/switzerland","n":"瑞士"},{"v":"/movie_bt_cat/belarus","n":"白俄罗斯"},{"v":"/movie_bt_cat/peru","n":"秘鲁"},{"v":"/movie_bt_cat/tunisia","n":"突尼斯"},{"v":"/movie_bt_cat/lithuania","n":"立陶宛"},{"v":"/movie_bt_cat/romania","n":"罗马尼亚"},{"v":"/movie_bt_cat/america","n":"美国"},{"v":"/movie_bt_cat/finland","n":"芬兰"},{"v":"/movie_bt_cat/sovietunion","n":"苏联"},{"v":"/movie_bt_cat/england","n":"英国"},{"v":"/movie_bt_cat/netherlands","n":"荷兰"},{"v":"/movie_bt_cat/philippines","n":"菲律宾"},{"v":"/movie_bt_cat/葡萄牙","n":"葡萄牙"},{"v":"/movie_bt_cat/west-germany","n":"西德"},{"v":"/movie_bt_cat/spain","n":"西班牙"},{"v":"/movie_bt_cat/vietnam","n":"越南"},{"v":"/movie_bt_cat/argentina","n":"阿根廷"},{"v":"/movie_bt_cat/korea","n":"韩国"},{"v":"/movie_bt_cat/malaysia","n":"马来西亚"},{"v":"/movie_bt_cat/马耳他","n":"马耳他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"new-movie":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"tv-drama":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"hot-month":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"high-movie":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"cartoon-movie":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"hongkong-movie":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"domestic-drama":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"american-drama":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"korean-drama":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}],
"anime-drama":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"v":"/movie_bt_tags/pop-popular","n":"POP流行"},{"v":"/movie_bt_tags/biography","n":"传记"},{"v":"/movie_bt_tags/child","n":"儿童"},{"v":"/movie_bt_tags/adventure","n":"冒险"},{"v":"/movie_bt_tags/plot","n":"剧情"},{"v":"/movie_bt_tags/action","n":"动作"},{"v":"/movie_bt_tags/anime","n":"动漫"},{"v":"/movie_bt_tags/animation","n":"动画"},{"v":"/movie_bt_tags/history","n":"历史"},{"v":"/movie_bt_tags/costume","n":"古装"},{"v":"/movie_bt_tags/antiquity","n":"古风"},{"v":"/movie_bt_tags/homosexual","n":"同性"},{"v":"/movie_bt_tags/comedy","n":"喜剧"},{"v":"/movie_bt_tags/fantasy","n":"奇幻"},{"v":"/movie_bt_tags/family","n":"家庭"},{"v":"/movie_bt_tags/terror","n":"恐怖"},{"v":"/movie_bt_tags/suspense","n":"悬疑"},{"v":"/movie_bt_tags/erotic","n":"情色"},{"v":"/movie_bt_tags/thriller","n":"惊悚"},{"v":"/movie_bt_tags/drama","n":"戏曲"},{"v":"/movie_bt_tags/war","n":"战争"},{"v":"/movie_bt_tags/latin","n":"拉丁"},{"v":"/movie_bt_tags/funny","n":"搞笑"},{"v":"/movie_bt_tags/campus","n":"校园"},{"v":"/movie_bt_tags/song-and-dance","n":"歌舞"},{"v":"/movie_bt_tags/martial-arts","n":"武侠"},{"v":"/movie_bt_tags/disaster","n":"灾难"},{"v":"/movie_bt_tags/love","n":"爱情"},{"v":"/movie_bt_tags/crime","n":"犯罪"},{"v":"/movie_bt_tags/fancy","n":"玄幻"},{"v":"/movie_bt_tags/reality-show","n":"真人秀"},{"v":"/movie_bt_tags/short-film","n":"短片"},{"v":"/movie_bt_tags/kehuan","n":"科幻"},{"v":"/movie_bt_tags/documentary","n":"纪录片"},{"v":"/movie_bt_tags/talkshow","n":"脱口秀"},{"v":"/movie_bt_tags/stageart","n":"舞台艺术"},{"v":"/movie_bt_tags/west","n":"西部"},{"v":"/movie_bt_tags/sport","n":"运动"},{"v":"/movie_bt_tags/youth","n":"青春"},{"v":"/movie_bt_tags/music","n":"音乐"},{"v":"/movie_bt_tags/ghost","n":"鬼怪"},{"v":"/movie_bt_tags/black-film","n":"黑色电影"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"v":"/year/2023","n":"2023"},{"v":"/year/2022","n":"2022"},{"v":"/year/2021","n":"2021"},{"v":"/year/2020","n":"2020"},{"v":"/year/2019","n":"2019"},{"v":"/year/2018","n":"2018"},{"v":"/year/2017","n":"2017"},{"v":"/year/2016","n":"2016"},{"v":"/year/2015","n":"2015"},{"v":"/year/2014","n":"2014"},{"v":"/year/2013","n":"2013"},{"v":"/year/2012","n":"2012"},{"v":"/year/2011","n":"2011"},{"v":"/year/2010","n":"2010"},{"v":"/year/2009","n":"2009"},{"v":"/year/2008","n":"2008"},{"v":"/year/2007","n":"2007"},{"v":"/year/2006","n":"2006"},{"v":"/year/2005","n":"2005"},{"v":"/year/2004","n":"2004"},{"v":"/year/2003","n":"2003"},{"v":"/year/2002","n":"2002"},{"v":"/year/2001","n":"2001"},{"v":"/year/2000","n":"2000"},{"v":"/year/1999","n":"1999"},{"v":"/year/1998","n":"1998"},{"v":"/year/1997","n":"1997"},{"v":"/year/1996","n":"1996"},{"v":"/year/1995","n":"1995"},{"v":"/year/1994","n":"1994"},{"v":"/year/1993","n":"1993"},{"v":"/year/1992","n":"1992"},{"v":"/year/1991","n":"1991"},{"v":"/year/1990","n":"1990"},{"v":"/year/1989","n":"1989"},{"v":"/year/1988","n":"1988"},{"v":"/year/1987","n":"1987"},{"v":"/year/1986","n":"1986"},{"v":"/year/1985","n":"1985"},{"v":"/year/1984","n":"1984"},{"v":"/year/1983","n":"1983"},{"v":"/year/1982","n":"1982"},{"v":"/year/1981","n":"1981"},{"v":"/year/1980","n":"1980"},{"v":"/year/1979","n":"1979"},{"v":"/year/1978","n":"1978"},{"v":"/year/1977","n":"1977"},{"v":"/year/1976","n":"1976"},{"v":"/year/1975","n":"1975"},{"v":"/year/1974","n":"1974"},{"v":"/year/1973","n":"1973"},{"v":"/year/1972","n":"1972"},{"v":"/year/1971","n":"1971"},{"v":"/year/1970","n":"1970"},{"v":"/year/1969","n":"1969"},{"v":"/year/1968","n":"1968"},{"v":"/year/1967","n":"1967"},{"v":"/year/1966","n":"1966"},{"v":"/year/1965","n":"1965"},{"v":"/year/1964","n":"1964"},{"v":"/year/1963","n":"1963"},{"v":"/year/1962","n":"1962"},{"v":"/year/1960","n":"1960"},{"v":"/year/1959","n":"1959"},{"v":"/year/1954","n":"1954"},{"v":"/year/1952","n":"1952"},{"v":"/year/1950","n":"1950"},{"v":"/year/1949","n":"1949"},{"v":"/year/1948","n":"1948"},{"v":"/year/1940","n":"1940"},{"v":"/year/1939","n":"1939"},{"v":"/year/1925","n":"1925"}]}]
};
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
return "{}"
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof(pg) == 'undefined') pg = 1;
var link = url + '/' + tid + (extend.area || '') + (extend.year || '') + (extend.class || '') + (extend.catedd || '') + '/page/' + pg;
var html = await request(link);
var $ = load(html);
var items = $('div.mrb > ul > li');
var videos = _.map(items, (item) => {
var img = $(item).find('img:first')[0];
var a = $(item).find('a:first')[0];
var hdinfo = $($(item).find('div.hdinfo')[0]).text().trim();
var item = $($(item).find('div.jidi')[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/movie\/(.*).html/g, '$1'),
vod_name: img.attribs.alt,
vod_pic: img.attribs['data-original'],
vod_remarks: item || hdinfo || ''
};
});
var hasMore = $('div.mrb > div.pagenavi_txt > a:contains(>)').length > 0;
var pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 20,
total: 20 * pgCount,
list: videos
})
}
function stripHtmlTag(src) {
return src.replace(/<\/?[^>]+(>|$)/g, "").replace(/&.{1,5};/g, "").replace(/\s{2,}/g, " ")
}
async function detail(id) {
var html = await request(url + "/movie/" + id + ".html"),
$ = load(html),
html = $("ul.moviedteail_list > li"),
vod = {
vod_id: id,
vod_pic: $("div.dyimg img:first").attr("src"),
vod_remarks: "",
vod_content: stripHtmlTag($("div.yp_context").html()).trim()
};
for (const info of html) {
var i = $(info).text().trim();
i.startsWith("地区:") ? vod.vod_area = i.substring(3) : i.startsWith("年份:") ? vod.vod_year = i.substring(3) : i.startsWith("导演:") ? vod.vod_director = _.map($(info).find("a"), a => a.children[0].data).join("/") : i.startsWith("主演:") ? vod.vod_actor = _.map($(info).find("a"), a => a.children[0].data).join("/") : i.startsWith("语言:") && (vod.vod_lang = i.substring(3))
}
id = _.map($("div.paly_list_btn > a"), a => a.children[0].data + "$" + a.attribs.href.replace(/.*?\/v_play\/(.*).html/g, "$1"));
return vod.vod_play_from = key, vod.vod_play_url = id.join("#"), JSON.stringify({
list: [vod]
})
}
async function play(flag, id, flags) {
const link = url + "/v_play/" + id + ".html",
html = await request(link),
$ = load(html),
iframe = $("body iframe[src*=Cloud]");
if (0 < iframe.length) {
const iframeHtml = (await req(iframe[0].attribs.src, {
headers: {
Referer: link,
"User-Agent": UA
}
})).content;
let code = iframeHtml.match(/var url = '(.*?)'/)[1].split("").reverse().join(""),
temp = "";
for (let i = 0; i < code.length; i += 2) temp += String.fromCharCode(parseInt(code[i] + code[i + 1], 16));
const playUrl = temp.substring(0, (temp.length - 7) / 2) + temp.substring((temp.length - 7) / 2 + 7);
return JSON.stringify({
parse: 0,
url: playUrl
})
} {
const js = $("script:contains(window.wp_nonce)").html(),
group = js.match(/(var.*)eval\((\w*\(\w*\))\)/),
md5 = Crypto,
result = eval(group[1] + group[2]),
playUrl = result.match(/url:.*?['"](.*?)['"]/)[1];
return JSON.stringify({
parse: 0,
url: playUrl
})
}
}
async function search(wd, quick) {
wd = await request(url + "/page/1?s=" + wd);
const $ = load(wd);
wd = $("div.search_list > ul > li"), wd = _.map(wd, item => {
var img = $(item).find("img:first")[0],
a = $(item).find("a:first")[0],
hdinfo = $($(item).find("div.hdinfo")[0]).text().trim(),
item = $($(item).find("div.jidi")[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/movie\/(.*).html/g, "$1"),
vod_name: img.attribs.alt,
vod_pic: img.attribs["data-original"],
vod_remarks: item || hdinfo || ""
}
});
return JSON.stringify({
list: wd
})
}
function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search
}
}
export {
__jsEvalReturn
};
-135
View File
@@ -1,135 +0,0 @@
import { load, _ } from './lib/cat.js';
let key = '🐰兔小贝';
let HOST = 'https://www.tuxiaobei.com';
let siteKey = '';
let siteType = 0;
const IOS_UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1';
async function request(reqUrl, agentSp) {
let res = await req(reqUrl, {
method: 'get',
headers: {
'User-Agent': agentSp || IOS_UA,
},
});
return res.content
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype
}
async function home(filter) {
const classes = [{ type_id: '', type_name: '🐰全部' }, { type_id: 2, type_name: '🐰儿歌' }, { type_id: 3, type_name: '🐰故事' }, { type_id: 27, type_name: '🐰公益' }, { type_id: 9, type_name: '🐰十万个为什么' }, { type_id: 28, type_name: '🐰安全教育' }, { type_id: 29, type_name: '🐰动物奇缘' }, { type_id: 7, type_name: '🐰弟子规' }, { type_id: 5, type_name: '🐰古诗' }, { type_id: 6, type_name: '🐰三字经' }, { type_id: 8, type_name: '🐰千字文' }, { type_id: 11, type_name: '🐰数学' }, { type_id: 25, type_name: '🐰英语' }, { type_id: 24, type_name: '🐰折纸' }];
const filterObj = {};
return JSON.stringify({
class: _.map(classes, (cls) => {
cls.land = 1;
cls.ratio = 1.78;
return cls;
}),
filters: filterObj,
})
}
async function homeVod() {
const link = await request(HOST + '/list/mip-data?typeId=9&page=1&callback=');
const html = link.match(/\((.*?)\);/)[1];
const data = JSON.parse(html).data;
let videos = _.map(data.items, (it) => {
return {
vod_id: it.video_id,
vod_name: it.name,
vod_pic: it.image,
vod_remarks: it.root_category_name + ' | ' + it.duration_string || '',
}
});
return JSON.stringify({
list: videos,
})
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof pg == 'undefined') pg = 1;
const link = await request(HOST + '/list/mip-data?typeId=' + tid + '&page=' + pg + '&callback=');
const html = link.match(/\((.*?)\);/)[1];
const data = JSON.parse(html).data;
let videos = _.map(data.items, (it) => {
return {
vod_id: it.video_id,
vod_name: it.name,
vod_pic: it.image,
vod_remarks: it.root_category_name + ' | ' + it.duration_string || '',
}
});
const pgCount = pg * 30 > data.totalCount ? parseInt(pg) : parseInt(pg) + 1;
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 30,
total: data.totalCount,
list: videos,
})
}
async function detail(id) {
const vod = {
vod_id: id,
vod_remarks: '',
};
const playlist = ['点击播放' + '$' + HOST + '/play/' + id];
vod.vod_play_from = "道长在线";
vod.vod_play_url = playlist.join('#');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
const html = await request(id);
const $ = load(html);
const pvideo = $("body mip-search-video[video-src*=http]");
const purl = pvideo[0].attribs['video-src'];
// console.debug('兔小贝 purl =====>' + purl); // js_debug.log
return JSON.stringify({
parse: 0,
url: purl,
});
}
async function search(wd, quick) {
const link = HOST + "/search/" + wd;
const html = await request(link);
const $ = load(html);
const list = $("div.list-con > div.items");
let videos = _.map(list, (it) => {
const a = $(it).find("a:first")[0];
const img = $(it).find("mip-img:first")[0];
const tt = $(it).find("p:first")[0];
const remarks = $(it).find("p")[1];
return {
vod_id: a.attribs.href.replace(/.*?\/play\/(.*)/g, '$1'),
vod_name: tt.children[0].data,
vod_pic: img.attribs["src"],
vod_remarks: remarks.children[0].data || "",
};
});
return JSON.stringify({
list: videos,
land: 1,
ratio: 1.78,
});
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
}
}
+13 -18
View File
@@ -6,7 +6,7 @@ var rule = {
filter_url:'{{fl.class}}',
filter:{
},
searchUrl: '/?s=**',
searchUrl: '/?s=**&type=post',
searchable:2,
quickSearch:0,
filterable:0,
@@ -29,7 +29,6 @@ var rule = {
}],
lazy:'',
limit:6,
// 推荐:'main#main article:has(img);a&&title;img&&data-src;div.entry-wrapper a&&Text;a&&href',
推荐:'*',
一级:`js:
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
@@ -37,35 +36,31 @@ let d = [];
log("tzfiles input>>>>>>>>>>>>>>"+input);
let html = request(input);
//log("tzfiles 1level html>>>>>>>>>>>>>>"+html);
let list = pdfa(html, 'main#main article:has(img)');
let list = pdfa(html, '#primary-home ul li:has(img)');
list.forEach(function(it) {
d.push({
title: pdfh(it, 'a&&title'),
desc: pdfh(it, 'div.entry-wrapper a&&Text'),
pic_url: 'http://127.0.0.1:10079/i/0/s/'+pd(it, 'img&&data-src', HOST),
title: pdfh(it, 'img&&alt'),
desc: pdfh(it, 'div.post-info div.list-footer time.b2timeago&&Text') + '/' + pdfh(it, 'div.post-info div.list-footer a&&Text'),
pic_url: 'http://127.0.0.1:10079/i/0/s/'+pd(it, 'img&&src', HOST),
url: pd(it, 'a&&href', HOST)
});
})
setResult(d);
`,
//一级:`js:
//let html=request(input);
//log("html>>>>>>>>>>>>>>>>"+html);
//`,
二级:{
title:"#app .container header h1&&Text",
img:"#main article div.entry-content img&&src",
desc:"#app .container header .meta-date time&&datetime",
content:"#main article .entry-content&&Text",
title:"#primary-home h1&&Text",
img:"#primary-home article div.entry-content img&&src",
desc:"#primary-home .post-meta li.single-date&&Text",
content:"#primary-home article .entry-content&&Text",
tabs:`js:
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
TABS=[];
let d = pdfa(html, '#main article div.entry-content p');
let d = pdfa(html, '#primary-home article div.entry-content p');
let tabsq=[];
d.forEach(function(it) {
let purl = pd(it, 'a&&href', HOST);
if (purl.includes("pan.quark.cn")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
} else if (purl.includes("www.aliyundrive.com")){
tabsq.push("阿里雲盤");
}
@@ -85,7 +80,7 @@ log('tzfile TABS >>>>>>>>>>>>>>>>>>' + TABS);
log(TABS);
LISTS=[];
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
let d = pdfa(html, '#main article div.entry-content p');
let d = pdfa(html, '#primary-home article div.entry-content p');
d.forEach(function(it) {
let purl = pd(it, 'a&&href', HOST);
if (/(pan.quark.cn|www.aliyundrive.com)/.test(purl)){
@@ -105,5 +100,5 @@ d.forEach(function(it) {
`,
},
搜索:'main#main div.container article:has(img);a&&title;img&&data-src;div.entry-wrapper a&&Text;a&&href',
搜索:'#primary-home ul li:has(img);img&&alt;img&&src;div.post-info div.list-fotter time.b2timeago&&Text;a&&href',
}
-118
View File
@@ -1,118 +0,0 @@
// 无搜索功能
import { _ } from './lib/cat.js';
let key = '🐯贝乐虎';
let HOST = 'https://vd.ubestkid.com';
let siteKey = '';
let siteType = 0;
const MOBILE_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, referer, mth, data, hd) {
const headers = {
"User-Agent": MOBILE_UA,
};
if (referer) headers.referer = encodeURIComponent(referer);
let res = await req(reqUrl, {
method: mth || "get",
headers: headers,
data: data,
postType: mth === "post" ? "json" : "",
});
return res.content;
}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype
}
async function home(filter) {
const classes = [{ type_id: 65, type_name: '🐯最新上架' }, { type_id: 113, type_name: '🐯人气热播' }, { type_id: 56, type_name: '🐯经典童谣' }, { type_id: 137, type_name: '🐯开心贝乐虎' }, { type_id: 53, type_name: '🐯律动儿歌' }, { type_id: 59, type_name: '🐯经典儿歌' }, { type_id: 101, type_name: '🐯超级汽车1' }, { type_id: 119, type_name: '🐯超级汽车第二季' }, { type_id: 136, type_name: '🐯超级汽车第三季' }, { type_id: 95, type_name: '🐯三字经' }, { type_id: 133, type_name: '🐯幼儿手势舞' }, { type_id: 117, type_name: '🐯哄睡儿歌' }, { type_id: 70, type_name: '🐯英文儿歌' }, { type_id: 116, type_name: '🐯节日与节气' }, { type_id: 97, type_name: '🐯恐龙世界' }, { type_id: 55, type_name: '🐯动画片儿歌' }, { type_id: 57, type_name: '🐯流行歌曲' }, { type_id: 118, type_name: '🐯贝乐虎入园记' }, { type_id: 106, type_name: '🐯贝乐虎大百科' }, { type_id: 62, type_name: '🐯经典古诗' }, { type_id: 63, type_name: '🐯经典故事' }, { type_id: 128, type_name: '🐯萌虎学功夫' }, { type_id: 100, type_name: '🐯绘本故事' }, { type_id: 121, type_name: '🐯开心贝乐虎英文版' }, { type_id: 96, type_name: '🐯嗨贝乐虎情商动画' }, { type_id: 108, type_name: '🐯动物音乐派对' }, { type_id: 126, type_name: '🐯动物音乐派对英文版' }, { type_id: 105, type_name: '🐯奇妙的身体' }, { type_id: 124, type_name: '🐯奇妙的身体英文版' }, { type_id: 64, type_name: '🐯认知卡片' }, { type_id: 109, type_name: '🐯趣味简笔画' }, { type_id: 78, type_name: '🐯数字儿歌' }, { type_id: 120, type_name: '🐯识字体验版' }, { type_id: 127, type_name: '🐯启蒙系列体验版' }];
const filterObj = {};
return JSON.stringify({
class: _.map(classes, (cls) => {
cls.land = 1;
cls.ratio = 1.78;
return cls;
}),
filters: filterObj,
})
}
async function homeVod() {
const link = HOST + "/api/v1/bv/video";
const pdata = { age: 1, appver: "6.1.9", egvip_status: 0, svip_status: 0, vps: 60, subcateId: 56, "p": 1 };
const jo = JSON.parse(await request(link, "", "post", pdata)).result;
const videos = [];
_.each(jo.items, (it) => {
videos.push({
vod_id: it.url,
vod_name: it.title,
vod_pic: it.image,
vod_remarks: '👀' + it.viewcount || '',
})
});
return JSON.stringify({
list: videos,
})
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof pg == 'undefined') pg = 1;
const link = HOST + "/api/v1/bv/video";
const pdata = { age: 1, appver: "6.1.9", egvip_status: 0, svip_status: 0, vps: 60, subcateId: tid, "p": pg };
const jo = JSON.parse(await request(link, "", "post", pdata)).result;
const videos = [];
_.each(jo.items, (it) => {
videos.push({
vod_id: it.url,
vod_name: it.title,
vod_pic: it.image,
vod_remarks: '👀' + it.viewcount || '',
})
});
const pgCount = pg * 60 > jo.total ? parseInt(pg) : parseInt(pg) + 1;
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 60,
total: jo.total,
list: videos,
})
}
async function detail(id) {
const vod = {
vod_id: id,
vod_remarks: '',
};
const playlist = ['点击播放' + '$' + id];
vod.vod_play_from = "道长在线";
vod.vod_play_url = playlist.join('#');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
// console.debug('贝乐虎 id =====>' + id); // js_debug.log
return JSON.stringify({
parse: 0,
url: id,
});
}
async function search(wd, quick) {
return '{}'
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search,
}
}
-155
View File
@@ -1,155 +0,0 @@
import {load, _, Uri} from './lib/cat.js';
import {log} from './lib/utils.js';
import {initAli, detailContent, playContent} from './lib/ali.js';
let siteKey = 'wogg';
let siteType = 0;
let siteUrl = 'https://wogg.xyz';
let 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";
let patternAli = /(https:\/\/www\.aliyundrive\.com\/s\/[^"]+)/
async function init(cfg) {
try {
siteKey = _.isEmpty(cfg.skey) ? '' : cfg.skey;
siteType = _.isEmpty(cfg.stype) ? '' : cfg.stype;
await initAli(cfg);
} catch (e) {
await log('init:' + e.message + ' line:' + e.lineNumber);
}
}
async function request(reqUrl, agentSp) {
let header = {
'user-agent': agentSp || 'okhttp/3.12.0',
};
let uri = new Uri(reqUrl);
let res = await req(uri.toString(), {
headers: header,
timeout: 10000
});
let content = res.content;
return content;
}
function getHeader() {
let header = {};
header['User-Agent'] = UA;
return header;
}
async function getString(url) {
let res = await req(url, {
headers: getHeader()
});
return res.content;
}
let classes = [{'type_id': 1, 'type_name' : '电影'},{'type_id': 20, 'type_name' : '电视剧'},{'type_id': 28, 'type_name' : '综艺'},{'type_id': 24, 'type_name' : '动漫'},{'type_id': 32, 'type_name' : '音乐'}];
let filterObj = {};
async function home(filter) {
return JSON.stringify({
class: classes,
filters: filterObj,
});
}
async function homeVod() {
return '{}';
}
async function category(tid, pg, filter, extend) {
let reqUrl = siteUrl + '/index.php/vodshow/'+tid+'--------'+pg+'---.html';
let con = await request(reqUrl, UA);
const $ = load(con);
let items = $('.module:eq(0) > .module-list > .module-items > .module-item');
let videos = [];
for(var item of items) {
let oneA = $(item).find('.module-item-cover .module-item-pic a').first();
let href = oneA.attr('href');
let name = oneA.attr('title');
let oneImg = $(item).find('.module-item-cover .module-item-pic img').first();
let pic = oneImg.attr('data-src');
let remark = $(item).find('.module-item-text').first().text();
videos.push({
vod_id: href,
vod_name: name,
vod_pic: pic,
vod_remarks: remark,
});
}
const hasMore = $('#page > a:contains(下一页)').length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 72,
total: 72 * pgCount,
list: videos,
});
}
async function detail(id) {
try {
await log('detail:id:---' + id);
let preMatches = id.match(patternAli);
if (!_.isEmpty(preMatches)) return await detailContent(preMatches[1]);
let url = siteUrl + id;
let aliUrl = await getString(url);
let matches = aliUrl.match(patternAli);
console.log('detailmatche---');
console.log(matches[1]);
if (!_.isEmpty(matches)) return await detailContent(matches[1]);
return '';
} catch (e) {
await log( 'detail:' + e.message + ' line:' + e.lineNumber);
}
}
async function play(flag, id, flags) {
try {
return await playContent(flag, id, flags);
} catch (e) {
await log( 'play:' + e.message + ' line:' + e.lineNumber);
}
}
async function search(wd, quick) {
await log('search---' + wd);
let searchUrl = siteUrl + '/index.php/vodsearch/-------------.html?wd=' + wd;
let html = await getString(searchUrl);
let $ = load(html);
let items = $('.module-search-item');
let videos = [];
for(var item of items) {
let vodId = $(item).find(".video-serial")[0].attribs.href;
let name = $(item).find(".video-serial")[0].attribs.title;
let pic = $(item).find(".module-item-pic > img")[0].attribs['data-src'];
let remark = '';
videos.push({
vod_id: vodId,
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,
};
}
+2 -3
View File
@@ -27,7 +27,6 @@ var rule = {
}],
lazy:'',
limit:6,
推荐:'',
推荐:`js:
pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
let d = [];
@@ -95,9 +94,9 @@ let tabm3u8 = [];
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
+2 -2
View File
@@ -45,9 +45,9 @@ let tabse = false;
d.forEach(function(it) {
let burl = pdfh(it, 'a&&href');
if (burl.startsWith("https://www.aliyundrive.com/s/")){
tabsa.push("阿里盤");
tabsa.push("阿里盤");
}else if (burl.startsWith("https://pan.quark.cn/s/")){
tabsq.push("夸克盤");
tabsq.push("夸克盤");
}else if (burl.startsWith("magnet")){
tabsm = true;
}else if (burl.startsWith("ed2k")){
-258
View File
@@ -1,258 +0,0 @@
// 自动从 地址发布页 获取&跳转url地址
import { Crypto, load, _ } from './lib/cat.js';
let key = '在线之家';
let HOST = 'https://www.zxzj.site'; // 地址发布页
let host = '';
let siteKey = '';
let siteType = 0;
const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36';
async function request(reqUrl, agentSp) {
let res = await req(reqUrl, {
method: 'get',
headers: {
'User-Agent': agentSp || MOBILE_UA,
'Referer': host
},
});
return res.content;
}
// cfg = {skey: siteKey, ext: extend}
async function init(cfg) {
siteKey = cfg.skey;
siteType = cfg.stype;
const html = await request(HOST);
const $ = load(html);
host = $('div.content-top > ul > li').find('a:first')[0].attribs.href;
console.debug('在线之家 跳转地址 =====>' + host); // js_debug.log
}
async function home(filter) {
const html = await request(host);
const $ = load(html);
const class_parse = $('ul.stui-header__menu > li > a[href*=list]');
let classes = _.map(class_parse, (cls) => {
let typeId = cls.attribs['href'];
typeId = typeId.substring(typeId.lastIndexOf('/') + 1).replace('.html', '');
return {
type_id: typeId,
type_name: cls.children[0].data,
};
});
const filterObj = {
1: [{ key: 'class', name: '剧情', value: [{ n: '全部', v: '' }, { n: '喜剧', v: '喜剧' }, { n: '爱情', v: '爱情' }, { n: '恐怖', v: '恐怖' }, { n: '动作', v: '动作' }, { n: '科幻', v: '科幻' }, { n: '剧情', v: '剧情' }, { n: '战争', v: '战争' }, { n: '警匪', v: '警匪' }, { n: '犯罪', v: '犯罪' }, { n: '动画', v: '动画' }, { n: '奇幻', v: '奇幻' }, { n: '冒险', v: '冒险' }] }, { 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: '其他' }] }],
2: [{ key: 'class', name: '剧情', value: [{ n: '全部', v: '' }, { n: '剧情', v: '剧情' }, { n: '喜剧', v: '喜剧' }, { n: '爱情', v: '爱情' }, { n: '动作', v: '动作' }, { n: '悬疑', v: '悬疑' }, { n: '恐怖', v: '恐怖' }, { n: '奇幻', v: '奇幻' }, { n: '惊悚', v: '惊悚' }, { n: '犯罪', v: '犯罪' }, { n: '科幻', v: '科幻' }, { n: '音乐', v: '音乐' }, { n: '其他', v: '其他' }] }],
3: [{ key: 'class', name: '剧情', value: [{ n: '全部', v: '' }, { n: '剧情', v: '剧情' }, { n: '喜剧', v: '喜剧' }, { n: '爱情', v: '爱情' }, { n: '动作', v: '动作' }, { n: '悬疑', v: '悬疑' }, { n: '恐怖', v: '恐怖' }, { n: '奇幻', v: '奇幻' }, { n: '惊悚', v: '惊悚' }, { n: '犯罪', v: '犯罪' }, { n: '科幻', v: '科幻' }, { n: '音乐', v: '音乐' }, { n: '其他', v: '其他' }] }],
4: [{ key: 'class', name: '剧情', value: [{ n: '全部', v: '' }, { n: '剧情', v: '剧情' }, { n: '喜剧', v: '喜剧' }, { n: '爱情', v: '爱情' }, { n: '动作', v: '动作' }, { n: '悬疑', v: '悬疑' }, { n: '恐怖', v: '恐怖' }, { n: '奇幻', v: '奇幻' }, { n: '惊悚', v: '惊悚' }, { n: '犯罪', v: '犯罪' }, { n: '科幻', v: '科幻' }, { n: '音乐', v: '音乐' }, { n: '其他', v: '其他' }] }],
6: [{ key: 'class', name: '剧情', value: [{ n: '全部', v: '' }, { n: '情感', v: '情感' }, { n: '科幻', v: '科幻' }, { n: '热血', v: '热血' }, { n: '推理', v: '推理' }, { n: '搞笑', v: '搞笑' }, { n: '冒险', v: '冒险' }, { n: '萝莉', v: '萝莉' }, { n: '校园', v: '校园' }, { n: '动作', v: '动作' }, { n: '机战', v: '机战' }, { n: '运动', v: '运动' }, { n: '战争', v: '战争' }, { n: '少年', v: '少年' }] }, { key: 'area', name: '地区', value: [{ n: '全部', v: '' }, { n: '国产', v: '国产' }, { n: '日本', v: '日本' }, { n: '欧美', v: '欧美' }, { n: '其他', v: '其他' }] }]
};
let filYer = { 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' }] };
filYer['init'] = filYer.value[0].v;
let filBy = { key: 'by', name: '排序', value: [{ n: '时间', v: 'time' }, { n: '人气', v: 'hits' }, { n: '评分', v: 'score' }] };
filBy['init'] = filBy.value[0].v;
return JSON.stringify({
class: _.map(classes, (cls) => {
if (filterObj[cls.type_id]) {
filterObj[cls.type_id].push(filYer, filBy);
filterObj[cls.type_id][0]['init'] = filterObj[cls.type_id][0].value[0].v;
} else {
filterObj[cls.type_id] = [];
filterObj[cls.type_id].push(filYer, filBy)
}
return cls;
}),
filters: filterObj,
});
}
async function homeVod() {
const link = host + '/vodshow/1--hits---------2023.html';
const html = await request(link);
const $ = load(html);
const js2Base = await js2Proxy(true, siteType, siteKey, 'img/', {});
const items = $('ul.stui-vodlist > li');
let videos = _.map(items, (item) => {
const a = $(item).find('a:first')[0];
const remarks = $($(item).find('span.pic-text')[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/detail\/(.*).html/g, '$1'),
vod_name: a.attribs.title,
vod_pic: js2Base + base64Encode(a.attribs['data-original']),
vod_remarks: remarks || '',
};
});
return JSON.stringify({
list: videos,
});
}
async function category(tid, pg, filter, extend) {
if (pg <= 0 || typeof (pg) == 'undefined') pg = 1;
const link = host + '/vodshow/' + tid + '-' + (extend.area || '') + '-' + (extend.by || 'time') + '-' + (extend.class || '') + '-' + (extend.lang || '') + '-' + (extend.letter || '') + '---' + pg + '---' + (extend.year || '') + '.html';
const html = await request(link);
const $ = load(html);
const js2Base = await js2Proxy(true, siteType, siteKey, 'img/', {});
const items = $('ul.stui-vodlist > li');
let videos = _.map(items, (item) => {
const a = $(item).find('a:first')[0];
const remarks = $($(item).find('span.pic-text')[0]).text().trim();
return {
vod_id: a.attribs.href.replace(/.*?\/detail\/(.*).html/g, '$1'),
vod_name: a.attribs.title,
vod_pic: js2Base + base64Encode(a.attribs['data-original']),
vod_remarks: remarks || '',
};
});
const hasMore = $('ul.stui-page__item > li > a:contains(下一页)').length > 0;
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
return JSON.stringify({
page: parseInt(pg),
pagecount: pgCount,
limit: 24,
total: 24 * pgCount,
list: videos,
});
}
async function detail(id) {
const html = await request(host + '/detail/' + id + '.html');
const $ = load(html);
const js2Base = await js2Proxy(true, siteType, siteKey, 'img/', {});
const vod = {
vod_id: id,
vod_name: $('h1:first').text().trim(),
vod_type: $('.stui-content__detail p:first a').text(),
vod_actor: $('.stui-content__detail p:nth-child(3)').text().replace('主演:', ''),
vod_director: $('.stui-content__detail p:nth-child(4)').text().replace('导演:', ''),
vod_pic: js2Base + base64Encode($('.stui-content__thumb img:first').attr('data-original')),
vod_remarks: $('.stui-content__detail p:nth-child(5)').text() || '',
vod_content: $('span.detail-content').text().trim(),
};
let playMap = {};
const tabs = $('div.stui-vodlist__head > h3');
const playlists = $('ul.stui-content__playlist');
_.each(tabs, (tab, i) => {
const from = tab.children[0].data;
let list = playlists[i];
list = $(list).find('a');
_.each(list, (it) => {
const title = it.children[0].data;
const playUrl = it.attribs.href;
if (title.length == 0) title = it.children[0].data.trim();
if (!playMap.hasOwnProperty(from)) {
playMap[from] = [];
}
playMap[from].push(title + '$' + playUrl);
});
});
vod.vod_play_from = _.keys(playMap).join('$$$');
const urls = _.values(playMap);
let vod_play_url = _.map(urls, (urlist) => {
return urlist.join('#');
});
vod.vod_play_url = vod_play_url.join('$$$');
return JSON.stringify({
list: [vod],
});
}
async function play(flag, id, flags) {
const html = await request(host + id);
const mhtml = html.match(/r player_.*?=(.*?)</)[1];
const json = JSON.parse(mhtml);
const url = json.url;
const from = json.from;
if (json.encrypt == '1') {
url = unescape(url)
} else if (json.encrypt == '2') {
url = unescape(base64Decode(url))
}
if (url.indexOf('m3u8') >= 0 || url.indexOf('mp4') >= 0) {
// console.debug('在线之家url =====>' + url); // js_debug.log
return JSON.stringify({
parse: 0,
url: url,
});
} else if (from.indexOf('line3') >= 0 || from.indexOf('line5') >= 0) {
const ifrwy = await request(url);
const code = ifrwy.match(/var url = '(.*?)'/)[1].split('').reverse().join('');
let temp = '';
for (let i = 0x0; i < code.length; i = i + 0x2) {
temp += String.fromCharCode(parseInt(code[i] + code[i + 0x1], 0x10))
}
const purl = temp.substring(0x0, (temp.length - 0x7) / 0x2) + temp.substring((temp.length - 0x7) / 0x2 + 0x7);
// console.debug('在线之家purl =====>' + purl); // js_debug.log
return JSON.stringify({
parse: 0,
url: purl,
});
} else {
// console.debug('在线之家url =====>' + '空'); // js_debug.log
return '{}';
}
}
async function search(wd, quick) {
var data = JSON.parse(await request(host + '/index.php/ajax/suggest?mid=1&wd=' + wd + '&limit=50')).list;
const js2Base = await js2Proxy(true, siteType, siteKey, 'img/', {});
let videos = _.map(data, (it) => {
return {
vod_id: it.id,
vod_name: it.name,
vod_pic: js2Base + base64Encode(it.pic),
vod_remarks: '',
}
});
return JSON.stringify({
list: videos,
limit: 50,
});
}
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));
}
async function proxy(segments, headers) {
let what = segments[0];
let url = base64Decode(segments[1]);
if (what == 'img') {
var resp = await req(url, {
buffer: 2,
headers: {
Referer: 'https://api.douban.com/',
'User-Agent': MOBILE_UA,
},
});
return JSON.stringify({
code: resp.code,
buffer: 2,
content: resp.content,
headers: resp.headers,
});
}
return JSON.stringify({
code: 500,
content: '',
});
}
export function __jsEvalReturn() {
return {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
proxy: proxy,
search: search,
};
}
-31
View File
@@ -1,31 +0,0 @@
var rule = {
title: '迷你库[V2]', // csp_AppYsV2
host: 'http://www.miniku.cc',
homeUrl:'/xgapp.php/v1/index_video',
// url: '/xgapp.php/v1/video?tid=fyclass&class=&area=&lang=&year=&limit=20&pg=fypage',
url: '/xgapp.php/v1/video?tid=fyclassfyfilter&limit=20&pg=fypage',
filter_url:'&class={{fl.class}}&area={{fl.area}}&lang={{fl.lang}}&year={{fl.year}}',
filter: {
"1":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"},{"n":"台湾","v":"台湾"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
"2":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"},{"n":"台湾","v":"台湾"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"选秀","v":"选秀"},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"},{"n":"财经","v":"财经"},{"n":"求职","v":"求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"},{"n":"台湾","v":"台湾"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":"冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":"社会","v":"社会"},{"n":"原创","v":"原创"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"},{"n":"台湾","v":"台湾"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}]
},
detailUrl:'/xgapp.php/v1/video_detail?id=fyid',
searchUrl: '/xgapp.php/v1/search?text=**&pg=fypage',
searchable: 2,
quickSearch: 0,
filterable:1,//是否启用分类筛选,
headers:{'User-Agent':'Dart/2.14 (dart:io)'},
timeout:5000,
class_name:'剧集&电影&综艺&动漫&直播', // 分类筛选 /xgapp.php/v1/nav
class_url:'2&1&3&4&22',
play_parse:true,
pagecount:{"22":1},
lazy:'js:input=/.m3u8|.mp4/.test(input)?input:input=/caihong|luanzi|zb-/.test(input)?"http://42.157.128.109:2323/CH/app/app.php?url="+input:input=/tucheng/.test(input)?JSON.parse(request("https://sssvipapi.tucheng5566.cc:22222/api/?key=qbZ2n0Kwbrvdtqsw1s&url="+input)).url:input=/^\\d+$/.test(input)?"https://rdxnnnnnnnn.json123456789.com:2222/huya.php?id="+input:JSON.parse(request("https://vip.mosangkeji.com/api/?key=PLvqEH5S4OsBrVdzv6&url="+input)).url',
limit:6,
推荐:'json:data[0].vlist;*;*;*;*',
一级:'json:data;vod_name;vod_pic;vod_remarks;vod_id',
二级:'js:try{let html=request(input);print(html);html=JSON.parse(html);let node=html.data.vod_info;VOD={vod_id:node["vod_id"],vod_name:node["vod_name"],vod_pic:node["vod_pic"],type_name:node["vod_class"],vod_year:node["vod_year"],vod_area:node["vod_area"],vod_remarks:node["vod_remarks"],vod_actor:node["vod_actor"],vod_director:node["vod_director"],vod_content:node["vod_content"].strip()};let episodes=node.vod_url_with_player;let playMap={};if(typeof play_url==="undefined"){var play_url=""}episodes.forEach(function(ep){let source=ep["name"];if(!playMap.hasOwnProperty(source)){playMap[source]=[]}playMap[source].append(ep["url"])});let playFrom=[];let playList=[];Object.keys(playMap).forEach(function(key){playFrom.append(key);playList.append(playMap[key])});let vod_play_from=playFrom.join("$$$");let vod_play_url=playList.join("$$$");VOD["vod_play_from"]=vod_play_from;VOD["vod_play_url"]=vod_play_url}catch(e){log("获取二级详情页发生错误:"+e.message)}',
搜索:'*',
}