mirror of
https://github.com/lxhfans/cat.git
synced 2026-10-20 09:30:12 +00:00
Add files via upload
This commit is contained in:
1 parent
09f4f5cab1
commit
4daf531412
97 files changed
+12748
No files matched your search
@@ -0,0 +1,149 @@
|
|||||||
|
import { Crypto, load, _, jinja2 } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = '108kk';
|
||||||
|
let HOST = 'https://www.1080kk.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,
|
||||||
|
'Referer': HOST
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":1,"type_name":"电影"},{"type_id":2,"type_name":"追剧"},{"type_id":3,"type_name":"综艺"},{"type_id":4,"type_name":"动漫"}];
|
||||||
|
let filterObj = {
|
||||||
|
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"陆剧","v":"13"},{"n":"日韩剧","v":"15"},{"n":"欧美剧","v":"16"},{"n":"港台剧","v":"14"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"历史","v":"历史"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"}]},{"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"}]}],
|
||||||
|
"1":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"1"},{"n":"动作片","v":"6"},{"n":"喜剧片","v":"7"},{"n":"爱情片","v":"8"},{"n":"科幻片","v":"9"},{"n":"恐怖片","v":"10"},{"n":"剧情片","v":"11"},{"n":"战争片","v":"12"}]},{"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"}]}],
|
||||||
|
"3":[{"key":"class","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"}]},{"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":"海外动漫"}]},{"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() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
const link = HOST + '/vodshow/' + (extend.CateId || tid) + '--' + (extend.by || 'time') + '-' + (extend.class || '') + '--' + (extend.letter || '') + '---' + pg + '---' + (extend.year || '') + '.html';//https://www.1080kk.com/vodshow/13--hits-%E5%8F%A4%E8%A3%85-%E5%9B%BD%E8%AF%AD-B------2022.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('ul.myui-vodlist > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.pic-text text-right')[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) {
|
||||||
|
var html = await request( HOST + '/voddetail/' + 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 = $('ul.nav-tabs > li > a[data-toggle*=tab]');
|
||||||
|
var playlists = $('ul.myui-content__list');
|
||||||
|
_.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.replace(/\/vodplay\/(.*).html/g, '$1');
|
||||||
|
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) {
|
||||||
|
const link = HOST + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=',''));
|
||||||
|
const playurl = js.url;
|
||||||
|
const playUrl = unescape(playurl);
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick) {
|
||||||
|
let data = JSON.parse(await request(HOST + '/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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
import { Crypto, load, _, jinja2 } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = '108kk';
|
||||||
|
let HOST = 'https://www.1080kk.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,
|
||||||
|
'Referer': HOST
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":1,"type_name":"电影"},{"type_id":2,"type_name":"追剧"},{"type_id":3,"type_name":"综艺"},{"type_id":4,"type_name":"动漫"}];
|
||||||
|
let filterObj = {
|
||||||
|
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"陆剧","v":"13"},{"n":"日韩剧","v":"15"},{"n":"欧美剧","v":"16"},{"n":"港台剧","v":"14"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"历史","v":"历史"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"}]},{"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"}]}],
|
||||||
|
"1":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"1"},{"n":"动作片","v":"6"},{"n":"喜剧片","v":"7"},{"n":"爱情片","v":"8"},{"n":"科幻片","v":"9"},{"n":"恐怖片","v":"10"},{"n":"剧情片","v":"11"},{"n":"战争片","v":"12"}]},{"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"}]}],
|
||||||
|
"3":[{"key":"class","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"}]},{"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":"海外动漫"}]},{"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() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
const link = HOST + '/vodshow/' + (extend.CateId || tid) + '--' + (extend.by || 'time') + '-' + (extend.class || '') + '--' + (extend.letter || '') + '---' + pg + '---' + (extend.year || '') + '.html';//https://www.1080kk.com/vodshow/13--hits-%E5%8F%A4%E8%A3%85-%E5%9B%BD%E8%AF%AD-B------2022.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('ul.myui-vodlist > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.pic-text text-right')[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) {
|
||||||
|
var html = await request( HOST + '/voddetail/' + 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 = $('ul.nav-tabs > li > a[data-toggle*=tab]');
|
||||||
|
var playlists = $('ul.myui-content__list');
|
||||||
|
_.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.replace(/\/vodplay\/(.*).html/g, '$1');
|
||||||
|
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) {
|
||||||
|
const link = HOST + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=',''));
|
||||||
|
const playurl = js.url;
|
||||||
|
const playUrl = unescape(playurl);
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick) {
|
||||||
|
let data = JSON.parse(await request(HOST + '/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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
var version_='jsjiami.com.v7';const _0x5c2c6e=_0x13b8;(function(_0x2c88b9,_0x173a02,_0x45af04,_0x3d688f,_0x3062d8,_0x37a8d4,_0x48d0d7){return _0x2c88b9=_0x2c88b9>>0x2,_0x37a8d4='hs',_0x48d0d7='hs',function(_0x45104d,_0x92084b,_0x37e151,_0x468104,_0x42967a){const _0x5981d7=_0x13b8;_0x468104='tfi',_0x37a8d4=_0x468104+_0x37a8d4,_0x42967a='up',_0x48d0d7+=_0x42967a,_0x37a8d4=_0x37e151(_0x37a8d4),_0x48d0d7=_0x37e151(_0x48d0d7),_0x37e151=0x0;const _0x365952=_0x45104d();while(!![]&&--_0x3d688f+_0x92084b){try{_0x468104=parseInt(_0x5981d7(0x169,'cx[Y'))/0x1*(parseInt(_0x5981d7(0x1f0,'sqjU'))/0x2)+-parseInt(_0x5981d7(0x12a,'fS4S'))/0x3+parseInt(_0x5981d7(0x1e9,'r*n5'))/0x4+parseInt(_0x5981d7(0x12d,'fo5o'))/0x5*(-parseInt(_0x5981d7(0x289,'rrD6'))/0x6)+-parseInt(_0x5981d7(0x1cb,'r*n5'))/0x7*(-parseInt(_0x5981d7(0x280,'r$LF'))/0x8)+parseInt(_0x5981d7(0x218,'*1e]'))/0x9+-parseInt(_0x5981d7(0x264,'rrD6'))/0xa;}catch(_0x41544d){_0x468104=_0x37e151;}finally{_0x42967a=_0x365952[_0x37a8d4]();if(_0x2c88b9<=_0x3d688f)_0x37e151?_0x3062d8?_0x468104=_0x42967a:_0x3062d8=_0x42967a:_0x37e151=_0x42967a;else{if(_0x37e151==_0x3062d8['replace'](/[kdPAEGJOUwCItyerMRQLl=]/g,'')){if(_0x468104===_0x92084b){_0x365952['un'+_0x37a8d4](_0x42967a);break;}_0x365952[_0x48d0d7](_0x42967a);}}}}}(_0x45af04,_0x173a02,function(_0x237c25,_0x13878a,_0x201fe5,_0x2c2900,_0x20e361,_0x413be6,_0x156fc9){return _0x13878a='\x73\x70\x6c\x69\x74',_0x237c25=arguments[0x0],_0x237c25=_0x237c25[_0x13878a](''),_0x201fe5='\x72\x65\x76\x65\x72\x73\x65',_0x237c25=_0x237c25[_0x201fe5]('\x76'),_0x2c2900='\x6a\x6f\x69\x6e',(0x13c433,_0x237c25[_0x2c2900](''));});}(0x314,0x3b577,_0x1171,0xc7),_0x1171)&&(version_=_0x1171);import{Crypto,dayjs,jinja2,load,Uri,_}from'./lib/cat.js';const PC_UA=_0x5c2c6e(0x168,'ggqV');export function base64Encode(_0x2d9b14){const _0x54d1b9=_0x5c2c6e;return Crypto[_0x54d1b9(0x27d,'ggqV')][_0x54d1b9(0x1db,'3R7O')][_0x54d1b9(0x1e3,'zN$q')](Crypto[_0x54d1b9(0x173,'!sY]')][_0x54d1b9(0x1f4,'(CRD')]['parse'](_0x2d9b14));}export function base64Decode(_0x1aa918){const _0x38f7a2=_0x5c2c6e;return Crypto[_0x38f7a2(0x276,'z0(U')][_0x38f7a2(0x223,'Ya0A')][_0x38f7a2(0x21e,'wl1C')](Crypto[_0x38f7a2(0x157,'^aS5')][_0x38f7a2(0x22f,'fo5o')]['parse'](_0x1aa918));}const classes1=[],filters1={};classes1[_0x5c2c6e(0x198,'^aS5')]({'type_id':_0x5c2c6e(0x1d7,'rrD6'),'type_name':'每日更新','land':0x1}),classes1[_0x5c2c6e(0x25b,'DWEu')]({'type_id':'chinese','type_name':_0x5c2c6e(0x211,'wl1C'),'land':0x1});let fil1=[{'key':_0x5c2c6e(0x140,'CyzP'),'name':'','init':_0x5c2c6e(0x28f,'mC9H'),'value':[{'n':'全部','v':_0x5c2c6e(0x16e,'bEe3')},{'n':_0x5c2c6e(0x1ec,'%ce@'),'v':'/chinese_random/all/index.html'},{'n':_0x5c2c6e(0x14b,'JK$$'),'v':_0x5c2c6e(0x17f,'CyzP')}]}];filters1[_0x5c2c6e(0x186,'z0(U')]=fil1,classes1[_0x5c2c6e(0x274,'Ya0A')]({'type_id':_0x5c2c6e(0x193,'r$LF'),'type_name':'无码','land':0x1}),fil1=[{'key':'tid','name':'','init':'/uncensored_list/all/{{pg}}.html','value':[{'n':'全部','v':_0x5c2c6e(0x22e,'bEe3')},{'n':'随机','v':_0x5c2c6e(0x195,'ggqV')},{'n':'一本道','v':'/uncensored_makersr/32/一本道(1pondo)/{{pg}}.html'},{'n':_0x5c2c6e(0x17d,'Xrcb'),'v':'/uncensored_makersr/30/カリビアンコム(Caribbeancom)/{{pg}}.html'},{'n':'Caribbeancompr','v':_0x5c2c6e(0x141,'mC9H')},{'n':_0x5c2c6e(0x146,'dghQ'),'v':_0x5c2c6e(0x1fb,'wl1C')},{'n':_0x5c2c6e(0x270,'N$@P'),'v':'/uncensored_makersr/17/HEYZO/{{pg}}.html'},{'n':_0x5c2c6e(0x25e,'r*n5'),'v':'/uncensored_makersr/29/東京熱(Tokyo\x20Hot)/{{pg}}.html'},{'n':'Gachinco','v':_0x5c2c6e(0x13f,'gKk#')},{'n':'Pacopacomama','v':'/uncensored_makersr/36/パコパコママ(pacopacomama)/{{pg}}.html'},{'n':_0x5c2c6e(0x1c5,'dghQ'),'v':_0x5c2c6e(0x1ee,'fo5o')},{'n':_0x5c2c6e(0x1cf,'Xrcb'),'v':_0x5c2c6e(0x24c,'3R7O')},{'n':'エッチな','v':_0x5c2c6e(0x1ac,'F@l#')},{'n':'XXX-AV','v':_0x5c2c6e(0x1c8,'^aS5')}]}],filters1[_0x5c2c6e(0x1d2,'sqjU')]=fil1,classes1[_0x5c2c6e(0x198,'^aS5')]({'type_id':_0x5c2c6e(0x17c,'2%tW'),'type_name':'动画','land':0x1}),fil1=[{'key':_0x5c2c6e(0x156,'mwmR'),'name':'','init':_0x5c2c6e(0x1ab,'yX&T'),'value':[{'n':'全部','v':_0x5c2c6e(0x26c,'$5Bb')},{'n':'随机','v':'/animation_random/all/index.html'},{'n':'有码','v':_0x5c2c6e(0x14c,'O8nP')},{'n':'无码','v':'/UncensoredAnimation_list/all/{{pg}}.html'},{'n':'3D','v':_0x5c2c6e(0x164,'FQWx')}]}],filters1[_0x5c2c6e(0x176,'DWEu')]=fil1,classes1[_0x5c2c6e(0x258,'mC9H')]({'type_id':'dt','type_name':'自拍','land':0x1}),fil1=[{'key':'tid','name':'','init':_0x5c2c6e(0x273,'MLb$'),'value':[{'n':'全部','v':'/dt_list/all/{{pg}}.html'},{'n':'随机','v':_0x5c2c6e(0x15a,'r*n5')}]}],filters1['dt']=fil1,classes1[_0x5c2c6e(0x166,'(CRD')]({'type_id':'/chinese_categorylist/list/index.html','type_name':'标签','land':0x0});let key=_0x5c2c6e(0x229,'DWEu'),url='',siteKey='',siteType=0x0;const cookie={};async function request(_0x36065e,_0x3d6ffc){const _0x5c71a6=_0x5c2c6e,_0x5a2918={'kDNMw':function(_0x400cfc,_0x5ee3e9){return _0x400cfc===_0x5ee3e9;},'ZjVLine truncated
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
import { Crypto, load, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = '1free';
|
||||||
|
let HOST = 'https://91d.top';//歪片星球.com
|
||||||
|
let url = '';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
const UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13E230 Safari/601.1';
|
||||||
|
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': agentSp || UA,
|
||||||
|
'Referer': HOST
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
let html = await request(HOST);
|
||||||
|
url = html.match(/<a href="(http.*www.*)" target=.*>/)[1]
|
||||||
|
console.debug('跳转地址 =====>' + url); // js_debug.log
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":1,"type_name":"电影"},{"type_id":2,"type_name":"追剧"},{"type_id":3,"type_name":"综艺"},{"type_id":4,"type_name":"动漫"}];
|
||||||
|
let filterObj = {
|
||||||
|
"1":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"1"},{"n":"纪录片","v":"20"},{"n":"动作片","v":"6"},{"n":"爱情片","v":"8"},{"n":"科幻片","v":"9"},{"n":"恐怖片","v":"10"},{"n":"剧情片","v":"11"},{"n":"战争片","v":"12"},{"n":"喜剧片","v":"7"}]},{"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":"lang","name":"语言","value":[{"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":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"国产剧","v":"13"},{"n":"欧美剧","v":"14"},{"n":"港台剧","v":"15"},{"n":"日韩剧","v":"16"},{"n":"泰剧","v":"21"}]},{"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":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"3":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"3"},{"n":"大陆综艺","v":"22"},{"n":"港台综艺","v":"25"},{"n":"日韩综艺","v":"24"},{"n":"欧美综艺","v":"23"}]},{"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":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"4":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"4"},{"n":"国产动漫","v":"26"},{"n":"日韩动漫","v":"28"},{"n":"欧美动漫","v":"27"},{"n":"港台动漫","v":"29"}]},{"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":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
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.lang || '') + '----' + pg + '---' + (extend.year || '') + '.html';//https://91free.live/vodshow/6-%E7%BE%8E%E5%9B%BD-hits--%E8%8B%B1%E8%AF%AD----2---2022.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.module-items a.module-poster-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item)[0];
|
||||||
|
const k = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('div.module-item-note')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/\/voddetail\/(.*?).html/g, '$1'),
|
||||||
|
vod_name: k.attribs.alt,
|
||||||
|
vod_pic: k.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('div#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 html = await request( url + '/voddetail/' + id + '.html');
|
||||||
|
const $ = load(html);
|
||||||
|
const vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('h1:first').text().trim(),
|
||||||
|
vod_type: $('.module-info-tag a').text(),
|
||||||
|
vod_actor: $('.module-info-item-content').text(),
|
||||||
|
vod_pic: $('.module-info img:first').attr('data-src'),
|
||||||
|
vod_remarks : $('.stui-content__detail p:nth-child(5)').text() || '',
|
||||||
|
vod_content: $('.module-info-introduction-content p').text().trim(),
|
||||||
|
};
|
||||||
|
let playMap = {};
|
||||||
|
const tabs = $('div.module-tab-items-box div.module-tab-item span');
|
||||||
|
const playlists = $('div.module-play-list-content');
|
||||||
|
_.each(tabs, (tab, i) => {
|
||||||
|
const from = $(tab).text();
|
||||||
|
let list = playlists[i];
|
||||||
|
list = $(list).find('a');
|
||||||
|
_.each(list, (it) => {
|
||||||
|
const title = $(it).text();
|
||||||
|
const playUrl = it.attribs.href.replace(/\/vodplay\/(.*?).html/g, '$1');
|
||||||
|
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 link = url + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=',''));
|
||||||
|
const playUrl = js.url;
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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 search(wd, quick, pg) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let data = await request(url + '/phsch/' + '/page/' + pg + '/wd/' + wd + '.html');//https://www.physkan.com/phsch/page/2/wd/%E6%88%91.html
|
||||||
|
const $ = load(data);
|
||||||
|
const items = $('div.module-items > div.module-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const k = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('div.module-item-note')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/\/v\/(.*?).html/g, '$1'),
|
||||||
|
vod_name: k.attribs.alt,
|
||||||
|
vod_pic: k.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('div#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,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,261 @@
|
|||||||
|
// 网站搜索异常
|
||||||
|
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 {
|
||||||
|
book_id: it.attribs.href.replace(/.*?\/tingshu\/(.*)/g, '$1'),
|
||||||
|
book_name: it.attribs.title.replace('有声小说',''),
|
||||||
|
book_pic: HOST + img.attribs['data-original'],
|
||||||
|
book_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 = {
|
||||||
|
book_id: id,
|
||||||
|
type_name: $('h1:first').text().trim().replace('有声小说',''),
|
||||||
|
// vod_pic: HOST + $('div.myui-content__thumb img:first').attr('data-original'),
|
||||||
|
// vod_content: $('div.ellipsis').text().trim(),
|
||||||
|
book_year: '',
|
||||||
|
book_area: '',
|
||||||
|
book_remarks: '',
|
||||||
|
book_actor: '',
|
||||||
|
book_director: '',
|
||||||
|
book_content: '',
|
||||||
|
};
|
||||||
|
// 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');
|
||||||
|
}).join("#");
|
||||||
|
vod.volumes = '道长在线';
|
||||||
|
vod.urls = playlist;
|
||||||
|
// 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 {
|
||||||
|
book_id: it.attribs.href.replace(/.*?\/tingshu\/(.*)/g, '$1'),
|
||||||
|
book_name: it.attribs.title.replace('有声小说',''),
|
||||||
|
book_pic: img.attribs['data-original'],
|
||||||
|
book_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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
// 网站搜索异常
|
||||||
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CNAhg0a3lzX29wZW4uanMYLi9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwhsb2FkAl8MamluamEyBmtleQhIT1NUDnNpdGVLZXkQc2l0ZVR5cGUEVUEOcmVxdWVzdAhpbml0CGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxkZXRhaWwIcGxheQxzZWFyY2gINGt5cy5odHRwczovLzRrZHl3LnFzY2x1Yi5jbpYCTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMQxyZXFVcmwOYWdlbnRTcAZyZXMGcmVxDG1ldGhvZBRVc2VyLUFnZW50DlJlZmVyZXIOaGVhZGVycw5jb250ZW50BmNmZwhza2V5CnN0eXBlDGZpbHRlcg5jbGFzc2VzEmZpbHRlck9iag50eXBlX2lkBTV1cV8SdHlwZV9uYW1lBf2PZ1IF/H56ggWoUitvDGNhdGVJZAV7fItXBWhR6JACbgJ2B/1Wp05nUgcvbvBTZ1IH5WXpl2dSBydrjn9nUgVnUsVgBeRTxYgFGGKJTglSlyVmdlDPUAWcVWdSBbZbrV4Fr3JqfwWoUlxPBUdZe14FhlPyUwXPfnhRBWFOUWcFxWBvZgVGVRhiBVF/Z1IFdlHWTgh5ZWFyBXRe404MbGV0dGVyBVdbzWsCQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaBGJ5BZJjj14F9mX0lQh0aW1lBbpOFGwIaGl0cwXEiwZSCnNjb3JlB6hSXE9HcgecVWdSR3IHMXLFYEdyByZPBnRHcgfReXteR3IHUGAWYEdyB2dSxWBHcgcYYolOR3IHqn5VX0dyB69yan9Hcgd+cL6WR3IHhlPyU0dyByBPsItHcgdMax6CR3IHhJhKVEdyCahSK281dXFfCTV1cV/jifSLBTFyxWAFUGAWYAXReXteBWaLKlMFqFI7dQVma6BPBZJRaZYFqmcYYgWsYJF1BcpgmmAFUpclZgWHZXqCB65fNXVxXwXQj6hSBZxRUWcFP1HleglRf9x+NXVxXwknWUaW/H56ggkvbvBT/H56ggnlZemX/H56ggkna45//H56ggUJkMB5BcVgH2EFv4sIjAWtZKViBcVlOG4F85dQTgWOf9+YBap+nlsF8mZ6ggUfdTttCThuD2KSTqhSBSKNz34FQmxMgAnlZSxnqFIrbwn9VqdOqFIrbwkna45/qFIrbwXtcECIBahjBnQFHmQRewUdhImDBSFo7VYFOmcYYgURXHReBRFcc1kFPnkaTwWfUxtSBbJOUFsFynZ6ZgWxUtdfEnN0cmluZ2lmeQ5maWx0ZXJzBnRpZARwZwxleHRlbmQIbGluawhodG1sAiQKaXRlbXMMdmlkZW9zDmhhc01vcmUOcGdDb3VudBIvdm9kc2hvdy8ELS0CLQYtLS0KLmh0bWxIZGl2Lm1vZHVsZS1pdGVtcyBkaXYubW9kdWxlLWl0ZW0tcGljBm1hcDVkAGkAdgAjAHAAYQBnAGUAIAA+ACAAYQA6AGMAbwBuAHQAYQBpAG4AcwAoAAtOAE51mCkAEHBhcnNlSW50CHBhZ2UScGFnZWNvdW50CmxpbWl0CnRvdGFsCGxpc3QIaXRlbQRpdAJrDnJlbWFya3MIZmluZA5hOmZpcnN0EmltZzpmaXJzdChkaXYubW9kdWxlLWl0ZW0tdGV4dAh0ZXh0CHRyaW0OYXR0cmlicwhocmVmDnJlcGxhY2UEJDEMdm9kX2lkCnRpdGxlEHZvZF9uYW1lEGRhdGEtc3JjDnZvZF9waWMWdm9kX3JlbWFya3MEaWQGdm9kDnBsYXlNYXAIdGFicxJwbGF5bGlzdHMIdXJscxh2b2RfcGxheV91cmwWL3ZvZGRldGFpbC8QaDE6Zmlyc3Q+LnN0dWktY29udGVudF9fZGV0YWlsIHA6Zmlyc3QgYRB2b2RfdHlwZUguc3R1aS1jb250ZW50X19kZXRhaWwgcDpudGgtY2hpbGQoMykHO04Ubxr/EnZvZF9hY3Rvcjwuc3R1aS1jb250ZW50X190aHVtYiBpbWc6Zmlyc3QIYXR0chpkYXRhLW9yaWdpbmFsSC5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOm50aC1jaGlsZCg1KSZzcGFuLmRldGFpbC1jb250ZW50FnZvZF9jb250ZW50OGRpdi5tb2R1bGUt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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CqAhg1Mmp1X29wZW4uanMYLi9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwhsb2FkAl8Ga2V5CEhPU1QGdXJsDnNpdGVLZXkQc2l0ZVR5cGUEVUEOcmVxdWVzdAhpbml0CGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxkZXRhaWwIcGxheRhiYXNlNjRFbmNvZGUYYmFzZTY0RGVjb2RlDHNlYXJjaAg1Mmp1LGh0dHA6Ly9mYWJ1LnRpbWl5cy52aXCKAk1vemlsbGEvNS4wIChpUGhvbmU7IENQVSBpUGhvbmUgT1MgOV8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwMS4xLjQ2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi85LjAgTW9iaWxlLzEzRTIzMCBTYWZhcmkvNjAxLjEMcmVxVXJsDmFnZW50U3AGcmVzBnJlcQxtZXRob2QUVXNlci1BZ2VudA5SZWZlcmVyDmhlYWRlcnMOY29udGVudAZjZmcIaHRtbAhza2V5CnN0eXBlCm1hdGNoDmNvbnNvbGUKZGVidWcb341nUvONbI8wV0BXIAA9AD0APQA9AD0APgAMZmlsdGVyDmNsYXNzZXMSZmlsdGVyT2JqEGRpYW55aW5nDnR5cGVfaWQFNXVxXxJ0eXBlX25hbWUQbGlhbnh1anUF/Y9nUgx6b25neWkF/H56gg5kb25nbWFuBahSK28QamlsdXBpYW4Hqn5VX0dyDHlpbnl1ZQXzl1BOBWdSxWAFaFHokAJuAnYFnFVnUgWoUlxPBTFyxWAFymCaYAWvcmp/BZJRaZYF0Xl7XgWsYJF1BahSO3UF2U6gTwVma6BPBRhiiU4FTGseggVHWXteBSBPsIsFZosqUwWGU/JTBdCPqFIFJk8GdAV+cL6WBX+J6JAFVJt7XgWqZxhiBVBgFmAFsItVXwXFYHKCCGFyZWEFMFc6UwUnWUaWBY5//VYFmZkvbgXpl/1WBfGC/VYF8FN+bgXlZSxnBdVs/VYHD2EnWSlSBbdf/VYHf4ntc1lyBfBs/VYFdlGDWwhsYW5nBe2LAIoF/VbtiwXxgu2LBaR87YsH/ZVXU+2LBemX7YsF5WXtiwXVbO2LBbdf7YsIeWVhcgX2ZfSVDGxldHRlcgVXW81rAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgRieQWSY49eCHRpbWUFuk4UbAhoaXRzBcSLBlIKc2NvcmUF5FPFiAX9kAJeBXZQz1AFtlutXgUAisVgBZtRi04FnFFRZwVeed2LBRFcP1EFHmQRewUNjBhiBXRe404HsGWgUmFXBWp1Z1IF/VYbUgXtcECIBe5P2U4FqGMGdAUhaO1WBTpnGGIFEVx0XgURXHNZBT55Gk8Fn1MbUgWyTlBbBcp2emYFsVLXXwV2UdZOBSdrjn8HH3e6TsB5Bb+LCIwFxWAfYQUJkMB5BcVlOG4Fjn/fmAXjU8B5BfJmeoIFOG4PYgUfdTttBfZlGlwFTIA6VwWqfp5bBdt2Gk8J85dQTk0AVgAFA4DkUwXReWZbBE1WBxRvMVUaTwXzl5GYBfBs7YsSc3RyaW5naWZ5DmZpbHRlcnMGdGlkBHBnDGV4dGVuZAhsaW5rAiQKaXRlbXMMdmlkZW9zDmhhc01vcmUOcGdDb3VudBIvdm9kc2hvdy8CLQYtLS0KLmh0bWxAZGl2Lm1vZHVsZS1pdGVtcyBkaXYubW9kdWxlLWl0ZW0GbWFwNWQAaQB2ACMAcABhAGcAZQAgAD4AIABhADoAYwBvAG4AdABhAGkAbgBzACgAC04ATnWYKQAQcGFyc2VJbnQIcGFnZRJwYWdlY291bnQKbGltaXQKdG90YWwIbGlzdAhpdGVtBGl0AmsOcmVtYXJrcwhmaW5kDmE6Zmlyc3QSaW1nOmZpcnN0KGRpdi5tb2R1bGUtaXRlbS10ZXh0CHRleHQIdHJpbQ5hdHRyaWJzCGhyZWYOcmVwbGFjZQQkMQx2b2RfaWQKdGl0bGUQdm9kX25hbWUQZGF0YS1zcmMOdm9kX3BpYxZ2b2RfcmVtYXJrcwRpZAZ2b2QOcGxheU1hcAh0YWJzEnBsYXlsaXN0cwh1cmxzGHZvZF9wbGF5X3VybA4vdmlkZW8vEGgxOmZpcnN0Ii52aWRlby1pbmZvLWF1eCBhEHZvZF90eXBlJC52aWRlby1pbmZvLW1haW4gYQU2ZXeNGd2ESVFHcpBu8l2oY/pRDP8ia86PBlKrThJ2b2RfYWN0b3IsLm1vZHVsZS1pbmZvIGltZzpmaXJzdAhhdHRySC5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOm50aC1jaGlsZCg1KTAudmlkZW8taW5mby1jb250ZW50IHNwYW4Wdm9kX2NvbnRlbnRSZGl2Lm1vZHVsZS1wbGF5ZXItdGFiIGRpdi5tb2R1bGUtdGFiLWl0ZW0aZGl2LnNvcnQtaXRlbQhlYWNoCGtleXMGJCQkGnZvZF9wbGF5X2Zyb20GdGFiAmkCYQ5wbGF5VXJsHGhhc093blByb3BlcnR5CHB1c2gMdXJsaXN0AiMIZmxhZwRqcwwvcGxheS8KcGFyc2Uwc2NyaXB0OmNvbnRhaW5zKHBsYXllcl8pIHZhciBwbGF5ZXJfYWFhYT0QdW5lc2NhcGUGZW5jDEJhc2U2NAhVdGY4BHdkCnF1aWNrCGRhdGEQL3NlYXJjaC0ULS0tLS0tLS0tLQIvRGRpdi5tb2R1bGUtaXRlbXMgPiBkaXYubW9kdWxlLWl0ZW0oZGl2Lm1vZHVsZS1pdGVtLW5vdGUGYWx0D6QDAaYDAQATqAMAAwCqAwABrAMAAq4DAA4ABgGgAQAAAAEUC14AqgMADKwDAQyuAwIMsAMACbIDAQm0AwIJtgMDCbgDBAm6AwUNvAMGAb4DBwHAAwgBwgMJAcQDCgHGAwsByAMMAcoDDQHMAw4BzgMPAagDEAEI6Dm+AF8JAL4BXwoAvgJfCwC+A18MAL4EXw0AvgVfDgC+Bl8PAL4HXxAAvghfEQC+CV8SAL4KXxMAKQToAAAA4gTpAAAAXwQAv18FAL9fBgCzXwcABOoAAABfCAAppAMBDQEAOwYhKxcXGAAIyAIOYgYBvAMCAQIGAgA7A9YDAAEA2AMAAQDaAwEAILoDCAyyAwQIYQAAOO4AAADPCwRBAAAATO8AAAAL0BHpBQ5lAABM8AAAAGUBAEzxAAAATPIAAADui8diAABB8wAAAC6kAwsIEiY1CEQrHBIOYgYBvgMBAQEEBQJQAugDAAEA6gMBACC2AwYIuAMHCLwDCQCyAwQItAMFCGEAAM9B9gAAABFmAAAOz0H3AAAAEWYBAA7dZQMA7YvHYgAAQvgAAAC9AL0BMyQBALRHEWYEAA44+QAAAEL6AAAABPsAAABlBACdJAEADgYupAMXBhI6OiZ2dgc9PABhACAAaAByAGUAZgA9ACIAKAAuACoAKQAiACAAdABhAHIAZwBlAHQAPQAuACoAPgC5cPtR249lUTwAB5ICAAIAggAAAAgGAAAABAf1////CwABPAABYQABIAABaAABcgABZQABZgABPQABIgALARwCAAAAAAAAAP///38BAAAAAwoMAQEiAAEgAAF0AAFhAAFyAAFnAAFlAAF0AAE9ABwCAAAAAAAAAP///38BAAAAAwoBPgABuXAB+1EB248BZVEBPAAMAAoOYgYBwAMBAgEiANYByVcD+AMAAQD6AwEAIPwDAQEgYQEAYQAACwT/AAAATAABAAAEAQEAAEwCAQAACwQDAQAATAABAAAEBAEAAEwCAQAACwQFAQAATAABAAAEBgEAAEwCAQAACwQHAQAATAABAAAECAEAAEwCAQAACwQJAQAATAABAAAECgEAAEwCAQAACwQLAQAATAABAAAEDAEAAEwCAQAAJgYAxwsLBB4AAABM2AAAAAQNAQAATDYAAAALBA4BAABMDwEAAL9MEAEAAAsEEQEAAEwPAQAABBEBAABMEAEAAAsEEgEAAEwPAQAABBIBAABMEAEAAAsEEwEAAEwPAQAABBMBAABMEAEAAAsEFAEAAEwPAQAABBQBAABMEAEAAAsEFQEAAEwPAQAABBUBAABMEAEAAAsEFgEAAEwPAQAABBYBAABMEAEAAAsEFwEAAEwPAQAABBcBAABMEAEAAAsEGAEAAEwPAQAABBgBAABMEAEAAAsEDQEAAEwPAQAABA0BAABMEAEAAAsEGQEAAEwPAQAABBkBAABMEAEAAAsEGgEAAEwPAQAABBoBAABMEAEAAAsEGwEAAEwPAQAABBsBAABMEAEAAAsEHAEAAEwPAQAABBwBAABMEAEAAAsEHQEAAEwPAQAABB0BAABMEAEAAAsEHgEAAEwPAQAABB4BAABMEAEAAAsEHwEAAEwPAQAABB8BAABMEAEAAAsEIAEAAEwPAQAABCABAABMEAEAAAsEIQEAAEwPAQAABCEBAABMEAEAAAsEIgEAAEwPAQAABCIBAABMEAEAAAsEIwEAAEwPAQAABCMBAABMEAEAAAsEJAEAAEwPAQAABCQBAABMEAEAAAsEJQEAAEwPAQAABCUBAABMEAEAAAsEJgEAAEwPAQAABCYBAABMEAEAAAsEJwEAAEwPAQAABCcBAABMEAEAAAsEKAEAAEwPAQAABCgBAABMEAEAAAsEKQEAAEwPAQAABCkBAABMEAEAAAsEKgEAAEwPAQAABCoBAABMEAEAACYcAExAAAAACwQrAQAATNgAAAAELAEAAEw2AAAACwQOAQAATA8BAAC/TBABAAALBC0BAABMDwEAAAQtAQAATBABAAALBC4BAABMDwEAAAQuAQAATBABAAALBC8BAABMDwEAAAQvAQAATBABAAALBDABAABMDwEAAAQwAQAATBABAAA
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DRAxo1NTVkeV9vcGVuLmpzLGFzc2V0czovL2pzL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4MQ3J5cHRvCmRheWpzDGppbmphMgZVcmkCXw5fMHg1YWI1Dl8weGMzNjESXzB4MzBiYjdkEl8weDQ0OGYwYxJfMHgxMjAxMTkSXzB4MzMxNjE4El8weDQxMTVmNhBfMHgyOTY4ZRJfMHgxNTQ2MzkSXzB4MjZkNzgwEl8weDUyYzJlMxJfMHg1OGU3MTkSXzB4MzNiYzIzEl8weDRkYmYxMBJfMHgyNmQyZDESXzB4M2U4MzNhEl8weDMzZGM2MRJfMHgzMzcxOGESXzB4MTk4MmNiEl8weDUwZTJlNRJfMHg0YWZkYTcSXzB4MjM3YWVkEl8weDVjYWNmMxJfMHgzOWQwMDgSXzB4NDVkMGE1El8weDIxNWYxOBJfMHgyMzExNmYSXzB4MWNkNzFmEl8weDFiZDA2ORJfMHgyOWM4NjcGMHg0BjB4MQ5pc0VtcHR5CGNvZGUIYXJlYQYkJCQKbW9kZWwISGdNMxJwbGF5X2Zyb20YIiwgIm1vZGVsIjoiJHYxL3NlcnZlci9nZXRfdGltZRQiLCJ5ZWFyIjoiDFNRamV0UTB3cTg2dzczQ21NT3BIY09ldzZIQ3V5dz0+IiwicGFnZVNpemUiOiIyMSIsInRpbWVzdGFtcCI6Ig4gQnVpbGQvKiIsICJ0eXBlIjoxLCJicmFuZCI6IhQiLCJhcmVhIjoiDHlaU0RLVQxkZXZpY2UmdjEvbW92aWVfYWRkci9wYXJzZQhrZXlzHnYxL21vdmllL2RldGFpbAxyYW5kb20MZmlsdGVyCmxhYmVsCnNsaWNlJHYxL21vdmllX2FkZHIvbGlzdBwiLCJwbGF5X3VybCI6IgYweDMSdHlwZV9uYW1lHHsiZGV2aWNlX2lkIjoiDmluZGV4T2YIY2VpbIIBQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0GMHgwDm1lbWJlcnMOaGVhZGVycxQiLCJzb3J0IjoiCHB1c2gMdmFSTWNFCGRhdGUIaW5pdAYweDJARGFsdmlrLzIuMS4wIChMaW51eDsgVTsgQW5kcm9pZCAeIiwidGltZXN0YW1wIjoiDGNoYXJBdAh0aXBzDHJlcGVhdApzaGlmdBZ0b1VwcGVyQ2FzZQZ1cmwWJnNpZ25hdHVyZT0YeyJrZXl3b3JkIjoiEnN0cmluZ2lmeQ5yZXBsYWNlDkhtYWNNRDUceyJmcm9tX2NvZGUiOiIMc29ydEJ5CGRhdGEKc3R5cGUodjEvbW92aWUvc2NyZWVuL2xpc3QUY2hhckNvZGVBdBh7InR5cGVfaWQiOiIOYnVpbGRJZAhhdG9iCjU1NWR5CnRvdGFsIFozdzFCTUtZS2dOYXc2WT0adjEvYXBwL2NvbmZpZxhtb3ZpZV9zY3JlZW4Uc3RhcnRzV2l0aCBlNmQ1ZGU1ZmNjNTFmNTNkCHRyaW0WYXBpX3NlcnZpY2UOQW5kcm9pZAhzb3J0CHNrZXkKcGFyc2UQcGxheV91cmxANjM1YTU4MGZjYjVkYzZlNjBjYWEzOWMzMWE3YmRlNDgIdW5peAhsaXN0FHVzZXJfYWdlbnQWdG9Mb3dlckNhc2UUIiwicGFnZSI6Ih57InB1cmUtbW9kZSI6MH0WIiwiY2xhc3MiOiIgdzR2Q3Q4S0R3b3pDbGc9PR52MS9tb3ZpZS9zZWFyY2gYZnJvbUNoYXJDb2RlDnJlbGVhc2UceyJ0aW1lc3RhbXAiOiJqcmV0dXJuIChmdW5jdGlvbigpIHt9LmNvbnN0cnVjdG9yKCJyZXR1cm4gdGhpcyIpKCApKTsSUlNBL1BLQ1MxHEhVQVdFSSBNYXRlIDQwDHhJVVlachh2b2RfcGxheV91cmwIeWVhcgh3NzFmCmJyYW5kB+5PDVktTg5jb25zb2xlDmNvbnRlbnQabmVlZF90b19wYXJzZQw/cGFjaz2EBy0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMDJGL2tQZzVBMk5YNHFaNUpTbnMKK2JqaFZNQ0M2SmJUaVRLcGJnTmdpWFUrS2tvcmc2RGo3NmdTNjhnQjhsbGhiVUtDWGpJZHlnbkhQcnhWSFdmegptemlzcTlQOWF3bVhCa0NrNzRTa2dseDJMS0hhL21Oejlpdmc2WXpRNXBRRlVFV1MwRGZvbUdCWFZ0cXZCbE9YCk1DUnhwNjlvV2FNc25mam5CViswSjd2SGJYelVJa3FCTGRYU05mTTlBZzVxZFJEckpDM0NxQjY1RUozQVJXVnoKWlRUY1hTZE1XOWkzcXpFWlBhd1BOUGU1eVBZYk1aSW9YTGNycXZFWm5SSzFvYWs2Ny9paGY3aXdQSnFkYys2OApaWUVtbWRxd3VuT3ZSZGpxODlmUU1WZWxtcWNSRDlSWWUwOHYreER4RzlDbzl6N2hjWEdUc1VxdU14a2gyOXVOCmF3SURBUUFCCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQ5keW5hbWljCmNvdmVyCDB4NzIIMHg0ZXphYmFjZGVmZ2hqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5El8weDM0Y2M5MhJfMHg1YWI1M2USXzB4YzM2MTc3El8weDIxYWU1MhJfMHgzOTljNTkSXzB4NWY3YjVmEl8weDE3MTAwYRJfMHgyZmM4NmMSXzB4NDRkOTYyEl8weDZiMGJkZRJfMHgxNjNhOTQUVXNlci1BZ2VudDphcHBsaWNhdGlvbi9wcnMuNTVBcHAudjIranNvbgxBY2NlcHQGMHhhCDB4M2ISVGltZXN0YW1wBjB4ZiBYLUNsaWVudC1TZXR0aW5nCDB4NDkEaWQIMHgzOQgweDFlCDB4MzIIMHgyZWAiLCAic3lzdGVtX3ZlcnNpb24iOjI0LCAic2RrX3ZlcnNpb24iOiIzLjAuOS4xIn0eWC1DbGllbnQtRGV2aWNlIFgtQ2xpZW50LVZlcnNpb24GcmVxCDB4NTUCewhhZXNYGkFFUy9DQkMvUEtDUzcgMmYxM2VlZjdkZmM2YzYxMxJfMHgzNjUxYmISXzB4N2U5MzRmEl8weDQ0YzBkYggweDY3AisCLwgweDVmAj0IMHg1ZRJfMHgxMTI4YmQSXzB4NDlkM2M1El8weDUxYzk1Mghyc2FYCDB4MTcIMHgyNAgweDY4BjB4OQgweDIzJGVuY29kZVVSSUNvbXBvbmVudAgweDYzEl8weDMxNzg3MxJfMHgxNzU4OTASXzB4YzFjNmMwEl8weGQzN2Q5YxJfMHgzNTNlMDESXzB4MjUyZWFmEl8weDRjMGY5NxJfMHgyNWNjMWISXzB4NTg0ZTMwEl8weGY4ZjZhMgYweDYIMHg2YwgweDM2CDB4MTEYdzc3RHZzTzl3cTlWEE5udzlBY09PCDB4NzUIMHg0Nwg5bVZBCDB4NTgIZTBoRQgweDI4CE4pbmwIMHgyNwgweDFkCDB4NGQIMHgyZggweDIwBmxvZwgweDNkCmxvY2FsCDB4MzEGMHg3CDB4MjkGMHhkBHVhCDB4NTkIMHgxNAQ7IAgweDM4CDB4NzACKQgweDJiCDB4NjZyaHR0cHM6Ly9tZGlzay5vc3MtY24taGFuZ3pob3UuYWxpeXVuY3MuY29tL2RvbWFpbl92Mi5qc29uCDB4MzMSXzB4NTRiM2EyCDB4NTMIMHg2MBJfMHgzMzM5MDkSXzB4NGZhNmFlEl8weDMwNTYzMhJfMHg1YjgyY2MSXzB4MjdlZDkxCDB4NTQIMHg3MQgweDNjCDB4MWEIMHgzNRJfMHgzYzNkOTASXzB4MzUyOTQ0CDB4MTYMd2luZG93El8weDgzMWNmZRJfMHgzNDJhYjYSXzB4MThhMzZmEl8weDU5M2I3ZhJfMHgxMTYwNDkSXzB4NWIzMzNlEl8weDFiYWE1ZAgweDVjCDB4NGMIMHgxMxJfMHg0MWQ3YWESXzB4NWQxZjM1El8weDZmNzQwMxJfMHg4MzU5ZjASXzB4YzU3NjdiEl8weDRmNmI2NxJfMHgxMzFmZTYSXzB4MjlkZWI2El8weDI4MTc2MBJfMHgzZDkxNDUSXzB4NDRkMzY2AiUEMDAIMHg2ZQgweDQ0JGRlY29kZVVSSUNvbXBvbmVudBJfMHg1ZTdhNDgSXzB4NWNkZDNhEl8weDM4MjAyNxJfMHg0YjYyODcSXzB4MzUwM2RlEl8weDNhMjU4MBJfMHgyMzAxYzISXzB4M2RiZGZkEl8weDNiN2VlMhJfMHg0MDRlZjQSXzB4MWI3YmU0El8weDk2MGVmMxJfMHhlY2EyNTISXzB4MTUwMmE1El8weDM3YzFmMhJfMHgzNjg0MzkSXzB4NGM5YjQ5El8weDU3NDdmOBJfMHgzMTQ4NzUIMHg3NggweDE1BCJ9CDB4NmIIMHg3Nw50eXBlX2lkCDB4NWEIMHgxYwZrZXkFdF79TgJuAnYFaFHokAgweDE5CDB4NTYIMHgyYwUwVzpTCDB4NjUFe3yLVwYweDUFkmOPXg5maWx0ZXJzBHt9El8weDNiZWYxZRJfMHgxYWJmNGISXzB4NTc5N2I4El8weDI4NTgxNxJfMHg1MTk1ZDISXzB4NWM5MzY2EF8weGVlYzkxEl8weGE1NDU3OBJfMHg0ZTY0N2EIMHg2ZggweDUxFGJ5X2RlZmF1bHQIMHgxMAgweDNhCDB4MzQIMHgzNwgweDZkBjB4Ygx2b2RfaWQQdm9kX25hbWUIMHgyNg52b2RfcGljCDB
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CYARg1OGRtX29wZW4uanMYLi9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwhsb2FkAl8MamluamEyBmtleQhIT1NUDnNpdGVLZXkQc2l0ZVR5cGUEVUEOcmVxdWVzdAhpbml0CGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxkZXRhaWwIcGxheRhiYXNlNjRFbmNvZGUYYmFzZTY0RGVjb2RlDHNlYXJjaAg1OGRtKmh0dHA6Ly93d3cudGluZzM4LmNvbZYCTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMQxyZXFVcmwOYWdlbnRTcAZyZXMGcmVxDG1ldGhvZBRVc2VyLUFnZW50DlJlZmVyZXIOaGVhZGVycw5jb250ZW50BmNmZwhza2V5CnN0eXBlDGZpbHRlcg5jbGFzc2VzEmZpbHRlck9iag50eXBlX2lkCbBlanXlZStvEnR5cGVfbmFtZQn9VqdOqFIrbwkna45/qFIrbwmoUitvNXVxXwh5ZWFyBXRe/U4FaFHokAJuAnYEYnkFkmOPXgUAZ7BlCHRpbWUFAGftcAhoaXRzBcSLBlIKc2NvcmUSc3RyaW5naWZ5DmZpbHRlcnMGdGlkBHBnDGV4dGVuZAhsaW5rCGh0bWwCJAppdGVtcwx2aWRlb3MOaGFzTW9yZQ5wZ0NvdW50Ii9zZWFyY2gucGhwP3BhZ2U9KCZzZWFyY2h0eXBlPTUmb3JkZXI9CiZ0aWQ9GCZhcmVhPSZ5ZWFyPUwmbGV0dGVyPSZ5dXlhbj0mc3RhdGU9Jm1vbmV5PSZ2ZXI9JmpxPSp1bC5mZWQtbGlzdC1pbmZvID4gbGkGbWFwRWQAaQB2AC4AZgBlAGQALQBwAGEAZwBlAC0AaQBuAGYAbwAgAD4AIABhADoAYwBvAG4AdABhAGkAbgBzACgAC051mCkAEHBhcnNlSW50CHBhZ2UScGFnZWNvdW50CmxpbWl0CnRvdGFsCGxpc3QIaXRlbQRpdAJrDnJlbWFya3MIZmluZA5hOmZpcnN0AmEqc3Bhbi5mZWQtbGlzdC1yZW1hcmtzCHRleHQIdHJpbQ5hdHRyaWJzCGhyZWYOcmVwbGFjZQQkMQx2b2RfaWQQY2hpbGRyZW4IZGF0YRB2b2RfbmFtZRpkYXRhLW9yaWdpbmFsDnZvZF9waWMWdm9kX3JlbWFya3MEaWQGdm9kDnBsYXlNYXAIdGFicxJwbGF5bGlzdHMIdXJscxh2b2RfcGxheV91cmwOL2Jvb2tzLwouaHRtbBBoMTpmaXJzdD4uc3R1aS1jb250ZW50X19kZXRhaWwgcDpmaXJzdCBhEHZvZF90eXBlSC5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOm50aC1jaGlsZCgzKQc7ThRvGv8Sdm9kX2FjdG9yPC5zdHVpLWNvbnRlbnRfX3RodW1iIGltZzpmaXJzdAhhdHRySC5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOm50aC1jaGlsZCg1KSZzcGFuLmRldGFpbC1jb250ZW50FnZvZF9jb250ZW50KHVsLm5hdi10YWJzID4gbGkgPiBhKnVsLm15dWktY29udGVudF9fbGlzdAhlYWNoCGtleXMGJCQkGnZvZF9wbGF5X2Zyb20GdGFiAmkKdGl0bGUOcGxheVVybBxoYXNPd25Qcm9wZXJ0eQhwdXNoDHVybGlzdAIjCGZsYWcML3BsYXkvCm1hdGNoCnBhcnNlBnVybAZlbmMMQmFzZTY0CFV0ZjgEd2QKcXVpY2sYJnNlYXJjaHdvcmQ9GCZzZWFyY2h0eXBlPQ+kAwGmAwEAE6gDAAQAqgMAAawDAAKuAwADsAMADgAGAaABAAAAARQLXACqAwAMrAMBDK4DAgywAwMMsgMACbQDAQm2AwIJuAMDCboDBA28AwUBvgMGAcADBwHCAwgBxAMJAcYDCgHIAwsBygMMAcwDDQHOAw4BqAMPAQjoOb4AXwkAvgFfCgC+Al8LAL4DXwwAvgRfDQC+BV8OAL4GXw8AvgdfEAC+CF8RAL4JXxIAvgpfEwApBOgAAABfBAAE6QAAAF8FAL9fBgCzXwcABOoAAABfCAAppAMBDAEAOwYrKxcYAAi+Ag5iBgG8AwIBAgYCADsD1gMAAQDYAwABANoDAQAgugMIDLQDBQhhAAA47gAAAM8LBEEAAABM7wAAAAvQEekFDmUAAEzwAAAAZQEA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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1COAR45MWRvdXR1X29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybghsb2FkAl8Ga2V5CEhPU1QOc2l0ZUtleRBzaXRlVHlwZRJNT0JJTEVfVUEOcmVxdWVzdAhpbml0CGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxkZXRhaWwIcGxheQxzZWFyY2gaZGVjb2RlVW5pY29kZQlWAFMA7XdnUi5odHRwczovL3d3dy45MWRvdXR1LmNvbZYCTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMQxyZXFVcmwOYWdlbnRTcAZyZXMGcmVxDG1ldGhvZBRVc2VyLUFnZW50DmhlYWRlcnMOY29udGVudAZjZmcIc2tleQpzdHlwZQxmaWx0ZXIOY2xhc3NlcxJmaWx0ZXJPYmoOdHlwZV9pZAXtd2dSEnR5cGVfbmFtZQh5ZWFyBXRe404FaFHokAJuAnYEYnkFkmOPXgX2ZfSVDmFkZHRpbWUFuk4UbAhoaXRzBcSLBlIIZ29sZBJzdHJpbmdpZnkOZmlsdGVycwR7fQZ0aWQEcGcMZXh0ZW5kCGxpbmsIaHRtbAIkCml0ZW1zDHZpZGVvcw5oYXNNb3JlDnBnQ291bnQ4L2luZGV4LnBocC9ob21lL3ZvZC90eXBlLWlkLRgtYXJlYS0teWVhci0eLWxldHRlci0tb3JkZXItFC1waWNtLTEtcC0kdWwudmlkZW8tbGlzdCA+IGxpBm1hcFNkAGkAdgAuAGEAagBhAHgALQBwAGEAZwBlACAAPgAgAHUAbAAgAD4AIABsAGkAIAA+ACAAYQA6AGMAbwBuAHQAYQBpAG4AcwAoAAtOAE51mCkAEHBhcnNlSW50CHBhZ2UScGFnZWNvdW50CmxpbWl0CnRvdGFsCGxpc3QIaXRlbQJhCHZwaWMOcmVtYXJrcwhmaW5kDmE6Zmlyc3QOYXR0cmlicxpkYXRhLW9yaWdpbmFsFHNwYW4uc25hbWUQY2hpbGRyZW4IZGF0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
Line truncated
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
import { Crypto, load, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = '1free';
|
||||||
|
let HOST = 'https://91d.top';//歪片星球.com
|
||||||
|
let url = '';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
const UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13E230 Safari/601.1';
|
||||||
|
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': agentSp || UA,
|
||||||
|
'Referer': HOST
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
let html = await request(HOST);
|
||||||
|
url = html.match(/<a href="(http.*www.*)" target=.*>/)[1]
|
||||||
|
console.debug('跳转地址 =====>' + url); // js_debug.log
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":1,"type_name":"电影"},{"type_id":2,"type_name":"追剧"},{"type_id":3,"type_name":"综艺"},{"type_id":4,"type_name":"动漫"}];
|
||||||
|
let filterObj = {
|
||||||
|
"1":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"1"},{"n":"纪录片","v":"20"},{"n":"动作片","v":"6"},{"n":"爱情片","v":"8"},{"n":"科幻片","v":"9"},{"n":"恐怖片","v":"10"},{"n":"剧情片","v":"11"},{"n":"战争片","v":"12"},{"n":"喜剧片","v":"7"}]},{"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":"lang","name":"语言","value":[{"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":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"国产剧","v":"13"},{"n":"欧美剧","v":"14"},{"n":"港台剧","v":"15"},{"n":"日韩剧","v":"16"},{"n":"泰剧","v":"21"}]},{"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":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"3":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"3"},{"n":"大陆综艺","v":"22"},{"n":"港台综艺","v":"25"},{"n":"日韩综艺","v":"24"},{"n":"欧美综艺","v":"23"}]},{"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":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"4":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"4"},{"n":"国产动漫","v":"26"},{"n":"日韩动漫","v":"28"},{"n":"欧美动漫","v":"27"},{"n":"港台动漫","v":"29"}]},{"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":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
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.lang || '') + '----' + pg + '---' + (extend.year || '') + '.html';//https://91free.live/vodshow/6-%E7%BE%8E%E5%9B%BD-hits--%E8%8B%B1%E8%AF%AD----2---2022.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.module-items a.module-poster-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item)[0];
|
||||||
|
const k = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('div.module-item-note')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/\/voddetail\/(.*?).html/g, '$1'),
|
||||||
|
vod_name: k.attribs.alt,
|
||||||
|
vod_pic: k.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('div#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 html = await request( url + '/voddetail/' + id + '.html');
|
||||||
|
const $ = load(html);
|
||||||
|
const vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('h1:first').text().trim(),
|
||||||
|
vod_type: $('.module-info-tag a').text(),
|
||||||
|
vod_actor: $('.module-info-item-content').text(),
|
||||||
|
vod_pic: $('.module-info img:first').attr('data-src'),
|
||||||
|
vod_remarks : $('.stui-content__detail p:nth-child(5)').text() || '',
|
||||||
|
vod_content: $('.module-info-introduction-content p').text().trim(),
|
||||||
|
};
|
||||||
|
let playMap = {};
|
||||||
|
const tabs = $('div.module-tab-items-box div.module-tab-item span');
|
||||||
|
const playlists = $('div.module-play-list-content');
|
||||||
|
_.each(tabs, (tab, i) => {
|
||||||
|
const from = $(tab).text();
|
||||||
|
let list = playlists[i];
|
||||||
|
list = $(list).find('a');
|
||||||
|
_.each(list, (it) => {
|
||||||
|
const title = $(it).text();
|
||||||
|
const playUrl = it.attribs.href.replace(/\/vodplay\/(.*?).html/g, '$1');
|
||||||
|
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 link = url + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=',''));
|
||||||
|
const playUrl = js.url;
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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 search(wd, quick, pg) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let data = await request(url + '/phsch/' + '/page/' + pg + '/wd/' + wd + '.html');//https://www.physkan.com/phsch/page/2/wd/%E6%88%91.html
|
||||||
|
const $ = load(data);
|
||||||
|
const items = $('div.module-items > div.module-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const k = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('div.module-item-note')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/\/v\/(.*?).html/g, '$1'),
|
||||||
|
vod_name: k.attribs.alt,
|
||||||
|
vod_pic: k.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('div#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,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CCARxrdXFpbXZfb3Blbi5qcyxhc3NldHM6Ly9qcy9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuCGxvYWQCXwZrZXkISE9TVA5zaXRlS2V5EHNpdGVUeXBlClBDX1VBDnJlcXVlc3QIaW5pdAhob21lDmhvbWVWb2QQY2F0ZWdvcnkMZGV0YWlsCHBsYXkMc2VhcmNoCXeRR1lNAFYALGh0dHBzOi8vd3d3Lmt1cWltdi5jb23eAU1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTUuMC4wLjAgU2FmYXJpLzUzNy4zNgxyZXFVcmwOcmVmZXJlcgZtdGgIZGF0YQRoZA5oZWFkZXJzBnJlcxRVc2VyLUFnZW50JGVuY29kZVVSSUNvbXBvbmVudAZyZXEMbWV0aG9kCHBvc3QIZm9ybRBwb3N0VHlwZQ5jb250ZW50BmNmZwhza2V5CnN0eXBlDGZpbHRlcg5jbGFzc2VzEmZpbHRlck9iag50eXBlX2lkCU5T7YvYmgVuEnR5cGVfbmFtZQnlZemXvnwJkAkna45/TQBWAAnYmgVusHM6VwlxX8aJTQBWAAkcWZdexomRmAlmjyFqxomRmAntcB6CxomRmAmOf3NZmVEfdwmOf3NZU2KfeBJzdHJpbmdpZnkGbWFwDmZpbHRlcnMGY2xzCGxhbmQKcmF0aW8IbGluawhodG1sAiQKaXRlbXMMdmlkZW9zHC9wbGF5LzlfMS5odG1sIGRpdi5tdl9saXN0ID4gbGkIbGlzdARpdAJhBmltZwxzaW5nZXIOcmVtYXJrcwhmaW5kDmE6Zmlyc3QSaW1nOmZpcnN0FGRpdi5zaW5nZXIIdGV4dAh0cmltFnNwYW4ubGVpXzAzDmF0dHJpYnMIaHJlZg5yZXBsYWNlBCQxDHZvZF9pZAp0aXRsZRB2b2RfbmFtZQZzcmMOdm9kX3BpYwU82KTfA1z/FnZvZF9yZW1hcmtzBnRpZARwZwxleHRlbmQOaGFzTW9yZQ5wZ0NvdW50DC9wbGF5LwouaHRtbD1kAGkAdgAuAGwAZQBpAF8AcABhAGcAZQAgAD4AIABhADoAYwBvAG4AdABh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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DSARZhYnVfb3Blbi5qcxguL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4MQ3J5cHRvCGxvYWQCXwxqaW5qYTIGa2V5CEhPU1QOc2l0ZUtleRBzaXRlVHlwZQRVQQ5yZXF1ZXN0CGluaXQIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFpbAhwbGF5DHNlYXJjaAZhYnUiaHR0cHM6Ly9hYnUyMi5jb23eAU1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMDUuMC4wLjAgU2FmYXJpLzUzNy4zNgxyZXFVcmwOYWdlbnRTcAZyZXMGcmVxDG1ldGhvZBRVc2VyLUFnZW50DlJlZmVyZXIOaGVhZGVycw5jb250ZW50BmNmZwhza2V5CnN0eXBlDGZpbHRlcg5jbGFzc2VzEmZpbHRlck9iag50eXBlX2lkBTV1cV8SdHlwZV9uYW1lBf2PZ1IF/H56ggWoUitvB6p+VV9HcgxjYXRlSWQFe3yLVwVoUeiQAm4CdgmoUjt1NXVxXweoUlxPR3IHnFVnUkdyBzFyxWBHcgfReXteR3IHZ1LFYEdyB6xgkXVHcgfKYJpgR3IHUGAWYEdyB69yan9HcgcYYolOR3IIYXJlYQUwVzpTCS1O/VYnWUaWCS1O/VaZmS9uCS1O/VbwU35uBY5//VYF6Zf9VgXlZSxnBdVs/VYF8YL9VgW3X/1WBfBs/VYFcFOmXgV2UdZOCHllYXIFdF79TgxsZXR0ZXIFV1vNawJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloEYnkFkmOPXgX2ZfSVCHRpbWUFuk4UbAhoaXRzBcSLBlIKc2NvcmUH/VanTmdSBy9u8FNnUgflZemXZ1IHJ2uOf2dSB3dtFllnUgd2UdZOZ1ISc3RyaW5naWZ5DmZpbHRlcnMGdGlkBHBnDGV4dGVuZAhsaW5rCGh0bWwCJAppdGVtcwx2aWRlb3MOaGFzTW9yZQ5wZ0NvdW50Ei92b2RzaG93LwItCGxhbmcGLS0tCi5odG1sKHVsLnN0dWktdm9kbGlzdCA+IGxpBm1hcEd1AGwALgBzAHQAdQBpAC0AcABhAGcAZQAgAD4AIABsAGkAIAA+ACAAYQA6AGMAbwBuAHQAYQBpAG4AcwAoAAtOAE51mCkAEHBhcnNlSW50CHBhZ2UScGFnZWNvdW50CmxpbWl0CnRvdGFsCGxpc3QIaXRlbQRpdA5yZW1hcmtzCGZpbmQOYTpmaXJzdDBzcGFuLnBpYy10ZXh0IHRleHQtcmlnaHQIdGV4dAh0cmltDmF0dHJpYnMIaHJlZg5yZXBsYWNlBCQxDHZvZF9pZAp0aXRsZRB2b2RfbmFtZRpkYXRhLW9yaWdpbmFsDnZvZF9waWMWdm9kX3JlbWFya3MEaWQGdm9kDnBsYXlNYXAIdGFicxJwbGF5bGlzdHMIdXJscxh2b2RfcGxheV91cmwWL3ZvZGRldGFpbC8QaDE6Zmlyc3Q+LnN0dWktY29udGVudF9fZGV0YWlsIHA6Zmlyc3QgYRB2b2RfdHlwZUguc3R1aS1jb250ZW50X19kZXRhaWwgcDpudGgtY2hpbGQoMykHO04Ubxr/EnZvZF9hY3Rvcjwuc3R1aS1jb250ZW50X190aHVtYiBpbWc6Zmlyc3QIYXR0ckguc3R1aS1jb250ZW50X19kZXRhaWwgcDpudGgtY2hpbGQoNSkOI2Rlc2MgcBZ2b2RfY29udGVudGJkaXYuY29sLWxnLXdpZGUtNzUgZGl2LnN0dWktcGFubmVsX19oZWFkIGgzLnRpdGxlMnVsLnN0dWktY29udGVudF9fcGxheWxpc3QIZWFjaAhrZXlzBiQkJBp2b2RfcGxheV9mcm9tBnRhYgJpEGNoaWxkcmVuCGRhdGECYQ5wbGF5VXJsHGhhc093blByb3BlcnR5CHB1c2gMdXJsaXN0AiMIZmxhZwRqcxIvdm9kcGxheS8KcGFyc2Uwc2NyaXB0OmNvbnRhaW5zKHBsYXllcl8pIHZhciBwbGF5ZXJfYWFhYT0GdXJsBHdkCnF1aWNrFi92b2RzZWFyY2gvFC0tLS0tLS0tLS02dWwuc3R1aS12b2RsaXN0X19tZWRpYSA+IGxpD6QDAaYDAQARqAMABACqAwABrAMAAq4DAAOwAwAOAAYBoAEAAAABEglSAKoDAAysAwEMrgMCDLADAwyyAwAJtAMBCbYDAgm4AwMJugMEDbwDBQG+AwYBwAMHAcID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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DUARZhZG1fb3Blbi5qcxguL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4MQ3J5cHRvCGxvYWQCXwZrZXkISE9TVA5zaXRlS2V5EHNpdGVUeXBlBFVBDnJlcXVlc3QIaW5pdAhob21lDmhvbWVWb2QQY2F0ZWdvcnkMZGV0YWlsCHBsYXkYYmFzZTY0RW5jb2RlGGJhc2U2NERlY29kZQxzZWFyY2gGYWRtPGh0dHBzOi8vYW5pbWUuZ2lyaWdpcmlsb3ZlLmNvbd4BTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwNS4wLjAuMCBTYWZhcmkvNTM3LjM2DHJlcVVybA5hZ2VudFNwBnJlcwZyZXEMbWV0aG9kFFVzZXItQWdlbnQOUmVmZXJlcg5oZWFkZXJzDmNvbnRlbnQGY2ZnCHNrZXkKc3R5cGUMZmlsdGVyDmNsYXNzZXMSZmlsdGVyT2JqDnR5cGVfaWQF5WUrbxJ0eXBlX25hbWUFjn8rbwdnUjpXSHIHH3e6Tmp1C0IARABvUvOXaI8LFG8xVRpPaFS5jwV7fItXBWhR6JACbgJ2BZxVZ1IFMXLFYAVQYBZgBahSXE8F0Xl7XgVnUsVgBRhiiU4FR1l7XgWSUWmWBaxgkXUFIWjtVgUOVKtbBe1wQIgF0I+oUgV+dghUBVlOc1kFOmcydQXlZTheCVSb1WwRXHNZBwJfFk5MdQcxcpZiMpcF85dQTgMMhAhhcmVhBTBXOlMFAE4IZwXbVghnBQNOCGcFQVMIZwh5ZWFyBXRe/U4IbGFuZwXtiwCKBeVl7YsF/VbtiwRieQWSY49eBQBnsGUIdGltZQUAZ+1wCGhpdHMFxIsGUgpzY29yZQUeZBF7BYVRMFcFL27wUwXlZemXBSdrjn8F8YLtiwU9gI5/BS1Oh2UFz354UQUMVCdgC6xgkXUuAMpgmmAFTGseggV+cL6WC7CLVV8uAPBsZ1IFU0+ygAXncBGBBeVlLGcF8Gz9VhIyMDA0LjIwMDMF8GztixJzdHJpbmdpZnkOZmlsdGVycwZ0aWQEcGcMZXh0ZW5kCGxpbmsIaHRtbAIkCml0ZW1zDHZpZGVvcw5oYXNNb3JlDnBnQ291bnQML3Nob3cvDGNhdGVJZAItCC0tLS0GLS0tAi9EZGl2LmJvcmRlci1ib3ggZGl2LnB1YmxpYy1saXN0LWRpdgZtYXA/ZABpAHYALgBwAGEAZwBlAC0AaQBuAGYAbwAgAD4AIABhADoAYwBvAG4AdABhAGkAbgBzACgAC04ATnWYKQAQcGFyc2VJbnQIcGFnZRJwYWdlY291bnQKbGltaXQKdG90YWwIbGlzdAhpdGVtBGl0AmsOcmVtYXJrcwhmaW5kDmE6Zmlyc3QSaW1nOmZpcnN0CHNwYW4IdGV4dAh0cmltDmF0dHJpYnMIaHJlZgx2b2RfaWQKdGl0bGUQdm9kX25hbWUQZGF0YS1zcmMOdm9kX3BpYxZ2b2RfcmVtYXJrcwRpZAZ2b2QOcGxheU1hcAh0YWJzEnBsYXlsaXN0cwh1cmxzGHZvZF9wbGF5X3VybBBoMzpmaXJzdCAuZGVwbG95bWVudCBzcGFuEHZvZF90eXBlHC5kZXRhaWwtaW5mbyBhEnZvZF9hY3RvciwudmlkZW8tY292ZXIgaW1nOmZpcnN0CGF0dHIGc3JjSC5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOm50aC1jaGlsZCg1KRojaGVpZ2h0X2xpbWl0FnZvZF9jb250ZW50JmRpdi5hbnRob2xvZ3ktdGFiIGEsdWwuYW50aG9sb2d5LWxpc3QtcGxheQhlYWNoCGtleXMGJCQkGnZvZF9wbGF5X2Zyb20GdGFiAmkCYQ5wbGF5VXJsEGNoaWxkcmVuCGRhdGEcaGFzT3duUHJvcGVydHkIcHVzaAx1cmxpc3QCIwhmbGFnBGpzCnBhcnNlMnNjcmlwdDpjb250YWlucyhwbGF5ZXJfYSkOcmVwbGFjZSB2YXIgcGxheWVyX2FhYWE9EHVuZXNjYXBlBnVybAZlbmMMQmFzZTY0CFV0ZjgEd2QKcXVpY2sQL3NlYXJjaC8ULS0tLS0tLS0tLQgtLS0vQmRpdi5yb3ctcmlnaHQgZGl2LnB1YmxpYy1saXN0LWJveChzcGFuLnB1YmxpYy1saXN0LXByYgZhbHQPpAMBpgMBABKoAwADAKoDAAGsAwACrgMADgAGAaABAAAAARMLWgCqAwAMrAMBDK4DAgywAwAJsgMBCbQDAgm2AwMJuAMEDboDBQG8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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{_}from"assets://js/lib/cat.js";import{findBestLCS}from"./lib/similarity.js";const http=async function(url,options={}){"POST"==options.method&&options.data&&(options.body=JSON.stringify(options.data),options.headers=Object.assign({"content-type":"application/json"},options.headers));const res=await req(url,options);return res.json=()=>res.content?JSON.parse(res.content):null,res.text=()=>res.content,res},__drives=(["get","post"].forEach(method=>{http[method]=function(url,options={}){return http(url,Object.assign(options,{method:method.toUpperCase()}))}}),{}),__subtitle_cache={};async function get_drives_path(tid){var index=tid.indexOf("/",1),name=tid.substring(1,index),tid=tid.substring(index);return{drives:await get_drives(name),path:tid}}async function get_drives(name){var{settings,api,server,headers}=__drives[name];return null==settings.v3&&(settings.v3=!1,server=(await http.get(server+"/api/public/settings",{headers:headers})).json().data,_.isArray(server)?(settings.title=server.find(x=>"title"==x.key)?.value,settings.v3=!1,settings.version=server.find(x=>"version"==x.key)?.value,settings.enableSearch="true"==server.find(x=>"enable search"==x.key)?.value):(settings.title=server.title,settings.v3=!0,settings.version=server.version,settings.enableSearch=!1),api.path=settings.v3?"/api/fs/list":"/api/public/path",api.file=settings.v3?"/api/fs/get":"/api/public/path",api.search=(settings.v3,"/api/public/search"),api.other=settings.v3?"/api/fs/other":null),__drives[name]}let siteKey="",siteType=0;function init(cfg){siteKey=cfg.skey,siteType=cfg.stype,cfg.ext.forEach(item=>__drives[item.name]={name:item.name,server:item.server.endsWith("/")?item.server.substring(0,item.server.length-1):item.server,startPage:item.startPage||"/",showAll:!0===item.showAll,params:item.params||{},headers:item.headers||{},_path_param:item.params?_.sortBy(Object.keys(item.params),function(x){return-x.length}):[],settings:{},api:{},getParams(path){var key=this._path_param.find(x=>path.startsWith(x));return Object.assign({},this.params[key],{path:path})},async getPath(path){path=(await http.post(this.server+this.api.path,{headers:this.headers,data:this.getParams(path)})).json();return this.settings.v3?path.data.content:path.data.files},async getFile(path){path=(await http.post(this.server+this.api.file,{headers:this.headers,data:this.getParams(path)})).json(),path=this.settings.v3?path.data:path.data.files[0];return this.settings.v3||(path.raw_url=path.url),path},async getOther(method,path){path=this.getParams(path),path.method=method,method=(await http.post(this.server+this.api.other,{headers:this.headers,data:path})).json();return method},isFolder(data){return 1==data.type},isVideo(data){return this.settings.v3?2==data.type:3==data.type},isSubtitle(data){return 1!=data.type&&[".srt",".ass",".scc",".stl",".ttml"].some(x=>data.name.endsWith(x))},getType(data){var isVideo=this.isVideo(data);return this.isFolder(data)?0:isVideo?10:1},getPic(data){return(this.settings.v3?data.thumb:data.thumbnail)||(this.isFolder(data)?"http://img1.3png.com/281e284a670865a71d91515866552b5f172b.png":"")},getSize(data){let sz=data.size||0;if(sz<=0)return"";let filesize="";return filesize=1099511627776<sz?(sz/=1099511627776,"TB"):1073741824<sz?(sz/=1073741824,"GB"):1048576<sz?(sz/=1048576,"MB"):(sz/=1024,"KB"),sz.toFixed(2)+filesize},getRemark(data){return""}})}async function dir(dir,pg){for(const k in __subtitle_cache)delete __subtitle_cache[k];if(pg=pg||1,"/"===dir||""===dir)return result=_.map(__drives,function(d){return{name:d.name,path:"/"+d.name+d.startPage,type:0,thumb:""}}),JSON.stringify({parent:"",page:pg,pagecount:pg,list:result});let{drives,path}=await get_drives_path(dir);const id=dir.endsWith("/")?dir:dir+"/";var result=await drives.getPath(path);let subtList=[],videos=[],allList=[];return result.forEach(item=>{drives.isSubtitle(item)&&subtList.push(item.name);var isVideo=drives.isVideo(item);(drives.showAll||drives.isFolder(item)||isVideo)&&(isVideo={name:item.name.replaceAll("$","_").replaceAll("#","_"),path:id+item.name+(drives.isFolder(item)?"/":""),thumb:drives.getPic(item),type:drives.getType(item),size:drives.getSize(item),remark:drives.getRemark(item)},drives.isVideo(item)&&videos.push(isVideo),allList.push(isVideo))}),0<subtList.length&&videos.forEach(item=>{var sbust=findBestLCS(item.name,subtList);sbust.bestMatch&&(__subtitle_cache[item.path]=[id+sbust.bestMatch.target])}),JSON.stringify({parent:id,page:pg,pagecount:pg,list:allList})}async function file(file){var{drives,path}=await get_drives_path(file),item=await drives.getFile(path),subs=[];if(__subtitle_cache[file])for(const sub of __subtitle_cache[file])try{var subP=await get_drives_path(sub),subItem=await drives.getFile(subP.path);subs.push(subItem.raw_url)}catch(error){}if("AliyundriveShare2Open"===item.provider&&drives.api.other){var urls=["原画",item.raw_url];try{for(const live of(await drives.getOther("video_preview",path)).data.video_preview_play_info.live_transcodLine truncated
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
import { Crypto, load, _, jinja2 } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'anfun';
|
||||||
|
let HOST = 'https://www.anfuns.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';
|
||||||
|
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': agentSp || 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) {
|
||||||
|
let classes = [{"type_id":1,"type_name":"新旧番剧"},{"type_id":2,"type_name":"蓝光无修"},{"type_id":3,"type_name":"动漫剧场"},{"type_id":4,"type_name":"欧美动漫"}];
|
||||||
|
let filterObj = {
|
||||||
|
"1":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"/by/time"},{"n":"最热","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"2":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"/by/time"},{"n":"最热","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"3":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"/by/time"},{"n":"最热","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"4":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]},{"key":"by","name":"排序","value":[{"n":"最新","v":"/by/time"},{"n":"最热","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
const link = HOST + '/show/' + tid + '-' + (extend.class || '') + '--' + (extend.year || '') + (extend.by || '/by/time') + '/page/' + pg + '.html';//https://www.anfuns.cc/show/1---2023/by/hits/page/2.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('ul.hl-vod-list > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.hl-lc-1')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/.*?\/anime\/(.*).html/g, '$1'),
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: it.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('ul.hl-page-wrap > li > a > span.hl-hidden-xs: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) {
|
||||||
|
var html = await request( HOST + '/anime/' + 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 = $('ul.hl-from-list > li > span');
|
||||||
|
var playlists = $('ul.hl-plays-list');
|
||||||
|
_.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.replace(/\/play\/(.*).html/g, '$1');
|
||||||
|
|
||||||
|
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) {
|
||||||
|
const link = HOST + '/play/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=',''));
|
||||||
|
const playurl = js.url;
|
||||||
|
const playUrl = unescape(base64Decode(playurl));
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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 search(wd, quick) {
|
||||||
|
let data = JSON.parse(await request(HOST + '/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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
isVideoFormat: function (url) {
|
||||||
|
return !0;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export { __jsEvalReturn };
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CfBB5hcHB0b3Y1X29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgxDcnlwdG8KZGF5anMMamluamEyBlVyaQJfDl8weDUyYzcOXzB4NDRmMxJfMHgxYWU0MzMSXzB4ODAyMmM0El8weDFhNWZiZhJfMHgzYWY2MmYSXzB4M2U2ZDU2El8weDNmNjNhOBJfMHgyMzczMTMSXzB4MTMxMjlhEl8weDRiZWI1MRJfMHgzMjc5YmYSXzB4MjcyZjZiEl8weDI3YjhhZhJfMHg0MGIyMzISXzB4MmU3YmQxEl8weDRmZmFmYRJfMHg4ODFkNzESXzB4MjI1ZmQ4El8weDI0NWM0YxJfMHgyYmJiMWQSXzB4MzFhYmI3El8weDMxMDlkNhJfMHgzZGZkODISXzB4NjAzYWYxEl8weDRiZWZjMhJfMHg2ZDM3MTMSXzB4M2QzM2JiEl8weDE4ZTM5ZRJfMHhhOWJmNWISXzB4MWM3OWMxEl8weDMzMjcwYxJfMHgzMDMyNTISXzB4NDI5NDI1El8weDQ2ZGE3MxJfMHg0Y2YyMzQSXzB4NWQyMjA4El8weDMxMmJiYxJfMHgxZWQ5OGIQdm9kX2FyZWF6YWJhY2RlZmdoamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSEpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OeQBJmFyZWE9e3tleHQuYXJlYX19Jmxhbmc9e3tleHQubGFuZ319JnllYXI9e3tleHQueWVhcn19Jm9yZGVyPXt7ZXh0Lm9yZGVyfGRlZmF1bHQoInRpbWUiKX19JnR5cGVfbmFtZT17e2V4dC5jbGFzc319GHZvZF9kaXJlY3RvcgpzdHlwZQh5ZWFyDnR5cGVfaWQQdm9kX25hbWUGMHgyDmluZGV4T2YUcmVwbGFjZUFsbBJ5ZWFyX2xpc3QKdGl0bGUQdm9kX3llYXIMaHVhd2VpDHhJVVlaciZEYXJ0LzIuMTkgKGRhcnQ6aW8pIFozdzFCTUtZS2dOYXc2WT0YcmFzUHVibGljS2V5OC9hcHB0b3Y1L3YxL3VzZXIvZ2V0VXNlckluZm8OZG9tYWlucxJ2b2RfY2xhc3MaZ2V0X2hvbWVfY2F0ZTQvYXBwdG92NS92MS92b2QvZ2V0Vm9kP2lkPVgmX19wbGF0Zm9ybT1hbmRyb2lkJl9fcGxhdGZvcm09YW5kcm9pZCZzaWduPQ5kZXZpY2UxFEVOQ1JZUFRJT04WdG9VcHBlckNhc2Uwd3E4Nnc3M0NtTU9wSGNPZXc2SEN1eXc9CHVuaXgSc3Vic3RyaW5nDnRpbWVvdXQGZXh0DGFwcHRvXxBwYWdlU2l6ZRJzdHJpbmdpZnkKb3JkZXIMdm9kX2lkCHBhZ2UGMHg0SiZwYWdlU2l6ZT0yMSZfX3BsYXRmb3JtPWFuZHJvaWQmc2lnbj0GcHdkZCZ0eXBlPSZfX3BsYXRmb3JtPWFuZHJvaWQmX19wbGF0Zm9ybT1hbmRyb2lkJnNpZ249CGUwaEUadm9kX3BsYXlfZnJvbQZ1cmwKdG9rZW4caGFzT3duUHJvcGVydHkOY29udGVudApsYWJlbCZyZXR1cm4gKGZ1bmN0aW9uKCkgGGZyb21DaGFyQ29kZQhhcmVhQERhbHZpay8yLjEuMCAoTGludXg7IFU7IEFuZHJvaWQgLC9hcHB0b3Y1L3YxL3VzZXIvbG9naW4Ga2V5DEJhc2U2NBZ2b2RfcmVtYXJrcwh3NzFmDmZvckVhY2gIZGF0YRZ0b0xvd2VyQ2FzZTI/X19wbGF0Zm9ybT1hbmRyb2lkJnNpZ249CnBhcnNlOC9hcHB0b3Y1L3YxL3NlYXJjaC9saXN0cz93ZD0KdG90YWwOcmVwbGFjZQptb2RlbAhjYXRlCHB1c2gUdXNlci1hZ2VudAhsYW5nEmFyZWFfbGlzdAhlYWNoCGtleXMKdXNlcjEOIEJ1aWxkLxJ2b2RfYWN0b3IWZ2V0X3BhcnNpbmcOcmVsZWFzZRZ2b2RfY29udGVudAhjZWlsCHRyaW0IOW1WQQ5hbmRyb2lkDnJlZmVyZXIIX19pYwxfX3RpbWUUc3RhcnRzV2l0aA4ibWQ1IjoiDnZvZF9waWMGZW5jDlJlZmVyZXIOdXNlcl9pZAYkJCQIVXRmOBJ0eXBlX25hbWUKc2hpZnQISGdNMwxjb25maWcSUlNBL1BLQ1MxDHJhbmRvbRpBRVMvQ0JDL1BLQ1M3EmZvcm0tZGF0YRBObnc5QWNPTwhmaW5kci9hcHB0b3Y1L3YxL2NvbmZpZy9nZXQ/cD1hbmRyb2lkJl9fcGxhdGZvcm09YW5kcm9pZCZzaWduPQxTUWpldFEYdzc3RHZzTzl3cTlWCHVybHMUVXNlci1BZ2VudAwmcGFnZT0Kc2xpY2UGIjoiDGNoYXJBdAZsb2cMdmFSTWNFDHlaU0RLVRRfX3BsYXRmb3JtDGh0dHBzOgYweDGCAUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89FGNoYXJDb2RlQXQGbWFwCnR5cGVzDmVuYWJsZWQIdHlwZRJsYW5nX2xpc3QIYXRvYgh0aW1lGnZvZF9wbGF5X2xpc3QOY29uc29sZQ5hcHB0b3Y1CDB4NmMIMHgzYwgweDVjEl8weDM3MmU2MhJfMHg1MmM3YzASXzB4NDRmMzk3El8weDU5Mjg1MggweDc5CDB4MjASXzB4MmZiYWU2El8weDRkYzk0NxJfMHg1MjlmZmISXzB4MTFmNmM0El8weDE2NzhmNgYweDgELCAIMHg1MggweDJlCG1kNVgCIgJ7AiwCfQhyc2FYCDB4M2EkZW5jb2RlVVJJQ29tcG9uZW50El8weDVlZWExZQQ6IBJfMHgyM2Y5YTESXzB4Mzc0MzkyBCI6CDB4NDgQXzB4ZTlmODASXzB4NDE2MDExEl8weDU4NDJiZBJfMHg0MDEyODMSXzB4NTk5ZjcyEl8weDQ1OGQzMxJfMHgyMjIyZjQIMHg4YgZyZXEIcG9zdAxtZXRob2QOaGVhZGVycwgweDNkEHBvc3RUeXBlCDB4MTEGMHgwCDB4NzYIYWVzWAYweGUSXzB4OWMxMzJiEl8weDRiZDc2MBJfMHgzM2I5ZjASXzB4NTljZTFmEl8weDJhMjgwOBJfMHg0MDlmNmUSXzB4NWE2ODk2El8weGIxODcyMRJfMHg0ZjM4OGMSXzB4MmJlMmYyEl8weDJkZDc1YRJfMHg3NTU3ODMSXzB4NGY1YjZjEl8weDVlNjdhZhJfMHgzMzFkMWMSXzB4MjhhMjdkEl8weGJmNTkzYRJfMHg0OTI4M2USXzB4MTIyOGM5CHNrZXkIMHg1ZggweDdkCDB4NzAIMHg3YwRpYwxhZXNLZXkKYWVzSVYIMHg2ZQgweDc4IHc0dkN0OEtEd296Q2xnPT0IMHg0MwgweDNlCDB4NmQGMHgzCDB4MjgIMHg2MwgweDg4CDB4NGYITilubAgweDg0BjB4YwgweDM4CDB4NWEIMHg3NQpsb2NhbAgweDFjDmlzRW1wdHkEaWQGMHhmBHVhBjB4NggweDI0BDsgCDB4MTUIMHgyMQ5idWlsZElkAikIMHgyZggweDdmDGRvbWFpbggweDU0CDB4MmIIMHg0ZAgweDJjAnAIMHgyOQgweDQwEl8weDIwMGU4MBJfMHgxMDIxZmQSXzB4NGM1ZjY2El8weDY5NmY5OAgweDM3El8weDQ1NDY2YRJfMHg1MzI4ZjESXzB4MTMzYzI4El8weDFiZTE0NhJfMHg1ZTdjN2IIMHg0YggweDZiCDB4NDEIMHg0YxJfMHgyNzQzN2ISXzB4MTE5NTMyEl8weDI2ZmNiZAgweDUwCDB4NTcSXzB4M2RmNTRkEl8weDVhMjQzN0B7fS5jb25zdHJ1Y3RvcigicmV0dXJuIHRoaXMiKSggKQQpOwx3aW5kb3cSXzB4MzFlMmMzEl8weDRiNmViMBJfMHg1NDk5NGESXzB4M2IyMmJmEl8weDRjYjMwMhJfMHg0YjVlZGYSXzB4MzMxMGZkCDB4NDkSXzB4NDQ3NmIwEl8weDNkYzQ3YhJfMHg2ZjBmMGISXzB4Mjk1OGNhEl8weDNkMjU3ORJfMHgxM2FhZjkSXzB4NWRhYjIxEl8weDIwODllMxJfMHgyMjZiODYSXzB4MWM3ZWM3El8weDNjZThkNQIlBDAwCDB4NTEIMHg0NyRkZWNvZGVVUklDb21wb25lbnQSXzB4MTg3YzE0El8weDRkN2M1ORJfMHg0MzI1MDgSXzB4MjQwNDgxEl8weDRiNmI3ZBJfMHg1MzBlMTASXzB4NDkwNzQxEl8weDM0ZjY5MhJfMHg0ODlmYmUSXzB4M2I4OTI0El8weDNhNTNkOBJfMHgxMTYxOGISXzB4OWZiZWJiEl8weDIxZTZmNxJfMHgyYTUwNzUIMHgyMwpsaXN0cwgweDcyCG1vbGQIMHgxOAgweDE2CDB4NjgMZXh0ZW5kCDB4MWUIMHg1MwV7fItXCDB4MTcIMHgxYgUwVzpTBjB4NQgweDU2Be2LAIoIMHgxYQgweDY3BXRe404IMHg2MAhpbml0BWhR6JACbgJ2CDB4MWQIMHg4MAWSY49eCDB4NTgIMHg4MwUAZ7BlBQBn7XAIaGl0cwV9WcSLCnNjb3JlCDB4NGEOZmlsdGVycxJfMHgxNGMzZDMIMHgzNggweDY1AnkSXzB4MmNjYzQ0BHt9El8weDEzNDM3NhJfMHg0MDUxZjQSXzB4MzhkOTE3El8weDIxNzg1YxJfMHgzYWJkZjYSXzB4MjAwN2I3El8weDFjY2RkMxJfMHg1ZDA1YTUSXzB4NTllNjcwEl8weDViZjMyNhBwYXJ
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DtAhphcHB2Ml9vcGVuLmpzLGFzc2V0czovL2pzL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4MQ3J5cHRvAl8Ga2V5CEhPU1QOc2l0ZUtleRBzaXRlVHlwZQRVQQpQQ19VQQ5yZXF1ZXN0CGluaXQIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFpbApwYXJzZQhZdU1pCnNldmVuCHB1cmwIcGxheQxzZWFyY2gYYmFzZTY0RW5jb2RlGGJhc2U2NERlY29kZRJqc29uUGFyc2UaZGVjb2RlVW5pY29kZQ5nZXRIb21lLnJlbW92ZUhUTUxUYWdzQW5kU3BhY2VzDkFwcFlzVjImRGFydC8yLjE0IChkYXJ0OmlvKd4BTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNi4wLjAuMCBTYWZhcmkvNTM3LjM2BbRmzpgQYmZ6eW0zdTgFGE8ojQ4xMDgwenlrBetfC3cOa3VhaWthbgXPkVBbDGx6bTN1OAVel+FRDGZmbTN1OAd3bRZZC3cSaGFpd2Fpa2FuBUlRH5AMZ3NtM3U4BQBnJ1kSenVpZGFtM3U4BWtREmIMYmptM3U4BSJ9PFwMc25tM3U4BWdTmZ8Md29sb25nBbBlam0MeGxtM3U4BTFqsYIMeWhtM3U4BSlZenoMdGttM3U4BYFnH5AManNtM3U4BeBlPVwMd2ptM3U4BeqVNXUMc2RtM3U4BetfZo8Ma2NtM3U4BdGRcJ4WamlueWluZ20zdTgF3pgfkAxmc20zdTgF2G1Hcgx0cG0zdTgFfJxQTgxsZW0zdTgFfnamXgxkYm0zdTgFanUEgw50b21tM3U4BVUAd5EMdWttM3U4BTFyZFcMaWttM3U4CaJ+W3JEjZBuEGhuenltM3U4BaJ+W3IMaG5tM3U4EjY4enlfbTN1OAV3kblwDGtkbTN1OAcXU5dlH2YOYmR4bTN1OAVHWU6GDHFobTN1OAVqjE5TDGhobTN1OAXrX61kDGtibTN1OE5odHRwOi8vNjEuMTQ3LjkzLjIxOjgwOTAvaW5kZXgucGhwP3VybD1IaHR0cDovL3BhbmRvd24ucHJvL2FwcC9ra2R5LnBocD91cmw9Smh0dHA6Ly9wYW5kb3duLnByby9hcHAvbHZkb3UucGhwP3VybD12aHR0cHM6Ly92aXAubW9zYW5na2VqaS5jb20vYXBpLz9rZXk9YWZjUTBDN3ZVaU5PeTR0bnZHJnVybD2CAWh0dHA6Ly9taS5meHdsLnZpcC9hcGkvP2tleT0yMjc0NTA2NmJjZGY1MTdiN2ZjM2I3OTJhODcxMzJmMiZ1cmw9PGh0dHBzOi8vbGFvOC54bi0tNjU0YS5jYy8/dXJsPYABaHR0cDovLzExMC40Mi4zLjcxOjUwMDAvYXBpL2ppZXhpL3hnP0tleT1JbGpzcktuajdUME0zOElFV2gmdXJsPZABaHR0cDovLzE3NS4xNzguMTgzLjE5Mjo4Ni9hcGkvP2tleT1iODMyMDk2ODYxODM5ZjU2MDY2YmY0YWU3YTBkN2JlMCZ1cmw9lgFodHRwczovL2FwaS54bi0ta2NyNTAwYTM5MWIuY2MvYXBpL2ppZXhpL2NvbW1vbj9LZXk9emNHWEVMOGpHbnREb2kzdlNSJnVybD00aHR0cDovLzExMS4yMzEuMi4xNzkvP3VybD0+aHR0cHM6Ly9qeGpzb24uY2YvanNvbi5waHA/dXJsPUBodHRwczovL2p4anNvbi5jZi9qc29uMS5waHA/dXJsPT1oAHQAdABwADoALwAvAHgAaAB3AHcALgBmAHUAbgA6ADYAMwAvAA9cc3wuAHAAaABwAD8AdQByAGwAPQCsAWh0dHA6Ly94bi0teWV0YTA5OXYub25saW5lOjYzL2hvbWUvYXBpP3R5cGU9eXMmdWlkPTI2OTk4MTIma2V5PWFjZGVvcHJ0RktPUFJVWFoyNCZ1cmw9lgFodHRwczovL2FwaS54bi0ta2NyNTAwYTM5MWIuY2MvYXBpL2ppZXhpL2NvbW1vbj9LZXk9azVFZDdkMnpNdTRGTFJod2p3JnVybD2GAWh0dHA6Ly8xMjMuOTkuMTkyLjI0MTo1MDAwL2FwaS9qaWV4aS94Zz9LZXk9TkxvTmpuNDhHQUYzVVFkc1AwJnVybD1caHR0cDovLzQyLjE1Ny4xMjguMTA5OjIzMjMvQ0gvenkvWXVtaS5waHA/dXJsPVhodHRwOi8vYm94LnJlYWxkb3UuY24vYXBpLz9hcGlfaWQ9NSZ2b2RfdXJsPVRodHRwOi8vanNvbi45NTMzNjUuY24venl6LzEvaW5kZXgucGhwP3VybD10aHR0cHM6Ly8xMTAuNDIuMi45ODoyMjIyMi9hcGkvP2tleT1SWVVQYlN0RFRnS2RLWExCTFQmdXJsPTZodHRwOi8vanNvbi5nOS5wdWI6NjYvP3VybD2KAWh0dHBzOi8vanNvbi5rZXk1MjEuY24vYXBpLz9rZXk9ZGYyN2Q5Y2E5ZWM5N2UyMmM0N2Y4NTY1YTUwYWE2ZjUmdXJsPU5odHRwOi8vMTc1LjE3OC4xODMuMTkyOjgzL3R4cXEucGhwP3VybD1saHR0cDovL2pzb24ueGc2ODgudG9wL2FwaS8/a2V5PUFwSEcyakdjaW1RV1BPajVtTyZ1cmw9aGh0dHBzOi8vanguMjU1dHYudGsvYXBpLz9rZXk9UzZrUUhhRTFnVkVZNUtBdjhMJnVybD1KaHR0cDovL2xmbG9uZy5seXl5dHYuY24vanNvbi5waHA/dXJsPXJodHRwOi8vMTE4Ljk5LjIuMjMwOjY2ODgvYXBpLz9rZXk9dkFoWjY3cXpSZFcyY3pRRW8yJnVybD1qaHR0cHM6Ly9oZC4zOTZwYXkuY24vYXBpLz9rZXk9V1lmb2M0N2NWdUE2eGVFRDRIJnVybD2IAWh0dHBzOi8veGp4LnR2Y21zLnRvcC9hcGkvP2tleT1hMDM1ZTc1MTEwMjg5ODIxZmVlYzUwMzNmZmRlMmJlYyZ1cmw9bGh0dHBzOi8veGluei54bi0tNjU0YS5jYy9qaWV4aXhpL2d1YW5qaWUvOTk0NC5waHA/dXJsPZgBaHR0cHM6Ly9sdC5qb253ZXIuY24vaG9tZS9hcGk/dHlwZT15cyZ1aWQ9NzYzMjg5JmtleT1hY2ZtbnBxeHlER0hJTFVWV1gmdXJsPU5odHRwOi8vanguZGFlbnlzLnZpcDoyNTg3L3RubWIucGhwP3VybD0McmVxVXJsDmFnZW50U3AGcmVzDmNvbnRlbnQGcmVxDG1ldGhvZBRVc2VyLUFnZW50DnJlZmVyZXIOaGVhZGVycw5jb25zb2xlCmRlYnVnGHJlcVVybCA9PT0+IBpjb250ZW50ID09PT4gBmNmZwhza2V5CnN0eXBlCHRlc3QGZXh0DnJlcGxhY2UOdjEudm9kLwx2MS52b2QrQQBwAHAAWQBzAFYAMgAgAGUAeAB0ACAAUX9AV7eD1lMgAD0APQA9AD4ADGZpbHRlchBqc29uZGF0YRJjbGFzc0RhdGEmQ0xBU1NfRklMVEVSX0NPTkZJRw5jbGFzc2VzEmZpbHRlck9iagwvdHlwZXMIZGF0YQhsaXN0Bm5hdghhcmVhBTBXOlMIZGVzYwVnUsVgEGRpcmVjdG9yBfxbFG8IbGFuZwXtiwCKCHN0YXIFDmYfZgpzdGF0ZQW2cgFgDnZlcnNpb24FSHIsZwh5ZWFyBXRe/U4Ic29ydAWSY49eDmZvckVhY2gaY2xhc3NlcyA9PT0+IBJzdHJpbmdpZnkeZmlsdGVyT2JqID09PT4gDmZpbHRlcnMSY2xhc3NJdGVtEHR5cGVOYW1lDHR5cGVJZAxyZXN1bHQSdmFsdWVMaXN0Dm9wdGlvbnMSdHlwZV9uYW1lDnR5cGVfaWQIcHVzaBZ0eXBlX2V4dGVuZA5pc0VtcHR5EGluY2x1ZGVzAiwGbWFwCGZpbmQFaFHokAJuAnYILnZvZARieQX2ZfSVCHRpbWUFuk4UbAhoaXRzBcSLBlIKc2NvcmUIaXRlbQh0cmltEnZpZGVvTGlzdAx2aWRlb3MEaXQUL3ZvZFBoYkFsbBB2b2RfbGlzdBZpbmRleF92aWRlbwp2bGlzdBI3azc4OS5jb20QdHVoYW8udHYCLw52b2RfcGljDHZvZF9pZBB2b2RfbmFtZRRzdGFydHNXaXRoCG1hYzoKaHR0cDoQanMyUHJveHkIaW1nLwhodHRwBC8vDGh0dHBzOhZ2b2RfcmVtYXJrcxJ2b2Rfc2NvcmUGdGlkBHBnAmsIa2V5cxxoYXNPd25Qcm9wZXJ0eQw/dHlwZT0kZW5jb2RlVVJJQ29tcG9uZW50DCZwYWdlPRR2aWRlbz90aWQ9CCZwZz0CJgI9EHBhcnNlSW50CHBhZ2UScGFnZWNvdW50CmxpbWl0CnRvdGFsBGlkCGh0bWwIbm9kZQZ2b2QQZXBpc29kZXMQcGxheV91cmwOcGxheU1hcAZhcnIEZXAScGFyc2VfYXBpEHBsYXlGcm9tEHBsYXlMaXN0Hi9kZXRhaWw/dm9kX2lkPSB2aWRlb19kZXRhaWw/aWQ9EHZvZF9pbmZvEnZvZF9jbGFzcxB2b2RfdHlwZRB2b2RfeWVhchB2b2RfYXJlYRJ2b2RfYWN0b3IYdm9kX2RpcmVjdG9yEnZvZF9ibHVyYhZ2b2RfY29udGVudBp2b2RfcGxheV9saXN0JnZvZF91cmxfd2l0aF9wbGF5ZXIWcGxheWVyX2luZm8Ic2hvdwhjb2RlDHBhcnNlMipwYXJzZV9hcGkgPT09PT09PT09PiAGdXJsFHJlcGxhY2V
Line truncated
|
||||||
+894
@@ -0,0 +1,894 @@
|
|||||||
|
import { Crypto, _ } from 'assets://js/lib/cat.js'
|
||||||
|
|
||||||
|
let host = '';
|
||||||
|
let header = {
|
||||||
|
'User-Agent': 'okhttp/3.12.11'
|
||||||
|
};
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = '';
|
||||||
|
let siteJx = '';
|
||||||
|
|
||||||
|
const urlPattern1 = /api\.php\/.*?\/vod/;
|
||||||
|
const urlPattern2 = /api\.php\/.+?\.vod/;
|
||||||
|
const parsePattern = /\/.+\\?.+=/;
|
||||||
|
const parsePattern1 = /.*(url|v|vid|php\?id)=/;
|
||||||
|
const parsePattern2 = /https?:\/\/[^\/]*/;
|
||||||
|
|
||||||
|
const htmlVideoKeyMatch = [
|
||||||
|
/player=new/,
|
||||||
|
/<div id="video"/,
|
||||||
|
/<div id="[^"]*?player"/,
|
||||||
|
/\/\/视频链接/,
|
||||||
|
/HlsJsPlayer\(/,
|
||||||
|
/<iframe[\s\S]*?src="[^"]+?"/,
|
||||||
|
/<video[\s\S]*?src="[^"]+?"/,
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
host = cfg.ext;
|
||||||
|
if (cfg.ext.hasOwnProperty('host')) { // for custom jx
|
||||||
|
host = cfg.ext.host;
|
||||||
|
siteJx = cfg.ext;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
async function request(reqUrl, ua, timeout = 60000) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: ua ? ua : {'User-Agent': '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'},
|
||||||
|
timeout: timeout,
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
try {
|
||||||
|
let url = getCateUrl(host);
|
||||||
|
|
||||||
|
let jsonArray = null;
|
||||||
|
|
||||||
|
if (url) {
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
if (obj.hasOwnProperty("list") && Array.isArray(obj.list)) {
|
||||||
|
jsonArray = obj.list;
|
||||||
|
} else if (
|
||||||
|
obj.hasOwnProperty("data") &&
|
||||||
|
obj.data.hasOwnProperty("list") &&
|
||||||
|
Array.isArray(obj.data.list)
|
||||||
|
) {
|
||||||
|
jsonArray = obj.data.list;
|
||||||
|
} else if (obj.hasOwnProperty("data") && Array.isArray(obj.data)) {
|
||||||
|
jsonArray = obj.data;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 通过filter列表读分类
|
||||||
|
const filterStr = getFilterTypes(url, null);
|
||||||
|
const classes = filterStr.split("\n")[0].split("+");
|
||||||
|
jsonArray = [];
|
||||||
|
for (let i = 1; i < classes.length; i++) {
|
||||||
|
const kv = classes[i].trim().split("=");
|
||||||
|
if (kv.length < 2) continue;
|
||||||
|
const newCls = {
|
||||||
|
type_name: kv[0].trim(),
|
||||||
|
type_id: kv[1].trim(),
|
||||||
|
};
|
||||||
|
jsonArray.push(newCls);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = { class: [] };
|
||||||
|
if (jsonArray != null) {
|
||||||
|
for (let i = 0; i < jsonArray.length; i++) {
|
||||||
|
const jObj = jsonArray[i];
|
||||||
|
const typeName = jObj.type_name;
|
||||||
|
if (isBan(typeName)) continue;
|
||||||
|
const typeId = jObj.type_id;
|
||||||
|
const newCls = {
|
||||||
|
type_id: typeId,
|
||||||
|
type_name: typeName,
|
||||||
|
};
|
||||||
|
const typeExtend = jObj.type_extend;
|
||||||
|
if (filter) {
|
||||||
|
const filterStr = getFilterTypes(url, typeExtend);
|
||||||
|
|
||||||
|
const filters = filterStr.split("\n");
|
||||||
|
const filterArr = [];
|
||||||
|
for (let k = (url) ? 1 : 0; k < filters.length; k++) {
|
||||||
|
const l = filters[k].trim();
|
||||||
|
if (!l) continue;
|
||||||
|
const oneLine = l.split("+");
|
||||||
|
|
||||||
|
let type = oneLine[0].trim();
|
||||||
|
let typeN = type;
|
||||||
|
if (type.includes("筛选")) {
|
||||||
|
type = type.replace(/筛选/g, "");
|
||||||
|
if (type === "class") typeN = "类型";
|
||||||
|
else if (type === "area") typeN = "地区";
|
||||||
|
else if (type === "lang") typeN = "语言";
|
||||||
|
else if (type === "year") typeN = "年份";
|
||||||
|
}
|
||||||
|
const jOne = {
|
||||||
|
key: type,
|
||||||
|
name: typeN,
|
||||||
|
value: [],
|
||||||
|
};
|
||||||
|
for (let j = 1; j < oneLine.length; j++) {
|
||||||
|
const kv = oneLine[j].trim();
|
||||||
|
const sp = kv.indexOf("=");
|
||||||
|
|
||||||
|
if (sp === -1) {
|
||||||
|
if (isBan(kv)) continue;
|
||||||
|
jOne.value.push({ n: kv, v: kv });
|
||||||
|
} else {
|
||||||
|
const n = kv.substring(0, sp);
|
||||||
|
if (isBan(n)) continue;
|
||||||
|
jOne.value.push({
|
||||||
|
n: n.trim(),
|
||||||
|
v: kv.substring(sp + 1).trim(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
filterArr.push(jOne);
|
||||||
|
}
|
||||||
|
if (!result.hasOwnProperty("filters")) {
|
||||||
|
result.filters = {};
|
||||||
|
}
|
||||||
|
result.filters[typeId] = filterArr;
|
||||||
|
}
|
||||||
|
result.class.push(newCls);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
try {
|
||||||
|
const apiUrl = host;
|
||||||
|
let url = getRecommendUrl(apiUrl);
|
||||||
|
let isTV = false;
|
||||||
|
|
||||||
|
if (!url) {
|
||||||
|
url = getCateFilterUrlPrefix(apiUrl) + "movie&page=1&area=&type=&start=";
|
||||||
|
isTV = true;
|
||||||
|
}
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
const videos = [];
|
||||||
|
if (isTV) {
|
||||||
|
const jsonArray = obj.data;
|
||||||
|
for (let i = 0; i < jsonArray.length; i++) {
|
||||||
|
const vObj = jsonArray[i];
|
||||||
|
const v = {
|
||||||
|
vod_id: vObj.nextlink,
|
||||||
|
vod_name: vObj.title,
|
||||||
|
vod_pic: vObj.pic,
|
||||||
|
vod_remarks: vObj.state,
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const arrays = [];
|
||||||
|
findJsonArray(obj, "vlist", arrays);
|
||||||
|
if (arrays.length === 0) {
|
||||||
|
findJsonArray(obj, "vod_list", arrays);
|
||||||
|
}
|
||||||
|
const ids = [];
|
||||||
|
for (const jsonArray of arrays) {
|
||||||
|
for (let i = 0; i < jsonArray.length; i++) {
|
||||||
|
const vObj = jsonArray[i];
|
||||||
|
const vid = vObj.vod_id;
|
||||||
|
if (ids.includes(vid)) continue;
|
||||||
|
ids.push(vid);
|
||||||
|
const v = {
|
||||||
|
vod_id: vid,
|
||||||
|
vod_name: vObj.vod_name,
|
||||||
|
vod_pic: vObj.vod_pic,
|
||||||
|
vod_remarks: vObj.vod_remarks,
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = {
|
||||||
|
list: videos,
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
try {
|
||||||
|
const apiUrl = host;
|
||||||
|
|
||||||
|
let url = getCateFilterUrlPrefix(apiUrl) + tid + getCateFilterUrlSuffix(apiUrl);
|
||||||
|
url = url.replace(/#PN#/g, pg);
|
||||||
|
url = url.replace(/筛选class/g, extend?.class ?? "");
|
||||||
|
url = url.replace(/筛选area/g, extend?.area ?? "");
|
||||||
|
url = url.replace(/筛选lang/g, extend?.lang ?? "");
|
||||||
|
url = url.replace(/筛选year/g, extend?.year ?? "");
|
||||||
|
url = url.replace(/排序/g, extend?.排序 ?? "");
|
||||||
|
|
||||||
|
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
|
||||||
|
let totalPg = Infinity;
|
||||||
|
try {
|
||||||
|
if (obj.totalpage !== undefined && typeof obj.totalpage === "number") {
|
||||||
|
totalPg = obj.totalpage;
|
||||||
|
} else if (
|
||||||
|
obj.pagecount !== undefined &&
|
||||||
|
typeof obj.pagecount === "number"
|
||||||
|
) {
|
||||||
|
totalPg = obj.pagecount;
|
||||||
|
} else if (
|
||||||
|
obj.data !== undefined &&
|
||||||
|
typeof obj.data === "object" &&
|
||||||
|
obj.data.total !== undefined &&
|
||||||
|
typeof obj.data.total === "number" &&
|
||||||
|
obj.data.limit !== undefined &&
|
||||||
|
typeof obj.data.limit === "number"
|
||||||
|
) {
|
||||||
|
const limit = obj.data.limit;
|
||||||
|
const total = obj.data.total;
|
||||||
|
totalPg = total % limit === 0 ? total / limit : Math.floor(total / limit) + 1;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const jsonArray =
|
||||||
|
obj.list !== undefined
|
||||||
|
? obj.list
|
||||||
|
: obj.data !== undefined && obj.data.list !== undefined
|
||||||
|
? obj.data.list
|
||||||
|
: obj.data;
|
||||||
|
const videos = [];
|
||||||
|
|
||||||
|
if (jsonArray !== undefined) {
|
||||||
|
for (let i = 0; i < jsonArray.length; i++) {
|
||||||
|
const vObj = jsonArray[i];
|
||||||
|
const v = {
|
||||||
|
vod_id: vObj.vod_id !== undefined ? vObj.vod_id : vObj.nextlink,
|
||||||
|
vod_name: vObj.vod_name !== undefined ? vObj.vod_name : vObj.title,
|
||||||
|
vod_pic: vObj.vod_pic !== undefined ? vObj.vod_pic : vObj.pic,
|
||||||
|
vod_remarks: vObj.vod_remarks !== undefined ? vObj.vod_remarks : vObj.state,
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = {
|
||||||
|
page: pg,
|
||||||
|
pagecount: totalPg,
|
||||||
|
limit: 90,
|
||||||
|
total: Infinity,
|
||||||
|
list: videos,
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {
|
||||||
|
SpiderDebug.log(e);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(ids) {
|
||||||
|
try {
|
||||||
|
const apiUrl = host;
|
||||||
|
const url = getPlayUrlPrefix(apiUrl) + ids;
|
||||||
|
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
const result = {
|
||||||
|
list: [],
|
||||||
|
};
|
||||||
|
const vod = {};
|
||||||
|
genPlayList(apiUrl, obj, json, vod, ids);
|
||||||
|
result.list.push(vod);
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
const parseUrlMap = new Map();
|
||||||
|
|
||||||
|
function genPlayList(URL, object, json, vod, vid) {
|
||||||
|
const playUrls = [];
|
||||||
|
const playFlags = [];
|
||||||
|
|
||||||
|
if (URL.includes("lfytyl.com")) {
|
||||||
|
const data = object.data;
|
||||||
|
vod.vod_id = data.vod_id || vid;
|
||||||
|
vod.vod_name = data.vod_name;
|
||||||
|
vod.vod_pic = data.vod_pic;
|
||||||
|
vod.type_name = data.vod_class || "";
|
||||||
|
vod.vod_year = data.vod_year || "";
|
||||||
|
vod.vod_area = data.vod_area || "";
|
||||||
|
vod.vod_remarks = data.vod_remarks || "";
|
||||||
|
vod.vod_actor = data.vod_actor || "";
|
||||||
|
vod.vod_director = data.vod_director || "";
|
||||||
|
vod.vod_content = data.vod_content || "";
|
||||||
|
|
||||||
|
vod.vod_play_from = data.vod_play_from;
|
||||||
|
vod.vod_play_url = data.vod_play_url;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (URL.includes("api.php/app")) {
|
||||||
|
const data = object.data;
|
||||||
|
vod.vod_id = data.vod_id || vid;
|
||||||
|
vod.vod_name = data.vod_name;
|
||||||
|
vod.vod_pic = data.vod_pic;
|
||||||
|
vod.type_name = data.vod_class || "";
|
||||||
|
vod.vod_year = data.vod_year || "";
|
||||||
|
vod.vod_area = data.vod_area || "";
|
||||||
|
vod.vod_remarks = data.vod_remarks || "";
|
||||||
|
vod.vod_actor = data.vod_actor || "";
|
||||||
|
vod.vod_director = data.vod_director || "";
|
||||||
|
vod.vod_content = data.vod_content || "";
|
||||||
|
|
||||||
|
const vodUrlWithPlayer = data.vod_url_with_player;
|
||||||
|
for (let i = 0; i < vodUrlWithPlayer.length; i++) {
|
||||||
|
const from = vodUrlWithPlayer[i];
|
||||||
|
let flag = from.code.trim();
|
||||||
|
if (flag === "") flag = from.name.trim();
|
||||||
|
playFlags.push(flag);
|
||||||
|
playUrls.push(from.url);
|
||||||
|
|
||||||
|
let purl = from.parse_api;
|
||||||
|
const parseUrls = parseUrlMap.get(flag) || [];
|
||||||
|
if (purl && !parseUrls.includes(purl)) {
|
||||||
|
parseUrls.push(purl);
|
||||||
|
}
|
||||||
|
parseUrlMap.set(flag, parseUrls);
|
||||||
|
|
||||||
|
}
|
||||||
|
} else if (URL.includes("xgapp")) {
|
||||||
|
const data = object.data.vod_info;
|
||||||
|
vod.vod_id = data.vod_id || vid;
|
||||||
|
vod.vod_name = data.vod_name;
|
||||||
|
vod.vod_pic = data.vod_pic;
|
||||||
|
vod.type_name = data.vod_class || "";
|
||||||
|
vod.vod_year = data.vod_year || "";
|
||||||
|
vod.vod_area = data.vod_area || "";
|
||||||
|
vod.vod_remarks = data.vod_remarks || "";
|
||||||
|
vod.vod_actor = data.vod_actor || "";
|
||||||
|
vod.vod_director = data.vod_director || "";
|
||||||
|
vod.vod_content = data.vod_content || "";
|
||||||
|
|
||||||
|
const vodUrlWithPlayer = data.vod_url_with_player;
|
||||||
|
for (let i = 0; i < vodUrlWithPlayer.length; i++) {
|
||||||
|
const from = vodUrlWithPlayer[i];
|
||||||
|
let flag = from.code.trim();
|
||||||
|
if (flag === "") flag = from.name.trim();
|
||||||
|
playFlags.push(flag);
|
||||||
|
playUrls.push(from.url);
|
||||||
|
|
||||||
|
const purl = from.parse_api.trim();
|
||||||
|
const parseUrls = parseUrlMap.get(flag) || [];
|
||||||
|
if (purl && !parseUrls.includes(purl)) {
|
||||||
|
parseUrls.push(purl);
|
||||||
|
}
|
||||||
|
parseUrlMap.set(flag, parseUrls);
|
||||||
|
}
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
const data = object.data;
|
||||||
|
vod.vod_id = data.vod_id || vid;
|
||||||
|
vod.vod_name = data.vod_name;
|
||||||
|
vod.vod_pic = data.vod_pic;
|
||||||
|
vod.type_name = data.vod_class || "";
|
||||||
|
vod.vod_year = data.vod_year || "";
|
||||||
|
vod.vod_area = data.vod_area || "";
|
||||||
|
vod.vod_remarks = data.vod_remarks || "";
|
||||||
|
vod.vod_actor = data.vod_actor || "";
|
||||||
|
vod.vod_director = data.vod_director || "";
|
||||||
|
vod.vod_content = data.vod_content || "";
|
||||||
|
|
||||||
|
const vodUrlWithPlayer = data.vod_play_list;
|
||||||
|
for (let i = 0; i < vodUrlWithPlayer.length; i++) {
|
||||||
|
const from = vodUrlWithPlayer[i];
|
||||||
|
let flag = from.player_info.from.trim();
|
||||||
|
if (flag === "") flag = from.player_info.show.trim();
|
||||||
|
playFlags.push(flag);
|
||||||
|
playUrls.push(from.url);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const parses = [];
|
||||||
|
const parse1 = from.player_info.parse.split(",");
|
||||||
|
const parse2 = from.player_info.parse2.split(",");
|
||||||
|
parses.push(...parse1, ...parse2);
|
||||||
|
const parseUrls = parseUrlMap.get(flag) || [];
|
||||||
|
for (const purl of parses) {
|
||||||
|
if (purl.includes("http")) {
|
||||||
|
const match = purl.match(parsePattern1);
|
||||||
|
if (match) {
|
||||||
|
parseUrls.push(match[0]);
|
||||||
|
}
|
||||||
|
} else if (purl.includes("//")) {
|
||||||
|
const match = purl.match(parsePattern1);
|
||||||
|
if (match) {
|
||||||
|
parseUrls.push("http:" + match[0]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const urlMatch = URL.match(parsePattern2);
|
||||||
|
if (urlMatch) {
|
||||||
|
const match = URL.match(parsePattern1);
|
||||||
|
if (match) {
|
||||||
|
parseUrls.push(urlMatch[0] + match[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (purl.includes("..")) purl = purl.replace(/\.\./g, ".").trim();
|
||||||
|
|
||||||
|
if (purl && !parseUrls.includes(purl)) {
|
||||||
|
parseUrls.push(purl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parseUrlMap.set(flag, parseUrls);
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (URLPattern1.matcher(URL).find()) {
|
||||||
|
// Same implementation as the previous cases
|
||||||
|
}
|
||||||
|
|
||||||
|
vod.vod_play_from = playFlags.join("$$$");
|
||||||
|
vod.vod_play_url = playUrls.join("$$$");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function play(flag, id, vipFlags) {
|
||||||
|
try {
|
||||||
|
// let parseUrls = parseUrlMap.get(flag);
|
||||||
|
let parseUrls = siteJx[flag]; // custom sitejx
|
||||||
|
if (!parseUrls) {
|
||||||
|
if (siteJx.hasOwnProperty('*')) { // all jx
|
||||||
|
parseUrls = siteJx['*'];
|
||||||
|
} else {
|
||||||
|
parseUrls = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parseUrls.length > 0) {
|
||||||
|
const result = await getFinalVideo(flag, parseUrls, id);
|
||||||
|
if (result !== null) {
|
||||||
|
return JSON.stringify(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isVideo(id)) {
|
||||||
|
const result = {
|
||||||
|
parse: 0,
|
||||||
|
playUrl: "",
|
||||||
|
url: id
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} else {
|
||||||
|
const result = {
|
||||||
|
parse: 1,
|
||||||
|
jx: "1",
|
||||||
|
url: id
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// Handle any error here
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(key, quick) {
|
||||||
|
try {
|
||||||
|
const apiUrl = host;
|
||||||
|
const url = getSearchUrl(apiUrl, encodeURIComponent(key));
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
let jsonArray = null;
|
||||||
|
const videos = [];
|
||||||
|
|
||||||
|
if (obj.list instanceof Array) {
|
||||||
|
jsonArray = obj.list;
|
||||||
|
} else if (obj.data instanceof Object && obj.data.list instanceof Array) {
|
||||||
|
jsonArray = obj.data.list;
|
||||||
|
} else if (obj.data instanceof Array) {
|
||||||
|
jsonArray = obj.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jsonArray !== null) {
|
||||||
|
for (const vObj of jsonArray) {
|
||||||
|
if (vObj.vod_id) {
|
||||||
|
const v = {
|
||||||
|
vod_id: vObj.vod_id,
|
||||||
|
vod_name: vObj.vod_name,
|
||||||
|
vod_pic: vObj.vod_pic,
|
||||||
|
vod_remarks: vObj.vod_remarks
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
} else {
|
||||||
|
const v = {
|
||||||
|
vod_id: vObj.nextlink,
|
||||||
|
vod_name: vObj.title,
|
||||||
|
vod_pic: vObj.pic,
|
||||||
|
vod_remarks: vObj.state
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = { list: videos };
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async function getFinalVideo(flag, parseUrls, url) {
|
||||||
|
let htmlPlayUrl = "";
|
||||||
|
for (const parseUrl of parseUrls) {
|
||||||
|
if (parseUrl === "" || parseUrl === "null") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const playUrl = parseUrl + url;
|
||||||
|
const content = await request(playUrl, null, 10000); // 10秒请求,能更好过滤webjx
|
||||||
|
let tryJson = null;
|
||||||
|
try {
|
||||||
|
tryJson = jsonParse(url, content);
|
||||||
|
} catch (error) { }
|
||||||
|
|
||||||
|
if (tryJson !== null && tryJson.hasOwnProperty("url") && tryJson.hasOwnProperty("header")) {
|
||||||
|
tryJson.header = JSON.stringify(tryJson.header);
|
||||||
|
return tryJson;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (content.includes("<html")) {
|
||||||
|
let sniffer = false;
|
||||||
|
for (const p of htmlVideoKeyMatch) {
|
||||||
|
if (p.test(content)) {
|
||||||
|
sniffer = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sniffer) {
|
||||||
|
htmlPlayUrl = parseUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (htmlPlayUrl !== "") { // 不支持sniffer
|
||||||
|
const result = {
|
||||||
|
parse: 0,
|
||||||
|
playUrl: "",
|
||||||
|
url: url
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function jsonParse(input, json) {
|
||||||
|
try {
|
||||||
|
// 处理解析接口返回的报文,如果返回的报文中包含header信息,就加到返回值中
|
||||||
|
let jsonPlayData = JSON.parse(json);
|
||||||
|
// 处理293的解析结果url在data字段的解析
|
||||||
|
if (jsonPlayData.hasOwnProperty("data") && typeof jsonPlayData.data === "object" && !jsonPlayData.hasOwnProperty("url")) {
|
||||||
|
jsonPlayData = jsonPlayData.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
let url = jsonPlayData.url;
|
||||||
|
|
||||||
|
if (url.startsWith("//")) {
|
||||||
|
url = "https:" + url;
|
||||||
|
}
|
||||||
|
if (!url.trim().startsWith("http")) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (url === input) {
|
||||||
|
if (isVip(url) || !isVideoFormat(url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isBlackVodUrl(input, url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
let headers = {};
|
||||||
|
if (jsonPlayData.hasOwnProperty("header")) {
|
||||||
|
headers = jsonPlayData.header;
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("Header")) {
|
||||||
|
headers = jsonPlayData.Header;
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("headers")) {
|
||||||
|
headers = jsonPlayData.headers;
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("Headers")) {
|
||||||
|
headers = jsonPlayData.Headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
let ua = "";
|
||||||
|
if (jsonPlayData.hasOwnProperty("user-agent")) {
|
||||||
|
ua = jsonPlayData["user-agent"];
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("User-Agent")) {
|
||||||
|
ua = jsonPlayData["User-Agent"];
|
||||||
|
}
|
||||||
|
if (ua.trim().length > 0) {
|
||||||
|
headers["User-Agent"] = " " + ua;
|
||||||
|
}
|
||||||
|
|
||||||
|
let referer = "";
|
||||||
|
if (jsonPlayData.hasOwnProperty("referer")) {
|
||||||
|
referer = jsonPlayData.referer;
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("Referer")) {
|
||||||
|
referer = jsonPlayData.Referer;
|
||||||
|
}
|
||||||
|
if (referer.trim().length > 0) {
|
||||||
|
headers["Referer"] = " " + referer;
|
||||||
|
}
|
||||||
|
|
||||||
|
headers = fixJsonVodHeader(headers, input, url);
|
||||||
|
|
||||||
|
const taskResult = {
|
||||||
|
header: headers,
|
||||||
|
url: url,
|
||||||
|
parse: "0"
|
||||||
|
};
|
||||||
|
|
||||||
|
return taskResult;
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isVip(url) {
|
||||||
|
try {
|
||||||
|
let isVip = false;
|
||||||
|
const host = new URL(url).hostname;
|
||||||
|
const vipWebsites = ["iqiyi.com", "v.qq.com", "youku.com", "le.com", "tudou.com", "mgtv.com", "sohu.com", "acfun.cn", "bilibili.com", "baofeng.com", "pptv.com"];
|
||||||
|
for (let b = 0; b < vipWebsites.length; b++) {
|
||||||
|
if (host.includes(vipWebsites[b])) {
|
||||||
|
if (vipWebsites[b] === "iqiyi.com") {
|
||||||
|
// 爱奇艺需要特殊处理
|
||||||
|
if (url.includes("iqiyi.com/a_") || url.includes("iqiyi.com/w_") || url.includes("iqiyi.com/v_")) {
|
||||||
|
isVip = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
isVip = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return isVip;
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function isBlackVodUrl(input, url) {
|
||||||
|
return url.includes("973973.xyz") || url.includes(".fit:");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fixJsonVodHeader(headers, input, url) {
|
||||||
|
if (headers === null) {
|
||||||
|
headers = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.includes("www.mgtv.com")) {
|
||||||
|
headers["Referer"] = " ";
|
||||||
|
headers["User-Agent"] = " Mozilla/5.0";
|
||||||
|
} else if (url.includes("titan.mgtv")) {
|
||||||
|
headers["Referer"] = " ";
|
||||||
|
headers["User-Agent"] = " Mozilla/5.0";
|
||||||
|
} else if (input.includes("bilibili")) {
|
||||||
|
headers["Referer"] = " https://www.bilibili.com/";
|
||||||
|
headers["User-Agent"] = " " + Misc.UaWinChrome;
|
||||||
|
}
|
||||||
|
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const snifferMatch = /http((?!http).){26,}?\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\?.*|http((?!http).){26,}\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|http((?!http).){26,}\/m3u8\?pt=m3u8.*|http((?!http).)*?default\.ixigua\.com\/.*|http((?!http).)*?cdn-tos[^\?]*|http((?!http).)*?\/obj\/tos[^\?]*|http.*?\/player\/m3u8play\.php\?url=.*|http.*?\/player\/.*?[pP]lay\.php\?url=.*|http.*?\/playlist\/m3u8\/\?vid=.*|http.*?\.php\?type=m3u8&.*|http.*?\/download.aspx\?.*|http.*?\/api\/up_api.php\?.*|https.*?\.66yk\.cn.*|http((?!http).)*?netease\.com\/file\/.*/;
|
||||||
|
|
||||||
|
function isVideoFormat(url) {
|
||||||
|
if (snifferMatch.test(url)) {
|
||||||
|
return !url.includes("cdn-tos") || !url.includes(".js");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function isVideo(url) {
|
||||||
|
if (!url.includes(".mp4") || !url.includes(".m3u8")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function UA(url) {
|
||||||
|
if (url.includes(".vod")) {
|
||||||
|
return "okhttp/4.1.0";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCateUrl(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "nav?token=";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return URL + "/types";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPlayUrlPrefix(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "video_detail?id=";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return URL + "/detail?vod_id=";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRecommendUrl(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "index_video?token=";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return URL + "/vodPhbAll";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFilterTypes(URL, typeExtend) {
|
||||||
|
let str = "";
|
||||||
|
|
||||||
|
if (typeExtend !== null) {
|
||||||
|
for (let key in typeExtend) {
|
||||||
|
if (key === "class" || key === "area" || key === "lang" || key === "year") {
|
||||||
|
try {
|
||||||
|
|
||||||
|
str += "筛选" + key + "+全部=+" + typeExtend[key].replace(/,/g, "+") + "\n";
|
||||||
|
} catch (e) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (URL.includes(".vod")) {
|
||||||
|
str += "\n" + "排序+全部=+最新=time+最热=hits+评分=score";
|
||||||
|
} else if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
// Do nothing, leave the string as it is.
|
||||||
|
} else {
|
||||||
|
str = "分类+全部=+电影=movie+连续剧=tvplay+综艺=tvshow+动漫=comic+4K=movie_4k+体育=tiyu\n筛选class+全部=+喜剧+爱情+恐怖+动作+科幻+剧情+战争+警匪+犯罪+动画+奇幻+武侠+冒险+枪战+恐怖+悬疑+惊悚+经典+青春+文艺+微电影+古装+历史+运动+农村+惊悚+惊悚+伦理+情色+福利+三级+儿童+网络电影\n筛选area+全部=+大陆+香港+台湾+美国+英国+法国+日本+韩国+德国+泰国+印度+西班牙+加拿大+其他\n筛选year+全部=+2023+2022+2021+2020+2019+2018+2017+2016+2015+2014+2013+2012+2011+2010+2009+2008+2007+2006+2005+2004+2003+2002+2001+2000";
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCateFilterUrlSuffix(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return "&class=筛选class&area=筛选area&lang=筛选lang&year=筛选year&limit=18&pg=#PN#";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return "&class=筛选class&area=筛选area&lang=筛选lang&year=筛选year&by=排序&limit=18&page=#PN#";
|
||||||
|
} else {
|
||||||
|
return "&page=#PN#&area=筛选area&type=筛选class&start=筛选year";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCateFilterUrlPrefix(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "video?tid=";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return URL + "?type=";
|
||||||
|
} else {
|
||||||
|
return URL + "?ac=list&class=";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isBan(key) {
|
||||||
|
return key === "伦理" || key === "情色" || key === "福利";
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSearchUrl(URL, KEY) {
|
||||||
|
if (URL.includes(".vod")) {
|
||||||
|
return URL + "?wd=" + KEY + "&page=";
|
||||||
|
} else if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "search?text=" + KEY + "&pg=";
|
||||||
|
} else if (urlPattern1.test(URL)) {
|
||||||
|
return URL + "?ac=list&zm=" + KEY + "&page=";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function findJsonArray(obj, match, result) {
|
||||||
|
Object.keys(obj).forEach((k) => {
|
||||||
|
try {
|
||||||
|
const o = obj[k];
|
||||||
|
if (k === match && Array.isArray(o)) {
|
||||||
|
result.push(o);
|
||||||
|
}
|
||||||
|
if (typeof o === "object" && o !== null) {
|
||||||
|
if (Array.isArray(o)) {
|
||||||
|
o.forEach((item) => {
|
||||||
|
if (typeof item === "object" && item !== null) {
|
||||||
|
findJsonArray(item, match, result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
findJsonArray(o, match, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function jsonArr2Str(array) {
|
||||||
|
const strings = [];
|
||||||
|
for (let i = 0; i < array.length; i++) {
|
||||||
|
try {
|
||||||
|
strings.push(array[i]);
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strings.join(",");
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHeaders(URL) {
|
||||||
|
const headers = {};
|
||||||
|
headers["User-Agent"] = UA(URL);
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isJsonString(str) {
|
||||||
|
try {
|
||||||
|
JSON.parse(str);
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
+894
@@ -0,0 +1,894 @@
|
|||||||
|
import { Crypto, _ } from 'assets://js/lib/cat.js'
|
||||||
|
|
||||||
|
let host = '';
|
||||||
|
let header = {
|
||||||
|
'User-Agent': 'okhttp/3.12.11'
|
||||||
|
};
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = '';
|
||||||
|
let siteJx = '';
|
||||||
|
|
||||||
|
const urlPattern1 = /api\.php\/.*?\/vod/;
|
||||||
|
const urlPattern2 = /api\.php\/.+?\.vod/;
|
||||||
|
const parsePattern = /\/.+\\?.+=/;
|
||||||
|
const parsePattern1 = /.*(url|v|vid|php\?id)=/;
|
||||||
|
const parsePattern2 = /https?:\/\/[^\/]*/;
|
||||||
|
|
||||||
|
const htmlVideoKeyMatch = [
|
||||||
|
/player=new/,
|
||||||
|
/<div id="video"/,
|
||||||
|
/<div id="[^"]*?player"/,
|
||||||
|
/\/\/视频链接/,
|
||||||
|
/HlsJsPlayer\(/,
|
||||||
|
/<iframe[\s\S]*?src="[^"]+?"/,
|
||||||
|
/<video[\s\S]*?src="[^"]+?"/,
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
host = cfg.ext;
|
||||||
|
if (cfg.ext.hasOwnProperty('host')) { // for custom jx
|
||||||
|
host = cfg.ext.host;
|
||||||
|
siteJx = cfg.ext;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
async function request(reqUrl, ua, timeout = 60000) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: ua ? ua : {'User-Agent': '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'},
|
||||||
|
timeout: timeout,
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
try {
|
||||||
|
let url = getCateUrl(host);
|
||||||
|
|
||||||
|
let jsonArray = null;
|
||||||
|
|
||||||
|
if (url) {
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
if (obj.hasOwnProperty("list") && Array.isArray(obj.list)) {
|
||||||
|
jsonArray = obj.list;
|
||||||
|
} else if (
|
||||||
|
obj.hasOwnProperty("data") &&
|
||||||
|
obj.data.hasOwnProperty("list") &&
|
||||||
|
Array.isArray(obj.data.list)
|
||||||
|
) {
|
||||||
|
jsonArray = obj.data.list;
|
||||||
|
} else if (obj.hasOwnProperty("data") && Array.isArray(obj.data)) {
|
||||||
|
jsonArray = obj.data;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 通过filter列表读分类
|
||||||
|
const filterStr = getFilterTypes(url, null);
|
||||||
|
const classes = filterStr.split("\n")[0].split("+");
|
||||||
|
jsonArray = [];
|
||||||
|
for (let i = 1; i < classes.length; i++) {
|
||||||
|
const kv = classes[i].trim().split("=");
|
||||||
|
if (kv.length < 2) continue;
|
||||||
|
const newCls = {
|
||||||
|
type_name: kv[0].trim(),
|
||||||
|
type_id: kv[1].trim(),
|
||||||
|
};
|
||||||
|
jsonArray.push(newCls);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = { class: [] };
|
||||||
|
if (jsonArray != null) {
|
||||||
|
for (let i = 0; i < jsonArray.length; i++) {
|
||||||
|
const jObj = jsonArray[i];
|
||||||
|
const typeName = jObj.type_name;
|
||||||
|
if (isBan(typeName)) continue;
|
||||||
|
const typeId = jObj.type_id;
|
||||||
|
const newCls = {
|
||||||
|
type_id: typeId,
|
||||||
|
type_name: typeName,
|
||||||
|
};
|
||||||
|
const typeExtend = jObj.type_extend;
|
||||||
|
if (filter) {
|
||||||
|
const filterStr = getFilterTypes(url, typeExtend);
|
||||||
|
|
||||||
|
const filters = filterStr.split("\n");
|
||||||
|
const filterArr = [];
|
||||||
|
for (let k = (url) ? 1 : 0; k < filters.length; k++) {
|
||||||
|
const l = filters[k].trim();
|
||||||
|
if (!l) continue;
|
||||||
|
const oneLine = l.split("+");
|
||||||
|
|
||||||
|
let type = oneLine[0].trim();
|
||||||
|
let typeN = type;
|
||||||
|
if (type.includes("筛选")) {
|
||||||
|
type = type.replace(/筛选/g, "");
|
||||||
|
if (type === "class") typeN = "类型";
|
||||||
|
else if (type === "area") typeN = "地区";
|
||||||
|
else if (type === "lang") typeN = "语言";
|
||||||
|
else if (type === "year") typeN = "年份";
|
||||||
|
}
|
||||||
|
const jOne = {
|
||||||
|
key: type,
|
||||||
|
name: typeN,
|
||||||
|
value: [],
|
||||||
|
};
|
||||||
|
for (let j = 1; j < oneLine.length; j++) {
|
||||||
|
const kv = oneLine[j].trim();
|
||||||
|
const sp = kv.indexOf("=");
|
||||||
|
|
||||||
|
if (sp === -1) {
|
||||||
|
if (isBan(kv)) continue;
|
||||||
|
jOne.value.push({ n: kv, v: kv });
|
||||||
|
} else {
|
||||||
|
const n = kv.substring(0, sp);
|
||||||
|
if (isBan(n)) continue;
|
||||||
|
jOne.value.push({
|
||||||
|
n: n.trim(),
|
||||||
|
v: kv.substring(sp + 1).trim(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
filterArr.push(jOne);
|
||||||
|
}
|
||||||
|
if (!result.hasOwnProperty("filters")) {
|
||||||
|
result.filters = {};
|
||||||
|
}
|
||||||
|
result.filters[typeId] = filterArr;
|
||||||
|
}
|
||||||
|
result.class.push(newCls);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
try {
|
||||||
|
const apiUrl = host;
|
||||||
|
let url = getRecommendUrl(apiUrl);
|
||||||
|
let isTV = false;
|
||||||
|
|
||||||
|
if (!url) {
|
||||||
|
url = getCateFilterUrlPrefix(apiUrl) + "movie&page=1&area=&type=&start=";
|
||||||
|
isTV = true;
|
||||||
|
}
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
const videos = [];
|
||||||
|
if (isTV) {
|
||||||
|
const jsonArray = obj.data;
|
||||||
|
for (let i = 0; i < jsonArray.length; i++) {
|
||||||
|
const vObj = jsonArray[i];
|
||||||
|
const v = {
|
||||||
|
vod_id: vObj.nextlink,
|
||||||
|
vod_name: vObj.title,
|
||||||
|
vod_pic: vObj.pic,
|
||||||
|
vod_remarks: vObj.state,
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const arrays = [];
|
||||||
|
findJsonArray(obj, "vlist", arrays);
|
||||||
|
if (arrays.length === 0) {
|
||||||
|
findJsonArray(obj, "vod_list", arrays);
|
||||||
|
}
|
||||||
|
const ids = [];
|
||||||
|
for (const jsonArray of arrays) {
|
||||||
|
for (let i = 0; i < jsonArray.length; i++) {
|
||||||
|
const vObj = jsonArray[i];
|
||||||
|
const vid = vObj.vod_id;
|
||||||
|
if (ids.includes(vid)) continue;
|
||||||
|
ids.push(vid);
|
||||||
|
const v = {
|
||||||
|
vod_id: vid,
|
||||||
|
vod_name: vObj.vod_name,
|
||||||
|
vod_pic: vObj.vod_pic,
|
||||||
|
vod_remarks: vObj.vod_remarks,
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = {
|
||||||
|
list: videos,
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
try {
|
||||||
|
const apiUrl = host;
|
||||||
|
|
||||||
|
let url = getCateFilterUrlPrefix(apiUrl) + tid + getCateFilterUrlSuffix(apiUrl);
|
||||||
|
url = url.replace(/#PN#/g, pg);
|
||||||
|
url = url.replace(/筛选class/g, extend?.class ?? "");
|
||||||
|
url = url.replace(/筛选area/g, extend?.area ?? "");
|
||||||
|
url = url.replace(/筛选lang/g, extend?.lang ?? "");
|
||||||
|
url = url.replace(/筛选year/g, extend?.year ?? "");
|
||||||
|
url = url.replace(/排序/g, extend?.排序 ?? "");
|
||||||
|
|
||||||
|
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
|
||||||
|
let totalPg = Infinity;
|
||||||
|
try {
|
||||||
|
if (obj.totalpage !== undefined && typeof obj.totalpage === "number") {
|
||||||
|
totalPg = obj.totalpage;
|
||||||
|
} else if (
|
||||||
|
obj.pagecount !== undefined &&
|
||||||
|
typeof obj.pagecount === "number"
|
||||||
|
) {
|
||||||
|
totalPg = obj.pagecount;
|
||||||
|
} else if (
|
||||||
|
obj.data !== undefined &&
|
||||||
|
typeof obj.data === "object" &&
|
||||||
|
obj.data.total !== undefined &&
|
||||||
|
typeof obj.data.total === "number" &&
|
||||||
|
obj.data.limit !== undefined &&
|
||||||
|
typeof obj.data.limit === "number"
|
||||||
|
) {
|
||||||
|
const limit = obj.data.limit;
|
||||||
|
const total = obj.data.total;
|
||||||
|
totalPg = total % limit === 0 ? total / limit : Math.floor(total / limit) + 1;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const jsonArray =
|
||||||
|
obj.list !== undefined
|
||||||
|
? obj.list
|
||||||
|
: obj.data !== undefined && obj.data.list !== undefined
|
||||||
|
? obj.data.list
|
||||||
|
: obj.data;
|
||||||
|
const videos = [];
|
||||||
|
|
||||||
|
if (jsonArray !== undefined) {
|
||||||
|
for (let i = 0; i < jsonArray.length; i++) {
|
||||||
|
const vObj = jsonArray[i];
|
||||||
|
const v = {
|
||||||
|
vod_id: vObj.vod_id !== undefined ? vObj.vod_id : vObj.nextlink,
|
||||||
|
vod_name: vObj.vod_name !== undefined ? vObj.vod_name : vObj.title,
|
||||||
|
vod_pic: vObj.vod_pic !== undefined ? vObj.vod_pic : vObj.pic,
|
||||||
|
vod_remarks: vObj.vod_remarks !== undefined ? vObj.vod_remarks : vObj.state,
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = {
|
||||||
|
page: pg,
|
||||||
|
pagecount: totalPg,
|
||||||
|
limit: 90,
|
||||||
|
total: Infinity,
|
||||||
|
list: videos,
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {
|
||||||
|
SpiderDebug.log(e);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(ids) {
|
||||||
|
try {
|
||||||
|
const apiUrl = host;
|
||||||
|
const url = getPlayUrlPrefix(apiUrl) + ids;
|
||||||
|
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
const result = {
|
||||||
|
list: [],
|
||||||
|
};
|
||||||
|
const vod = {};
|
||||||
|
genPlayList(apiUrl, obj, json, vod, ids);
|
||||||
|
result.list.push(vod);
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
const parseUrlMap = new Map();
|
||||||
|
|
||||||
|
function genPlayList(URL, object, json, vod, vid) {
|
||||||
|
const playUrls = [];
|
||||||
|
const playFlags = [];
|
||||||
|
|
||||||
|
if (URL.includes("lfytyl.com")) {
|
||||||
|
const data = object.data;
|
||||||
|
vod.vod_id = data.vod_id || vid;
|
||||||
|
vod.vod_name = data.vod_name;
|
||||||
|
vod.vod_pic = data.vod_pic;
|
||||||
|
vod.type_name = data.vod_class || "";
|
||||||
|
vod.vod_year = data.vod_year || "";
|
||||||
|
vod.vod_area = data.vod_area || "";
|
||||||
|
vod.vod_remarks = data.vod_remarks || "";
|
||||||
|
vod.vod_actor = data.vod_actor || "";
|
||||||
|
vod.vod_director = data.vod_director || "";
|
||||||
|
vod.vod_content = data.vod_content || "";
|
||||||
|
|
||||||
|
vod.vod_play_from = data.vod_play_from;
|
||||||
|
vod.vod_play_url = data.vod_play_url;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (URL.includes("api.php/app")) {
|
||||||
|
const data = object.data;
|
||||||
|
vod.vod_id = data.vod_id || vid;
|
||||||
|
vod.vod_name = data.vod_name;
|
||||||
|
vod.vod_pic = data.vod_pic;
|
||||||
|
vod.type_name = data.vod_class || "";
|
||||||
|
vod.vod_year = data.vod_year || "";
|
||||||
|
vod.vod_area = data.vod_area || "";
|
||||||
|
vod.vod_remarks = data.vod_remarks || "";
|
||||||
|
vod.vod_actor = data.vod_actor || "";
|
||||||
|
vod.vod_director = data.vod_director || "";
|
||||||
|
vod.vod_content = data.vod_content || "";
|
||||||
|
|
||||||
|
const vodUrlWithPlayer = data.vod_url_with_player;
|
||||||
|
for (let i = 0; i < vodUrlWithPlayer.length; i++) {
|
||||||
|
const from = vodUrlWithPlayer[i];
|
||||||
|
let flag = from.code.trim();
|
||||||
|
if (flag === "") flag = from.name.trim();
|
||||||
|
playFlags.push(flag);
|
||||||
|
playUrls.push(from.url);
|
||||||
|
|
||||||
|
let purl = from.parse_api;
|
||||||
|
const parseUrls = parseUrlMap.get(flag) || [];
|
||||||
|
if (purl && !parseUrls.includes(purl)) {
|
||||||
|
parseUrls.push(purl);
|
||||||
|
}
|
||||||
|
parseUrlMap.set(flag, parseUrls);
|
||||||
|
|
||||||
|
}
|
||||||
|
} else if (URL.includes("xgapp")) {
|
||||||
|
const data = object.data.vod_info;
|
||||||
|
vod.vod_id = data.vod_id || vid;
|
||||||
|
vod.vod_name = data.vod_name;
|
||||||
|
vod.vod_pic = data.vod_pic;
|
||||||
|
vod.type_name = data.vod_class || "";
|
||||||
|
vod.vod_year = data.vod_year || "";
|
||||||
|
vod.vod_area = data.vod_area || "";
|
||||||
|
vod.vod_remarks = data.vod_remarks || "";
|
||||||
|
vod.vod_actor = data.vod_actor || "";
|
||||||
|
vod.vod_director = data.vod_director || "";
|
||||||
|
vod.vod_content = data.vod_content || "";
|
||||||
|
|
||||||
|
const vodUrlWithPlayer = data.vod_url_with_player;
|
||||||
|
for (let i = 0; i < vodUrlWithPlayer.length; i++) {
|
||||||
|
const from = vodUrlWithPlayer[i];
|
||||||
|
let flag = from.code.trim();
|
||||||
|
if (flag === "") flag = from.name.trim();
|
||||||
|
playFlags.push(flag);
|
||||||
|
playUrls.push(from.url);
|
||||||
|
|
||||||
|
const purl = from.parse_api.trim();
|
||||||
|
const parseUrls = parseUrlMap.get(flag) || [];
|
||||||
|
if (purl && !parseUrls.includes(purl)) {
|
||||||
|
parseUrls.push(purl);
|
||||||
|
}
|
||||||
|
parseUrlMap.set(flag, parseUrls);
|
||||||
|
}
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
const data = object.data;
|
||||||
|
vod.vod_id = data.vod_id || vid;
|
||||||
|
vod.vod_name = data.vod_name;
|
||||||
|
vod.vod_pic = data.vod_pic;
|
||||||
|
vod.type_name = data.vod_class || "";
|
||||||
|
vod.vod_year = data.vod_year || "";
|
||||||
|
vod.vod_area = data.vod_area || "";
|
||||||
|
vod.vod_remarks = data.vod_remarks || "";
|
||||||
|
vod.vod_actor = data.vod_actor || "";
|
||||||
|
vod.vod_director = data.vod_director || "";
|
||||||
|
vod.vod_content = data.vod_content || "";
|
||||||
|
|
||||||
|
const vodUrlWithPlayer = data.vod_play_list;
|
||||||
|
for (let i = 0; i < vodUrlWithPlayer.length; i++) {
|
||||||
|
const from = vodUrlWithPlayer[i];
|
||||||
|
let flag = from.player_info.from.trim();
|
||||||
|
if (flag === "") flag = from.player_info.show.trim();
|
||||||
|
playFlags.push(flag);
|
||||||
|
playUrls.push(from.url);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const parses = [];
|
||||||
|
const parse1 = from.player_info.parse.split(",");
|
||||||
|
const parse2 = from.player_info.parse2.split(",");
|
||||||
|
parses.push(...parse1, ...parse2);
|
||||||
|
const parseUrls = parseUrlMap.get(flag) || [];
|
||||||
|
for (const purl of parses) {
|
||||||
|
if (purl.includes("http")) {
|
||||||
|
const match = purl.match(parsePattern1);
|
||||||
|
if (match) {
|
||||||
|
parseUrls.push(match[0]);
|
||||||
|
}
|
||||||
|
} else if (purl.includes("//")) {
|
||||||
|
const match = purl.match(parsePattern1);
|
||||||
|
if (match) {
|
||||||
|
parseUrls.push("http:" + match[0]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const urlMatch = URL.match(parsePattern2);
|
||||||
|
if (urlMatch) {
|
||||||
|
const match = URL.match(parsePattern1);
|
||||||
|
if (match) {
|
||||||
|
parseUrls.push(urlMatch[0] + match[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (purl.includes("..")) purl = purl.replace(/\.\./g, ".").trim();
|
||||||
|
|
||||||
|
if (purl && !parseUrls.includes(purl)) {
|
||||||
|
parseUrls.push(purl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parseUrlMap.set(flag, parseUrls);
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (URLPattern1.matcher(URL).find()) {
|
||||||
|
// Same implementation as the previous cases
|
||||||
|
}
|
||||||
|
|
||||||
|
vod.vod_play_from = playFlags.join("$$$");
|
||||||
|
vod.vod_play_url = playUrls.join("$$$");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function play(flag, id, vipFlags) {
|
||||||
|
try {
|
||||||
|
// let parseUrls = parseUrlMap.get(flag);
|
||||||
|
let parseUrls = siteJx[flag]; // custom sitejx
|
||||||
|
if (!parseUrls) {
|
||||||
|
if (siteJx.hasOwnProperty('*')) { // all jx
|
||||||
|
parseUrls = siteJx['*'];
|
||||||
|
} else {
|
||||||
|
parseUrls = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parseUrls.length > 0) {
|
||||||
|
const result = await getFinalVideo(flag, parseUrls, id);
|
||||||
|
if (result !== null) {
|
||||||
|
return JSON.stringify(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isVideo(id)) {
|
||||||
|
const result = {
|
||||||
|
parse: 0,
|
||||||
|
playUrl: "",
|
||||||
|
url: id
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} else {
|
||||||
|
const result = {
|
||||||
|
parse: 1,
|
||||||
|
jx: "1",
|
||||||
|
url: id
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// Handle any error here
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(key, quick) {
|
||||||
|
try {
|
||||||
|
const apiUrl = host;
|
||||||
|
const url = getSearchUrl(apiUrl, encodeURIComponent(key));
|
||||||
|
const json = await request(url, getHeaders(url));
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
let jsonArray = null;
|
||||||
|
const videos = [];
|
||||||
|
|
||||||
|
if (obj.list instanceof Array) {
|
||||||
|
jsonArray = obj.list;
|
||||||
|
} else if (obj.data instanceof Object && obj.data.list instanceof Array) {
|
||||||
|
jsonArray = obj.data.list;
|
||||||
|
} else if (obj.data instanceof Array) {
|
||||||
|
jsonArray = obj.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jsonArray !== null) {
|
||||||
|
for (const vObj of jsonArray) {
|
||||||
|
if (vObj.vod_id) {
|
||||||
|
const v = {
|
||||||
|
vod_id: vObj.vod_id,
|
||||||
|
vod_name: vObj.vod_name,
|
||||||
|
vod_pic: vObj.vod_pic,
|
||||||
|
vod_remarks: vObj.vod_remarks
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
} else {
|
||||||
|
const v = {
|
||||||
|
vod_id: vObj.nextlink,
|
||||||
|
vod_name: vObj.title,
|
||||||
|
vod_pic: vObj.pic,
|
||||||
|
vod_remarks: vObj.state
|
||||||
|
};
|
||||||
|
videos.push(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = { list: videos };
|
||||||
|
return JSON.stringify(result);
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async function getFinalVideo(flag, parseUrls, url) {
|
||||||
|
let htmlPlayUrl = "";
|
||||||
|
for (const parseUrl of parseUrls) {
|
||||||
|
if (parseUrl === "" || parseUrl === "null") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const playUrl = parseUrl + url;
|
||||||
|
const content = await request(playUrl, null, 10000); // 10秒请求,能更好过滤webjx
|
||||||
|
let tryJson = null;
|
||||||
|
try {
|
||||||
|
tryJson = jsonParse(url, content);
|
||||||
|
} catch (error) { }
|
||||||
|
|
||||||
|
if (tryJson !== null && tryJson.hasOwnProperty("url") && tryJson.hasOwnProperty("header")) {
|
||||||
|
tryJson.header = JSON.stringify(tryJson.header);
|
||||||
|
return tryJson;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (content.includes("<html")) {
|
||||||
|
let sniffer = false;
|
||||||
|
for (const p of htmlVideoKeyMatch) {
|
||||||
|
if (p.test(content)) {
|
||||||
|
sniffer = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sniffer) {
|
||||||
|
htmlPlayUrl = parseUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (htmlPlayUrl !== "") { // 不支持sniffer
|
||||||
|
const result = {
|
||||||
|
parse: 0,
|
||||||
|
playUrl: "",
|
||||||
|
url: url
|
||||||
|
};
|
||||||
|
return JSON.stringify(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function jsonParse(input, json) {
|
||||||
|
try {
|
||||||
|
// 处理解析接口返回的报文,如果返回的报文中包含header信息,就加到返回值中
|
||||||
|
let jsonPlayData = JSON.parse(json);
|
||||||
|
// 处理293的解析结果url在data字段的解析
|
||||||
|
if (jsonPlayData.hasOwnProperty("data") && typeof jsonPlayData.data === "object" && !jsonPlayData.hasOwnProperty("url")) {
|
||||||
|
jsonPlayData = jsonPlayData.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
let url = jsonPlayData.url;
|
||||||
|
|
||||||
|
if (url.startsWith("//")) {
|
||||||
|
url = "https:" + url;
|
||||||
|
}
|
||||||
|
if (!url.trim().startsWith("http")) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (url === input) {
|
||||||
|
if (isVip(url) || !isVideoFormat(url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isBlackVodUrl(input, url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
let headers = {};
|
||||||
|
if (jsonPlayData.hasOwnProperty("header")) {
|
||||||
|
headers = jsonPlayData.header;
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("Header")) {
|
||||||
|
headers = jsonPlayData.Header;
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("headers")) {
|
||||||
|
headers = jsonPlayData.headers;
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("Headers")) {
|
||||||
|
headers = jsonPlayData.Headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
let ua = "";
|
||||||
|
if (jsonPlayData.hasOwnProperty("user-agent")) {
|
||||||
|
ua = jsonPlayData["user-agent"];
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("User-Agent")) {
|
||||||
|
ua = jsonPlayData["User-Agent"];
|
||||||
|
}
|
||||||
|
if (ua.trim().length > 0) {
|
||||||
|
headers["User-Agent"] = " " + ua;
|
||||||
|
}
|
||||||
|
|
||||||
|
let referer = "";
|
||||||
|
if (jsonPlayData.hasOwnProperty("referer")) {
|
||||||
|
referer = jsonPlayData.referer;
|
||||||
|
} else if (jsonPlayData.hasOwnProperty("Referer")) {
|
||||||
|
referer = jsonPlayData.Referer;
|
||||||
|
}
|
||||||
|
if (referer.trim().length > 0) {
|
||||||
|
headers["Referer"] = " " + referer;
|
||||||
|
}
|
||||||
|
|
||||||
|
headers = fixJsonVodHeader(headers, input, url);
|
||||||
|
|
||||||
|
const taskResult = {
|
||||||
|
header: headers,
|
||||||
|
url: url,
|
||||||
|
parse: "0"
|
||||||
|
};
|
||||||
|
|
||||||
|
return taskResult;
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isVip(url) {
|
||||||
|
try {
|
||||||
|
let isVip = false;
|
||||||
|
const host = new URL(url).hostname;
|
||||||
|
const vipWebsites = ["iqiyi.com", "v.qq.com", "youku.com", "le.com", "tudou.com", "mgtv.com", "sohu.com", "acfun.cn", "bilibili.com", "baofeng.com", "pptv.com"];
|
||||||
|
for (let b = 0; b < vipWebsites.length; b++) {
|
||||||
|
if (host.includes(vipWebsites[b])) {
|
||||||
|
if (vipWebsites[b] === "iqiyi.com") {
|
||||||
|
// 爱奇艺需要特殊处理
|
||||||
|
if (url.includes("iqiyi.com/a_") || url.includes("iqiyi.com/w_") || url.includes("iqiyi.com/v_")) {
|
||||||
|
isVip = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
isVip = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return isVip;
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function isBlackVodUrl(input, url) {
|
||||||
|
return url.includes("973973.xyz") || url.includes(".fit:");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fixJsonVodHeader(headers, input, url) {
|
||||||
|
if (headers === null) {
|
||||||
|
headers = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.includes("www.mgtv.com")) {
|
||||||
|
headers["Referer"] = " ";
|
||||||
|
headers["User-Agent"] = " Mozilla/5.0";
|
||||||
|
} else if (url.includes("titan.mgtv")) {
|
||||||
|
headers["Referer"] = " ";
|
||||||
|
headers["User-Agent"] = " Mozilla/5.0";
|
||||||
|
} else if (input.includes("bilibili")) {
|
||||||
|
headers["Referer"] = " https://www.bilibili.com/";
|
||||||
|
headers["User-Agent"] = " " + Misc.UaWinChrome;
|
||||||
|
}
|
||||||
|
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const snifferMatch = /http((?!http).){26,}?\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\?.*|http((?!http).){26,}\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|http((?!http).){26,}\/m3u8\?pt=m3u8.*|http((?!http).)*?default\.ixigua\.com\/.*|http((?!http).)*?cdn-tos[^\?]*|http((?!http).)*?\/obj\/tos[^\?]*|http.*?\/player\/m3u8play\.php\?url=.*|http.*?\/player\/.*?[pP]lay\.php\?url=.*|http.*?\/playlist\/m3u8\/\?vid=.*|http.*?\.php\?type=m3u8&.*|http.*?\/download.aspx\?.*|http.*?\/api\/up_api.php\?.*|https.*?\.66yk\.cn.*|http((?!http).)*?netease\.com\/file\/.*/;
|
||||||
|
|
||||||
|
function isVideoFormat(url) {
|
||||||
|
if (snifferMatch.test(url)) {
|
||||||
|
return !url.includes("cdn-tos") || !url.includes(".js");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function isVideo(url) {
|
||||||
|
if (!url.includes(".mp4") || !url.includes(".m3u8")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function UA(url) {
|
||||||
|
if (url.includes(".vod")) {
|
||||||
|
return "okhttp/4.1.0";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCateUrl(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "nav?token=";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return URL + "/types";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPlayUrlPrefix(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "video_detail?id=";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return URL + "/detail?vod_id=";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRecommendUrl(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "index_video?token=";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return URL + "/vodPhbAll";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFilterTypes(URL, typeExtend) {
|
||||||
|
let str = "";
|
||||||
|
|
||||||
|
if (typeExtend !== null) {
|
||||||
|
for (let key in typeExtend) {
|
||||||
|
if (key === "class" || key === "area" || key === "lang" || key === "year") {
|
||||||
|
try {
|
||||||
|
|
||||||
|
str += "筛选" + key + "+全部=+" + typeExtend[key].replace(/,/g, "+") + "\n";
|
||||||
|
} catch (e) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (URL.includes(".vod")) {
|
||||||
|
str += "\n" + "排序+全部=+最新=time+最热=hits+评分=score";
|
||||||
|
} else if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
// Do nothing, leave the string as it is.
|
||||||
|
} else {
|
||||||
|
str = "分类+全部=+电影=movie+连续剧=tvplay+综艺=tvshow+动漫=comic+4K=movie_4k+体育=tiyu\n筛选class+全部=+喜剧+爱情+恐怖+动作+科幻+剧情+战争+警匪+犯罪+动画+奇幻+武侠+冒险+枪战+恐怖+悬疑+惊悚+经典+青春+文艺+微电影+古装+历史+运动+农村+惊悚+惊悚+伦理+情色+福利+三级+儿童+网络电影\n筛选area+全部=+大陆+香港+台湾+美国+英国+法国+日本+韩国+德国+泰国+印度+西班牙+加拿大+其他\n筛选year+全部=+2023+2022+2021+2020+2019+2018+2017+2016+2015+2014+2013+2012+2011+2010+2009+2008+2007+2006+2005+2004+2003+2002+2001+2000";
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCateFilterUrlSuffix(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return "&class=筛选class&area=筛选area&lang=筛选lang&year=筛选year&limit=18&pg=#PN#";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return "&class=筛选class&area=筛选area&lang=筛选lang&year=筛选year&by=排序&limit=18&page=#PN#";
|
||||||
|
} else {
|
||||||
|
return "&page=#PN#&area=筛选area&type=筛选class&start=筛选year";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCateFilterUrlPrefix(URL) {
|
||||||
|
if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "video?tid=";
|
||||||
|
} else if (URL.includes(".vod")) {
|
||||||
|
return URL + "?type=";
|
||||||
|
} else {
|
||||||
|
return URL + "?ac=list&class=";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isBan(key) {
|
||||||
|
return key === "伦理" || key === "情色" || key === "福利";
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSearchUrl(URL, KEY) {
|
||||||
|
if (URL.includes(".vod")) {
|
||||||
|
return URL + "?wd=" + KEY + "&page=";
|
||||||
|
} else if (URL.includes("api.php/app") || URL.includes("xgapp")) {
|
||||||
|
return URL + "search?text=" + KEY + "&pg=";
|
||||||
|
} else if (urlPattern1.test(URL)) {
|
||||||
|
return URL + "?ac=list&zm=" + KEY + "&page=";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function findJsonArray(obj, match, result) {
|
||||||
|
Object.keys(obj).forEach((k) => {
|
||||||
|
try {
|
||||||
|
const o = obj[k];
|
||||||
|
if (k === match && Array.isArray(o)) {
|
||||||
|
result.push(o);
|
||||||
|
}
|
||||||
|
if (typeof o === "object" && o !== null) {
|
||||||
|
if (Array.isArray(o)) {
|
||||||
|
o.forEach((item) => {
|
||||||
|
if (typeof item === "object" && item !== null) {
|
||||||
|
findJsonArray(item, match, result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
findJsonArray(o, match, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function jsonArr2Str(array) {
|
||||||
|
const strings = [];
|
||||||
|
for (let i = 0; i < array.length; i++) {
|
||||||
|
try {
|
||||||
|
strings.push(array[i]);
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strings.join(",");
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHeaders(URL) {
|
||||||
|
const headers = {};
|
||||||
|
headers["User-Agent"] = UA(URL);
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isJsonString(str) {
|
||||||
|
try {
|
||||||
|
JSON.parse(str);
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CxBBxkb3ViYW5fb3Blbi5qcyxhc3NldHM6Ly9qcy9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwpkYXlqcwxqaW5qYTIGVXJpAl8OXzB4NGRjMw5fMHg0ODg0El8weDQwYjM4MxJfMHg1Y2UxODkSXzB4M2I5ZWFmEl8weDFmMjM4YhJfMHgyMjVjNTISXzB4MzMzOGZjEl8weDE2N2Y3ZBJfMHg1N2FmNGISXzB4MWRiYTZmEl8weDFkNTI4ZhJfMHgyZDllN2YSXzB4NDIyNjMyEl8weDFlOTYxMxJfMHg1MWIwNmESXzB4NTAwODExEl8weDU1ZTc4MxJfMHgxZTVmY2ESXzB4MmZkYmQ1CHR5cGUOcmVwbGFjZQhzb3J0B8SLBlI6AFQvYXBpL3YyL3NreW5ldC9uZXdfcGxheWxpc3RzP3N1YmplY3RfdHlwZT0UY2hhckNvZGVBdApwcml6ZQ53ZXN0ZXJuSHN1YmplY3RfY29sbGVjdGlvbi90dl9qYXBhbmVzZS9pdGVtcyAvYXBpL3YyL2RvdWxpc3QvEGNyaW1pbmFsDR93nluLTvZOOWUWfwxjaGFyQXRIc3ViamVjdF9jb2xsZWN0aW9uL3R2X2RvbWVzdGljL2l0ZW1zCHB1c2gKa29yZWEIcGF0aAxCYXNlNjQKc2hpZnQIY2VpbBRzaG9ydF9uYW1l0AEmb3Nfcm9tPWFuZHJvaWQmYXBwbGU9YzUyZmJiOTliOTA4YmU0ZDAyNjk1NGNjNDM3NGYxNmQmbW9vbmNha2U9MGY2MDcyNjRmYzYzMThhOTJiOWUxM2M2NWRiN2NkM2Mmc3VnYXI9MBBvZmZpY2lhbBZpbnNwaXJhdGlvbhB2aW9sZW5jZRovcG9zdHM/c3RhcnQ9ci9hcGkvdjIvbW92aWUvY2F0ZWdvcnlfcmFua3M/Y291bnQ9MzAmY2F0ZWdvcnk9cmVjZW50X2hvdBQmY2F0ZWdvcnk9CnRpdGxlggFBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPRBob3JyaWJsZQwmdWRpZD0OZmFudGFzeRZibGFja193aGl0ZQZhbGwOY2FydG9vbjBzdWJqZWN0X2NvbGxlY3Rpb25faXRlbXMYZnJvbUNoYXJDb2RlIGJmN2RkZGM3YzljZmU2ZjcMc3BsaWNlSHN1YmplY3RfY29sbGVjdGlvbi90dl9hbWVyaWNhbi9pdGVtcwxyYW5kb20GZW5jFnRvTG93ZXJDYXNlCnBhcnNlMHdxODZ3NzNDbU1PcEhjT2V3NkhDdXl3PQYweDAMeVpTREtVanJldHVybiAoZnVuY3Rpb24oKSB7fS5jb25zdHJ1Y3RvcigicmV0dXJuIHRoaXMiKSggKSk7IFozdzFCTUtZS2dOYXc2WT0Sc3Vic3RyaW5nBmNyXwomX3RzPQm3UeiVc09HcgphY3Rvcgh1bml4CWhR6JB0XuNOBjB4MgZkbF8IdDI1MAx2YVJNY0UMZG91YmFuCGN1cmUSbGlzdF90eXBlEGRpcmVjdG9yCmxhcmdlDmNvbnRlbnQOc3ViamVjdAxub3JtYWwMZmFtaWx5DHJhdGluZwx4SVVZWnJEJmNvdW50PTMwJnVwZGF0ZWRfYXQ9Jml0ZW1zX29ubHk9MUpzdWJqZWN0X2NvbGxlY3Rpb24vdHZfYW5pbWF0aW9uL2l0ZW1zBjB4M2wvYXBpL3YyL3R2L2NhdGVnb3J5X3JhbmtzP2NvdW50PTMwJmNhdGVnb3J5PXJlY2VudF9ob3QJD1z0izllFn8QamFwYW5lc2UIYXRvYgpub3ZlbDYvYXBpL3YyL3N1YmplY3RfY29sbGVjdGlvbi8QTm53OUFjT08IZGF0YQ5pbmRleE9mICZzY29yZV9yYW5nPTAsMTCfAS8AYQBwAGkALwB2ADIALwBtAG8AdgBpAGUALwB0AGEAZwA/AHMAbwByAHQAPQBVACYAcwB0AGEAcgB0AD0AMAAmAGMAbwB1AG4AdAA9ADMAMAAmAHEAPQBoUeiQYl8PXywAaFHokHt8i1csAGhR6JAwVzpTLABoUeiQdF7jTiYAcwBjAG8AcgBlAF8AcgBhAG4AZwA9ADAALAAxADAACWhR6JAwVzpTCGxnYnQMJl9zaWc9CE4pbmwKdG90YWwGcGljBndhciAmbG9jX2lkPTAmc3RhcnQ9CGUwaEUGMHgxHG1vdmllL2hvdF9nYWlhCnNvcnRzCHRhZ3MWZG9jdW1lbnRhcnkUaGlnaF9zY29yZQpzdHlwZRovaXRlbXM/c3RhcnQ9DFNRamV0UQwmdXVpZD0oc2VsZWN0ZWRfY29sbGVjdGlvbnMH/VanTmdSDmNvbnNvbGWmASBwbGF0Zm9ybS9tb2JpbGUgY29tLmRvdWJhbi5mcm9kby83LjkuMCgyMTYpIFJleHhhci8xLjIuMTUxIHBsYXRmb3JtL21vYmlsZSAxLjIuMTUxZT8AYQByAGUAYQA9AGhR6JAmAHMAbwByAHQAPQByAGUAYwBvAG0AbQBlAG4AZAAmAHAAbABhAHkAYQBiAGwAZQA9ADAAJgBsAG8AYwBfAGkAZAA9ADAAJgBzAHQAYQByAHQAPQAKcGFuaWMMYWN0aW9uEEhtYWNTSEExEHNlbGVjdGVkLi9hcGkvdjIvbW92aWUvdGFnP3NvcnQ9GGxpdGVyYXJ5X2FydBImY291bnQ9MzAIeWVhcj5zdWJqZWN0X2NvbGxlY3Rpb24vdHZfaG90L2l0ZW1zEmNsYXNzaWNhbAxtb3ZpbmcIc2tleRJzdHJpbmdpZnkKeW91dGgKaXRlbXMQL2FwaS92Mi/+ASYmcm9tPWFuZHJvaWQmYXBpa2V5PTBkYWQ1NTFlYzBmODRlZDAyOTA3ZmY1YzQyZThlYzcwJnM9cmV4eGFyX25ldyZjaGFubmVsPVlpbmd5b25nYmFvX01hcmtldCZ0aW1lem9uZT1Bc2lhL1NoYW5naGFpJmRldmljZV9pZD0MZGV2aWNlFGRhcmtfaHVtb3IJ0Z5ygn1e2J4SY292ZXJfdXJsDGNvbWVkeQhHRVQm6gFSZXh4YXItQ29yZS8wLjEuMyBhcGktY2xpZW50LzEgY29tLmRvdWJhbi5mcm9kby83LjkuMCgyMTYpIEFuZHJvaWQvMjggcHJvZHVjdC9YaWFvbWkxMSByb20vYW5kcm9pZCBuZXR3b3JrL3dpZmkgdWRpZC8IY2F0ZRRkYXJrX2hvcnNlvwEvAGEAcABpAC8AdgAyAC8AcwB1AGIAagBlAGMAdABfAGMAbwBsAGwAZQBjAHQAaQBvAG4ALwBtAG8AdgBpAGUAXwB0AG8AcAAyADUAMAAvAGkAdABlAG0AcwA/AGEAcgBlAGEAPQBoUeiQJgBzAG8AcgB0AD0AcgBlAGMAbwBtAG0AZQBuAGQAJgBwAGwAYQB5AGEAYgBsAGUAPQAwACYAbABvAGMAXwBpAGQAPQAwACYAcwB0AGEAcgB0AD0AIHc0dkN0OEtEd296Q2xnPT0HNXXGiWdSCDB4MWEwaHR0cHM6Ly9mcm9kby5kb3ViYW4uY29temFiYWNkZWZnaGprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkSXzB4MzZiM2Q2El8weDRkYzMwOBJfMHg0ODg0ZDMSXzB4YTcxZDRkEl8weDIwNGQyZhJfMHgzNTQyZGYSXzB4MmMyOTUyEl8weDJlMWRkORJfMHg2MjgyNTQIMHg4YwRpZAgweDQ1CDB4NWMIMHg4MQgweDE0CDB4NGQIMHg2MiRlbmNvZGVVUklDb21wb25lbnQIMHg3YwImBjB4NggweDdkCDB4NTgIMHgzNQgweDExEl8weGNlYWJjZhJfMHgzZjBiNGISXzB4MzY5Nzg1BnJlcQR1YRRVc2VyLUFnZW50DmhlYWRlcnMGMHg4CDB4MWYSXzB4MzkxYTBhEl8weDI3M2FlYhJfMHg0NjAwMjISXzB4NDcwMzA2El8weDIzZDkwMRJfMHgyY2Y1NjgSXzB4ZmM4MzIyEl8weDVkOTU2ORJfMHgxYTcwYzQIMHg1NwgweDQyBjB4OQgweDY4GHc3N0R2c085d3E5VggweDJlBjB4ZQgweDI3CDltVkEIMHgxNggweDNiCDB4M2MIMHgzNgYweDQIdzcxZgYweGEISGdNMwgweDQ4BmxvZwgweDVkCmxvY2FsCDB4NTQIMHg3YQ5pc0VtcHR5BjB4NwgweDYzCDB4NDkIMHg2NBJfMHg2YjgwNWMIMHg3OQgweDdlEl8weDE2M2Q5OBJfMHgxOTdjNDcSXzB4M2ZiYWI4El8weDNkNjVlZBJfMHg1OTI2ZTAIMHgyYgYweGIIMHgyNAgweDE5CDB4NDQSXzB4MmM0MjNhEl8weDEwMDg4OQYweGQMd2luZG93EF8weDNjZjYwEl8weDI1ZTcxOBJfMHgyNGVjY2USXzB4MjEwOWMwEl8weDIyNGYwNxJfMHgzN2Y5YjASXzB4NTM3ZTA3CDB4NmMIMHg3NwgweDhhCDB4MzASXzB4MWRkN2FjEl8weDFmMzY5ZBJfMHgyYWM4ZjMSXzB4NGM3ZTcxEl8weDQzMGM5YxJfMHg0NWQwYzcSXzB4MTQ2YmQ0El8weDIxMmQyYxJfMHgzOTFiODUSXzB4NWQwNTVmEl8weDM0MjI1ZQIlBDAwCDB4ODMKc2xpY2UkZGVjb2RlVVJJQ29tcG9uZW50CDB4NzASXzB4NTBkMjUyEl8weDU3ZjI4OBJfMHg0NjlkMmYSXzB4MTNmNDM2El8weDNhZTFhYxJfMHgzOTgzNTYSXzB4NDM1MTc3El8weDIxZjdlMhJfMHg1MTJlYjQ
Line truncated
|
||||||
+621
@@ -0,0 +1,621 @@
|
|||||||
|
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(':');
|
||||||
|
const dan = 'https://api.bilibili.com/x/v1/dm/list.so?oid=' + cid;
|
||||||
|
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,
|
||||||
|
danmaku: dan,
|
||||||
|
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,
|
||||||
|
danmaku: dan,
|
||||||
|
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, '&');
|
||||||
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,618 @@
|
|||||||
|
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;
|
||||||
|
if (cookie.startsWith('http')) cookie = await request(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, '&');
|
||||||
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,618 @@
|
|||||||
|
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, '&');
|
||||||
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{Crypto,load,_}from"assets://js/lib/cat.js";let key="bilibili",url="",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":""}));return referer.content}async function init(cfg){siteKey=cfg.skey,siteType=cfg.stype,url=cfg.ext}async function home(filter){return(await request(url)).replaceAll("1$/$1","1$/$0")}async function homeVod(){return"{}"}async function category(tid,pg,filter,extend){pg<=0&&(pg=1);let api=url+"?t="+tid+"&pg="+pg;return extend&&(tid=Object.entries(extend).map(([key,val]=entry)=>"&"+key+"="+val),api=(api+=tid)+("&f="+encodeURIComponent(JSON.stringify(extend)))),request(api)}async function detail(id){return request(url+"?ids="+id)}async function play(flag,id,flags){return request(url.replace("/bilibili","/play")+"?bvid="+id+"&from=open")}async function search(wd,quick){return request(url+"?wd="+wd)}function __jsEvalReturn(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search}}export{__jsEvalReturn};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{Crypto,load,_}from"assets://js/lib/cat.js";let key="bilibili",url="",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":""}));return referer.content}async function init(cfg){siteKey=cfg.skey,siteType=cfg.stype,url=cfg.ext}async function home(filter){return(await request(url)).replaceAll("1$/$1","1$/$0")}async function homeVod(){return"{}"}async function category(tid,pg,filter,extend){pg<=0&&(pg=1);let api=url+"?t="+tid+"&pg="+pg;return extend&&(tid=Object.entries(extend).map(([key,val]=entry)=>"&"+key+"="+val),api=(api+=tid)+("&f="+encodeURIComponent(JSON.stringify(extend)))),request(api)}async function detail(id){return request(url+"?ids="+id)}async function play(flag,id,flags){return request(url.replace("/bilibili","/play")+"?bvid="+id+"&from=open")}async function search(wd,quick){return request(url+"?wd="+wd)}function __jsEvalReturn(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search}}export{__jsEvalReturn};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1C0ASBiaWxpbGl2ZV9vcGVuLmpzLGFzc2V0czovL2pzL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4CXw5zaXRlS2V5EHNpdGVUeXBlDGNvb2tpZQpsb2dpbgZ2aXAQYmlsaV9qY3QEVUEOcmVxdWVzdBRnZXRIZWFkZXJzEmdldENvb2tpZQhpbml0CGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxkZXRhaWwIcGxheQxzZWFyY2gUcmVtb3ZlVGFnc/IBTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzkxLjAuNDQ3Mi4xMTQgU2FmYXJpLzUzNy4zNgxyZXFVcmwEdWEMYnVmZmVyBnJlcwZyZXEMbWV0aG9kFFVzZXItQWdlbnQOaGVhZGVycw50aW1lb3V0DmNvbnRlbnQOaXNFbXB0eQxyZXN1bHQgc2V0Q29va2llSGVhZGVyczBodHRwczovL3d3dy5iaWxpYmlsaS5jb20Uc2V0LWNvb2tpZQZtYXAEa2sCOwZjZmcOY29va2llcwhza2V5CnN0eXBlBmV4dBxoYXNPd25Qcm9wZXJ0eRRzdGFydHNXaXRoCGh0dHAOZm9yRWFjaApwYXJzZVhodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL25hdghkYXRhDmlzTG9naW4SdmlwU3RhdHVzEGluY2x1ZGVzAj0MZmlsdGVyCGxpbmsOY2xhc3NlcxJmaWx0ZXJPYmoQc29ydE5hbWWqAWh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1pbnRlcmZhY2UvdjEvaW5kZXgvZ2V0V2ViQXJlYUxpc3Q/c291cmNlX2lkPTIIZWFjaAUfdTttDHNvcnRCeRJzdHJpbmdpZnkOZmlsdGVycwRpdBJmaWx0ZXJBbGwQdHlwZU5hbWUMdHlwZUlkFGZpbHRlckRhdGEIYXJlYRRhcmVhVmFsdWVzBGlkCHB1c2gOdHlwZV9pZBJ0eXBlX25hbWUIbGFuZApyYXRpbwhsaXN0BmtleQUGUjpTBWhR6JACbgJ2BGV4AmMOaW5kZXhPZghodG1sDHZpZGVvc6IBaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20vcm9vbS92MS9yb29tL2dldF91c2VyX3JlY29tbWVuZD9wYWdlPTEmcGFnZV9zaXplPTIwBnBpYxhzeXN0ZW1fY292ZXIELy8MaHR0cHM6DHJvb21pZAx2b2RfaWQKdGl0bGUQdm9kX25hbWUOdm9kX3BpYwU92EHcGHdhdGNoZWRfc2hvdxR0ZXh0X3NtYWxsCSAAIAA82JndCnVuYW1lFnZvZF9yZW1hcmtzBnRpZARwZwxleHRlbmTAAWh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1pbnRlcmZhY2UvdjEvc2Vjb25kL2dldExpc3Q/cGxhdGZvcm09d2ViJnBhcmVudF9hcmVhX2lkPRImYXJlYV9pZD0uJnNvcnRfdHlwZT1vbmxpbmUmcGFnZT0IcGFnZRBudW1QYWdlcxJwYWdlY291bnQQcGFnZXNpemUKbGltaXQUbnVtUmVzdWx0cwp0b3RhbBJkZXRhaWxVcmwUZGV0YWlsRGF0YQZyaWQWbGl2ZV9zdGF0dXMGdm9keGh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3Jvb20vdjEvUm9vbS9nZXRfaW5mbz9yb29tX2lkPQ5yb29tX2lkCwBfrWT2ZfSVGv8SbGl2ZV90aW1lDnJlcGxhY2UCLQIuBypnAF+tZBBrZXlmcmFtZSBwYXJlbnRfYXJlYV9uYW1lBC0tEmFyZWFfbmFtZRB2b2RfdHlwZQk/YvSV91Ma/wsAMFUASQBEABr/BnVpZAMAMBJ2b2RfYWN0b3IYdm9kX2RpcmVjdG9yFmRlc2NyaXB0aW9uFnZvZF9jb250ZW50CVOQf5UoV79+GnZvZF9wbGF5X2Zyb20/ZgBsAHYAv37vjZ9TO3UkAHAAbABhAHQAZgBvAHIAbQA9AHcAZQBiACYAcQB1AGEAbABpAHQAeQA9ADQAXwBBIwBmAGwAdgC/fu+N2JoFbiQAcABsAGEAdABmAG8AcgBtAD0AdwBlAGIAJgBxAHUAYQBsAGkAdAB5AD0AMwBfAD0jAGgANQC/fu+Nn1M7dSQAcABsAGEAdABmAG8AcgBtAD0AaAA1ACYAcQB1AGEAbABpAHQA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
Line truncated
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
import { _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'bookan';
|
||||||
|
let url = 'https://api.bookan.com.cn';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
return JSON.stringify({
|
||||||
|
class: [
|
||||||
|
{ type_id: '1305', type_name: '少年读物' },
|
||||||
|
{ type_id: '1304', type_name: '儿童文学' },
|
||||||
|
{ type_id: '1320', type_name: '国学经典' },
|
||||||
|
{ type_id: '1306', type_name: '文艺少年' },
|
||||||
|
{ type_id: '1309', type_name: '育儿心经' },
|
||||||
|
{ type_id: '1310', type_name: '心理哲学' },
|
||||||
|
{ type_id: '1307', type_name: '青春励志' },
|
||||||
|
{ type_id: '1312', type_name: '历史小说' },
|
||||||
|
{ type_id: '1303', type_name: '故事会' },
|
||||||
|
{ type_id: '1317', type_name: '音乐戏剧' },
|
||||||
|
{ type_id: '1319', type_name: '相声评书' },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
pg = pg || 1;
|
||||||
|
if (pg == 0) pg = 1;
|
||||||
|
let content = await request(`${url}/voice/book/list?instance_id=25304&page=${pg}&category_id=${tid}&num=24`);
|
||||||
|
let data = JSON.parse(content).data;
|
||||||
|
let books = [];
|
||||||
|
for (const book of data.list) {
|
||||||
|
books.push({
|
||||||
|
book_id: book.id,
|
||||||
|
book_name: book.name,
|
||||||
|
book_pic: book.cover,
|
||||||
|
book_remarks: book.extra.author,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: data.current_page,
|
||||||
|
pagecount: data.last_page,
|
||||||
|
limit: 24,
|
||||||
|
total: data.total,
|
||||||
|
list: books,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
let content = await request(`${url}/voice/album/units?album_id=${id}&page=1&num=200&order=1`);
|
||||||
|
let data = JSON.parse(content).data;
|
||||||
|
|
||||||
|
let book = {
|
||||||
|
book_id: id,
|
||||||
|
type_name: '',
|
||||||
|
book_year: '',
|
||||||
|
book_area: '',
|
||||||
|
book_remarks: '',
|
||||||
|
book_actor: '',
|
||||||
|
book_director: '',
|
||||||
|
book_content: '',
|
||||||
|
};
|
||||||
|
let us = _.map(data.list, function (b) {
|
||||||
|
return formatPlayUrl(b.title) + '$' + b.file;
|
||||||
|
}).join('#');
|
||||||
|
book.volumes = '书卷';
|
||||||
|
book.urls = us;
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [book],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatPlayUrl(name) {
|
||||||
|
return name
|
||||||
|
.trim()
|
||||||
|
.replace(/<|>|《|》/g, '')
|
||||||
|
.replace(/\$|#/g, ' ')
|
||||||
|
.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function proxy(segments, headers) {}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
pg = pg || 1;
|
||||||
|
if (pg == 0) pg = 1;
|
||||||
|
let content = await request(`https://es.bookan.com.cn/api/v3/voice/book?instanceId=25304&keyword=${wd}&pageNum=${pg}&limitNum=20`);
|
||||||
|
let data = JSON.parse(content).data;
|
||||||
|
let books = [];
|
||||||
|
for (const book of data.list) {
|
||||||
|
books.push({
|
||||||
|
book_id: book.id,
|
||||||
|
book_name: book.name,
|
||||||
|
book_pic: book.cover,
|
||||||
|
book_remarks: book.extra.author,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: data.current_page,
|
||||||
|
pagecount: data.last_page,
|
||||||
|
limit: 20,
|
||||||
|
total: data.total,
|
||||||
|
list: books,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
import { _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'bookkan';
|
||||||
|
let url = 'https://api.bookan.com.cn';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
return JSON.stringify({
|
||||||
|
class: [
|
||||||
|
{ type_id: '1305', type_name: '少年读物' },
|
||||||
|
{ type_id: '1304', type_name: '儿童文学' },
|
||||||
|
{ type_id: '1320', type_name: '国学经典' },
|
||||||
|
{ type_id: '1306', type_name: '文艺少年' },
|
||||||
|
{ type_id: '1309', type_name: '育儿心经' },
|
||||||
|
{ type_id: '1310', type_name: '心理哲学' },
|
||||||
|
{ type_id: '1307', type_name: '青春励志' },
|
||||||
|
{ type_id: '1312', type_name: '历史小说' },
|
||||||
|
{ type_id: '1303', type_name: '故事会' },
|
||||||
|
{ type_id: '1317', type_name: '音乐戏剧' },
|
||||||
|
{ type_id: '1319', type_name: '相声评书' },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
pg = pg || 1;
|
||||||
|
if (pg == 0) pg = 1;
|
||||||
|
let content = await request(`${url}/voice/book/list?instance_id=25304&page=${pg}&category_id=${tid}&num=24`);
|
||||||
|
let data = JSON.parse(content).data;
|
||||||
|
let books = [];
|
||||||
|
for (const book of data.list) {
|
||||||
|
books.push({
|
||||||
|
book_id: book.id,
|
||||||
|
book_name: book.name,
|
||||||
|
book_pic: book.cover,
|
||||||
|
book_remarks: book.extra.author,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: data.current_page,
|
||||||
|
pagecount: data.last_page,
|
||||||
|
limit: 24,
|
||||||
|
total: data.total,
|
||||||
|
list: books,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
let content = await request(`${url}/voice/album/units?album_id=${id}&page=1&num=200&order=1`);
|
||||||
|
let data = JSON.parse(content).data;
|
||||||
|
|
||||||
|
let book = {
|
||||||
|
book_id: id,
|
||||||
|
type_name: '',
|
||||||
|
book_year: '',
|
||||||
|
book_area: '',
|
||||||
|
book_remarks: '',
|
||||||
|
book_actor: '',
|
||||||
|
book_director: '',
|
||||||
|
book_content: '',
|
||||||
|
};
|
||||||
|
let us = _.map(data.list, function (b) {
|
||||||
|
return formatPlayUrl(b.title) + '$' + b.file;
|
||||||
|
}).join('#');
|
||||||
|
book.volumes = '书卷';
|
||||||
|
book.urls = us;
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [book],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatPlayUrl(name) {
|
||||||
|
return name
|
||||||
|
.trim()
|
||||||
|
.replace(/<|>|《|》/g, '')
|
||||||
|
.replace(/\$|#/g, ' ')
|
||||||
|
.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function proxy(segments, headers) {}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
pg = pg || 1;
|
||||||
|
if (pg == 0) pg = 1;
|
||||||
|
let content = await request(`https://es.bookan.com.cn/api/v3/voice/book?instanceId=25304&keyword=${wd}&pageNum=${pg}&limitNum=20`);
|
||||||
|
let data = JSON.parse(content).data;
|
||||||
|
let books = [];
|
||||||
|
for (const book of data.list) {
|
||||||
|
books.push({
|
||||||
|
book_id: book.id,
|
||||||
|
book_name: book.name,
|
||||||
|
book_pic: book.cover,
|
||||||
|
book_remarks: book.extra.author,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: data.current_page,
|
||||||
|
pagecount: data.last_page,
|
||||||
|
limit: 20,
|
||||||
|
total: data.total,
|
||||||
|
list: books,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,190 @@
|
|||||||
|
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
@@ -0,0 +1,61 @@
|
|||||||
|
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');
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CdCRpidWxlaV9vcGVuLmpzLGFzc2V0czovL2pzL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4MQ3J5cHRvCmRheWpzDGppbmphMgZVcmkCXxJfMHg1NDMxOGESXzB4M2RjOTBlDl8weDVhMzYOXzB4MTE5OBJfMHgzNmQ0MGQSXzB4MmIyN2U2El8weGVkYmZkYhJfMHg0OWYyZmISXzB4MjhkZjU2El8weDQ4NjRiMRJfMHgzMmNiMWQSXzB4MThhYjM5El8weDEyYTAyZhJfMHgzMzhmNjASXzB4MjNhODk1El8weDU2Nzk5NhJfMHgyZWIzYWESXzB4MjdhZTIyEl8weDIwYWI1NhJfMHg1YmQxZTMSXzB4MjRkZDY3El8weDU3ZGU5ORJfMHgzYTM4ZTESXzB4MjM3YWMxEl8weDI3NTZkMhJfMHgyZmEwMzYSXzB4YzI0MzY5El8weDVlYmU2YRJfMHg0YjI2NzUSXzB4NGFlZDQ3El8weDRmNmJhZhJfMHg1MWU0NzISXzB4MjgzMzUzEl8weDQ1ODllMxJfMHgzZDgyZDMSXzB4NGZkNjRiEl8weDUwOWNhMhJfMHg0NzMxMTASXzB4MzlmN2VmEl8weDM0NzE4MxJfMHgyMzc2MzUSXzB4NTdmMjc5El8weDFjZmZmNhJfMHg1OGMzYzgSXzB4NGNkN2MwEl8weDU0Y2M0MhJfMHgyYWIxMGMSXzB4MTcyZDUyEl8weDJiOWQ0NBJfMHgyZjllODQSXzB4MjhmOWJhEl8weDFlMDVhMRJfMHg0Y2E2YzQSXzB4M2M4OTZjEl8weDE1OWYxZhJfMHgxY2IwNTASXzB4MTk3OTcyEl8weDEyYjg4MBJfMHgyM2RmNmUSXzB4NzI0ZGFjEF8weDExZmJkEl8weDJmYTY1MBJfMHg0YjIzNjQSXzB4NTIzNmI3El8weDQ0YmZlNhJfMHgyNGMzNWUSXzB4Mjk1ZjA0El8weDUwNTE1NxJfMHg0ZWQzYWUSXzB4MjYzNjkzEl8weDVkYWUzZhJfMHgxOGExZDgSXzB4NGRmNWUzEl8weDE5ZWFiZRJfMHg1Y2Q0YjISXzB4NWQwMTM0El8weDRmZWY0ZhJfMHgzMmM1MTgSXzB4MTdkYTY5El8weDFlNDhkOBJfMHgzYWRmNDYSXzB4OGUzZWVjEl8weDMxZjg1ZBJfMHgxMmJiZWISXzB4NDczYTJkEl8weDQyZDYxZBJfMHgxY2NkMWYSXzB4MjJlMWMwEl8weDNmNGY1ZRJfMHgzNjc3ZTkSXzB4NTJhMDk3El8weDI0ZDJiMRJfMHgxZWEyNDYSXzB4MzQ3YmY0El8weDRkNDIzYRJfMHg0ZjhmMmMSXzB4M2UwNDE0El8weDlmMDFhNBJfMHg1N2UwYzISXzB4MmIyOTBhEl8weGM2YmRiYhJfMHg2MGZkMmQSXzB4MzQ1MzQ4El8weDMzOWY4OBJfMHg1MDBkZjgSXzB4M2NlZTJhEl8weDNmZWFhNBJfMHg1MWYyNGYSXzB4MzM4OGUyEl8weDMxM2Q0MxJfMHg1MTZhNmMSXzB4MTljNmFiEl8weDJkN2ZiNRJfMHhhMDVmODcSXzB4MjcwNWJhEl8weDQyMGYxNxJfMHgxNmY1YTYSXzB4MzE1YzYyEl8weGM1YzYwMxJfMHhjNDQ2ODESXzB4NDEyM2JhEl8weDI0ZTcwOBJfMHgxNzFhYTASXzB4M2E4NDM3El8weDJjMjA3ORJfMHg1ZTJlZGISXzB4Mzc1MDkyEl8weDExNDFjNhJfMHgyYTg4OTUSXzB4NTEwNGZhEl8weDUxOGQwZhJfMHgyYzg5ODUSXzB4NDBjNjIyEl8weDVjOGI3YxJfMHgzNTViMTUSXzB4MmM0MmRkEl8weDE2MWRiYxJfMHg0NWFlZTgSXzB4ZjE3NGViEl8weGRhZWZhMRJfMHg1MTlhZWESXzB4M2JkNTA3El8weDU1ZTg2YxJfMHg0MWY0ZTcSXzB4MTRmNjczEl8weDRkNDNiMhJfMHg0NmE3OGUSXzB4ODgwMzJmEl8weDNjNmJkMhBfMHg2M2ZiZhJfMHgyZWQxYWYSXzB4MWQ4ZmIwEl8weDFlOGQxOBJfMHgzMzkwMmESXzB4M2ZlZDM4El8weDQ5MjA0OBJfMHhlNDVkODQSXzB4MjIwNDZjEl8weDNlNzI4YxJfMHg0MmVkY2QSXzB4YzBiYmUxEl8weDUxOTc0MBJfMHg0OTNlMjYSXzB4MTllYTNjEl8weDVhNzhlYxJfMHg1YzI2YzASXzB4NDgzY2U2El8weGYzOWU4ORJfMHg0ZTVlNjQSXzB4NGNjY2U2El8weDI4NTdmYxJfMHg0MDNiZWESXzB4NDIwMGEzEl8weDUyOTc5ZhJfMHgzYjBlZDMIc2tleRRjaGFyQ29kZUF0EnRvdGFsX291dApuY29kZRBoYXZlZGljdAhIZ00zEGxvY2F0aW9uDmxlbmNvZGUOaGVhZGVycyZpbnZhbGlkIHdpbmRvdyBzaXplGHc3N0R2c085d3E5VhpmbGF0dGVuQ2h1bmtzEHZvZF9uYW1lCHB1c2gadm9kX3BsYXlfZnJvbQhsZW5zFHN0cmluZzJidWYgMDAwMDAwMDAwMDAwMDAwMAZtc2cISDZsUAgyUzVNOmludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrCGUwaEUsL2FwcHRvdjUvdjEvdXNlci9sb2dpbg5pbmRleE9mDG9oanZ3Uw5sZW5iaXRzKGluZmxhdGVTZXREaWN0aW9uYXJ5DHN1YnN0cghVdGY4FnRvTG93ZXJDYXNlFmdldF9wYXJzaW5nCGhlYWQMd2luZG93DmRpc3RkeW4IY2VpbAp0eXBlcxJmb3JtLWRhdGESZGF0YV90eXBlCm1vZGVsLGluY29ycmVjdCBsZW5ndGggY2hlY2sGMHg1CGxhc3QWcGxheWVyX2luZm8Kd25leHQebmVlZCBkaWN0aW9uYXJ5JGludmFsaWQgYmxvY2sgdHlwZQYkJCQSZXh0cmFfbGVuEnZvZF9hY3RvchRyZXBsYWNlQWxsOC9hcHB0b3Y1L3YxL3NlYXJjaC9saXN0cz93ZD0IT28mSBJhdmFpbF9vdXQKdXNlcjEKb3JkZXIMQllMVHVqJnJldHVybiAoZnVuY3Rpb24oKSAIaGNyYwhsYW5nEHN1YmFycmF5ZC9hcHB0b3Y1L3YxL3BhcnNpbmcvcHJveHk/X19wbGF0Zm9ybT1hbmRyb2lkJnNpZ249CGhvbGQIaHR0cBhmcm9tQ2hhckNvZGUURU5DUllQVElPTjB3N1YwV0NiQ2t5dkN2OE9oVlNaOWVNTzAIZWFjaAYweDMMZW5jb2RlEHZvZF95ZWFyCGF0b2IIZGF0ZQh3cmFwCHNhbmUMQmtHd3FZDGRlY29kZQhtb2RlCndzaXplGGluZmxhdGVSZXNldAZwd2QMJnBhZ2U9FHN0YXJ0c1dpdGgMZXh0ZW5kEGRpc3RiaXRzMmludmFsaWQgYml0IGxlbmd0aCByZXBlYXQSdHlwZV9uYW1lCHN0cm0OY29tbWVudAYweDAQbmV4dF9vdXQOdHlwZV9pZApzdGF0ZVh3NkRDa1dRVERjS2ZjY082dzdQQ3RnN0Ruc0tYd3A3Q3RzTzB3N1hDZ2NPawxvZmZzZXQoaW5jb21wYXRpYmxlIHZlcnNpb244aW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwhkbWF4CGhpdHM8L2FwcHRvdjUvdjEvdm9kL2xpc3RzP3R5cGVfaWQ9CHBhZ2UUdXNlci1hZ2VudBBwbGF5X3VybAhjNXNMCnBhcnNlCm9uRW5kCHRleHRARGFsdmlrLzIuMS4wIChMaW51eDsgVTsgQW5kcm9pZCAsaW5jb3JyZWN0IGhlYWRlciBjaGVjawpuZGlzdA5uZXh0X2luDGFzc2lnbgx5WlNES1UMeGZsYWdzEGF2YWlsX2luCG1vbGQYYnVmZmVyIGVycm9yCmV4dHJhDmlzRW1wdHkkbXVzdCBiZSBub24tb2JqZWN0EnN0cmluZ2lmeQx2YVJNY0UGdXJsDHZLbFF2Vgh3b3JrDHJhbmRvbUZ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scxp2b2RfcGxheV9saXN0CndiaXRzFnRvVXBwZXJDYXNlBjB4NBB0b3RhbF9pbgphZGxlchBwYWdlU2l6ZTQvYXBwdG92NS92MS92b2QvZ2V0Vm9kP2lkPRZ2b2RfY29udGVudAxsZW5keW4OaW5mbGF0ZQp3aGF2ZQ5yZWZlcmVyDHZvZF9pZAh0cmltDG9uRGF0YRJjaHVua1NpemUGd2FzCmNoZWNrCnRvdGFsCnRpdGxlCmVuZGVkCGNhbGwyP19fcGxhdGZvcm09YW5kcm9pZCZzaWduPQhkYXRhDnZvZF9zdWIITilubCppbnZhbGlkIGRpc3RhbmNlcyBzZXQMQmFzZTY0BjB4MghoYXZlDGNoYXJBdAh5ZWFyCHBvc3RIaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrCGJhY2tAe30uY29uc3RydWN0b3IoInJldHVybiB0aGlzIikoICkGa2V5FHV0Zjhib3JkZXIgaW5mbGF0ZUdldEhlYWRlchB2b2RfYXJlYQZtYXA2aW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0CmJ1bGVpHGhhc093blByb3BlcnR5DHJlc3VsdBRidWYyc3RyaW5nBmVuYxh2b2RfZGlyZWN0b3I4L2FwcHRvdjUvdjEvdXNlci9nZXRVc2VySW5mbwhubGVuDG91dHB1dAhzaWduEnZvZF9jbGFzcwhrZXlzWHc0QWxlOEttRmNPb0FzS09Gc09tYnNPWHc0TER
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1BNEGNhaWppLmpzLGFzc2V0czovL2pzL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4CXw5zaXRlS2V5EHNpdGVUeXBlBFVBDmJhc2VVcmwUY2F0ZWdvcmllcwhpbml0EmdldEhlYWRlchJnZXRTdHJpbmcIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFpbAhwbGF5DHNlYXJjaN4BTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwOS4wLjAuMCBTYWZhcmkvNTM3LjM2BmNmZwhza2V5CnN0eXBlBmV4dAZ1cmwMaGVhZGVyFFVzZXItQWdlbnQGcmVzBnJlcQ5oZWFkZXJzDmNvbnRlbnQMZmlsdGVyDHJlcVVybA5qc29uU3RyCGRhdGEWY2xhc3Nlc3NBcnIOY2xhc3NlcxJmaWx0ZXJPYmoGb25lCnBhcnNlDmlzRW1wdHkQaW5jbHVkZXMSdHlwZV9uYW1lCHB1c2gOdHlwZV9pZBJzdHJpbmdpZnkOZmlsdGVycwR7fQZ0aWQEcGcMZXh0ZW5kDHZpZGVvcyA/YWM9dmlkZW9saXN0JnQ9CCZwZz0IbGlzdAx2b2RfaWQQdm9kX25hbWUOdm9kX3BpYxZ2b2RfcmVtYXJrcxBwYXJzZUludAhwYWdlEnBhZ2Vjb3VudApsaW1pdAp0b3RhbARpZAZ2b2QkP2FjPXZpZGVvbGlzdCZpZHM9EHZvZF95ZWFyEHZvZF9hcmVhEnZvZF9hY3Rvchh2b2RfZGlyZWN0b3IWdm9kX2NvbnRlbnQadm9kX3BsYXlfZnJvbRh2b2RfcGxheV91cmwIZmxhZwR3ZApxdWljaxw/YWM9ZGV0YWlsJndkPQ+kAwGmAwEAD6gDAAEAqgMADgAGAaABAAAAARAKSwCqAwAMrAMACa4DAQmwAwIJsgMDCbQDBAm2AwUBuAMGAboDBwG8AwgBvgMJAcADCgHCAwsBxAMMAcYDDQGoAw4BCOg0vgBfBgC+AV8HAL4CXwgAvgNfCQC+BF8KAL4FXwsAvgZfDAC+B18NAL4IXw4AvglfDwApv+Cz4QTkAAAA4r9fBAAmAABfBQAppAMBDAEA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
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1BNEGNhaWppLmpzLGFzc2V0czovL2pzL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4CXw5zaXRlS2V5EHNpdGVUeXBlBFVBDmJhc2VVcmwUY2F0ZWdvcmllcwhpbml0EmdldEhlYWRlchJnZXRTdHJpbmcIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFpbAhwbGF5DHNlYXJjaN4BTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwOS4wLjAuMCBTYWZhcmkvNTM3LjM2BmNmZwhza2V5CnN0eXBlBmV4dAZ1cmwMaGVhZGVyFFVzZXItQWdlbnQGcmVzBnJlcQ5oZWFkZXJzDmNvbnRlbnQMZmlsdGVyDHJlcVVybA5qc29uU3RyCGRhdGEWY2xhc3Nlc3NBcnIOY2xhc3NlcxJmaWx0ZXJPYmoGb25lCnBhcnNlDmlzRW1wdHkQaW5jbHVkZXMSdHlwZV9uYW1lCHB1c2gOdHlwZV9pZBJzdHJpbmdpZnkOZmlsdGVycwR7fQZ0aWQEcGcMZXh0ZW5kDHZpZGVvcyA/YWM9dmlkZW9saXN0JnQ9CCZwZz0IbGlzdAx2b2RfaWQQdm9kX25hbWUOdm9kX3BpYxZ2b2RfcmVtYXJrcxBwYXJzZUludAhwYWdlEnBhZ2Vjb3VudApsaW1pdAp0b3RhbARpZAZ2b2QkP2FjPXZpZGVvbGlzdCZpZHM9EHZvZF95ZWFyEHZvZF9hcmVhEnZvZF9hY3Rvchh2b2RfZGlyZWN0b3IWdm9kX2NvbnRlbnQadm9kX3BsYXlfZnJvbRh2b2RfcGxheV91cmwIZmxhZwR3ZApxdWljaxw/YWM9ZGV0YWlsJndkPQ+kAwGmAwEAD6gDAAEAqgMADgAGAaABAAAAARAKSwCqAwAMrAMACa4DAQmwAwIJsgMDCbQDBAm2AwUBuAMGAboDBwG8AwgBvgMJAcADCgHCAwsBxAMMAcYDDQGoAw4BCOg0vgBfBgC+AV8HAL4CXwgAvgNfCQC+BF8KAL4FXwsAvgZfDAC+B18NAL4IXw4AvglfDwApv+Cz4QTkAAAA4r9fBAAmAABfBQAppAMBDAEANgYNDSEXAAaoAg5iBgG2AwEAAQIEAGMBygMAAQCsAwEIrgMCCLIDBAi0AwUIz0HmAAAAEWYAAA7PQecAAAARZgEADs9B6AAAAJcESAAAAKnoDs9B6AAAABFmAgAO6jDPQegAAACXBEkAAACp6CHPQegAAABB6QAAABFmAgAOz0HoAAAAQdoAAAARZgMADgYupAMJCAM6Ok46WFNUDkMGAbgDAAEAAwEAFgHUAwEAILADAwhhAAALx2IAAATrAAAAcWUAAEliAAAopAMUAxINRA5iBgG6AwEBAQQBAB0C0gMAAQDYAwEAILgDBwBhAAA47QAAAM8L2+xM7gAAAO6Lx2IAAEHvAAAALqQDGgQSJiYSDmIGAbwDAQcBBwQA5QEI4AMAAQDiAwEAMOQDAQEw5gMBAjDoAwEDMOoDAQQg7AMBBSDuAwIGILIDBAi6AwgAqgMADLQDBQhhBQBhBABhAwBhAgBhAQBhAABlAADH3GIAAO2LyDiYAAAAQvgAAABiAQAkAQDJYgIAQR4AAADKJgAAwQQLwQVhBgBiAwB96nnBBmUCAEL5AAAAZQMAJAEAlug/ZQMAQvoAAABiBgBB+wAAACQBAOhRYgQAQvwAAAALYgYAQf0AAABM/QAAAGIGAEH7AAAATPsAAAAkAQAO6ihiBABC/AAAAAtiBgBB/QAAAEz9AAAAYgYAQfsAAABM+wAAACQBAA6AAOiFDoM4mAAAAEL+AAAAC2IEAEweAAAAYgUATP8AAAAkAQAupAMiEV0XJlgwHBI6WGzHDcchOisrDmIGAb4DAAAAAQAABgAEAAEAAC6kAzgBAw5iBgHAAwQFBAcCAPUBCYIEAAEAhAQAAQDgAwABAIYEAAEA4gMBADDkAwEBMOYDAQIwiAQBAyDuAwMEILIDBAi6AwgAYQMAYQIAYQEAYQAA0DhFAAAAqRHpBQ7Qs6ToA7TUZQAABAUBAACdz50EBgEAAJ3QncfcYgAA7YvIOJgAAABC+AAAAGIBACQBAMkmAADKYQQAYgIAQQcBAAB96kTBBGIDAEL8AAAAC2IEAEEIAQAATAgBAABiBABBCQEAAEwJAQAAYgQAQQoBAABMCgEAAGIEAEELAQAATAsBAAAkAQAOgADoug6DOJgAAABC/gAAAAs4DAEAANDtTA0BAABiAgBBDgEAAEwOAQAAOAwBAABiAgBBDwEAAO1MDwEAAGICAEEQAQAATBABAABiAwBMBwEAACQBAC6kAz0UP11nJlgXUzBEREREFyM6P0RiRCsOYgYBwgMBBQEEAwCcAgaiBAABAOIDAQAw5AMBATDmAwECMO4DAQMwpAQBBCCyAwQIugMIAKoDAAxhBABhAwBhAgBhAQBhAABlAAAEEwEAAJ3PncfcYgAA7YvIOJgAAABC+AAAAGIBACQBAMliAgBBBwEAALNHymUCAEL5AAAAYgMAJAEA6AcEAAEAAC4LYgMAQQgBAABMCAEAAGIDAEEJAQAATAkBAABiAwBB+wAAAEz7AAAAYgMAQQoBAABMCgEAAGIDAEEUAQAATBQBAABiAwBBFQEAAEwVAQAAYgMAQRYBAAAR6QMOv0wWAQAAYgMAQRcBAAAR6QMOv0wXAQAAYgMAQQsBAAAR6QMOv0wLAQAAYgMAQRgBAABMGAEAAGIDAEEZAQAATBkBAABiAwBBGgEAAEwaAQAAwQQ4mAAAAEL+AAAAC2IEACYBAEwHAQAAJAEALqQDVhhOPyZYOlMcCAhERERERERdXV1EREQOOjoOYgYBxAMDAAMEAAAbA7YEAAEAogQAAQDaAQABADiYAAAAQv4AAAALs0z4AAAA0EzpAAAAJAEALqQDcwQDOiEhDmIGAcYDAwUDBwIA3AEIuAQAAQC6BAABAIQEAAEA4gMBADDkAwEBMOYDAQIwiAQBAyCkBAMEMLIDBAi6AwgAYQMAYQIAYQEAYQAA0ThFAAAAqRHpBQ7Rs6ToA7TVZQAABB4BAACdz50EBgEAAJ3RncfcYgAA7YvIOJgAAABC+AAAAGIBACQBAMkmAADKYQQAYgIAQQcBAAB96kTBBGIDAEL8AAAAC2IEAEEIAQAATAgBAABiBABBCQEAAEwJAQAAYgQAQQoBAABMCgEAAGIEAEELAQAATAsBAAAkAQAOgADoug6DOJgAAABC/gAAAAs4DAEAAGICAEENAQAA7UwNAQAAYgIAQQ4BAABMDgEAAGIDAEwHAQAAJAEALqQDexI/XWcmWBdTMEREREQXIjpiRCsOQwYBqAMAAAACBwAyALYDBgC8AwkAvgMKAMADCwDCAwwAxAMNAMYDDgAL20zbAAAA3EzeAAAA3UzfAAAA3kzgAAAAXgQATOEAAABeBQBM4gAAAF4GAEzjAAAAKKQDkQEJAwghISEhKysr
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1BMEGNhaWppLmpzGC4vbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgJfDnNpdGVLZXkQc2l0ZVR5cGUEVUEOYmFzZVVybAhpbml0EmdldEhlYWRlchJnZXRTdHJpbmcIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFpbAhwbGF5DHNlYXJjaN4BTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwOS4wLjAuMCBTYWZhcmkvNTM3LjM2BmNmZwhza2V5CnN0eXBlBmV4dAxoZWFkZXIUVXNlci1BZ2VudAZ1cmwGcmVzBnJlcQ5oZWFkZXJzDmNvbnRlbnQMZmlsdGVyDHJlcVVybA5qc29uU3RyCGRhdGEWY2xhc3Nlc3NBcnIOY2xhc3NlcxJmaWx0ZXJPYmoGb25lCnBhcnNlEHR5cGVfcGlkCHB1c2gOdHlwZV9pZBJ0eXBlX25hbWUSc3RyaW5naWZ5DmZpbHRlcnMEe30GdGlkBHBnDGV4dGVuZAx2aWRlb3MgP2FjPXZpZGVvbGlzdCZ0PQgmcGc9CGxpc3QMdm9kX2lkEHZvZF9uYW1lDnZvZF9waWMWdm9kX3JlbWFya3MQcGFyc2VJbnQIcGFnZRJwYWdlY291bnQKbGltaXQKdG90YWwEaWQGdm9kJD9hYz12aWRlb2xpc3QmaWRzPQ5pc0VtcHR5EHZvZF95ZWFyEHZvZF9hcmVhEnZvZF9hY3Rvchh2b2RfZGlyZWN0b3IWdm9kX2NvbnRlbnQadm9kX3BsYXlfZnJvbRh2b2RfcGxheV91cmwIZmxhZwR3ZApxdWljaxw/YWM9ZGV0YWlsJndkPQ+kAwGmAwEADqgDAAEAqgMADgAGAaABAAAAAQ8KRQCqAwAMrAMACa4DAQmwAwIJsgMDCbQDBAG2AwUBuAMGAboDBwG8AwgBvgMJAcADCgHCAwsBxAMMAagDDQEI6DS+AF8FAL4BXwYAvgJfBwC+A18IAL4EXwkAvgVfCgC+Bl8LAL4HXwwAvghfDQC+CV8OACm/4LPhBOMAAADiv18EACmkAwELAQA2Bg0NIQAElgIOYgYBtAMBAAECAwAjAcgDAAEArAMB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
|
||||||
+109
@@ -0,0 +1,109 @@
|
|||||||
|
// 无搜索功能
|
||||||
|
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,
|
||||||
|
}
|
||||||
|
}
|
||||||
+1227
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,967 @@
|
|||||||
|
{
|
||||||
|
"video": {
|
||||||
|
"sites": [
|
||||||
|
{
|
||||||
|
"key": "91av",
|
||||||
|
"name": "🟡乐享汇fans丨九一",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://91av.cyou/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "91md",
|
||||||
|
"name": "🟡乐享汇fans丨九麻",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://91md.me/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "madou",
|
||||||
|
"name": "🟡乐享汇fans丨麻豆",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://wuxu.cc/api.php/provide/vod/from/mdm3u8/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "tianmei",
|
||||||
|
"name": "🟡乐享汇fans丨天美①",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://www.tianmei.pw/api.php/provide/vod/from/m3u8/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "tmyy",
|
||||||
|
"name": "🟡乐享汇fans丨天美②",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://tmyy.cc/api.php/provide/vod/from/m3u8/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "madouse",
|
||||||
|
"name": "🟡乐享汇fans丨果冻",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://madouse.cc/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "chujia",
|
||||||
|
"name": "🟡乐享汇fans丨精东",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://chujia.cc/api.php/provide/vod/from/m3u8/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "qqcm",
|
||||||
|
"name": "🟡乐享汇fans丨传媒",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://qqcm.sbs/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "shayuapi",
|
||||||
|
"name": "🟡乐享汇fans丨鲨鱼",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://shayuapi.com/api.php/provide/vod/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apilyzy",
|
||||||
|
"name": "🟡乐享汇fans丨老鸭",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.apilyzy.com/api.php/provide/vod/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "sewozy",
|
||||||
|
"name": "🟡乐享汇fans丨涩窝",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://sewozyapi.com/api.php/provide/vod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "lajiao",
|
||||||
|
"name": "🟡乐享汇fans丨辣椒",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://apilj.com/api.php/provide/vod/at/json/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "xiaocao",
|
||||||
|
"name": "🟡乐享汇fans丨小草",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.caoliuzyw.com/api.php/provide/vod"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apiyikanapi",
|
||||||
|
"name": "🟡乐享汇fans丨易看",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.yikanapi.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "zy018",
|
||||||
|
"name": "🟡乐享汇fans丨十八",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.zy018.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "9szy",
|
||||||
|
"name": "🟡乐享汇fans丨九色",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://9szy.net/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apibukazyw",
|
||||||
|
"name": "🟡乐享汇fans丨不卡",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.bukazyw.fun/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "kuaiavzy",
|
||||||
|
"name": "🟡乐享汇fans丨快爱",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://kuaiavzy.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apivodkok2",
|
||||||
|
"name": "🟡乐享汇fans丨KOK2",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.vodkok2.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "api.maozyapi.com",
|
||||||
|
"name": "🟡乐享汇fans丨猫咪",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.maozyapi.com/inc/apijson_vod.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "siwazywtw",
|
||||||
|
"name": "🟡乐享汇fans丨袜丝①",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.siwazyw.tv/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "siwa",
|
||||||
|
"name": "🟡乐享汇fans丨丝袜②",
|
||||||
|
"api": "caiji.js",
|
||||||
|
"type": 3,
|
||||||
|
"ext": "https://haiwai.siwazyw.org/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "semao",
|
||||||
|
"name": "🟡乐享汇fans丨色猫",
|
||||||
|
"api": "caiji.js",
|
||||||
|
"type": 3,
|
||||||
|
"ext": "https://caiji.semaozy.net/inc/apijson_vod.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "198211",
|
||||||
|
"name": "🟡乐享汇fans丨花色",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://198.211.49.156/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "putaozyw",
|
||||||
|
"name": "🟡乐享汇fans丨葡萄",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://caiji.putaozyw.net/inc/apijson_vod.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apiddapi",
|
||||||
|
"name": "🟡乐享汇fans丨滴滴",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.ddapi.cc/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apixbapi",
|
||||||
|
"name": "🟡乐享汇fans丨雪豹",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.xbapi.cc/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apiyirenziyuan",
|
||||||
|
"name": "🟡乐享汇fans丨依人",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.yirenziyuan.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "kaiyunzy4",
|
||||||
|
"name": "🟡乐享汇fans丨开云",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://kaiyunzy5.com/inc/apijson_vod.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "seyavod",
|
||||||
|
"name": "🟡乐享汇fans丨色鸭",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.seyavod.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "jizhiapi",
|
||||||
|
"name": "🟡乐享汇fans丨极致",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://jizhiapi.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "timizy10",
|
||||||
|
"name": "🟡乐享汇fans丨甜蜜",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://timizy10.cc/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "naixxzy",
|
||||||
|
"name": "🟡乐享汇fans丨奶香",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://naixxzy.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "aosikazy",
|
||||||
|
"name": "🟡乐享汇fans丨奥斯",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://aosikazy.com/api.php/provide/vod/?ac=list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "sexnguon",
|
||||||
|
"name": "🟡乐享汇fans丨色南",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.sexnguon.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "156249",
|
||||||
|
"name": "🟡乐享汇fans丨蛋蛋",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://156.249.29.8/inc/apijson_vod.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "kkzy",
|
||||||
|
"name": "🟡乐享汇fans丨写真",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://kkzy.me/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apig14o",
|
||||||
|
"name": "🟡乐享汇fans丨萝莉",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://api.g14o.cc/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "bominzy",
|
||||||
|
"name": "🟡乐享汇fans丨博民",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.bominzy.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "155api",
|
||||||
|
"name": "🟡乐享汇fans丨十五",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://155api.com/api.php/provide/vod/?ac=list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "avre00",
|
||||||
|
"name": "🟡乐享汇fans丨黄瓜",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.avre00.com/api.php/provide/vod/?ac=list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "mtav",
|
||||||
|
"name": "🟡乐享汇fans丨桃桃",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://mtav.art/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "888dav.com",
|
||||||
|
"name": "🟡乐享汇fans丨八八",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.888dav.com/api.php/provide/vod/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apittzy.com",
|
||||||
|
"name": "🟡乐享汇fans丨天天",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://apittzy.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "8day",
|
||||||
|
"name": "🟡乐享汇fans丨八天",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://8day.icu/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "5bo1",
|
||||||
|
"name": "🟡乐享汇fans丨五播",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://5bo1.xyz/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "92free",
|
||||||
|
"name": "🟡乐享汇fans丨久爱",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://92free.icu/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "tmav",
|
||||||
|
"name": "🟡乐享汇fans丨美亚",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://tmav.art/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "sezy",
|
||||||
|
"name": "🟡乐享汇fans丨色网",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://sezy.website/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "xxavs",
|
||||||
|
"name": "🟡乐享汇fans丨湿园",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://xxavs.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "auezy",
|
||||||
|
"name": "🟡乐享汇fans丨优异",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://a.uezy.pw/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "hongxiuzy",
|
||||||
|
"name": "🟡乐享汇fans丨红袖",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://hongxiuzy.com/api.php/provide/vod/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apilsbzy1",
|
||||||
|
"name": "🟡乐享汇fans丨色逼",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://apilsbzy1.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toto-long",
|
||||||
|
"name": "🟡乐享汇fans丨橘猫",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://to.to-long.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "huangpian",
|
||||||
|
"name": "🟡乐享汇fans丨黄片",
|
||||||
|
"api": "caiji.js",
|
||||||
|
"type": 3,
|
||||||
|
"ext": "https://www.pgxdy.com/api/json.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apittzy",
|
||||||
|
"name": "🟡乐享汇fans丨探探",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://apittzy.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "huakuiapi",
|
||||||
|
"name": "🟡乐享汇fans丨花魁",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://caiji.huakuiapi.com/inc/apijson_vod.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "hghhh",
|
||||||
|
"name": "🟡乐享汇fans丨皇冠",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://hghhh.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "slapibf",
|
||||||
|
"name": "🟡乐享汇fans丨森林",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://slapibf.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "apiyutu",
|
||||||
|
"name": "🟡乐享汇fans丨玉兔",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://apiyutu.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "hszy",
|
||||||
|
"name": "🟡乐享汇fans丨黄色",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://hszy.me/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "haopianapi",
|
||||||
|
"name": "🟡乐享汇fans丨好片",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://haopianapi.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ziyuan",
|
||||||
|
"name": "🟡乐享汇fans丨湿裤",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://ziyuan.skm3u8.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "jkunzyapi",
|
||||||
|
"name": "🟡乐享汇fans丨鸡坤",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://jkunzyapi.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "10042",
|
||||||
|
"name": "🟡乐享汇fans丨马厂",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://100.42.227.80/api/macs.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "888dav",
|
||||||
|
"name": "🟡乐享汇fans丨抖阴",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.888dav.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "msnii",
|
||||||
|
"name": "🟡乐享汇fans丨美女",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.msnii.com/api/json.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "xrbsp",
|
||||||
|
"name": "🟡乐享汇fans丨淫水",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.xrbsp.com/api/json.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "gdlsp",
|
||||||
|
"name": "🟡乐享汇fans丨香奶",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.gdlsp.com/api/json.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "kxgav",
|
||||||
|
"name": "🟡乐享汇fans丨白嫖",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.kxgav.com/api/json.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "afasu",
|
||||||
|
"name": "🟡乐享汇fans丨湿妹",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://www.afasu.com/api/json.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "dadiapi",
|
||||||
|
"name": "🟡乐享汇fans丨大地",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://dadiapi.com/api.php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "lbapi9",
|
||||||
|
"name": "🟡乐享汇fans丨乐播",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "https://lbapi9.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fhapi9",
|
||||||
|
"name": "🟡乐享汇fans丨番号",
|
||||||
|
"type": 3,
|
||||||
|
"api": "caiji.js",
|
||||||
|
"ext": "http://fhapi9.com/api.php/provide/vod/at/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "mtsp",
|
||||||
|
"name": "🟡乐享汇fans丨蜜桃",
|
||||||
|
"type": 3,
|
||||||
|
"api": "mtsp_open.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "18av",
|
||||||
|
"name": "🟡乐享汇fans丨18AV",
|
||||||
|
"type": 3,
|
||||||
|
"api": "18av_open.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"read": {
|
||||||
|
"sites": [
|
||||||
|
{
|
||||||
|
"key": "bookan",
|
||||||
|
"name": "🎧乐享汇fans丨博看",
|
||||||
|
"type": 10,
|
||||||
|
"api": "bookan_open.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "lbgs",
|
||||||
|
"name": "🎧乐享汇fans丨老白",
|
||||||
|
"type": 10,
|
||||||
|
"api": "lbgs_open.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "230ts_book",
|
||||||
|
"name": "🎧乐享汇fans丨艾尚①",
|
||||||
|
"type": 10,
|
||||||
|
"api": "230ts_book_open.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "230ts",
|
||||||
|
"name": "🎧乐享汇fans丨艾尚②",
|
||||||
|
"type": 3,
|
||||||
|
"api": "230ts_open.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pan": {
|
||||||
|
"sites": [
|
||||||
|
{
|
||||||
|
"key": "alist",
|
||||||
|
"name": "乐享汇fans云盘大全",
|
||||||
|
"type": 40,
|
||||||
|
"api": "alist_open.js",
|
||||||
|
"ext": [
|
||||||
|
{
|
||||||
|
"name": "🟢丫仙女",
|
||||||
|
"server": "http://alist.xiaoya.pro/",
|
||||||
|
"startPage": "/",
|
||||||
|
"showAll": false,
|
||||||
|
"search": true,
|
||||||
|
"headers": {
|
||||||
|
"Authorization": ""
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"/abc": {
|
||||||
|
"password": "123"
|
||||||
|
},
|
||||||
|
"/abc/abc": {
|
||||||
|
"password": "123"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢正奕合集",
|
||||||
|
"server": "http://www.jczyl.top:2115/"
|
||||||
|
},
|
||||||
|
{"name":"🟢小雅搜","server":"http://198.211.29.109:5678/"},
|
||||||
|
{"name":"🟢小丫搜","server":"http://3.37.123.38:5678/"},
|
||||||
|
{
|
||||||
|
"name": "🟢东哥",
|
||||||
|
"server": "http://101.34.67.237:5244/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢美云",
|
||||||
|
"server": "http://xiaoya.nebula-nas.space:5678/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小新盘",
|
||||||
|
"server": "https://pan.cdnxin.top/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢白云tv",
|
||||||
|
"server": "http://breadmyth.asuscomm.com:22222/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小雅分类",
|
||||||
|
"server": "http://www.jczyl.top:5344/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢瑶瑶",
|
||||||
|
"server": "https://lyly.run.goorm.io/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢潇洒个人",
|
||||||
|
"server": "https://alist.azad.asia/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢鹏程",
|
||||||
|
"server": "https://pan.pengcheng.team/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小丫",
|
||||||
|
"server": "http://alist.xiaoya.pro/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢触光",
|
||||||
|
"server": "https://pan.ichuguang.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢星梦",
|
||||||
|
"server": "https://pan.bashroot.top"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢弱水分享",
|
||||||
|
"server": "http://shicheng.wang:555/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢神器云",
|
||||||
|
"server": "https://alist.ygxz.xyz/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢资源站",
|
||||||
|
"server": "https://pan.ecve.cn/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢雨呢",
|
||||||
|
"server": "https://pan.clun.top/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢学习",
|
||||||
|
"server": "http://45.85.77.23:5244/"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "🟢酷呵盘",
|
||||||
|
"server": "https://pan.kuhehe.top/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢分享者",
|
||||||
|
"server": "http://223.166.103.170:5244/"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "🟢目瞪口呆",
|
||||||
|
"server": "https://pan.mdgd.cc/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小陈",
|
||||||
|
"server": "https://pan.oldming.top/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢动漫盘",
|
||||||
|
"server": "http://pan.smjc.cc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢神秘小盘",
|
||||||
|
"server": "https://yun.llzz.top/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "🟢神奇云",
|
||||||
|
"server" : "https://al.chirmyram.com/"
|
||||||
|
|
||||||
|
},
|
||||||
|
{"name":"🟢个人站1","server":"http://223.166.240.80:5244/"},
|
||||||
|
{"name":"🟢个人站2","server":"http://223.166.240.214:5244/"},
|
||||||
|
{"name":"🟢个人站3","server":"http://223.166.201.129:5244/"},
|
||||||
|
{"name":"🟢个人站4","server":"http://223.166.245.122:5244/"},
|
||||||
|
{"name":"🟢个人站5","server":"http://223.166.31.107:5244/"},
|
||||||
|
{
|
||||||
|
"name": "🟢SODAZ1",
|
||||||
|
"server": "https://pan.sodaz.xyz/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢ccaa",
|
||||||
|
"server": "http://69.161.221.160:5244/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢姹莱坞",
|
||||||
|
"server": "https://alist.agczsz.top/",
|
||||||
|
"passwd": "agree"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢杜比",
|
||||||
|
"server": "https://dubi.tk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢一只鱼",
|
||||||
|
"server": "https://alist.youte.ml"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢神族九帝",
|
||||||
|
"server": "https://alist.shenzjd.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢老谭",
|
||||||
|
"server": "https://pan.cqtjy.cn/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢皓星繁天",
|
||||||
|
"server": "https://pan.hxft.xyz/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "🟢迅维云盘",
|
||||||
|
"server" : "https://pan.xwbeta.com"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "🟢姬路白雪",
|
||||||
|
"server" : "https://pan.jlbx.xyz"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢肥灿",
|
||||||
|
"server": "http://43.200.153.107:55609/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢悦享盘",
|
||||||
|
"server": "https://pity.eu.org/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小雅备用",
|
||||||
|
"server": "http://119.91.79.148:5678/🈴我的阿里分享"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小丫云",
|
||||||
|
"server": "http://1.14.19.228:5678/"
|
||||||
|
},
|
||||||
|
{"name": "🟢梓凌妙妙",
|
||||||
|
"server": "https://zi0.cc/"},
|
||||||
|
{"name": "🟢微资·随意盘",
|
||||||
|
"server": "https://apps.weixinqqq.com/"},
|
||||||
|
{
|
||||||
|
"name": "🟢小丫分类备用",
|
||||||
|
"server": "http://123.60.191.158:5678/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小雅云",
|
||||||
|
"server": "https://xiaoya.whp.lat/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢ecve资源",
|
||||||
|
"server": "https://pan.ecve.cn/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢潇洒备用",
|
||||||
|
"server": "http://www.azad.asia:5244/"
|
||||||
|
},
|
||||||
|
{"name":"🟡ASMR语音","server":"https://www.asmrgay.com/"},
|
||||||
|
{"name":"🟡大人盘","server": "https://hka.252798.xyz:1443/"},
|
||||||
|
{"name":"🟡木偶","server":"https://abnormalize.icu/"},
|
||||||
|
{
|
||||||
|
"name": "🟡A大杂物库",
|
||||||
|
"server": "https://alist.qyide.com/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟡诸神小盘",
|
||||||
|
"server": "https://pan.zsxg.top/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟡福利盘",
|
||||||
|
"server": "http://69.161.221.160:5244/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟡罗汉果盘",
|
||||||
|
"server": "https://lala-ofbip.run.goorm.site/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟡爱豆福利",
|
||||||
|
"server": "https://alist.eduedu.eu.org/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟡涛涛收藏",
|
||||||
|
"server": "https://alist.eduedu.eu.org/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢正奕合集",
|
||||||
|
"server": "http://www.jczyl.top:5244/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢东哥",
|
||||||
|
"server": "http://101.34.67.237:5244/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢美云",
|
||||||
|
"server": "https://h.dfjx.ltd/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小新盘",
|
||||||
|
"server": "https://pan.cdnxin.top/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢白云tv",
|
||||||
|
"server": "http://breadmyth.asuscomm.com:22222/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小雅分类",
|
||||||
|
"server": "http://www.214728327.xyz:5207/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢瑶瑶",
|
||||||
|
"server": "https://lyly.run.goorm.io/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢潇洒个人",
|
||||||
|
"server": "https://alist.azad.asia/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢鹏程",
|
||||||
|
"server": "https://pan.pengcheng.team/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小丫",
|
||||||
|
"server": "http://alist.xiaoya.pro/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢触光",
|
||||||
|
"server": "https://pan.ichuguang.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢星梦",
|
||||||
|
"server": "https://pan.bashroot.top"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢弱水分享",
|
||||||
|
"server": "http://shicheng.wang:555/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢神器云",
|
||||||
|
"server": "https://alist.ygxz.xyz/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢酷呵盘",
|
||||||
|
"server": "https://pan.kuhehe.top/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢分享者",
|
||||||
|
"server": "https://melist.me/"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "🟢目瞪口呆",
|
||||||
|
"server": "https://pan.mdgd.cc/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小陈",
|
||||||
|
"server": "https://ypan.cc/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢动漫盘",
|
||||||
|
"server": "http://pan.smjc.cc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢神秘小盘",
|
||||||
|
"server": "https://yun.ltt.zone/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "🟢神奇云",
|
||||||
|
"server" : "https://al.chirmyram.com/"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢SODAZ1",
|
||||||
|
"server": "https://pan.sodaz.xyz/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢ccaa",
|
||||||
|
"server": "http://ww1.ccaac.xyz/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢姹莱坞",
|
||||||
|
"server": "https://alist.agczsz.top/",
|
||||||
|
"passwd": "agree"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢杜比",
|
||||||
|
"server": "https://dubi.tk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢一只鱼",
|
||||||
|
"server": "https://alist.youte.ml"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢神族九帝",
|
||||||
|
"server": "https://alist.shenzjd.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢老谭",
|
||||||
|
"server": "https://pan.cqtjy.cn/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢皓星繁天",
|
||||||
|
"server": "https://pan.hxft.xyz/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "🟢迅维云盘",
|
||||||
|
"server" : "https://pan.xwbeta.com"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "🟢姬路白雪",
|
||||||
|
"server" : "https://pan.jlbx.xyz"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢肥灿",
|
||||||
|
"server": "http://43.200.153.107:55609/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢悦享盘",
|
||||||
|
"server": "https://pity.eu.org/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟢小雅备用",
|
||||||
|
"server": "http://123.60.188.109:5678/"
|
||||||
|
},
|
||||||
|
{"name": "🟢梓凌妙妙",
|
||||||
|
"server": "https://zi0.cc/"},
|
||||||
|
{"name": "🟢微资·随意盘",
|
||||||
|
"server": "https://apps.weixinqqq.com/"},
|
||||||
|
{
|
||||||
|
"name": "🟡A大杂物库",
|
||||||
|
"server": "https://alist.qyide.com/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟡诸神小盘",
|
||||||
|
"server": "https://pan.zsxg.top/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🟡福利盘",
|
||||||
|
"server": "http://69.161.221.160:5244/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "公众号:乐享汇fans",
|
||||||
|
"server": "https://pan.xwbeta.com"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+244
@@ -0,0 +1,244 @@
|
|||||||
|
// 自动从 地址发布页 获取&跳转url地址
|
||||||
|
import { Crypto, load, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'czzy';
|
||||||
|
let host = 'https://cz01.vip/'; // 厂长地址发布页
|
||||||
|
// let url = 'https://www.czzy88.com/';
|
||||||
|
let url = '';
|
||||||
|
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;
|
||||||
|
let html = await request(host);
|
||||||
|
url = html.match(/推荐访问<a href="(.*)"/)[1];
|
||||||
|
console.debug('厂长跳转地址 =====>' + url); // js_debug.log
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let filterObj = {};
|
||||||
|
const html = await request(url + '/movie_bt');
|
||||||
|
const $ = load(html);
|
||||||
|
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;
|
||||||
|
const series = $('div#beautiful-taxonomy-filters-tax-movie_bt_series > a[cat-url*=movie_bt_series]');
|
||||||
|
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_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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CCARxrdXFpbXZfb3Blbi5qcyxhc3NldHM6Ly9qcy9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuCGxvYWQCXwZrZXkISE9TVA5zaXRlS2V5EHNpdGVUeXBlClBDX1VBDnJlcXVlc3QIaW5pdAhob21lDmhvbWVWb2QQY2F0ZWdvcnkMZGV0YWlsCHBsYXkMc2VhcmNoCXeRR1lNAFYALGh0dHBzOi8vd3d3Lmt1cWltdi5jb23eAU1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTUuMC4wLjAgU2FmYXJpLzUzNy4zNgxyZXFVcmwOcmVmZXJlcgZtdGgIZGF0YQRoZA5oZWFkZXJzBnJlcxRVc2VyLUFnZW50JGVuY29kZVVSSUNvbXBvbmVudAZyZXEMbWV0aG9kCHBvc3QIZm9ybRBwb3N0VHlwZQ5jb250ZW50BmNmZwhza2V5CnN0eXBlDGZpbHRlcg5jbGFzc2VzEmZpbHRlck9iag50eXBlX2lkCU5T7YvYmgVuEnR5cGVfbmFtZQnlZemXvnwJkAkna45/TQBWAAnYmgVusHM6VwlxX8aJTQBWAAkcWZdexomRmAlmjyFqxomRmAntcB6CxomRmAmOf3NZmVEfdwmOf3NZU2KfeBJzdHJpbmdpZnkGbWFwDmZpbHRlcnMGY2xzCGxhbmQKcmF0aW8IbGluawhodG1sAiQKaXRlbXMMdmlkZW9zHC9wbGF5LzlfMS5odG1sIGRpdi5tdl9saXN0ID4gbGkIbGlzdARpdAJhBmltZwxzaW5nZXIOcmVtYXJrcwhmaW5kDmE6Zmlyc3QSaW1nOmZpcnN0FGRpdi5zaW5nZXIIdGV4dAh0cmltFnNwYW4ubGVpXzAzDmF0dHJpYnMIaHJlZg5yZXBsYWNlBCQxDHZvZF9pZAp0aXRsZRB2b2RfbmFtZQZzcmMOdm9kX3BpYwU82KTfA1z/FnZvZF9yZW1hcmtzBnRpZARwZwxleHRlbmQOaGFzTW9yZQ5wZ0NvdW50DC9wbGF5LwouaHRtbD1kAGkAdgAuAGwAZQBpAF8AcABhAGcAZQAgAD4AIABhADoAYwBvAG4AdABh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
Line truncated
|
||||||
+239
@@ -0,0 +1,239 @@
|
|||||||
|
import { Crypto, load, _ } from 'assets://js/lib/cat.js';
|
||||||
|
|
||||||
|
const key = 'ddys';
|
||||||
|
let DOMAIN = 'ddys.pro';
|
||||||
|
let HOST = 'https://' + DOMAIN;
|
||||||
|
let PLAY_HOST = 'https://v.' + DOMAIN;
|
||||||
|
const FROM_DIRECT = '直连';
|
||||||
|
const FROM_PARSE = '解析';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
const 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) {
|
||||||
|
const res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'Host': HOST.match(/.*\:\/\/(.*)/)[1],
|
||||||
|
'User-Agent': UA,
|
||||||
|
'Referer': HOST,
|
||||||
|
'Accept-Encoding': 'gzip',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
if (cfg.hasOwnProperty('ext')) {
|
||||||
|
if (cfg.ext.hasOwnProperty('domain')) {
|
||||||
|
DOMAIN = cfg.ext.domain;
|
||||||
|
HOST = 'https://' + DOMAIN;
|
||||||
|
PLAY_HOST = 'https://v.' + DOMAIN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
const classes = [{'type_id':'class','type_name':'类型'},{'type_id':'movie','type_name':'电影'},{'type_id':'airing','type_name':'热映中'},{'type_id':'drama','type_name':'剧集'},{'type_id':'anime','type_name':'动画'},{'type_id':'documentary','type_name':'纪录片'},{'type_id':'variety','type_name':'综艺'}];
|
||||||
|
const filterObj = {
|
||||||
|
'class':[{'key':'tag','name':'标签','init':'recommend','value':[{'n':'站长推荐','v':'recommend'},{'n':'动作','v':'action'},{'n':'喜剧','v':'comedy'},{'n':'爱情','v':'romance'},{'n':'科幻','v':'sci-fi'},{'n':'犯罪','v':'crime'},{'n':'悬疑','v':'mystery'},{'n':'恐怖','v':'horror'}]}],
|
||||||
|
'movie':[{'key':'type','name':'分类','init':'','value':[{'n':'全部','v':''},{'n':'欧美电影','v':'western-movie'},{'n':'日韩电影','v':'asian-movie'},{'n':'华语电影','v':'chinese-movie'}]}],
|
||||||
|
'drama':[{'key':'type','name':'分类','init':'','value':[{'n':'全部','v':''},{'n':'欧美剧','v':'western-drama'},{'n':'日剧','v':'jp-drama'},{'n':'韩剧','v':'kr-drama'},{'n':'华语剧','v':'cn-drama'},{'n':'其他地区','v':'other'}]}],
|
||||||
|
'anime':[{'key':'type','name':'分类','init':'','value':[{'n':'全部','v':''},{'n':'本季新番','v':'new-bangumi'}]}]
|
||||||
|
};
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let path = '';
|
||||||
|
if (extend.tag) {
|
||||||
|
path = '/tag/' + extend.tag;
|
||||||
|
} else {
|
||||||
|
path = '/category/' + tid;
|
||||||
|
if (!_.isEmpty(extend.type)) {
|
||||||
|
path += '/' + extend.type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let page = '';
|
||||||
|
if (pg > 1) {
|
||||||
|
page = 'page/' + pg + '/';
|
||||||
|
}
|
||||||
|
const link = HOST + path + '/' + page;
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('.post-box-list article');
|
||||||
|
const videos = _.map(items, (item) => {
|
||||||
|
const $item = $(item);
|
||||||
|
const title = $item.find('.post-box-title a');
|
||||||
|
const name = title.text();
|
||||||
|
const url = title.attr('href');
|
||||||
|
const image = $item.find('.post-box-image').attr('style').replace(/.*url\((.*)\);/g, '$1');
|
||||||
|
const remarks = $item.find('.post-box-meta').text();
|
||||||
|
return {
|
||||||
|
vod_id: url.replace(/.*\/\/.*\/(.*)\//g, '$1'),
|
||||||
|
vod_name: name,
|
||||||
|
vod_pic: image,
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const limit = 28;
|
||||||
|
const hasMore = $('nav.navigation a.next').length > 0;
|
||||||
|
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(pg),
|
||||||
|
pagecount: pgCount,
|
||||||
|
limit: limit,
|
||||||
|
total: limit * pgCount,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
const html = await request(HOST + '/' + id + '/');
|
||||||
|
const $ = load(html);
|
||||||
|
const abstract = $('div.abstract')[0].children;
|
||||||
|
const vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('h1.post-title').text(),
|
||||||
|
vod_type: findAbstractText(abstract, '类型:'),
|
||||||
|
vod_year: findAbstractText(abstract, '年份:'),
|
||||||
|
vod_area: findAbstractText(abstract, '制片国家/地区:'),
|
||||||
|
vod_director: findAbstractText(abstract, '导演:'),
|
||||||
|
vod_actor: findAbstractText(abstract, '演员:'),
|
||||||
|
vod_pic: $('div.post img:first').attr('data-cfsrc'),
|
||||||
|
vod_remarks : $('span.cat-links').text().trim(),
|
||||||
|
vod_content: findAbstractText(abstract, '简介:'),
|
||||||
|
};
|
||||||
|
const playMap = {};
|
||||||
|
parseAndUpdateUrls($, playMap);
|
||||||
|
const links = $('div.page-links a');
|
||||||
|
if (!_.isEmpty(links)) {
|
||||||
|
const promiseList = _.map(links, (link) => {
|
||||||
|
const url = $(link).attr('href');
|
||||||
|
return request(url);
|
||||||
|
});
|
||||||
|
const respList = await Promise.all(promiseList);
|
||||||
|
_.each(respList, (resp) => {
|
||||||
|
try {
|
||||||
|
const $ = load(resp);
|
||||||
|
parseAndUpdateUrls($, playMap);
|
||||||
|
} catch(e) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
vod.vod_play_from = _.keys(playMap).join('$$$');
|
||||||
|
const urls = _.values(playMap);
|
||||||
|
const vod_play_url = _.map(urls, (urlist) => {
|
||||||
|
return urlist.join('#');
|
||||||
|
});
|
||||||
|
vod.vod_play_url = vod_play_url.join('$$$');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function findAbstractText(children, keyword) {
|
||||||
|
for (const item of children) {
|
||||||
|
if (item.type == 'text' && item.data && item.data.startsWith(keyword)) {
|
||||||
|
return item.data.substring(keyword.length).trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseAndUpdateUrls($, playMap) {
|
||||||
|
const trackText = $('script.wp-playlist-script').text();
|
||||||
|
const tracks = JSON.parse(trackText).tracks;
|
||||||
|
_.each(tracks, (track) => {
|
||||||
|
const title = track.caption;
|
||||||
|
const directUrl = track.src0;
|
||||||
|
if (!playMap.hasOwnProperty(FROM_DIRECT)) {
|
||||||
|
playMap[FROM_DIRECT] = [];
|
||||||
|
}
|
||||||
|
playMap[FROM_DIRECT].push(title + '$' + directUrl);
|
||||||
|
if (!_.isEmpty(track.src1)) {
|
||||||
|
if (!playMap.hasOwnProperty(FROM_PARSE)) {
|
||||||
|
playMap[FROM_PARSE] = [];
|
||||||
|
}
|
||||||
|
playMap[FROM_PARSE].push(title + '$' + track.src1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
let playUrl;
|
||||||
|
if (flag == FROM_PARSE) {
|
||||||
|
const resp = await request(HOST + '/getvddr2/video?id=' + id + '&type=json');
|
||||||
|
playUrl = JSON.parse(resp).url;
|
||||||
|
} else {
|
||||||
|
playUrl = PLAY_HOST + id;
|
||||||
|
}
|
||||||
|
const headers = {
|
||||||
|
'User-Agent': UA,
|
||||||
|
'Referer': HOST,
|
||||||
|
'Icy-MetaData': '1',
|
||||||
|
'Sec-Fetch-Site': 'same-site',
|
||||||
|
'Sec-Fetch-Mode': 'cors',
|
||||||
|
'Sec-Fetch-Dest': 'video',
|
||||||
|
};
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
header: headers,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let page = '';
|
||||||
|
if (pg > 1) {
|
||||||
|
page = '/page/' + pg;
|
||||||
|
}
|
||||||
|
const html = await request(HOST + page + '/?s=' + wd + '&post_type=post');
|
||||||
|
const $ = load(html);
|
||||||
|
const list = $('div.post-content');
|
||||||
|
const videos = _.map(list, (item) => {
|
||||||
|
const $item = $(item);
|
||||||
|
const title = $item.find('.post-title a');
|
||||||
|
const name = title.text();
|
||||||
|
const url = title.attr('href');
|
||||||
|
const remarks = $item.find('.cat-links').text();
|
||||||
|
return {
|
||||||
|
vod_id: url.replace(/.*\/\/.*\/(.*)\//g, '$1'),
|
||||||
|
vod_name: name,
|
||||||
|
vod_pic: HOST + '/android-chrome-512x512.png',
|
||||||
|
vod_remarks: remarks,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const limit = 100;
|
||||||
|
const hasMore = $('nav.navigation a.next').length > 0;
|
||||||
|
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(pg),
|
||||||
|
pagecount: pgCount,
|
||||||
|
limit: limit,
|
||||||
|
total: limit * pgCount,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
import { load, _ } from "./lib/cat.js";
|
||||||
|
|
||||||
|
let key = "世纪DJ音乐网_book";
|
||||||
|
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 {
|
||||||
|
book_id: a.attribs.href,
|
||||||
|
book_name: tt.children[0].data,
|
||||||
|
book_pic: img.attribs["src"],
|
||||||
|
book_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 = {
|
||||||
|
book_id: id,
|
||||||
|
type_name: '',
|
||||||
|
book_year: '',
|
||||||
|
book_area: '',
|
||||||
|
book_remarks: '',
|
||||||
|
book_actor: '',
|
||||||
|
book_director: '',
|
||||||
|
book_content: '',
|
||||||
|
};
|
||||||
|
const playlist = ["点击播放" + "$" + vod.book_id];
|
||||||
|
vod.volumes = "道长在线";
|
||||||
|
vod.urls = 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 {
|
||||||
|
book_id: a.attribs.href,
|
||||||
|
book_name: tt.children[0].data,
|
||||||
|
book_pic: img.attribs["src"],
|
||||||
|
book_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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CzARhkandtX29wZW4uanMYLi9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwhsb2FkAl8MamluamEyBmtleQZ1cmwOc2l0ZUtleRBzaXRlVHlwZQRVQQ5yZXF1ZXN0CGluaXQIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFpbAhwbGF5GGJhc2U2NEVuY29kZRhiYXNlNjREZWNvZGUMc2VhcmNoCGRqd20qaHR0cHM6Ly9tLmR1YW5qdTUuY29tlgJNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDEzXzJfMyBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vMTMuMC4zIE1vYmlsZS8xNUUxNDggU2FmYXJpLzYwNC4xDHJlcVVybA5hZ2VudFNwBnJlcwZyZXEMbWV0aG9kFFVzZXItQWdlbnQOUmVmZXJlcg5oZWFkZXJzDmNvbnRlbnQGY2ZnCHNrZXkKc3R5cGUMZmlsdGVyDmNsYXNzZXMSZmlsdGVyT2JqCG5peGkOdHlwZV9pZAUGkK2IEnR5cGVfbmFtZRJ0aWFuY2hvbmcFHHWgWw5udWVsaWFuBVCGS2AQY2h1YW55dWUFf3qKjRRjaG9uZ3NoZW5nBc2RH3UMbGV0dGVyBVdbzWsFaFHokAJuAnYCQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaBGJ5BZJjj14F9mX0lQh0aW1lBbpOFGwIaGl0cwXEiwZSCnNjb3JlEnN0cmluZ2lmeQ5maWx0ZXJzBnRpZARwZwxleHRlbmQIbGluawhodG1sAiQKaXRlbXMMdmlkZW9zDmhhc01vcmUOcGdDb3VudBIvdm9kc2hvdy8ELS0GLS0tCi5odG1sRGRpdi5tb2R1bGUtaXRlbXMgPiBkaXYubW9kdWxlLWl0ZW0GbWFwNWQAaQB2ACMAcABhAGcAZQAgAD4AIABhADoAYwBvAG4AdABhAGkAbgBzACgAC04ATnWYKQAQcGFyc2VJbnQIcGFnZRJwYWdlY291bnQKbGltaXQKdG90YWwIbGlzdAhpdGVtBGl0AmsOcmVtYXJrcwhmaW5kDmE6Zmlyc3QSaW1nOmZpcnN0QGRpdi5tb2R1bGUtaXRlbS1zdHlsZSB2aWRlby10ZXh0CHRleHQIdHJpbQ5hdHRyaWJzCGhyZWYOcmVwbGFjZQQkMQx2b2RfaWQKdGl0bGUQdm9kX25hbWUQZGF0YS1zcmMOdm9kX3BpYxZ2b2RfcmVtYXJrcwRpZAZ2b2QQcGxheWxpc3QWL3ZvZGRldGFpbC8QaDE6Zmlyc3Q+Lm15dWktY29udGVudF9fZGV0YWlsIHA6Zmlyc3QgYRB2b2RfdHlwZUgubXl1aS1jb250ZW50X19kZXRhaWwgcDpudGgtY2hpbGQoNSkHO04Ubxr/EnZvZF9hY3RvckgubXl1aS1jb250ZW50X19kZXRhaWwgcDpudGgtY2hpbGQoNikH/FsUbxr/GHZvZF9kaXJlY3RvckJkaXYubXl1aS1jb250ZW50X190aHVtYiBpbWc6Zmlyc3QIYXR0chpkYXRhLW9yaWdpbmFsJCNyYXRpbmc6Zmlyc3Qgc3BhbgIgEnNwYW4uZGF0YRZ2b2RfY29udGVudCJkaXYuc29ydC1pdGVtID4gYQkaWRpZv37vjRp2b2RfcGxheV9mcm9tAiMYdm9kX3BsYXlfdXJsCGZsYWcEanMOcGxheXVybA5wbGF5VXJsEi92b2RwbGF5LwpwYXJzZTBzY3JpcHQ6Y29udGFpbnMocGxheWVyXykgdmFyIHBsYXllcl9hYWFhPRB1bmVzY2FwZQZlbmMMQmFzZTY0CFV0ZjgEd2QKcXVpY2sIZGF0YUIvaW5kZXgucGhwL2FqYXgvc3VnZ2VzdD9taWQ9MSZ3ZD0IcHVzaAZwaWMPpAMBpgMBABOoAwAEAKoDAAGsAwACrgMAA7ADAA4ABgGgAQAAAAEUC1wAqgMADKwDAQyuAwIMsAMDDLIDAAm0AwEJtgMCCbgDAwm6AwQNvAMFAb4DBgHAAwcBwgMIAcQDCQHGAwoByAMLAcoDDAHMAw0BzgMOAagDDwEI6Dm+AF8JAL4BXwoAvgJfCwC+A18MAL4EXw0AvgVfDgC+Bl8PAL4HXxAAvghfEQC+CV8SAL4KXxMAKQToAAAAXwQABOkAAABfBQC/XwYAs18HAATqAAAAXwgAKaQDAQwBADsGKysXGAAIkAIOYgYBvAMCAQIGAgA7A9YDAAEA2AMAAQDa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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CxBBxkb3ViYW5fb3Blbi5qcyxhc3NldHM6Ly9qcy9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwpkYXlqcwxqaW5qYTIGVXJpAl8OXzB4NGRjMw5fMHg0ODg0El8weDQwYjM4MxJfMHg1Y2UxODkSXzB4M2I5ZWFmEl8weDFmMjM4YhJfMHgyMjVjNTISXzB4MzMzOGZjEl8weDE2N2Y3ZBJfMHg1N2FmNGISXzB4MWRiYTZmEl8weDFkNTI4ZhJfMHgyZDllN2YSXzB4NDIyNjMyEl8weDFlOTYxMxJfMHg1MWIwNmESXzB4NTAwODExEl8weDU1ZTc4MxJfMHgxZTVmY2ESXzB4MmZkYmQ1CHR5cGUOcmVwbGFjZQhzb3J0B8SLBlI6AFQvYXBpL3YyL3NreW5ldC9uZXdfcGxheWxpc3RzP3N1YmplY3RfdHlwZT0UY2hhckNvZGVBdApwcml6ZQ53ZXN0ZXJuSHN1YmplY3RfY29sbGVjdGlvbi90dl9qYXBhbmVzZS9pdGVtcyAvYXBpL3YyL2RvdWxpc3QvEGNyaW1pbmFsDR93nluLTvZOOWUWfwxjaGFyQXRIc3ViamVjdF9jb2xsZWN0aW9uL3R2X2RvbWVzdGljL2l0ZW1zCHB1c2gKa29yZWEIcGF0aAxCYXNlNjQKc2hpZnQIY2VpbBRzaG9ydF9uYW1l0AEmb3Nfcm9tPWFuZHJvaWQmYXBwbGU9YzUyZmJiOTliOTA4YmU0ZDAyNjk1NGNjNDM3NGYxNmQmbW9vbmNha2U9MGY2MDcyNjRmYzYzMThhOTJiOWUxM2M2NWRiN2NkM2Mmc3VnYXI9MBBvZmZpY2lhbBZpbnNwaXJhdGlvbhB2aW9sZW5jZRovcG9zdHM/c3RhcnQ9ci9hcGkvdjIvbW92aWUvY2F0ZWdvcnlfcmFua3M/Y291bnQ9MzAmY2F0ZWdvcnk9cmVjZW50X2hvdBQmY2F0ZWdvcnk9CnRpdGxlggFBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPRBob3JyaWJsZQwmdWRpZD0OZmFudGFzeRZibGFja193aGl0ZQZhbGwOY2FydG9vbjBzdWJqZWN0X2NvbGxlY3Rpb25faXRlbXMYZnJvbUNoYXJDb2RlIGJmN2RkZGM3YzljZmU2ZjcMc3BsaWNlSHN1YmplY3RfY29sbGVjdGlvbi90dl9hbWVyaWNhbi9pdGVtcwxyYW5kb20GZW5jFnRvTG93ZXJDYXNlCnBhcnNlMHdxODZ3NzNDbU1PcEhjT2V3NkhDdXl3PQYweDAMeVpTREtVanJldHVybiAoZnVuY3Rpb24oKSB7fS5jb25zdHJ1Y3RvcigicmV0dXJuIHRoaXMiKSggKSk7IFozdzFCTUtZS2dOYXc2WT0Sc3Vic3RyaW5nBmNyXwomX3RzPQm3UeiVc09HcgphY3Rvcgh1bml4CWhR6JB0XuNOBjB4MgZkbF8IdDI1MAx2YVJNY0UMZG91YmFuCGN1cmUSbGlzdF90eXBlEGRpcmVjdG9yCmxhcmdlDmNvbnRlbnQOc3ViamVjdAxub3JtYWwMZmFtaWx5DHJhdGluZwx4SVVZWnJEJmNvdW50PTMwJnVwZGF0ZWRfYXQ9Jml0ZW1zX29ubHk9MUpzdWJqZWN0X2NvbGxlY3Rpb24vdHZfYW5pbWF0aW9uL2l0ZW1zBjB4M2wvYXBpL3YyL3R2L2NhdGVnb3J5X3JhbmtzP2NvdW50PTMwJmNhdGVnb3J5PXJlY2VudF9ob3QJD1z0izllFn8QamFwYW5lc2UIYXRvYgpub3ZlbDYvYXBpL3YyL3N1YmplY3RfY29sbGVjdGlvbi8QTm53OUFjT08IZGF0YQ5pbmRleE9mICZzY29yZV9yYW5nPTAsMTCfAS8AYQBwAGkALwB2ADIALwBtAG8AdgBpAGUALwB0AGEAZwA/AHMAbwByAHQAPQBVACYAcwB0AGEAcgB0AD0AMAAmAGMAbwB1AG4AdAA9ADMAMAAmAHEAPQBoUeiQYl8PXywAaFHokHt8i1csAGhR6JAwVzpTLABoUeiQdF7jTiYAcwBjAG8AcgBlAF8AcgBhAG4AZwA9ADAALAAxADAACWhR6JAwVzpTCGxnYnQMJl9zaWc9CE4pbmwKdG90YWwGcGljBndhciAmbG9jX2lkPTAmc3RhcnQ9CGUwaEUGMHgxHG1vdmllL2hvdF9nYWlhCnNvcnRzCHRhZ3MWZG9jdW1lbnRhcnkUaGlnaF9zY29yZQpzdHlwZRovaXRlbXM/c3RhcnQ9DFNRamV0UQwmdXVpZD0oc2VsZWN0ZWRfY29sbGVjdGlvbnMH/VanTmdSDmNvbnNvbGWmASBwbGF0Zm9ybS9tb2JpbGUgY29tLmRvdWJhbi5mcm9kby83LjkuMCgyMTYpIFJleHhhci8xLjIuMTUxIHBsYXRmb3JtL21vYmlsZSAxLjIuMTUxZT8AYQByAGUAYQA9AGhR6JAmAHMAbwByAHQAPQByAGUAYwBvAG0AbQBlAG4AZAAmAHAAbABhAHkAYQBiAGwAZQA9ADAAJgBsAG8AYwBfAGkAZAA9ADAAJgBzAHQAYQByAHQAPQAKcGFuaWMMYWN0aW9uEEhtYWNTSEExEHNlbGVjdGVkLi9hcGkvdjIvbW92aWUvdGFnP3NvcnQ9GGxpdGVyYXJ5X2FydBImY291bnQ9MzAIeWVhcj5zdWJqZWN0X2NvbGxlY3Rpb24vdHZfaG90L2l0ZW1zEmNsYXNzaWNhbAxtb3ZpbmcIc2tleRJzdHJpbmdpZnkKeW91dGgKaXRlbXMQL2FwaS92Mi/+ASYmcm9tPWFuZHJvaWQmYXBpa2V5PTBkYWQ1NTFlYzBmODRlZDAyOTA3ZmY1YzQyZThlYzcwJnM9cmV4eGFyX25ldyZjaGFubmVsPVlpbmd5b25nYmFvX01hcmtldCZ0aW1lem9uZT1Bc2lhL1NoYW5naGFpJmRldmljZV9pZD0MZGV2aWNlFGRhcmtfaHVtb3IJ0Z5ygn1e2J4SY292ZXJfdXJsDGNvbWVkeQhHRVQm6gFSZXh4YXItQ29yZS8wLjEuMyBhcGktY2xpZW50LzEgY29tLmRvdWJhbi5mcm9kby83LjkuMCgyMTYpIEFuZHJvaWQvMjggcHJvZHVjdC9YaWFvbWkxMSByb20vYW5kcm9pZCBuZXR3b3JrL3dpZmkgdWRpZC8IY2F0ZRRkYXJrX2hvcnNlvwEvAGEAcABpAC8AdgAyAC8AcwB1AGIAagBlAGMAdABfAGMAbwBsAGwAZQBjAHQAaQBvAG4ALwBtAG8AdgBpAGUAXwB0AG8AcAAyADUAMAAvAGkAdABlAG0AcwA/AGEAcgBlAGEAPQBoUeiQJgBzAG8AcgB0AD0AcgBlAGMAbwBtAG0AZQBuAGQAJgBwAGwAYQB5AGEAYgBsAGUAPQAwACYAbABvAGMAXwBpAGQAPQAwACYAcwB0AGEAcgB0AD0AIHc0dkN0OEtEd296Q2xnPT0HNXXGiWdSCDB4MWEwaHR0cHM6Ly9mcm9kby5kb3ViYW4uY29temFiYWNkZWZnaGprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkSXzB4MzZiM2Q2El8weDRkYzMwOBJfMHg0ODg0ZDMSXzB4YTcxZDRkEl8weDIwNGQyZhJfMHgzNTQyZGYSXzB4MmMyOTUyEl8weDJlMWRkORJfMHg2MjgyNTQIMHg4YwRpZAgweDQ1CDB4NWMIMHg4MQgweDE0CDB4NGQIMHg2MiRlbmNvZGVVUklDb21wb25lbnQIMHg3YwImBjB4NggweDdkCDB4NTgIMHgzNQgweDExEl8weGNlYWJjZhJfMHgzZjBiNGISXzB4MzY5Nzg1BnJlcQR1YRRVc2VyLUFnZW50DmhlYWRlcnMGMHg4CDB4MWYSXzB4MzkxYTBhEl8weDI3M2FlYhJfMHg0NjAwMjISXzB4NDcwMzA2El8weDIzZDkwMRJfMHgyY2Y1NjgSXzB4ZmM4MzIyEl8weDVkOTU2ORJfMHgxYTcwYzQIMHg1NwgweDQyBjB4OQgweDY4GHc3N0R2c085d3E5VggweDJlBjB4ZQgweDI3CDltVkEIMHgxNggweDNiCDB4M2MIMHgzNgYweDQIdzcxZgYweGEISGdNMwgweDQ4BmxvZwgweDVkCmxvY2FsCDB4NTQIMHg3YQ5pc0VtcHR5BjB4NwgweDYzCDB4NDkIMHg2NBJfMHg2YjgwNWMIMHg3OQgweDdlEl8weDE2M2Q5OBJfMHgxOTdjNDcSXzB4M2ZiYWI4El8weDNkNjVlZBJfMHg1OTI2ZTAIMHgyYgYweGIIMHgyNAgweDE5CDB4NDQSXzB4MmM0MjNhEl8weDEwMDg4OQYweGQMd2luZG93EF8weDNjZjYwEl8weDI1ZTcxOBJfMHgyNGVjY2USXzB4MjEwOWMwEl8weDIyNGYwNxJfMHgzN2Y5YjASXzB4NTM3ZTA3CDB4NmMIMHg3NwgweDhhCDB4MzASXzB4MWRkN2FjEl8weDFmMzY5ZBJfMHgyYWM4ZjMSXzB4NGM3ZTcxEl8weDQzMGM5YxJfMHg0NWQwYzcSXzB4MTQ2YmQ0El8weDIxMmQyYxJfMHgzOTFiODUSXzB4NWQwNTVmEl8weDM0MjI1ZQIlBDAwCDB4ODMKc2xpY2UkZGVjb2RlVVJJQ29tcG9uZW50CDB4NzASXzB4NTBkMjUyEl8weDU3ZjI4OBJfMHg0NjlkMmYSXzB4MTNmNDM2El8weDNhZTFhYxJfMHgzOTgzNTYSXzB4NDM1MTc3El8weDIxZjdlMhJfMHg1MTJlYjQ
Line truncated
|
||||||
@@ -0,0 +1,233 @@
|
|||||||
|
import { _ } from 'assets://js/lib/cat.js';
|
||||||
|
|
||||||
|
let host = '';
|
||||||
|
let customArea = '';
|
||||||
|
let dataFrom = 'official';
|
||||||
|
let isJustLive = false;
|
||||||
|
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 requestRaw(reqUrl, method) {
|
||||||
|
let resRaw = await req(reqUrl, {
|
||||||
|
method: method || 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': MOBILE_UA,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return resRaw;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function request(reqUrl) {
|
||||||
|
let resRaw = await requestRaw(reqUrl)
|
||||||
|
return resRaw.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
if (cfg.hasOwnProperty('ext')) {
|
||||||
|
if (cfg.ext.hasOwnProperty('custom')) {
|
||||||
|
customArea = cfg.ext.custom;
|
||||||
|
}
|
||||||
|
if (cfg.ext.hasOwnProperty('from')) {
|
||||||
|
dataFrom = cfg.ext.from;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (dataFrom == 'justlive') {
|
||||||
|
host = 'http://live.yj1211.work';
|
||||||
|
isJustLive = true;
|
||||||
|
} else {
|
||||||
|
host = 'https://m.douyu.com';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":"PCgame","type_name":"网游竞技"},{"type_id":"syxx","type_name":"手游休闲"},{"type_id":"djry","type_name":"单机热游"},{"type_id":"kjwh","type_name":"科技文化"},{"type_id":"yl","type_name":"娱乐天地"},{"type_id":"yp","type_name":"语音互动"},{"type_id":"voice","type_name":"语音直播"}];
|
||||||
|
let filterObj = {
|
||||||
|
"PCgame":[{"key":"cateId","name":"分类","init":"LOL","value":[{"n":"英雄联盟","v":"LOL"},{"n":"热门游戏","v":"rmyx"},{"n":"穿越火线","v":"CF"},{"n":"重生边缘","v":"CSBYOL"},{"n":"无畏契约","v":"VALORANT"},{"n":"CFHD","v":"CFHD"},{"n":"命运方舟","v":"LostArk"},{"n":"DNF","v":"DNF"},{"n":"DOTA2","v":"DOTA2"},{"n":"使命召唤","v":"COD"},{"n":"炉石传说","v":"How"},{"n":"CS2","v":"CounterStrike"},{"n":"lol云顶之弈","v":"ydzhy"},{"n":"魔兽争霸","v":"mszb"},{"n":"魔兽怀旧服","v":"wowclassic"},{"n":"自走棋","v":"dota2rpg"},{"n":"传奇","v":"cq"},{"n":"跑跑卡丁车","v":"Popkart"},{"n":"网易游戏","v":"wyyx"},{"n":"星际争霸","v":"SC"},{"n":"守望先锋","v":"Overwatch"},{"n":"DOTA","v":"DOTA"},{"n":"魔兽世界","v":"WOW"},{"n":"剑网3","v":"JX3"},{"n":"我的世界","v":"MC"},{"n":"超激斗梦境","v":"cjdmj"},{"n":"冒险岛","v":"mxd"},{"n":"三国杀","v":"sanguosha"},{"n":"梦幻西游","v":"MHXYOL"},{"n":"天涯明月刀","v":"tianya"},{"n":"街头篮球","v":"jtlq"},{"n":"NBA2KOL2","v":"NBA2KOL2"},{"n":"QQ飞车端游","v":"qqfcdy"},{"n":"军事游戏","v":"jsyx"},{"n":"棋牌娱乐","v":"qipai"},{"n":"FC ONLINE","v":"FCOL"},{"n":"热门网游","v":"rmwy"},{"n":"卡拉彼丘","v":"klbq"},{"n":"诛仙世界","v":"zxsj"},{"n":"APEX","v":"APEX"},{"n":"流放之路POE","v":"PathofExile"},{"n":"剑网3缘起","v":"JW3YQ"},{"n":"逆水寒","v":"nsh"},{"n":"风暴英雄","v":"HOTS"},{"n":"逆战","v":"NZ"},{"n":"坦克世界","v":"TKSJ"},{"n":"战舰世界","v":"wfws"},{"n":"反恐精英Online","v":"CS"},{"n":"暗黑破坏神","v":"DIABLO"},{"n":"梦三国2","v":"msg2"},{"n":"传奇世界","v":"cqsj"},{"n":"方舟:生存进化","v":"fzscjh"},{"n":"神武4电脑版","v":"swdnb"},{"n":"群雄逐鹿","v":"qxzl"},{"n":"堡垒之夜","v":"blzy"},{"n":"无限法则","v":"roe"},{"n":"问道电脑版","v":"wddnb"},{"n":"西山居游戏","v":"Seasun"},{"n":"最终幻想14","v":"FF14"},{"n":"战意","v":"WYZY"},{"n":"剑灵","v":"BladeSoul"},{"n":"星际战甲","v":"Warframe"},{"n":"龙之谷","v":"DragonNest"},{"n":"铁甲雄兵","v":"tjxb"},{"n":"古剑奇谭网络版","v":"gjqtwlb"},{"n":"轩辕传奇","v":"XYCQ"},{"n":"神途","v":"shentu"},{"n":"激战2","v":"GuildWars2"},{"n":"高达文化区","v":"gdyxq"},{"n":"忍者村大战2","v":"rzcdz2"},{"n":"RPG网游专区","v":"rpgwyzq"},{"n":"诛仙3","v":"zhuxian3"},{"n":"笑傲江湖OL","v":"xajhol"},{"n":"冒险岛2","v":"MXD2"},{"n":"超击突破","v":"SuperPeople"},{"n":"无尽战区","v":"WJZQ"},{"n":"永恒之塔","v":"AION"},{"n":"竞速游戏","v":"jingsu"},{"n":"FPS综合网游","v":"FPSOL"},{"n":"劲舞团","v":"jwt"},{"n":"天下","v":"tianxai"},{"n":"火箭联盟","v":"hjlm"},{"n":"泡泡堂","v":"ppt"},{"n":"音乐游戏","v":"MG"},{"n":"新倩女幽魂","v":"ONLINE"},{"n":"天谕","v":"tianyu"},{"n":"QQ炫舞","v":"qqxw"},{"n":"大唐无双","v":"dtws"},{"n":"怪物猎人ol","v":"MHol"},{"n":"手工星球","v":"sgxq"},{"n":"热血传奇:本源","v":"rxcqhjsgb"},{"n":"彩虹岛","v":"CHD"},{"n":"御龙在天","v":"YLZT"},{"n":"自由篮球","v":"ZYLQ"},{"n":"洛奇英雄传","v":"LQYXZ"},{"n":"洛奇","v":"LQ"},{"n":"封印者","v":"FYZ"},{"n":"合金弹头","v":"HJDT"},{"n":"新英雄年代","v":"XYXSD"},{"n":"盛趣游戏","v":"SQYX"},{"n":"新热血英豪","v":"XRXYH"},{"n":"沙盒游戏","v":"SHYX"},{"n":"恐鬼症","v":"KGZ"},{"n":"领地人生","v":"LDRS"},{"n":"大话西游2","v":"dhxy2"},{"n":"猎人","v":"lr"},{"n":"热血江湖online","v":"rxjhol"},{"n":"千年3","v":"qn3"},{"n":"逍遥情缘","v":"xyqy"},{"n":"快乐西游","v":"klxy"},{"n":"诺亚传说","v":"nycs"},{"n":"鹿鼎记","v":"ldj"},{"n":"武魂2电脑版","v":"wh2pc"},{"n":"奇迹世界sun","v":"qjsjsun"},{"n":"剑侠世界2电脑版","v":"jxsj2pc"},{"n":"斩魂","v":"zhpc"},{"n":"大唐2","v":"dt2pc"},{"n":"幻想神域电脑版","v":"hxsypc"},{"n":"蜀山:初章","v":"ssczpc"},{"n":"狼人对决网游","v":"lrdjpc"},{"n":"武林群侠传","v":"wlqxzpc"},{"n":"飘流幻境","v":"plhjpc"},{"n":"破天一剑","v":"ptyj"},{"n":"四国军棋","v":"sgjq"},{"n":"新大话西游3","v":"xy3"},{"n":"装甲战争","v":"zjzz"},{"n":"暴雪游戏综合","v":"g_bliz"},{"n":"HypeSquad","v":"HypeSquad"},{"n":"长尾4部虚拟分区","v":"cw4bxnfq"},{"n":"燕云十六声","v":"WHEREWINDSMEET"},{"n":"THE FINALS","v":"THEFINALS"},{"n":"NBA2K Online","v":"NBA2KOL"},{"n":"跑跑卡丁车:漂移","v":"KartRiderDrift"},{"n":"传奇永恒","v":"EternalLegend"},{"n":"盛趣传奇","v":"sqcq"},{"n":"火爆热游","v":"hbry"}]}],
|
||||||
|
"syxx":[{"key":"cateId","name":"分类","init":"wzry","value":[{"n":"王者荣耀","v":"wzry"},{"n":"LOL手游","v":"LOLM"},{"n":"崩坏:星穹铁道","v":"bhxqtd"},{"n":"逆水寒手游","v":"NSHM"},{"n":"和平精英","v":"hpjy"},{"n":"暗区突围","v":"aqtw"},{"n":"蛋仔派对","v":"dzpd"},{"n":"高能英雄","v":"gnyx"},{"n":"幻塔","v":"ht"},{"n":"火影忍者","v":"hyrz"},{"n":"COD手游","v":"smzhsy"},{"n":"lol电竞经理","v":"EGAME"},{"n":"DNF手游","v":"mdnf"},{"n":"金铲铲之战","v":"JGAME"},{"n":"天刀手游","v":"tdsy"},{"n":"原神","v":"yuanshen"},{"n":"航海王热血航线","v":"HHWRXHX"},{"n":"元梦之星","v":"YMZX"},{"n":"鸿图之下","v":"htzx"},{"n":"欢乐麻将","v":"HLMJ"},{"n":"王者模拟战","v":"wzrpg"},{"n":"中国象棋","v":"ZGXQ"},{"n":"天谕手游","v":"tysy"},{"n":"巅峰坦克","v":"DFTK"},{"n":"新游中心","v":"xyzx"},{"n":"热门手游","v":"phone"},{"n":"梦幻手游","v":"mhxy"},{"n":"QQ飞车","v":"qqfcsy"},{"n":"第五人格","v":"dwrg"},{"n":"欢乐斗地主","v":"hlddz"},{"n":"荒野乱斗","v":"hyld"},{"n":"阴阳师","v":"yys"},{"n":"狼人杀","v":"LRS"},{"n":"JJ斗地主","v":"jj"},{"n":"梦幻新诛仙","v":"mhxzx"},{"n":"多多自走棋","v":"zzq"},{"n":"崩坏3","v":"bhxl"},{"n":"风云岛行动","v":"fydxd"},{"n":"云游戏","v":"cloudgame"},{"n":"跑跑手游","v":"PPKDCSY"},{"n":"率土之滨","v":"stzb"},{"n":"灌篮高手","v":"glgs"},{"n":"皇室战争","v":"hszz"},{"n":"忍者必须死3","v":"rzbxs3"},{"n":"神武4手游","v":"sw3"},{"n":"梦幻模拟战","v":"mhmnz"},{"n":"实况足球","v":"skzq"},{"n":"航海王:燃烧意志","v":"hhwrsyz"},{"n":"球球大作战","v":"qqdzz"},{"n":"英雄杀","v":"yxs"},{"n":"魔域口袋版","v":"mykdb"},{"n":"口袋新旅程","v":"KDXLC"},{"n":"剑网3:指尖江湖","v":"jw3zjjh"},{"n":"部落冲突","v":"blct"},{"n":"剑与家园","v":"jyjy"},{"n":"新笑傲江湖","v":"xxajh"},{"n":"猫和老鼠","v":"mhls"},{"n":"猎人手游","v":"lrlr"},{"n":"明日之后","v":"mrzh"},{"n":"影之诗","v":"yzs"},{"n":"决战平安京","v":"jzpaj"},{"n":"魂斗罗归来","v":"DLHGL"},{"n":"圣斗士星矢","v":"sdsxs"},{"n":"魔力宝贝手游","v":"mlbbsy"},{"n":"哈利波特:魔法觉醒","v":"HarryPotter"},{"n":"手游推广","v":"rmsy"},{"n":"魔灵召唤","v":"mlzh"},{"n":"香肠派对","v":"xcpd"},{"n":"迷你世界","v":"MNSJ"},{"n":"FC足球世界","v":"FCZQSJ"},{"n":"街篮","v":"jl"},{"n":"明日方舟","v":"mrfz"},{"n":"一梦江湖","v":"ymjh"},{"n":"完美世界手游","v":"wmsjsy"},{"n":"拳皇98OL","v":"kof98"},{"n":"赛尔号","v":"srh"},{"n":"仙境传说","v":"xjcs"},{"n":"流星群侠传","v":"liuxinghudiejian"},{"n":"逃跑吧少年","v":"tpbsn"},{"n":"石器时代","v":"sqsd"},{"n":"RPG手游","v":"rpgsy"},{"n":"英魂之刃口袋版","v":"yh"},{"n":"倩女幽魂手游","v":"qnyhsy"},{"n":"决斗之城2","v":"jdzc2"},{"n":"传奇手游","v":"cqsy"},{"n":"雀魂","v":"Majsoul"},{"n":"二次元手游","v":"ecysy"},{"n":"征途2手游","v":"zt2sy"},{"n":"万王之王3D","v":"wwzw3D"},{"n":"武林外传","v":"wlwz"},{"n":"潮人篮球","v":"crlq"},{"n":"元气骑士","v":"yuanqiqishi"},{"n":"红警OL手游","v":"hjolsy"},{"n":"植物大战僵尸手游","v":"ZWDZJS"},{"n":"创造与魔法","v":"ccymf"},{"n":"奇迹觉醒","v":"qjjx"},{"n":"光遇","v":"skygy"},{"n":"游戏王:决斗链接","v":"yxwjdlj"},{"n":"巅峰战舰","v":"dfzj"},{"n":"寻仙","v":"xunxian"},{"n":"天天象棋","v":"ttxq"},{"n":"王国纪元","v":"wgjy"},{"n":"龙族幻想","v":"lzhx"},{"n":"三国杀移动版","v":"SGSSY"},{"n":"罗布乐思","v":"Roblox"},{"n":"足球手游","v":"zqsy"},{"n":"月圆之夜","v":"yyzy"},{"n":"秦时明月世界","v":"qsmysj"},{"n":"麻将来了","v":"mjll"},{"n":"风之大陆","v":"fzdl"},{"n":"金属对决","v":"jsdj"},{"n":"轩辕剑龙舞云山","v":"xyjlwys"},{"n":"微乐棋牌","v":"WLQP"},{"n":"辐射:避难所Online","v":"fsbnsonline"},{"n":"街篮2","v":"jl2"},{"n":"极光计划","v":"jgjh"},{"n":"不良人3","v":"blr3"},{"n":"镇魔曲手游","v":"zmq"},{"n":"乱世王者","v":"lswz"},{"n":"篮球手游","v":"lqsy"},{"n":"鬼泣-巅峰之战","v":"gqdfzz"},{"n":"射击类手游","v":"qtsy"},{"n":"命运歌姬","v":"mygj"},{"n":"暗黑不朽","v":"diabloimmortal"},{"n":"新神魔大陆","v":"xsmdl"},{"n":"三国志战略版","v":"sgzzlb"},{"n":"天地劫:幽城再临","v":"tdj"},{"n":"Disorder","v":"Disorder"},{"n":"云上城之歌","v":"ysczg"},{"n":"五子棋","v":"wzq"},{"n":"围棋","v":"wq"},{"n":"全球行动","v":"qqxd"},{"n":"诛仙手游","v":"zxsy"},{"n":"妄想山海","v":"wxsh"},{"n":"黎明觉醒:生机","v":"lmjx"},{"n":"庆余年","v":"QYN"},{"n":"我的侠客","v":"wdxk"},{"n":"曙光英雄","v":"sgyx"},{"n":"大话西游手游","v":"dhxysy"},{"n":"战争怒吼","v":"zznh"},{"n":"忘川风华录","v":"wcfhl"},{"n":"新剑侠情缘手游","v":"xjxqysy"},{"n":"重生细胞","v":"csxb"},{"n":"汉家江湖","v":"HJJH"},{"n":"海岛奇兵","v":"Line truncated
|
||||||
|
"djry":[{"key":"cateId","name":"分类","init":"TVgame","value":[{"n":"主机游戏","v":"TVgame"},{"n":"刺客信条:英灵殿","v":"AC"},{"n":"马里奥制造","v":"Mario"},{"n":"逃离塔科夫","v":"EFT"},{"n":"命运2","v":"MY2"},{"n":"恐怖游戏","v":"Horror"},{"n":"荒野大镖客","v":"hydbk"},{"n":"灵魂筹码","v":"lhcm"},{"n":"骑马与砍杀","v":"MountAndBlade"},{"n":"只狼","v":"ZL"},{"n":"格斗游戏","v":"FTG"},{"n":"饥荒","v":"DontStarve"},{"n":"全境封锁","v":"qjfs"},{"n":"怀旧游戏","v":"classic"},{"n":"NBA2K","v":"NBA2K"},{"n":"八方旅人","v":"OT"},{"n":"人类一败涂地","v":"Human"},{"n":"环世界","v":"RimWorld"},{"n":"古墓丽影","v":"gmly"},{"n":"鬼泣","v":"DMC"},{"n":"往日不再","v":"WRBZ"},{"n":"仙剑奇侠传","v":"PAL"},{"n":"神秘海域","v":"Uncharted"},{"n":"塞尔达系列","v":"TLoZ"},{"n":"僵尸世界大战","v":"WWZ"},{"n":"足球游戏","v":"zq"},{"n":"橙光","v":"cg"},{"n":"了不起的修仙模拟器","v":"ACS"},{"n":"超级马里奥","v":"SMO"},{"n":"三国志系列","v":"Sangokushi"},{"n":"星际公民","v":"StarCitizen"},{"n":"最终幻想","v":"FF"},{"n":"中土世界:战争之影","v":"MiddleEarth"},{"n":"流放者柯南","v":"Conan"},{"n":"三国群英传","v":"SANGO"},{"n":"无主之地","v":"Bor"},{"n":"辐射","v":"fs"},{"n":"太吾绘卷","v":"twhj"},{"n":"SCUM","v":"Scum"},{"n":"正当防卫","v":"zdfw"},{"n":"以撒的结合","v":"Isaac"},{"n":"文明","v":"CVI"},{"n":"仁王","v":"NIOH"},{"n":"缺氧","v":"ONI"},{"n":"皇牌空战","v":"hpkz"},{"n":"体育游戏","v":"tyyx"},{"n":"海岛大亨","v":"hddh"},{"n":"植物大战僵尸:花园战争系列","v":"PvsZ"},{"n":"蜘蛛侠","v":"Spide"},{"n":"勇者斗恶龙:建造者2","v":"DQB2"},{"n":"遗迹:灰烬重生","v":"Rem"},{"n":"血源","v":"BB"},{"n":"旺达与巨像","v":"SotC"},{"n":"模拟人生","v":"Sims"},{"n":"空洞骑士","v":"HKS"},{"n":"极品飞车","v":"jpfc"},{"n":"胡闹厨房","v":"Overcooked"},{"n":"地铁:离去","v":"ME"},{"n":"生死狙击2","v":"ssjjtwo"},{"n":"三国战纪","v":"sgzj"},{"n":"怀旧FC","v":"edwcy"},{"n":"经典单机","v":"jddj"},{"n":"英雄无敌","v":"HoMM"},{"n":"街机游戏","v":"jjyx"},{"n":"合金装备","v":"MetalGear"},{"n":"红色警戒","v":"hsjj"},{"n":"镜之边缘","v":"MsE"},{"n":"火焰纹章系列","v":"FireEmblem"},{"n":"星露谷物语","v":"Stardew"},{"n":"赛博朋克2077","v":"Cyberpunk"},{"n":"中国式家长","v":"CP"},{"n":"尼尔:机械纪元","v":"NieR"},{"n":"无人深空","v":"NMS"},{"n":"EVOTINCTION","v":"EVOTINCTION"},{"n":"GT赛车7","v":"GT"},{"n":"超级机器人大战","v":"SRW"},{"n":"信长之野望","v":"KOEINOBU"},{"n":"这是我的战争","v":"TWoM"},{"n":"杀戮尖塔","v":"sljt"},{"n":"冰汽时代","v":"Frostpunk"},{"n":"帝国时代","v":"AoEIV"},{"n":"死亡空间","v":"swkj"},{"n":"凯瑟琳Full Body","v":"CFB"},{"n":"足球经理","v":"Football"},{"n":"雨中冒险","v":"RoR"},{"n":"亿万僵尸","v":"Billions"},{"n":"武装突袭","v":"ArmA"},{"n":"石油大亨","v":"Oil"},{"n":"荣耀战魂","v":"Honor"},{"n":"欧洲卡车模拟器","v":"Truck"},{"n":"美国逃亡者","v":"Fugitive"},{"n":"漫漫长夜","v":"mmcy"},{"n":"永恒轮回","v":"Survival"},{"n":"孤岛惊魂","v":"FarCry"},{"n":"都市:天际线","v":"Skylines"},{"n":"盗贼之海","v":"hdzh"},{"n":"Dayz","v":"DayZ"},{"n":"60秒","v":"60S"},{"n":"俄罗斯钓鱼","v":"RF"},{"n":"猎人:荒野的召唤","v":"theHunter"},{"n":"恐怖黎明","v":"GD"},{"n":"看门狗","v":"kmg"},{"n":"真三国无双","v":"DW"},{"n":"泰拉瑞亚","v":"Terraria"},{"n":"UFC","v":"UFC"},{"n":"底特律:变人","v":"Detroit"},{"n":"恶魔城","v":"Castlevania"},{"n":"毁灭战士","v":"Doom"},{"n":"火影忍者:究极忍者风暴","v":"Naruto"},{"n":"无尽地牢","v":"DOTE"},{"n":"坎巴拉太空计划","v":"Kerbal"},{"n":"龙珠:超宇宙","v":"DBX"},{"n":"马里奥赛车","v":"MarioKart"},{"n":"模拟山羊","v":"GoatSim"},{"n":"欧陆风云","v":"EU"},{"n":"乞丐模拟器","v":"HoboToughLife"},{"n":"小偷模拟器","v":"ThiefSimulator"},{"n":"逆转裁判","v":"AceA"},{"n":"超越光速","v":"FTL"},{"n":"植物大战僵尸","v":"PvZ"},{"n":"游戏开发者","v":"GGM"},{"n":"最后的绿洲","v":"LO"},{"n":"大富翁","v":"RichMan"},{"n":"英雄连","v":"yxl"},{"n":"永劫无间","v":"NB"},{"n":"部落与弯刀","v":"BLYWD"},{"n":"森林","v":"Forest"},{"n":"只只大冒险","v":"biped"},{"n":"一起开火车!","v":"Unrailed"},{"n":"主机其他游戏","v":"OG"},{"n":"北境之地","v":"BJZD"},{"n":"temtem","v":"temtem"},{"n":"弹丸论破","v":"dwlp"},{"n":"基佬大乱斗","v":"jldld"},{"n":"僵尸毁灭工程","v":"jshmgc"},{"n":"神力科莎","v":"SLKS"},{"n":"超级兔子人","v":"Bunny"},{"n":"岛屿生存者","v":"Sur"},{"n":"盟军敢死队","v":"COMM"},{"n":"冬日计划","v":"drjh"},{"n":"泰坦陨落","v":"Titanfall"},{"n":"四海兄弟","v":"shxd"},{"n":"创世理想乡","v":"Craftopia"},{"n":"柯娜:精Line truncated
|
||||||
|
"kjwh":[{"key":"cateId","name":"分类","init":"qezb","value":[{"n":"数码科技","v":"smkj"},{"n":"纪录片","v":"jlp"},{"n":"成年教育","v":"jiaoyu"},{"n":"人文社科","v":"Humanities"},{"n":"企鹅直播","v":"qezb"}]}],
|
||||||
|
"yl":[{"key":"cateId","name":"分类","init":"ecy","value":[{"n":"二次元","v":"ecy"},{"n":"一起看","v":"yqk"},{"n":"音乐","v":"music"},{"n":"户外","v":"HW"},{"n":"美食","v":"ms"},{"n":"原创IP","v":"ip"},{"n":"心动派对","v":"xdpd"},{"n":"音遇恋人","v":"yinyu"},{"n":"星秀","v":"xingxiu"},{"n":"心动FM","v":"dtxs"},{"n":"娱乐推荐","v":"yltj"},{"n":"中国地质大学(武汉)","v":"CUGWH"}]}],
|
||||||
|
"yp":[{"key":"cateId","name":"分类","init":"paidui","value":[{"n":"派对","v":"paidui"},{"n":"心动FM.","v":"DIANT"},{"n":"一起玩","v":"yiqiwan"}]}],
|
||||||
|
"voice":[{"key":"cateId","name":"分类","init":"yyjy","value":[{"n":"语音交友","v":"yyjy"},{"n":"音乐之声","v":"yyzs"},{"n":"连麦互动","v":"lianmaihudong"},{"n":"娱乐开黑","v":"ylkh"}]}]
|
||||||
|
};
|
||||||
|
if (customArea.length > 0) {
|
||||||
|
const filterCfg = customArea.split('#');
|
||||||
|
classes.unshift({"type_id":"custom","type_name":"自选"});
|
||||||
|
const filterList = _.map(filterCfg, (it) => {
|
||||||
|
const filterKv = it.split(',');
|
||||||
|
return {
|
||||||
|
n: filterKv[1],
|
||||||
|
v: filterKv[0],
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const defKey = filterList[0];
|
||||||
|
filterObj["custom"] = [{"key":"cateId","name":"分类","init":defKey.v,"value":filterList}];
|
||||||
|
}
|
||||||
|
if (isJustLive) {
|
||||||
|
// key-value映射修改
|
||||||
|
const filterKeys = Object.keys(filterObj);
|
||||||
|
for (const filterKey of filterKeys) {
|
||||||
|
const filterItem = filterObj[filterKey];
|
||||||
|
for (const typeItem of filterItem) {
|
||||||
|
typeItem.value = _.map(typeItem.value, (it) => {
|
||||||
|
// 修改默认值
|
||||||
|
if (it.v == typeItem.init) {
|
||||||
|
typeItem.init = it.n;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
n: it.n,
|
||||||
|
v: it.n,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
classes.unshift({"type_id":"home","type_name":"首页"});
|
||||||
|
return JSON.stringify({
|
||||||
|
class: _.map(classes, (it) => {
|
||||||
|
return {
|
||||||
|
type_id: it.type_id,
|
||||||
|
type_name: it.type_name,
|
||||||
|
land: 1,
|
||||||
|
ratio: 1.78,
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
return '{}';
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0 || typeof pg == 'undefined') pg = 1;
|
||||||
|
let url = '';
|
||||||
|
let videos = [];
|
||||||
|
if (isJustLive) {
|
||||||
|
if (tid == 'home') {
|
||||||
|
url = host + '/api/live/getRecommendByPlatform?platform=douyu&size=20&page=' + pg;
|
||||||
|
} else {
|
||||||
|
url = host + '/api/live/getRecommendByPlatformArea?platform=douyu&size=20&area=' + tid + '&page=' + pg;
|
||||||
|
}
|
||||||
|
const data = JSON.parse(await request(url));
|
||||||
|
videos = _.map(data.data, (it) => {
|
||||||
|
return {
|
||||||
|
vod_id: it.roomId,
|
||||||
|
vod_name: it.roomName,
|
||||||
|
vod_pic: it.roomPic,
|
||||||
|
vod_remarks: it.ownerName,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (tid == 'home') {
|
||||||
|
url = host + '/api/room/list?page=' + pg;
|
||||||
|
} else {
|
||||||
|
url = host + '/api/room/list?type=' + extend.cateId + '&page=' + pg;
|
||||||
|
}
|
||||||
|
const data = JSON.parse(await request(url));
|
||||||
|
videos = _.map(data.data.list, (it) => {
|
||||||
|
return {
|
||||||
|
vod_id: it.rid,
|
||||||
|
vod_name: it.roomName,
|
||||||
|
vod_pic: it.roomSrc,
|
||||||
|
vod_remarks: it.nickname,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(pg),
|
||||||
|
pagecount: 9999,
|
||||||
|
limit: 90,
|
||||||
|
total: 999999,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
const data = JSON.parse(await request('http://live.yj1211.work/api/live/getRoomInfo?platform=douyu&roomId=' + id));
|
||||||
|
const video = data.data;
|
||||||
|
const vodList = [];
|
||||||
|
let vod = {
|
||||||
|
vod_id: video.roomId,
|
||||||
|
vod_name: video.roomName,
|
||||||
|
vod_pic: video.roomPic,
|
||||||
|
vod_remarks: video.categoryName,
|
||||||
|
type_name: video.categoryName,
|
||||||
|
vod_director: video.ownerName,
|
||||||
|
vod_actor: '',
|
||||||
|
vod_content: video.online + '人在线',
|
||||||
|
vod_year: '',
|
||||||
|
vod_area: '',
|
||||||
|
};
|
||||||
|
vodList.push(
|
||||||
|
{
|
||||||
|
title: "JustLive",
|
||||||
|
url: "https://getplayurl.lmteam.repl.co/live?platform=douyu&rid=" + video.roomId
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "112114",
|
||||||
|
url: "http://epg.112114.xyz/douyu/" + video.roomId
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "AOIS",
|
||||||
|
url: "https://www.aois.eu.org/live/douyu/" + video.roomId
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "GIPTV",
|
||||||
|
url: "https://www.goodiptv.club/douyu/" + video.roomId
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "KDTV",
|
||||||
|
url: "http://maomao.kandiantv.cn/douyu1.php?id=" + video.roomId
|
||||||
|
}
|
||||||
|
);
|
||||||
|
vod.vod_play_from = video.platForm;
|
||||||
|
vod.vod_play_url = _.map(vodList, (it)=> {
|
||||||
|
return it.title + "$" + it.url
|
||||||
|
}).join("#");
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick) {
|
||||||
|
const resp = await requestRaw(host + '/api/search/liveRoom?did=10000000000000000000000000001501&limit=40&offset=0&sk=' + wd, 'post');
|
||||||
|
const data = JSON.parse(resp.content);
|
||||||
|
let videos = [];
|
||||||
|
for (const vod of data.data.list) {
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.roomId,
|
||||||
|
vod_name: vod.roomName,
|
||||||
|
vod_pic: vod.roomSrc,
|
||||||
|
vod_remarks: vod.nickname,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
import { _ } from 'assets://js/lib/cat.js';
|
||||||
|
import { log } from './lib/utils.js';
|
||||||
|
import { initAli, detailContent, playContent } from './lib/ali.js';
|
||||||
|
|
||||||
|
let siteKey = 'dovx';
|
||||||
|
let siteType = 0;
|
||||||
|
let siteUrl = 'https://api.dovx.tk';
|
||||||
|
let patternAli = /(https:\/\/www\.(aliyundrive|alipan)\.com\/s\/[^"]+)/
|
||||||
|
|
||||||
|
async function request(reqUrl) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'Referer': siteUrl,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
try {
|
||||||
|
siteKey = _.isEmpty(cfg.skey) ? '' : cfg.skey;
|
||||||
|
siteType = _.isEmpty(cfg.stype) ? '' : cfg.stype;
|
||||||
|
await initAli(cfg.ext);
|
||||||
|
} catch (e) {
|
||||||
|
await log('init:' + e.message + ' line:' + e.lineNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
return '{}';
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
return '{}';
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
try {
|
||||||
|
let matches = id.match(patternAli);
|
||||||
|
if (!_.isEmpty(matches)) return await detailContent(matches[0]);
|
||||||
|
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, pg) {
|
||||||
|
let resp = await request(siteUrl + "/ali/search?wd=" + encodeURIComponent(wd));
|
||||||
|
let videos = JSON.parse(resp).list;
|
||||||
|
_.each(videos, (item) => {
|
||||||
|
item.vod_id = item.vod_content;
|
||||||
|
item.vod_content = undefined;
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DUBBpkc3h5c19vcGVuLmpzLGFzc2V0czovL2pzL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4MQ3J5cHRvBlVyaQJfCmRheWpzDl8weDI5ODUOXzB4MTlmNgZrZXkGdXJsDGRldmljZQ5zaXRlS2V5EHNpdGVUeXBlDl8weDIzMjQOXzB4MzRmMw5wa2dOYW1lEmJ1aWxkVGltZQ52ZXJzaW9uFHZlcnNpb25OdW0Sc2lnbmF0dXJlBHVhBHBrBnByawJhDnJlcXVlc3QIaW5pdBJ1cmxBcHBlbmQeZGVjcnlwdFJlc3BvbnNlCGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxwcmVmZXIMZGV0YWlsGHBsYXllckNvbmZpZwhwbGF5DHNlYXJjaBJtM3U4Q2FjaGUaZm9ybWF0UGxheVVybBxmb3JtYXRQbGF5VXJsMgxmaXhVcmwSanNvblBhcnNlDmNoYXJTdHIOcmFuZFN0chRyYW5kRGV2aWNlGGJhc2U2NEVuY29kZRhiYXNlNjREZWNvZGUKbGltaXQWdHlwZV9leHRlbmQwd3E4Nnc3M0NtTU9wSGNPZXc2SEN1eXc9DGVObVlkVQhwdXNoCHNrZXkIJnBnPRZ2b2RfcmVtYXJrczZwYXJzZV9hZnRlcl9jb25maWdfZmVhdHVyZXMaL3NlYXJjaD90ZXh0PQhjZWlsCHRpbWUKc2xpY2UKc2NvcmUIZGF0YQhieE1BSFA4TzZjUnhid283RHJBOU9MSHNLd3JQRHZzT1l3NDdDZ0JBdQhhdG9iGHZvZF9kaXJlY3RvcgxTUWpldFEWdG9VcHBlckNhc2UMJnBraWQ9EHZvZF9uYW1lBmxvZyBaM3cxQk1LWUtnTmF3Nlk9cHc3YkNpbEZCd3JIRHEwckNnY09CY01PM2RjT2hiUTdEckh2Q3ZYSTFjQnRMRGNLQ3dwTVd3clJxBjB4NBJ0eXBlX25hbWUIbGlzdB5leHRyYV9wYXJzZV9hcGkQTm53OUFjT08UY2hhckNvZGVBdBRyZXBsYWNlQWxsDGFyelVuSxh3NzdEdnNPOXdxOVYOJnRva2VuPQ5hbmRyb2lkHEhVQVdFSSBNYXRlIDQwCEhnTTMOcmVwbGFjZdgVdzVIRHQ4T1lHd2RFdzdBL3dyUjdjTUtKdzRmRGdNT0xFQ2Rqd3F6Q2dzS2N3NzR4dzU5ZERzS0lWY09wYmtMQ284S2x3ci9EbE1LUFVWUENzc09NdzVURGdNS2p3cS9DaHdQQ2xjTzBFY09vdzZQRHVNT2x3N3ZDdXcxWXc3eFhROEtQdzdkcXdwSENvY09pdzQ4NXc3dHRid0UvdzdiRGdzS3B3NnRoZHNPcnc3MXFmM2ZDbnNPVUpndEl3ckxEakY3Q25pc3B3b29rdzRGT1F6L0N1c09WUURaandyL0RtU0U4SUFmQ3FtNEx3NUxDaUFGZUNjT3R3NC9EbnNPdkl4UlJ3cEhDcHNPQVlXZkRoY0tadzRnMEhNT2RYc09md3JJaU1TWXV3N29QQXNLWnc1eFd3cEk0WDNrYXdxbFJ3clhDb2cxOFVNS1ZlalREdFJQQ2tSYkRzOEtJTU1PcHc1YkRzOEtxWGNPSndvbEN3NDFPYU1PbmZSM0RnOEtRdzZQQ2pNS2FZTU9RdzY0UHc3RkR3NkxEblhjYXdvakRyOEtYSWhSVnc3NE13NTNDbHNLa3c1UVZ3b1BEb3NLd0pjS0xRbkxEbzhPeXdvdkN2c0tpdzdacVZNS013cFhDanhFeHc2d2RYc0s2dzZFK2E4T0p3NWpEZ1hSK3c3ekNwRUFBdzRSN1M4TzJkY0tBU1dqRGg4T3N3NW5Dc3NLRmNjS1BWc09EYjAvRHAxN0NsTU9YdzdiQ3VjTzV3bzUydzV0ZXdwM0RwRjhoRFIzRHUzbkNqOE9Ud3BBZUpHcFF3cW5Dc3pQQ2djT2N3b0pUd3JJZndwRUl3cjVJdzdERGpjT2d3NXhFQlRGL3c1OXR3cWpDZ01PMExNS2l3N1REbDhLZVZjS2p3b0hDaThPc3dyM0RpY080RGlwNHdvRjVQTU9PdzRURHBNS213NkVxdzRIRGlUd3hmVnhDZVdyRHJVSERvTU9Td292Q2hjT0VRY0tDT01PcHdxaDhNOE9WdzZjY2R3ODdWd1F5R1VUQ2dFZkR1TU80S0ZzcXc1WERtQTF4dzQ3RGdjS01GVVREcnNPVHdyUjhCRXRJZE1PMXdvZFB3cmNhd29UQ2pzT1Ric0tld3JYQ3F4dkNnc0tqdzZKL1E4T0VXRmpDdHNLeExjT1h3cjNEdlhkUXdvcEVmVGN6Q1Q3Q2hsdkN2c08xWTBMQ2tNS2J3NTk4QTBackhHTEN1Y09BSGNLQmFTNDV3NFhDaXpmRGs4SzF3cG5EakVmQ2xzTzl3clREdnNPenc1L0RyQnBid3BUQ25zSzlCalJtZnlOTE9SRWp3NFVxSThPQndyNVdWaTBCd285b1dYdFdOc09OQXNLQndwc0F3clBEcFJiQ3J5OTZ3NTh1dzdiRHFrZkRyWDF2ZDNkQkpXQTVOR2xSYWdURGs4S1hBc0tIdzZ6Q3BzS3lTTU9idzdyRHNNT1pNV1p0d3B3VndwckNsc0tZUThLRHc1ekRua2RLWmNLbXdxdkN0eHZEcTAzQ2xnSENuMU5xd29JSnc3M0R2UnZDdXgvRGdjS25kc09ZU3pQQ2dSbDl3cUlMdzZuQ3VHb2NOOE91d3J6RHF3ZkNvRnpEZzJFdXc2QTlQSGtQdzZ2RHQ4S1lBOEtBZnpndnc1WEN1OE9vZWxqQ3BpYkN0TUtvdzVIQ29zT1V3cEhEaVZMRGtRb0F3NkFxTk1LQXdyQkhmTUtUd29GWlhNTy93cEF1TXdERHVzT0R3NG5Edk1PY01NS3F3cWtsWk1La3c0QUZ3NmZDdkg4Y3dydDNZOEtrd3FqRG5EQnR3clRDa2xsZ05zS1QkL3ZpZGVvX3ByZWZlcj90aWQ9Fi9uYXY/dG9rZW49DmluZGV4T2YIbGFuZwh3NzFmBjB4MAYweDEMdmFSTWNFCGwwJGgcQ29udGVudC1MZW5ndGgSc3Vic3RyaW5nCnN0eXBlemFiYWNkZWZnaGprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkGMHg2CnBhcnNlBjB4MgZlbmMIYXJlYTRwYXJzZV9hZnRlcl9jb25maWdfaGVhZGVycwg2ajlZGHZvZF9wbGF5X3VybDB3N2ZDalFGUUg4S29Fc0tuWTFaVnc2UWoIZTBoRQ5jb25zb2xlCHBsb3QMY2hhckF0FFVzZXItQWdlbnQMQmFzZTY0CGNvZGUIa2V5cw5pc0VtcHR5EHZvZF95ZWFyDmNvbnRlbnQScGFnZWNvdW50JnJldHVybiAoZnVuY3Rpb24oKSAMdm9kX2lkEnBhcnNlX2FwaRJzdHJpbmdpZnkQaW5jbHVkZXMITilubBJ2b2RfY2xhc3MIaGl0cyIvdmlkZW9fZGV0YWlsP2lkPQY6Ly8MaHVhd2VpHGhhc093blByb3BlcnR5GHc3WENsUXRKRkE9PQ52b2RfcGljBjs7OxB2b2RfaW5mbzpwYXJzZV9hZnRlcl9jb25maWdfdXNlcl9hZ2VudAoubTN1OAh0cmltDHhJVVlacgpkc3h5cwhVdGY4CGh0dHAUc3RhcnRzV2l0aAxxakRtRXPoKndvZkNrY0tXT2tEQ2tpYkRuOEtOTGlyRGgyVWJ3cTR5dzdWNEE4S2N3cFFlVWNLZnc0TERweVhEckRnVFNjT1FmaXZEbWtqQ3ZFa3pKTU9jd3AxMllXSVhGc0tOV3dqRHZjT0NNOEtoUWNPZEpNS3dMc0s5VFJGN1gwTEN2RTdEck1Ld3c3dkNpRHpEc1hBcXdxQUJ3cmJEdkF6Q25jS1Z3cGZEdTBWTGNsekRtQ2pDcjhLZVFrc3R3N2pEbU1LbXc2Y3V3NTdDb2NLMHdxM0N1M25DdDNZVHdwRVh3N25Dc3NLYndxd1B3NlhEdkNWM3dxRENqTU9ud29MRGx5L0Ruc09Gd3IwSXdwQVVESFZVd3E4T1E4S2tjOEtIdzRMRHNoWk5GY08wQUZrQ0JzS29LRG5Db3NPdUs4T3RhOE9ydzZNMHdvekRvY0tEWGNPNklnaCtWc0tBZHNLSnc3Vmd3N0Urd3F6RG9NS213cnZDcnlYQ2pjT1lIOE92Q3NPMWYya0dmY09Ed292Q3RoOUhjaXZDZ2NLSFZjS3h3cGRRdzRWTlM4T1NGOE9UdzdyQ2t6N0NnY0t5dzVWZXdyUkVBc0t6SHo3Q3NpdkR1MWZEb2NPSGVzS2tTY09wd3FsOHc3SERqc08vdzRuQ3VUY3V3NzdEb0UzRG1NTzBCTU9KdzRyQ2xYTUt3cUZFTmhYRG5oakRrRjUxUGgzRHZjTzdPbFREcThLa004S3lmY0s5R2cvQ3RBbGp3cDdEbHpsUVhqQWxEc0tjUGg3Q3RzS2FWSE41dzdRbXc0OWV3b2ZEajhLZk8yWENsOEtQdzRIQ2k4TzhRY0tyd3BiRGwzZkRoTUs2dzRMRGdjTy9BOEtkdzRiRHRuWERwMDNDaDBiQ2huZDl3cEJ1d3E5U3c2UTJ3NW5EcmNLN1NSNDN3b25EaFVyQ244S1p3N0FPWXNLcVI4S2taeVBEbDhLbGZNS3d3ci9DdVFURHE4S2l3cWdZRzhLM0tNS0lIUnZEa01LUktnREN1M1FFWm1yQ21zS3R3cEZvd3IvQ2hzT2x3clZhdzVJQXc0cHB3cXQ5ZnlQQ3ZBNEt3NkREbTE5L3dvTlNKUnRZZDhPdlJNS1h3NXZEbDI3RHNqUENyc0tPWmlocFljS013ckxDcjhPWVRzS3BaTU9kZmlmQ3U4S2F3cXdHQ3pjY0JCSjd3NHB4d3B0bFpzSzF
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DIAR5kdWFuanU1X29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgxDcnlwdG8IbG9hZAJfBmtleQhIT1NUDnNpdGVLZXkQc2l0ZVR5cGUSTU9CSUxFX1VBDnJlcXVlc3QIaW5pdAhob21lDmhvbWVWb2QQY2F0ZWdvcnkMZGV0YWlsCHBsYXkMc2VhcmNoGGJhc2U2NERlY29kZRpkZWNvZGVVbmljb2RlB+13Z1JRfypodHRwczovL20uZHVhbmp1NS5jb22WAk1vemlsbGEvNS4wIChpUGhvbmU7IENQVSBpUGhvbmUgT1MgMTNfMl8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xMy4wLjMgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjEMcmVxVXJsDmFnZW50U3AGcmVzBnJlcQxtZXRob2QUVXNlci1BZ2VudA5oZWFkZXJzDmNvbnNvbGUKZGVidWcYcmVxVXJsID09PT4gInJlcy5jb250ZW50ID09PT4gDmNvbnRlbnQGY2ZnCHNrZXkKc3R5cGUMZmlsdGVyDmNsYXNzZXMSZmlsdGVyT2JqDGZpbExldApmaWxCeQhuaXhpDnR5cGVfaWQFBpCtiBJ0eXBlX25hbWUSdGlhbmNob25nBRx1oFsObnVlbGlhbgVQhktgEGNodWFueXVlBX96io0UY2hvbmdzaGVuZwXNkR91DGxldHRlcgVXW81rBWhR6JACbgJ2AkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgRieQWSY49eBfZl9JUIdGltZQW6ThRsCGhpdHMFxIsGUgpzY29yZRJzdHJpbmdpZnkGbWFwDmZpbHRlcnMGY2xzAmkIcHVzaAR7fQZ0aWQEcGcMZXh0ZW5kCGxpbmsIaHRtbAIkCml0ZW1zDHZpZGVvcw5oYXNNb3JlDnBnQ291bnQSL3ZvZHNob3cvBC0tBi0tLRAtLS0uaHRtbDgubW9kdWxlLWl0ZW1zID4gLm1vZHVsZS1pdGVtNWQAaQB2ACMAcABhAGcAZQAgAD4AIABhADoAYwBvAG4AdABhAGkAbgBzACgAC04ATnWYKQAQcGFyc2VJbnQIcGFnZRJwYWdlY291bnQKbGltaXQKdG90YWwIbGlzdAhpdGVtAmEIdnBpYw5yZW1hcmtzCGZpbmQOYTpmaXJzdBJpbWc6Zmlyc3QOYXR0cmlicxBkYXRhLXNyYyhkaXYubW9kdWxlLWl0ZW0tdGV4dBBjaGlsZHJlbghkYXRhCGhyZWYOcmVwbGFjZQQkMQx2b2RfaWQKdGl0bGUQdm9kX25hbWUUc3RhcnRzV2l0aAQvLwxodHRwczoCLw52b2RfcGljFnZvZF9yZW1hcmtzBGlkCHRhZ3MGdm9kDnBsYXlNYXAIdGFicxJwbGF5bGlzdHMIdXJscxh2b2RfcGxheV91cmwWL3ZvZGRldGFpbC8KLmh0bWwyZGl2LnZpZGVvLWluZm8taXRlbTplcSgxKQh0ZXh0GmgxLnBhZ2UtdGl0bGUIdHJpbRJ2b2RfYWN0b3IYZGl2LnRhZy1saW5rEHZvZF90eXBlGGltZy5sYXp5bG9hZEJkaXYudmlkZW8taW5mby1jb250ZW50IHNwYW46Zmlyc3QWdm9kX2NvbnRlbnQSdm9kID09PT4gZmRpdi5tb2R1bGUtdGFiLWNvbnRlbnQ6Zmlyc3QgPiBkaXZbY2xhc3MqPXRhYi1pdGVtXQhzcGFuGmRpdi5zb3J0LWl0ZW0IZWFjaAhrZXlzBiQkJBp2b2RfcGxheV9mcm9tBnRhYgRpdA5wbGF5VXJsHGhhc093blByb3BlcnR5DHVybGlzdAIjCGZsYWcIcHVybApwYXJzZQptYXRjaAZ1cmwOZW5jcnlwdBB1bmVzY2FwZQR3ZApxdWlja0IvaW5kZXgucGhwL2FqYXgvc3VnZ2VzdD9taWQ9MSZ3ZD0SJmxpbWl0PTUwBGVuBnBpYwZlbmMIVXRmOAxCYXNlNjQGc3RyAiUPpAMBpgMBABKoAwADAKoDAAGsAwACrgMADgAGAaABAAAAARMLWgCqAwAMrAMBDK4DAgywAwAJsgMBCbQDAgm2AwMJuAMEDboDBQG8AwYBvgMHAcADCAHCAwkBxAMKAcYDCwHIAwwBygMNAcwDDgGoAw8BCOg5vgBfCAC+AV8JAL4CXwoAvgNfCwC+BF8MAL4FXw0AvgZfDgC+B18PAL4IXxAAvglfEQC+Cl8SACkE5wAAAOIE6AAAAF8EAL9fBQCzXwYABOkAAABfBwAppAMBDAEAOwYhKxcYAAjWAg5iBgG6AwIBAgYCAGYD1AMAAQDWAwABANgDAQAguAMHDMwDEQBhAAA47QAAAM8LBEEAAABM7gAAAAvQEekFDmUAAEzvAAAATPAAAADui8c48QAAAELyAAAABPMAAADPnSQBAA448QAAAELyAAAABPQAAADcYgAAQfUAAADtnSQBAA5iAABB9QAAAC6kAwoJEiY1CEQcEmyZDmIGAbwDAQABAgIAGAHsAwABALQDBQi2AwYIz0H3AAAAEWYAAA7PQfgAAAARZgEADgYupAMXAwM6Og5iBgG+AwEEAR0BAdUGBfIDAAEA9AMBADD2AwEBcPgDAQJg+gMBA2CuAwIMYQMAYQIAYQEAYQAACwT+AAAATP8AAAAEAAEAAEwBAQAACwQCAQAATP8AAAAEAwEAAEwBAQAACwQEAQAATP8AAAAEBQEAAEwBAQAACwQGAQAATP8AAAAEBwEAAEwBAQAACwQIAQAATP8AAAAECQEAAEwBAQAAJgUAxwvICwQKAQAATNgAAAAECwEAAEw2AAAACwQMAQAATA0BAAC/TA4BAAALBA8BAABMDQEAAAQPAQAATA4BAAALBBABAABMDQEAAAQQAQAATA4BAAALBBEBAABMDQEAAAQRAQAATA4BAAALBBIBAABMDQEAAAQSAQAATA4BAAALBBMBAABMDQEAAAQTAQAATA4BAAALBBQBAABMDQEAAAQUAQAATA4BAAALBBUBAABMDQEAAAQVAQAATA4BAAALBBYBAABMDQEAAAQWAQAATA4BAAALBBcBAABMDQEAAAQXAQAATA4BAAALBBgBAABMDQEAAAQYAQAATA4BAAALBBkBAABMDQEAAAQZAQAATA4BAAALBBoBAABMDQEAAAQaAQAATA4BAAALBBsBAABMDQEAAAQbAQAATA4BAAALBBwBAABMDQEAAAQcAQAATA4BAAALBB0BAABMDQEAAAQdAQAATA4BAAALBB4BAABMDQEAAAQeAQAATA4BAAALBB8BAABMDQEAAAQfAQAATA4BAAALBCABAABMDQEAAAQgAQAATA4BAAALBCEBAABMDQEAAAQhAQAATA4BAAALBCIBAABMDQEAAAQiAQAATA4BAAALBCMBAABMDQEAAAQjAQAATA4BAAALBCQBAABMDQEAAAQkAQAATA4BAAALBCUBAABMDQEAAAQlAQAATA4BAAALBCYBAABMDQEAAAQmAQAATA4BAAALBCcBAABMDQEAAAQnAQAATA4BAAALBCgBAABMDQEAAAQoAQAATA4BAAAmGwBMQAAAAMkLBCkBAABM2AAAAAQqAQAATDYAAAALBCsBAABMDQEAAAQsAQAATA4BAAALBC0BAABMDQEAAAQuAQAATA4BAAALBC8BAABMDQEAAAQwAQAATA4BAAAmAwBMQAAAAMo4mAAAAEIxAQAAC2UAAEIyAQAAYgAAvgAkAgBMHgAAAGIBAEwzAQAAJAEALqQDHBI/AG0CDQDRBAIAXQI6AAsONSsOQgYBAAEBAQQDAGkC6AQAAQDqBAAAAPYDAQ34AwIJ+gMDCWUAAM9B/wAAAHEmAABJZQAAz0H/AAAAR0I2AQAAZQEAZQIAJAIADrPHw2UAAM9B/wAAAEfno+gwZQAAz0H/AAAAR8NHBN4AAABxZQAAz0H/AAAAR8NHQUAAAACzR0EOAQAASZMA6sPPKKQDIgYDSYBY2hcOYgYBwAMAAAABAAAGAAQ3AQAALqQDLgEDDmIGAcIDBAcEDAQB7wEL8AQAAQDyBAABAPIDAAEA9AQAAQD2BAEAMPgEAQEw+gQBAnD8BAEDMP4EAQQggAUBBTCCBQEGMLIDBAi6AwgArAMBDK4DAgxhBgBhBQBhBABhAwBhAgBhAQBhAADQs6QR6QQO0PLoA7TUv0JcAAAAZQAABEIBAADPBEMBAADSQSkBAAAR6QMOvwREAQAA0kEKAQAAEekDDr8ERAEAANAERQEAACQKAMfcYgAA7YvIZQIAYgEA7cliAgAERgEAAO3KZQMAQjIBAABiAwC+ACQCAMEEYgIABEcBAADt57OlwQViBQDoDDhIAQAA0O20neoIOEgBAADQ7cEGOJgAAABCMQEAAAs4SAEAANDtTEkBAABiBgBMSgEAALtITEsBAAC7SGIGAJpMTAEAAGIEAExNAQAAJAEALqQDMhRsRAA+AiYrNQALFCZJgDo/KyY6Kw5CBgEAAQMBBQIC5AEEnAUAAQCeBQEAMKAFAQEwogUBAjD6BAINsgMACGECAGEBAGEAAGUAAM/tQlIBAAAEUwEAACQBALNHx2UAAM/tQlIBAAAEVAEAACQBALNHQVUBAAAEVgEAAEfIZQAAz+1CUgEAAARXAQAAJAEAs0dBWAEAALNHQVkBAADJC2IAAEFVAQAAQVoBAABCWwEAAL0AvQEzBFwBAAAkAgBMXQEAAGIAAEFVAQAAQV4BAABMXwEAAGIBAEJgAQAABGEBAAAkAQDoDARiAQAAYgEAneofYgEAQmABAAAEYwEAACQBAOgKZQEAYgEAneoEYgEATGQBAAB
Line truncated
|
||||||
@@ -0,0 +1,166 @@
|
|||||||
|
import { Crypto, load, _, jinja2 } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'duboku';
|
||||||
|
let url = 'https://u.duboku.io';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
const UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1';
|
||||||
|
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': agentSp || UA,
|
||||||
|
'Referer': url
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
const html = await request(url);
|
||||||
|
const $ = load(html);
|
||||||
|
const class_parse = $('ul.nav-list > li > a[href*=vodtype]');
|
||||||
|
let classes = [];
|
||||||
|
classes = _.map(class_parse, (cls) => {
|
||||||
|
let typeId = cls.attribs['href'];
|
||||||
|
typeId = typeId.substring(typeId.lastIndexOf('/') + 1).replace('.html','');
|
||||||
|
return {
|
||||||
|
type_id: typeId,
|
||||||
|
type_name: cls.children[0].data,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
let filterObj = {
|
||||||
|
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"陆剧","v":"13"},{"n":"日韩剧","v":"15"},{"n":"短剧","v":"21"},{"n":"台泰剧","v":"14"},{"n":"港剧","v":"20"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"韩国","v":"韩国"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"英国","v":"英国"},{"n":"巴西","v":"巴西"},{"n":"泰国","v":"泰国"},{"n":"法国","v":"法国"},{"n":"日本","v":"日本"},{"n":"荷兰","v":"荷兰"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"韩语","v":"韩语"},{"n":"泰语","v":"泰语"},{"n":"法语","v":"法语"},{"n":"日语","v":"日语"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"真人秀","v":"真人秀"},{"n":"选秀","v":"选秀"},{"n":"竞演","v":"竞演"},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"玄幻","v":"玄幻"},{"n":"武侠","v":"武侠"},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":"冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":"社会","v":"社会"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"国产","v":"国产"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"13":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"15":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"21":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"14":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"台湾","v":"台湾"},{"n":"泰国","v":"泰国"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"20":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"悬疑","v":"悬疑"},{"n":"武侠","v":"武侠"},{"n":"科幻","v":"科幻"},{"n":"都市","v":"都市"},{"n":"爱情","v":"爱情"},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春","v":"青春"},{"n":"偶像","v":"偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"乡村","v":"乡村"},{"n":"年代","v":"年代"},{"n":"警匪","v":"警匪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"罪案","v":"罪案"},{"n":"宫廷","v":"宫廷"},{"n":"BL","v":"BL"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
const link = url + '/vodshow/2--hits---------.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.myui-panel_bd > ul.myui-vodlist > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.pic-text')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: it.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
|
||||||
|
const link = url + '/vodshow/' + (extend.CateId || tid) + '-'+(extend.area || '')+'-'+(extend.by || 'time')+'-'+(extend.class || '')+'-'+(extend.lang || '')+'-'+(extend.letter || '')+'---' + (`${pg}`) + '---'+(extend.year || '')+'.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.myui-panel_bd > ul.myui-vodlist > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.pic-text')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: it.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('ul.myui-page > li > a:contains(下一页)').length > 0;
|
||||||
|
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(pg),
|
||||||
|
pagecount: pgCount,
|
||||||
|
limit: 24,
|
||||||
|
total: 24 * pgCount,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
const html = await request(url + '/voddetail/' + id + '.html');
|
||||||
|
const $ = load(html);
|
||||||
|
let vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('h1:first').text().trim(),
|
||||||
|
vod_type: $('.myui-content__detail p:first a').text(),
|
||||||
|
vod_actor: $('.myui-content__detail p:nth-child(5)').text().replace('主演:',''),
|
||||||
|
vod_director: $('.myui-content__detail p:nth-child(6)').text().replace('导演:',''),
|
||||||
|
vod_pic: $('div.myui-content__thumb img:first').attr('data-original'),
|
||||||
|
vod_remarks :$('#rating:first span').text().replace(/\s{2,}/g, ' '),
|
||||||
|
vod_content: $('span.data').text().trim(),
|
||||||
|
};
|
||||||
|
const playlist = _.map($('ul.sort-list > li > a'), (it) => {
|
||||||
|
return it.children[0].data + '$' + it.attribs.href.replace(/\/vodplay\/(.*).html/g, '$1');
|
||||||
|
});
|
||||||
|
vod.vod_play_from = key;
|
||||||
|
vod.vod_play_url = playlist.join('#');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
const link = url + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_data=',''));
|
||||||
|
const playUrl = js.url.replace('index.m3u8','hls\/index.m3u8');
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick) {
|
||||||
|
let data = JSON.parse(await request(url + '/index.php/ajax/suggest?mid=1&wd=' + wd)).list;
|
||||||
|
let videos = [];
|
||||||
|
for (const vod of data) {
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.id,
|
||||||
|
vod_name: vod.name,
|
||||||
|
vod_pic: vod.pic,
|
||||||
|
vod_remarks: '',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
// 修复 Windows版 播放转圈圈
|
||||||
|
import { load, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'duboku';
|
||||||
|
let HOST = 'https://u.duboku.io';
|
||||||
|
// let HOST = 'https://www.duboku.tv';
|
||||||
|
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);
|
||||||
|
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 = HOST + '/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 = HOST + '/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(HOST + '/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_from = '道长在线';
|
||||||
|
vod.vod_play_url = playlist.join('#');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
const link = HOST + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace(/var player_.*=/,''));
|
||||||
|
const playUrl = js.url;
|
||||||
|
let headers = {
|
||||||
|
"referer": HOST+"/static/player/vidjs.html",
|
||||||
|
};
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
header: headers,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick) {
|
||||||
|
let data = JSON.parse(await request(HOST + '/index.php/ajax/suggest?mid=1&wd=' + wd + '&limit=50')).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,
|
||||||
|
limit: 50,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,166 @@
|
|||||||
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DoARhkeXhzX29wZW4uanMYLi9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwhsb2FkAl8Ga2V5CEhPU1QGdXJsDnNpdGVLZXkQc2l0ZVR5cGUEVUEOcmVxdWVzdAhpbml0CGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxkZXRhaWwIcGxheRhiYXNlNjRFbmNvZGUYYmFzZTY0RGVjb2RlDHNlYXJjaAhkeXhzQGh0dHBzOi8veGluZGl6aGkuZ2l0aHViLmlvL2R5eHMvigJNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDlfMyBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDEuMS40NiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vOS4wIE1vYmlsZS8xM0UyMzAgU2FmYXJpLzYwMS4xDHJlcVVybA5hZ2VudFNwBnJlcwZyZXEMbWV0aG9kFFVzZXItQWdlbnQOUmVmZXJlcg5oZWFkZXJzDmNvbnRlbnQGY2ZnCGh0bWwIc2tleQpzdHlwZQptYXRjaA5jb25zb2xlCmRlYnVnF/ONbI8wV0BXIAA9AD0APQA9AD0APgAMZmlsdGVyDmNsYXNzZXMSZmlsdGVyT2JqHnBpYW5rdS1kaWFueWluZw50eXBlX2lkBTV1cV8SdHlwZV9uYW1lIHBpYW5rdS1kaWFuc2hpanUF/Y9nUhpwaWFua3Utem9uZ3lpBfx+eoIccGlhbmt1LWRvbmdtYW4FqFIrbwVnUsVgBWhR6JACbgJ2Dk5ldGZsaXgFnFVnUgWoUlxPBTFyxWAF0Xl7XgWoUjt1BaxgkXUFymCaYAVmiypTBVBgFmAFr3JqfwUMVCdgBfOXUE4FTGseggUgT7CLBYZT8lMFGGKJTgV/ieiQBUdZe14FklFplgV+cL6WBWZroE8F5FPFiAWqflVfBdCPqFIJUpclZnZQz1AF/ZACXgXFYG9mBe13R3IIYXJlYQUwVzpTCS1O/VYnWUaWCS1O/VaZmS9uCS1O/VbwU35uBY5//VYF6Zf9VgXlZSxnBfBs/VYHsGWgUmFXCWyaZWd/iZpOBXBTpl4F8YL9VgXVbP1WB6BS/2InWQd/ie1zWXIHxE9Xf69lCbNvJ1kpUppOBXZRg1sIbGFuZwXtiwCKBf1W7YsF8YLtiwWkfO2LB/2VV1PtiwXpl+2LBeVl7YsF1WztiwW3X+2LCQ9hJ1kpUu2LBfBs7YsJf4ntc1ly7YsJYYQEhFly7YsHcFMwV+2LCfBsc3wUXO2LBcRP7YsIeWVhcgX2ZfSVBGJ5BZJjj14IdGltZQW6ThRsCGhpdHMFxIsGUgpzY29yZQXtd2dSBXZR1k4HH3e6TsB5BcVlOG4Fjn/fmBJzdHJpbmdpZnkOZmlsdGVycwZ0aWQEcGcMZXh0ZW5kCGxpbmsCJAppdGVtcwx2aWRlb3MOaGFzTW9yZQ5wZ0NvdW50Ai8CLQgtLS0tBi0tLUBkaXYubW9kdWxlLWl0ZW1zIGRpdi5tb2R1bGUtaXRlbQZtYXA1ZABpAHYAIwBwAGEAZwBlACAAPgAgAGEAOgBjAG8AbgB0AGEAaQBuAHMAKAALTgBOdZgpABBwYXJzZUludAhwYWdlEnBhZ2Vjb3VudApsaW1pdAp0b3RhbAhsaXN0CGl0ZW0EaXQCaw5yZW1hcmtzCGZpbmQCYRJpbWc6Zmlyc3QoZGl2Lm1vZHVsZS1pdGVtLXRleHQIdGV4dAh0cmltDmF0dHJpYnMIaHJlZgx2b2RfaWQKdGl0bGUQdm9kX25hbWUQZGF0YS1zcmMOdm9kX3BpYxZ2b2RfcmVtYXJrcwRpZAZ2b2QOcGxheU1hcAh0YWJzEnBsYXlsaXN0cwh1cmxzGHZvZF9wbGF5X3VybBBoMTpmaXJzdCIudmlkZW8taW5mby1hdXggYRB2b2RfdHlwZSoudmlkZW8taW5mby1tYWluIHNwYW4OcmVwbGFjZQ0KTiBmGv9nUsVgGv8Sdm9kX2FjdG9yNC5tb2R1bGUtaXRlbS1waWMgaW1nOmZpcnN0CGF0dHJILnN0dWktY29udGVudF9fZGV0YWlsIHA6bnRoLWNoaWxkKDUpJi52aWRlby1pbmZvLWNvbnRlbnQWdm9kX2NvbnRlbnRmZGl2Lm1vZHVsZS10YWItY29udGVudCA+IGRpdi5tb2R1bGUtdGFiLWl0ZW0gPiBzcGFuGmRpdi5zb3J0LWl0ZW0IZWFjaAhrZXlzBiQkJBp2b2RfcGxheV9mcm9tBnRhYgJpEGNoaWxkcmVuCGRhdGEOcGxheVVybBxoYXNPd25Qcm9wZXJ0eQhwdXNoDHVybGlzdAIj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
Line truncated
|
||||||
+126
@@ -0,0 +1,126 @@
|
|||||||
|
import { Crypto, load, _, jinja2 } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'ff';
|
||||||
|
let HOST = 'https://cj.ffzyapi.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,
|
||||||
|
'Referer': HOST
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":1,"type_name":"电影"},{"type_id":2,"type_name":"追剧"},{"type_id":3,"type_name":"综艺"},{"type_id":4,"type_name":"动漫"}];
|
||||||
|
let filterObj = {
|
||||||
|
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"短剧","v":"36"},{"n":"陆剧","v":"13"},{"n":"韩剧","v":"15"},{"n":"欧美剧","v":"16"},{"n":"港剧","v":"14"},{"n":"台剧","v":"21"},{"n":"日剧","v":"22"},{"n":"海外剧","v":"23"},{"n":"泰剧","v":"24"},{"n":"纪录片","v":"20"}]}],
|
||||||
|
"1":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"1"},{"n":"动作片","v":"6"},{"n":"喜剧片","v":"7"},{"n":"爱情片","v":"8"},{"n":"科幻片","v":"9"},{"n":"恐怖片","v":"10"},{"n":"剧情片","v":"11"},{"n":"战争片","v":"12"}]}],
|
||||||
|
"3":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"3"},{"n":"国综","v":"25"},{"n":"港综","v":"26"},{"n":"韩日综","v":"27"},{"n":"欧美综","v":"28"}]}],
|
||||||
|
"4":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"4"},{"n":"国漫","v":"29"},{"n":"日韩动漫","v":"30"},{"n":"欧美动漫","v":"31"},{"n":"港漫","v":"32"},{"n":"海外动漫","v":"33"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let data = JSON.parse(await request(HOST + '/index.php/ajax/data?mid=1&tid=' + (extend.cateId || tid) + '&page=' + pg + '&limit=20'));
|
||||||
|
|
||||||
|
let videos = [];
|
||||||
|
for (const vod of data.list) {
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.vod_id,
|
||||||
|
vod_name: vod.vod_name,
|
||||||
|
vod_pic: vod.vod_pic,
|
||||||
|
vod_remarks: '',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(data.page),
|
||||||
|
pagecount: data.pagecount,
|
||||||
|
limit: 20,
|
||||||
|
total: data.total,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
var html = await request( HOST + '/index.php/vod/detail/id/' + 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(),
|
||||||
|
};
|
||||||
|
const playlist = _.map($('div.ffm3u8 > li > a[target*=_blank]'), (it) => {
|
||||||
|
return it.attribs.title + '$' + it.attribs.href;
|
||||||
|
});
|
||||||
|
vod.vod_play_from = "非凡直达";
|
||||||
|
vod.vod_play_url = playlist.join('#');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let data = JSON.parse(await request(HOST + '/api.php/provide/vod/?wd=' + wd + '&pg=' +pg + '&ac=detail'));///api.php/provide/vod/?wd=搜索词&pg=翻页&ac=detail
|
||||||
|
|
||||||
|
let videos = [];
|
||||||
|
for (const vod of data.list) {
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.vod_id,
|
||||||
|
vod_name: vod.vod_name,
|
||||||
|
vod_pic: vod.vod_pic,
|
||||||
|
vod_remarks: '',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(data.page),
|
||||||
|
pagecount: data.pagecount,
|
||||||
|
limit: 20,
|
||||||
|
total: data.total,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,222 @@
|
|||||||
|
import { Crypto, load, _ } from 'assets://js/lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'freeok';
|
||||||
|
let HOST = 'https://www.freeok.vip';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
let cookie = '';
|
||||||
|
|
||||||
|
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, reqCookie) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': UA,
|
||||||
|
'Referer': HOST,
|
||||||
|
'cookie': reqCookie
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
if (cfg.hasOwnProperty('ext')) {
|
||||||
|
if (cfg.ext.hasOwnProperty('host')) {
|
||||||
|
HOST = cfg.ext.host;
|
||||||
|
}
|
||||||
|
if (cfg.ext.hasOwnProperty('cookie')) {
|
||||||
|
cookie = cfg.ext.cookie;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let 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":"少儿"}];
|
||||||
|
let filterObj = {
|
||||||
|
"1":[{"key":"class","name":"剧情","init":"","value":[{"n":"全部","v":""},{"n":"动作","v":"动作"},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"恐怖","v":"恐怖"},{"n":"犯罪","v":"犯罪"},{"n":"谍战","v":"谍战"},{"n":"冒险","v":"冒险"},{"n":"奇幻","v":"奇幻"},{"n":"灾难","v":"灾难"},{"n":"战争","v":"战争"},{"n":"动画","v":"动画"},{"n":"歌舞","v":"歌舞"},{"n":"历史","v":"历史"},{"n":"纪录","v":"纪录"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","init":"","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":"lang","name":"语言","init":"","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"法语","v":"法语"},{"n":"德语","v":"德语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","init":"","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":"by","name":"排序","init":"","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"2":[{"key":"cateId","name":"类型","init":"2","value":[{"n":"全部","v":"2"},{"n":"国产剧","v":"6"},{"n":"港台剧","v":"7"},{"n":"日韩剧","v":"8"},{"n":"欧美剧","v":"9"},{"n":"海外剧","v":"10"},{"n":"其他剧","v":"11"}]},{"key":"class","name":"剧情","init":"","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":"地区","init":"","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":"lang","name":"语言","init":"","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","init":"","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":"by","name":"排序","init":"","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"3":[{"key":"class","name":"剧情","init":"","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":"地区","init":"","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":"lang","name":"语言","init":"","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","init":"","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":"by","name":"排序","init":"","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"4":[{"key":"class","name":"剧情","init":"","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":"area","name":"地区","init":"","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":"lang","name":"语言","init":"","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","init":"","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":"by","name":"排序","init":"","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"5":[{"key":"by","name":"排序","init":"","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
}
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let page = '';
|
||||||
|
if (pg > 1) {
|
||||||
|
page = pg;
|
||||||
|
}
|
||||||
|
const link = HOST + '/vodshow/' + (extend.cateId || tid) + '-' + (extend.area || '') + '-' + (extend.by || '') + '-' + (extend.class || '') + '-' + (extend.lang || '') + '----' + page + '---' + (extend.year || '') + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('a.module-item');
|
||||||
|
const covers = $('.module-item-cover');
|
||||||
|
let videos = _.map(items, (item, index) => {
|
||||||
|
const cover = $(covers[index]);
|
||||||
|
const img = cover.find('img:first')[0];
|
||||||
|
const remarks = $(cover.find('div.module-item-note')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: item.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
|
||||||
|
vod_name: item.attribs.title,
|
||||||
|
vod_pic: img.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('a.page-next: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 + '/voddetail/' + id + '.html');
|
||||||
|
const $ = load(html);
|
||||||
|
const vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('h1:first').text(),
|
||||||
|
vod_type: $('.module-info-tag-link:eq(2) a:first').text().trim(),
|
||||||
|
vod_year: $('.module-info-tag-link:eq(0)').text().trim(),
|
||||||
|
vod_area: $('.module-info-tag-link:eq(1)').text().trim(),
|
||||||
|
vod_director: $('.module-info-item:contains(导演:)').text().trim().substring(3).trim().replace(/\/$/g, ''),
|
||||||
|
vod_actor: $('.module-info-item:contains(主演:)').text().trim().substring(3).trim().replace(/\/$/g, ''),
|
||||||
|
vod_pic: $('.module-info-poster .module-item-pic img:first').attr('data-original'),
|
||||||
|
vod_remarks : $('.module-info-item:contains(集数:)').text().trim().substring(3) || '',
|
||||||
|
vod_content: $('.module-info-introduction-content').text().trim(),
|
||||||
|
};
|
||||||
|
let playMap = {};
|
||||||
|
let tabs = $('.module-tab-items-box .module-tab-item');
|
||||||
|
let playlists = $('.module-play-list');
|
||||||
|
_.each(tabs, (tab, i) => {
|
||||||
|
let from = tab.children[0].children[0].data;
|
||||||
|
if (from.includes('夸克')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let list = playlists[i];
|
||||||
|
list = $(list).find('a');
|
||||||
|
_.each(list, (it) => {
|
||||||
|
let title = it.children[0].children[0].data;
|
||||||
|
let playUrl = it.attribs.href.replace(/.*?\/vodplay\/(.*).html/g, '$1');
|
||||||
|
if (!playMap.hasOwnProperty(from)) {
|
||||||
|
playMap[from] = [];
|
||||||
|
}
|
||||||
|
playMap[from].push(title + '$' + playUrl);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
vod.vod_play_from = _.keys(playMap).join('$$$');
|
||||||
|
let 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 link = HOST + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html, true);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=',''));
|
||||||
|
let playUrl = js.url;
|
||||||
|
if (js.encrypt == 1) {
|
||||||
|
playUrl = unescape(playUrl);
|
||||||
|
} else if (js.encrypt == 2) {
|
||||||
|
playUrl = unescape(base64Decode(playUrl));
|
||||||
|
}
|
||||||
|
let playHtml = await request('https://www.freeok.vip/okplay/?url=' + playUrl);
|
||||||
|
playUrl = decryptUrl(playHtml);
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
header: {
|
||||||
|
'User-Agent': UA,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function decryptUrl(html) {
|
||||||
|
const result = html.match(/var config = {[\w\W]*}[\w\W]*player/);
|
||||||
|
const jsConfig = eval(result[0].replace(/player$/g, ';config'));
|
||||||
|
const url = jsConfig.url;
|
||||||
|
const $ = load(html);
|
||||||
|
const textStr = $('meta[name="viewport"]').attr('id').replace('now_', '');
|
||||||
|
const idStr = $('meta[charset="UTF-8"]').attr('id').replace('now_', '');
|
||||||
|
let keyList = [];
|
||||||
|
let sortedList = [];
|
||||||
|
let keyStr = '';
|
||||||
|
for (let index = 0; index < idStr.length; index++) {
|
||||||
|
keyList.push({
|
||||||
|
'id': idStr[index],
|
||||||
|
'text': textStr[index]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
sortedList = keyList.sort((a, b)=> a.id - b.id);
|
||||||
|
for (const item of sortedList) {
|
||||||
|
keyStr += item.text;
|
||||||
|
}
|
||||||
|
const md5Key = Crypto.MD5(keyStr + '0xd8@pS^vOL$WuOF3').toString();
|
||||||
|
const endStr = Crypto.enc.Utf8.parse(md5Key.substring(16));
|
||||||
|
const iv = Crypto.enc.Utf8.parse(md5Key.substring(0, 16));
|
||||||
|
const decrypted = Crypto.AES.decrypt(url, endStr, {
|
||||||
|
'iv': iv,
|
||||||
|
'mode': Crypto.mode.CBC,
|
||||||
|
'padding': Crypto.pad.Pkcs7,
|
||||||
|
});
|
||||||
|
const decryptedUrl = Crypto.enc.Utf8.stringify(decrypted);
|
||||||
|
return decryptedUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
function base64Decode(text) {
|
||||||
|
return Crypto.enc.Utf8.stringify(Crypto.enc.Base64.parse(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let html = await request(HOST + '/vod-so/-------------.html?wd=' + wd, cookie);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.module-card-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const title = $(item).find('.module-card-item-title a:first')[0];
|
||||||
|
const cover = $(item).find('.module-item-cover');
|
||||||
|
const img = cover.find('img:first')[0];
|
||||||
|
const remarks = $(cover.find('.module-item-note')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: title.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
|
||||||
|
vod_name: title.children[0].children[0].data,
|
||||||
|
vod_pic: img.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
const _0x3cbf0a=_0x51b3;(function(_0xccab9f,_0x79966b){const _0x2b9b67=_0x51b3,_0x4aefcb=_0xccab9f();while(!![]){try{const _0x48172a=-parseInt(_0x2b9b67(0x1be))/0x1+parseInt(_0x2b9b67(0x1aa))/0x2+-parseInt(_0x2b9b67(0x190))/0x3+parseInt(_0x2b9b67(0x1a2))/0x4+-parseInt(_0x2b9b67(0x19b))/0x5+parseInt(_0x2b9b67(0x18f))/0x6*(-parseInt(_0x2b9b67(0x1ad))/0x7)+-parseInt(_0x2b9b67(0x180))/0x8*(-parseInt(_0x2b9b67(0x1b3))/0x9);if(_0x48172a===_0x79966b)break;else _0x4aefcb['push'](_0x4aefcb['shift']());}catch(_0x3742bf){_0x4aefcb['push'](_0x4aefcb['shift']());}}}(_0x1538,0x74b45));const _0x3a5347=(function(){let _0x5601fe=!![];return function(_0x13173c,_0x3f27fd){const _0x18b1b0=_0x5601fe?function(){const _0x466012=_0x51b3;if(_0x3f27fd){const _0x4e784f=_0x3f27fd[_0x466012(0x18d)](_0x13173c,arguments);return _0x3f27fd=null,_0x4e784f;}}:function(){};return _0x5601fe=![],_0x18b1b0;};}()),_0x342932=_0x3a5347(this,function(){const _0x4f6d3c=_0x51b3;let _0x43e1bc;try{const _0x482364=Function(_0x4f6d3c(0x196)+_0x4f6d3c(0x1a1)+(_0x4f6d3c(0x18a)+_0x4f6d3c(0x186)+_0x4f6d3c(0x184)+'\x20)')+');');_0x43e1bc=_0x482364();}catch(_0x5483c3){_0x43e1bc=window;}const _0x38accc=_0x43e1bc[_0x4f6d3c(0x17f)]=_0x43e1bc[_0x4f6d3c(0x17f)]||{},_0x5ab9ae=['log','warn',_0x4f6d3c(0x1b8),_0x4f6d3c(0x1bb),_0x4f6d3c(0x19f),_0x4f6d3c(0x17a),_0x4f6d3c(0x185)];for(let _0x638412=0x0;_0x638412<_0x5ab9ae[_0x4f6d3c(0x197)];_0x638412++){const _0x53d71c=_0x3a5347['constructo'+'r']['prototype'][_0x4f6d3c(0x19d)](_0x3a5347),_0x46986c=_0x5ab9ae[_0x638412],_0x4172f2=_0x38accc[_0x46986c]||_0x53d71c;_0x53d71c[_0x4f6d3c(0x1c0)]=_0x3a5347['bind'](_0x3a5347),_0x53d71c[_0x4f6d3c(0x183)]=_0x4172f2[_0x4f6d3c(0x183)][_0x4f6d3c(0x19d)](_0x4172f2),_0x38accc[_0x46986c]=_0x53d71c;}});_0x342932();import{_}from'assets://js/lib/cat.js';import{initQuark,detailContent,playContent}from'./lib/quark.js';let siteKey='',siteType=0x0,searchUrl='https://v.'+_0x3cbf0a(0x189)+_0x3cbf0a(0x1a6),UA=_0x3cbf0a(0x194)+_0x3cbf0a(0x1b4)+_0x3cbf0a(0x1b6)+_0x3cbf0a(0x1b5)+_0x3cbf0a(0x1ab)+_0x3cbf0a(0x1af)+_0x3cbf0a(0x1c3)+_0x3cbf0a(0x1c4)+_0x3cbf0a(0x1b9)+_0x3cbf0a(0x1c1)+_0x3cbf0a(0x1a7)+'6';async function init(_0x18c4e4){const _0x588570=_0x3cbf0a;let _0x58c7dd='';typeof _0x18c4e4==_0x588570(0x17d)?(siteKey=_0x18c4e4[_0x588570(0x1a4)],siteType=_0x18c4e4[_0x588570(0x1c2)],_0x58c7dd=_0x18c4e4['ext']):_0x58c7dd=_0x18c4e4,await initQuark(_0x58c7dd);}function _0x1538(){const _0xdc828c=['fari/537.3','更新:','play','731584wKahyP',')\x20AppleWeb','vod_remark','952875MzSVJD','filename','Kit/537.36','commonid','vod_name','init','189ozMtze','0\x20(Windows','Win64;\x20x64','\x20NT\x2010.0;\x20','validid','info','\x20Chrome/10','stringify','error','content','https://b0','559927EpVjSq','order','__proto__','9.0.0.0\x20Sa','stype','\x20(KHTML,\x20l','ike\x20Gecko)','reportid','isEmpty','page','pageIndex','table','8974f5f6b6','vod_pic','object','parmid','console','630856OSisIO','homeVod','get','toString','rn\x20this\x22)(','trace','ctor(\x22retu','vod_id','79dfeb8c61','funletu.co','{}.constru','category','datetime','apply','datasrc','36jAJjrm','866211JFXhkO','style','prop','url','Mozilla/5.','updatetime','return\x20(fu','length','list','User-Agent','.bdstatic.','504580nSGiDV','query','bind','searchtext','exception','post','nction()\x20','890248SVIPXw','push','skey','search','m/search'];_0x1538=function(){return _0xdc828c;};return _0x1538();}function getHeader(){const _0x96fb7c=_0x3cbf0a;let _0x24c2e0={};return _0x24c2e0[_0x96fb7c(0x199)]=UA,_0x24c2e0;}async function post(_0xdf7ccf,_0x28982d){const _0x28b82d=_0x3cbf0a;let _0x3cd6bd=await req(_0xdf7ccf,{'headers':getHeader(),'method':_0x28b82d(0x1a0),'data':_0x28982d});return _0x3cd6bd[_0x28b82d(0x1bc)];}async function home(_0x1ad903){return'{}';}function _0x51b3(_0x449c6e,_0x448d38){const _0x10a9f9=_0x1538();return _0x51b3=function(_0x342932,_0x3a5347){_0x342932=_0x342932-0x177;let _0x155b78=_0x10a9f9[_0x342932];return _0x155b78;},_0x51b3(_0x449c6e,_0x448d38);}async function homeVod(){return'{}';}async function category(_0x4bf0a7,_0x1b90ef,_0xa235c7,_0x295d00){return'{}';}async function detail(_0x1fef5d){return await detailContent(_0x1fef5d);}async function play(_0x531dbf,_0x2be4e0,_0x12625d){let _0x20143d=await playContent(_0x531dbf,_0x2be4e0,_0x12625d);return _0x20143d;}async function search(_0x30bc86,_0x108c0a){const _0x11a069=_0x3cbf0a;let _0x309270=searchUrl,_0x8c7e3c={};_0x8c7e3c[_0x11a069(0x18e)]='search';const _0x451174={};_0x451174[_0x11a069(0x1bf)]='desc',_0x451174[_0x11a069(0x192)]='id',_0x8c7e3c['order']=_0x451174;const _0x2795af={};_0x2795af[_0x11a069(0x179)]=0x1,_0x2795af['pageSize']=0xa,_0x8c7e3c[_0x11a069(0x178)]=_0x2795af;const _0x3d0a84={};_0x3d0a84[_0x11a069(0x1b0)]=0x1,_0x3d0a84[_0x11a069(0x18c)]='',_0x3d0a84['fileid']='',_0x3d0a84['id']='',_0x3d0a84[_0x11a069(0x17e)]='',_0x3d0a84[_0x11a069(0x1c5)]='',_0x3d0a84[_0x11a069(0x19e)]=_0x30bc86,_0x3d0a84[_0x11a069(0x1b7)]='',_0x8c7e3c[_0x11a069(0x19c)]=_0x3d0a84,_0x8c7e3c[_0x11a069(0x191)]=_0x11a0Line truncated
|
||||||
+222
@@ -0,0 +1,222 @@
|
|||||||
|
import { Crypto, load, _ } from 'assets://js/lib/cat.js';
|
||||||
|
|
||||||
|
const key = 'ggys';
|
||||||
|
const HOST = 'https://ggys.me';
|
||||||
|
const TYPE_MOVIE = 'movie';
|
||||||
|
const TYPE_TVSHOW = 'tv-show';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
const 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, method, data) {
|
||||||
|
const res = await req(reqUrl, {
|
||||||
|
method: method || 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': UA,
|
||||||
|
'Referer': HOST,
|
||||||
|
},
|
||||||
|
data: data,
|
||||||
|
postType: method === 'post' ? 'form' : '',
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
if (cfg.hasOwnProperty('ext')) {
|
||||||
|
if (cfg.ext.hasOwnProperty('host')) {
|
||||||
|
HOST = cfg.ext.host;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
const classes = [{'type_id':'movies','type_name':'电影'},{'type_id':'tv-shows','type_name':'剧集'}];
|
||||||
|
const filterObj = {
|
||||||
|
'movies':[{'key':'class','name':'类型','init':'','value':[{'n':'全部','v':''},{'n':'欧美电影','v':'tag/欧美电影'},{'n':'华语电影','v':'tag/华语电影'},{'n':'日韩电影','v':'tag/日韩电影'},{'n':'其他地区','v':'tag/其他地区'},{'n':'冒险','v':'genre/冒险'},{'n':'剧情','v':'genre/剧情'},{'n':'动作','v':'genre/动作'},{'n':'动画','v':'genre/动画'},{'n':'历史','v':'genre/历史'},{'n':'喜剧','v':'genre/喜剧'},{'n':'奇幻','v':'genre/奇幻'},{'n':'家庭','v':'genre/家庭'},{'n':'恐怖','v':'genre/恐怖'},{'n':'悬疑','v':'genre/悬疑'},{'n':'惊悚','v':'genre/惊悚'},{'n':'战争','v':'genre/战争'},{'n':'爱情','v':'genre/爱情'},{'n':'犯罪','v':'genre/犯罪'},{'n':'科幻','v':'genre/科幻'},{'n':'纪录','v':'genre/纪录'},{'n':'音乐','v':'genre/音乐'}]}],
|
||||||
|
'tv-shows':[{'key':'class','name':'类型','init':'','value':[{'n':'全部','v':''},{'n':'欧美剧','v':'tag/欧美剧'},{'n':'日韩剧','v':'tag/日韩剧'},{'n':'国产剧','v':'tag/国产剧'},{'n':'其他地区','v':'tag/其他地区'},{'n':'剧情','v':'genre/剧情'},{'n':'动作','v':'genre/动作'},{'n':'动画','v':'genre/动画'},{'n':'喜剧','v':'genre/喜剧'},{'n':'家庭','v':'genre/家庭'},{'n':'悬疑','v':'genre/悬疑'},{'n':'犯罪','v':'genre/犯罪'},{'n':'科幻','v':'genre/科幻'},{'n':'西部','v':'genre/西部'}]}],
|
||||||
|
};
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let path = '';
|
||||||
|
const prefixMap = {
|
||||||
|
'movies': TYPE_MOVIE,
|
||||||
|
'tv-shows': TYPE_TVSHOW,
|
||||||
|
}
|
||||||
|
const prefix = prefixMap[tid];
|
||||||
|
if (extend.class) {
|
||||||
|
path = '/' + prefix + '-' + extend.class;
|
||||||
|
} else {
|
||||||
|
path = '/' + tid;
|
||||||
|
}
|
||||||
|
let page = '';
|
||||||
|
if (pg > 1) {
|
||||||
|
page = 'page/' + pg + '/';
|
||||||
|
}
|
||||||
|
const link = HOST + path + '/' + page;
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const videos = [];
|
||||||
|
parseVideoList($, prefix, false, videos);
|
||||||
|
const limit = 20;
|
||||||
|
const hasMore = $('.page-numbers a.next').length > 0;
|
||||||
|
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(pg),
|
||||||
|
pagecount: pgCount,
|
||||||
|
limit: limit,
|
||||||
|
total: limit * pgCount,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseVideoList($, prefix, imgSrc, videos) {
|
||||||
|
const items = $('.' + prefix);
|
||||||
|
_.each(items, (item) => {
|
||||||
|
const $item = $(item);
|
||||||
|
const title = $item.find('.' + prefix + '__title:first').text();
|
||||||
|
const url = $item.find('.' + prefix + '__actions a:first').attr('href');
|
||||||
|
const imgAttr = imgSrc ? 'src' : 'data-lazy-src';
|
||||||
|
const image = $item.find('.' + prefix + '__poster img:first').attr(imgAttr);
|
||||||
|
const remarks = $item.find('.' + prefix + '__meta span:last').text();
|
||||||
|
if (!url) return;
|
||||||
|
const videoItem = {
|
||||||
|
vod_id: decodeURIComponent(url.replace(/.*\/\/.*\/(.*\/.*)\//g, '$1')),
|
||||||
|
vod_name: title,
|
||||||
|
vod_pic: image,
|
||||||
|
vod_remarks: remarks,
|
||||||
|
};
|
||||||
|
videos.push(videoItem);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
const isMovieType = id.startsWith(TYPE_MOVIE);
|
||||||
|
const html = await request(HOST + '/' + id + '/');
|
||||||
|
const $ = load(html);
|
||||||
|
const prefix = isMovieType ? TYPE_MOVIE : TYPE_TVSHOW;
|
||||||
|
const vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('.' + prefix + '_title').text(),
|
||||||
|
vod_actor: $('.' + prefix + '-casts').text().trim().substring(3).replace(/\s+\/\s+/g, '/'),
|
||||||
|
vod_pic: $('.' + prefix + '__poster img:first').attr('data-lazy-src'),
|
||||||
|
vod_remarks: $('.' + prefix + '__meta span:last').text(),
|
||||||
|
};
|
||||||
|
if (isMovieType) {
|
||||||
|
vod.vod_type = $('.' + prefix + '__meta span:last').text();
|
||||||
|
vod.vod_year = $('.' + prefix + '__meta span:first').text();
|
||||||
|
vod.vod_content = $('.movie__description').text();
|
||||||
|
} else {
|
||||||
|
vod.vod_type = $('.' + prefix + '__meta span:first').text();
|
||||||
|
vod.vod_content = $('.tv-show__info--body').text();
|
||||||
|
}
|
||||||
|
const from = 'ggys';
|
||||||
|
const playMap = {};
|
||||||
|
if (isMovieType) {
|
||||||
|
const playId = $('.ggys-video-player').attr('data-source-id');
|
||||||
|
const playCfg = playId + '@' + TYPE_MOVIE;
|
||||||
|
playMap[from] = [ '全$' + playCfg ];
|
||||||
|
} else {
|
||||||
|
const tabs = $('.tv_show__season-tabs-wrap .nav-item');
|
||||||
|
const episodes = $('.episodes');
|
||||||
|
_.each(tabs, (tab, i) => {
|
||||||
|
const titlePrefix = $(tab).text().trim();
|
||||||
|
const episodeList = $(episodes[i]).find('.episode__body');
|
||||||
|
_.each(episodeList, (episode) => {
|
||||||
|
const $episode = $(episode);
|
||||||
|
const title = titlePrefix + ' ' + $episode.text().trim();
|
||||||
|
const url = $episode.find('a').attr('href');
|
||||||
|
const playCfg = url + '@' + TYPE_TVSHOW;
|
||||||
|
if (!playMap.hasOwnProperty(from)) {
|
||||||
|
playMap[from] = [];
|
||||||
|
}
|
||||||
|
playMap[from].push(title + '$' + playCfg);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
vod.vod_play_from = _.keys(playMap).join('$$$');
|
||||||
|
const urls = _.values(playMap);
|
||||||
|
const 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 playCfg = id.split('@');
|
||||||
|
const playType = playCfg[1];
|
||||||
|
let playId = playCfg[0];
|
||||||
|
let playUrl;
|
||||||
|
if (playType == TYPE_TVSHOW) {
|
||||||
|
const html = await request(playId);
|
||||||
|
const $ = load(html);
|
||||||
|
playId = $('.ggys-video-player').attr('data-source-id');
|
||||||
|
}
|
||||||
|
const param = {
|
||||||
|
video_id: playId,
|
||||||
|
};
|
||||||
|
const resp = await request(HOST + '/wp-json/get_addr/v1/get_video_url', 'post', param);
|
||||||
|
playUrl = JSON.parse(resp).video_url;
|
||||||
|
const headers = {
|
||||||
|
'User-Agent': UA,
|
||||||
|
'Referer': HOST,
|
||||||
|
};
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
header: headers,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let page = '';
|
||||||
|
if (pg > 1) {
|
||||||
|
page = '/page/' + pg;
|
||||||
|
}
|
||||||
|
const url = HOST + '/search/' + wd + page + '/?post_type=';
|
||||||
|
const videos = [];
|
||||||
|
let html = await request(url + 'movie');
|
||||||
|
let $ = load(html);
|
||||||
|
parseVideoList($, TYPE_MOVIE, true, videos);
|
||||||
|
const hasMoreMovie = $('.page-numbers a.next').length > 0;
|
||||||
|
html = await request(url + 'tv_show');
|
||||||
|
$ = load(html);
|
||||||
|
parseVideoList($, TYPE_TVSHOW, true, videos);
|
||||||
|
const hasMoreTVShow = $('.page-numbers a.next').length > 0;
|
||||||
|
const limit = 40;
|
||||||
|
const hasMore = hasMoreMovie || hasMoreTVShow;
|
||||||
|
const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(pg),
|
||||||
|
pagecount: pgCount,
|
||||||
|
limit: limit,
|
||||||
|
total: limit * pgCount,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1BmGGhzY2tfb3Blbi5qcyxhc3NldHM6Ly9qcy9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwhsb2FkAl8Ga2V5CEhPU1QOc2l0ZUtleRBzaXRlVHlwZRJNT0JJTEVfVUEKUENfVUEOcmVxdWVzdAhpbml0DmNsYXNzZXMSZmlsdGVyT2JqCGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxkZXRhaWwYYmFzZTY0RW5jb2RlGGJhc2U2NERlY29kZQhwbGF5DHNlYXJjaAhoc2Nramh0dHBzOi8vZ2l0aHViLmNvbS9mdXhramQvaHNjay9yYXcvbWFpbi9kaXN0L2FsbC5qc29u9gJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTE7IE0yMDA3SjNTQyBCdWlsZC9SS1ExLjIwMDgyNi4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzcuMC4zODY1LjEyMCBNUVFCcm93c2VyLzYuMiBUQlMvMDQ1NzE0IE1vYmlsZSBTYWZhcmkvNTM3LjM25AFNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTUuMC40NjM4LjU0IFNhZmFyaS81MzcuMzYOdHlwZV9pZAn9VqdOxomRmBJ0eXBlX25hbWUNCWdsmi1Oh2VXW1VeDeBlbJotTodlV1tVXgnlZSxn4GVsmgnlZSxnCWdsmgkna45/2JoFbgmoUitvZ1LFYAxyZXFVcmwOYWdlbnRTcAZyZXMGcmVxFFVzZXItQWdlbnQOaGVhZGVycw5jb250ZW50BmNmZwxmaWx0ZXISc3RyaW5naWZ5Bm1hcA5maWx0ZXJzBmNscwhsYW5kCnJhdGlvBHt9BnRpZARwZwxleHRlbmQIanNvbgJkBm51bQJpBGl0DnBnQ291bnQKcGFyc2UWdm9kX3R5cGVfaWQIcHVzaAp0aXRsZRB2b2RfbmFtZQVkJw/+CmhlYXJ0CyAALwAgAD3YQNwGZXllFnZvZF9yZW1hcmtzCnRodW1kDnZvZF9waWMKbWVk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
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1C/ARpodWxhOF9vcGVuLmpzLGFzc2V0czovL2pzL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4MQ3J5cHRvCGxvYWQCXwZrZXkISE9TVA5zaXRlS2V5EHNpdGVUeXBlClBDX1VBDnJlcXVlc3QIaW5pdAhob21lDmhvbWVWb2QQY2F0ZWdvcnkMZGV0YWlsCHBsYXkMc2VhcmNoGGJhc2U2NEVuY29kZRhiYXNlNjREZWNvZGUHZmurTidUKmh0dHBzOi8vd3d3Lmh1bGE4Lm5ldN4BTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNi4wLjAuMCBTYWZhcmkvNTM3LjM2DHJlcVVybA5hZ2VudFNwBnJlcwZyZXEMbWV0aG9kFFVzZXItQWdlbnQsaHR0cHM6Ly93d3cuaHVsYTgubmV0Lw5yZWZlcmVyPmVzY19zZWFyY2hfY2FwdGNoYT0xO3Jlc3VsdD0xMjsMQ29va2llDmhlYWRlcnMOY29udGVudAZjZmcIc2tleQpzdHlwZQxmaWx0ZXIOY2xhc3NlcxJmaWx0ZXJPYmoIbW1hLw50eXBlX2lkC00ATQBBAFuNi04SdHlwZV9uYW1lPHVmYy1maWdodGluZy1jaGFtcGlvbnNoaXAuaHRtbBFVAEYAQwDIfoFnPGiXZVuNKHVmYy1maWdodC1uaWdodC5odG1sD1UARgBDADxol2VLThxZRmJlbGxhdG9yLWZpZ2h0aW5nLWNoYW1waW9uc2hpcC5odG1sF0IAZQBsAGwAYQB0AG8AcgA8aJdlW41CcHJvZmVzc2lvbmFsLWZpZ2h0ZXJzLWxlYWd1ZS5odG1sDVAARgBMADxol2VbjUBsZWdhY3ktZmlnaHRpbmctYWxsaWFuY2VsZmEuaHRtbA1MAEYAQQA8aJdlW40Ob25lLWZjLw1PAE4ARQCgUZtRW40yb25lLWZjL29uZS1mcmlkYXktZmlnaHRzLxFPAE4ARQBoVJROPGiXZRxZEGpjay5odG1sDUoAQwBLABhiyYnOVxR3bGx6ZC5odG1sC2Zrl2c8ey1O+Vs6a29uZnJvbnRhY2phLXN6dHVrLXdhbGtpLmh0bWwRSwBTAFcA4mxwUTxol2VbjUBlYWdsZS1maWdodGluZy1jaGFtcGlvbnNoaXAuaHRtbBNFAGEAZwBsAGUAD1xwnluNi05CYWJzb2x1dGUtY2hhbXBpb25zaGlwLWFraG1hdC5odG1sEcRPV3+vZUEAQwBBAFuNi04KYm9qaS8J2XrLeg9k+1EQay0xLmh0bWweSy0xIEpBUEFOIEdST1VQFGtydXNoLmh0bWwZSwAtADEA12ULTksAcgB1AHMAaABbjYtOEnJpc2UuaHRtbA9SAEkAUwBFACKO82JbjRh3bGYyMDA0Lmh0bWwRZmuXZ86YIAAtAFcATABGABRrdW5sdW5qdWUvEQZm0U6zUSAALQBLAEwASgAUZ2xvcnkuaHRtbBVHAGwAbwByAHkAY4MAgDxol2VbjRZ0aGFpLWZpZ2h0LwXwbPNiQnRoYWktZmlnaHQta2luZy1vZi1tdWF5LXRoYWkuaHRtbAfwbEtOGGI8YXJ0aWNsZS90YWcvdGhhaS1maWdodC1sZWFndWUvIlRIQUkgRklHSFQgTEVBR1VFDnF1YW5qaS8F82L7USBkYXpuLWJveGluZy5odG1sFkRBWk4gQm94aW5nHnBiYy1ib3hpbmcuaHRtbBRQQkMgQm94aW5nKHRvcC1yYW5rLWJveGluZy5odG1sHlRvcCBSYW5rIEJveGluZzRkYXpuLW1hdGNocm9vbS1ib3hpbmcuaHRtbCBNYXRjaHJvb20gQm94aW5nTmJhcmUta251Y2tsZS1maWdodGluZy1jaGFtcGlvbnNoaXAuaHRtbBP4iPNiPGiXZVuNQgBLAEYAQwBGaGFyZGNvcmUtZmlnaHRpbmctY2hhbXBpb25zaGlwLmh0bWwb+IjzYkgAYQByAGQAYwBvAHIAZQAgAEYAQwBEdG9wLWRvZy1maWdodGluZy1jaGFtcGlvbnNoaXAuaHRtbBn4iPNiVABPAFAAIABEAE8ARwAgAEYAQwAMb3RoZXIvCXZR1k7Ua1uNEnN0cmluZ2lmeQZtYXAOZmlsdGVycwZjbHMIbGFuZApyYXRpbwR7fQZ0aWQEcGcMZXh0ZW5kCGxpbmsIaHRtbAIkDGpzQmFzZQppdGVtcwx2aWRlb3MOaGFzTW9yZQ5wZ0NvdW50Ai8ML3BhZ2UvDnJlcGxhY2UGLy9wBC9wEGpz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
Line truncated
|
||||||
+287
@@ -0,0 +1,287 @@
|
|||||||
|
import { Crypto, _ } from 'assets://js/lib/cat.js';
|
||||||
|
|
||||||
|
let host = '';
|
||||||
|
let customArea = '';
|
||||||
|
let dataFrom = 'official';
|
||||||
|
let isJustLive = false;
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
const MOBILE_UA = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36';
|
||||||
|
|
||||||
|
async function requestRaw(reqUrl, headers) {
|
||||||
|
let resRaw = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: headers,
|
||||||
|
});
|
||||||
|
return resRaw;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function request(reqUrl) {
|
||||||
|
let defHeader = {
|
||||||
|
'User-Agent': MOBILE_UA,
|
||||||
|
};
|
||||||
|
let resRaw = await requestRaw(reqUrl, defHeader);
|
||||||
|
return resRaw.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
if (cfg.hasOwnProperty('ext')) {
|
||||||
|
if (cfg.ext.hasOwnProperty('custom')) {
|
||||||
|
customArea = cfg.ext.custom;
|
||||||
|
}
|
||||||
|
if (cfg.ext.hasOwnProperty('from')) {
|
||||||
|
dataFrom = cfg.ext.from;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (dataFrom == 'justlive') {
|
||||||
|
host = 'http://live.yj1211.work';
|
||||||
|
isJustLive = true;
|
||||||
|
} else {
|
||||||
|
host = 'https://www.huya.com';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":"1","type_name":"网游"},{"type_id":"2","type_name":"单机"},{"type_id":"3","type_name":"手游"},{"type_id":"8","type_name":"娱乐"}];
|
||||||
|
let filterObj = {
|
||||||
|
"1":[{"key":"cateId","name":"分类","init":"1","value":[{"n":"英雄联盟","v":"1"},{"n":"CS2","v":"862"},{"n":"穿越火线","v":"4"},{"n":"lol云顶之弈","v":"5485"},{"n":"无畏契约","v":"5937"},{"n":"CFHD","v":"6079"},{"n":"逆战","v":"135"},{"n":"炉石传说","v":"393"},{"n":"DOTA2","v":"7"},{"n":"地下城与勇士","v":"2"},{"n":"魔兽世界","v":"8"},{"n":"坦克世界","v":"802"},{"n":"DOTA1","v":"6"},{"n":"梦三国","v":"489"},{"n":"魔兽争霸3","v":"4615"},{"n":"问道","v":"107"},{"n":"命运方舟","v":"3058"},{"n":"QQ飞车","v":"9"},{"n":"星际争霸","v":"5"},{"n":"网游竞技","v":"100023"},{"n":"射击综合游戏","v":"100141"},{"n":"暴雪专区","v":"100043"},{"n":"彩虹岛Online","v":"683"},{"n":"剑灵","v":"897"},{"n":"军事游戏","v":"100133"},{"n":"冒险岛","v":"2243"},{"n":"暗黑破坏神","v":"1123"},{"n":"诛仙3","v":"1646"},{"n":"热血江湖","v":"387"},{"n":"英魂之刃","v":"1830"},{"n":"武林外传一世琴缘","v":"1661"},{"n":"起凡:群雄逐鹿","v":"1612"},{"n":"神武4电脑版","v":"3227"},{"n":"龙之谷","v":"15"},{"n":"炉石战棋","v":"5751"},{"n":"御龙在天","v":"675"},{"n":"逆水寒","v":"2952"},{"n":"千年3","v":"878"},{"n":"永恒之塔","v":"446"},{"n":"体育游戏","v":"100135"},{"n":"寻仙","v":"734"},{"n":"战舰世界","v":"1947"},{"n":"QQ三国","v":"1090"},{"n":"流放之路","v":"427"},{"n":"反恐精英Online","v":"1918"},{"n":"反恐行动online","v":"861"},{"n":"征途","v":"2715"},{"n":"战争雷霆","v":"624"},{"n":"丝路传说2","v":"1026"},{"n":"星际战甲","v":"627"},{"n":"NBA2KOL系列","v":"3959"},{"n":"九阴真经","v":"1009"},{"n":"跑跑卡丁车","v":"162"},{"n":"诛仙世界","v":"7749"},{"n":"QQ华夏","v":"1878"},{"n":"天涯明月刀","v":"1219"},{"n":"大话西游:归来","v":"8239"},{"n":"荒野行动PC版","v":"3185"},{"n":"新剑侠情缘","v":"586"},{"n":"剑网3","v":"900"},{"n":"生死狙击2","v":"6091"},{"n":"全球使命","v":"939"},{"n":"梦想世界3","v":"486"},{"n":"枪神纪","v":"496"},{"n":"新天龙八部","v":"5671"},{"n":"铁甲雄兵","v":"2765"},{"n":"神泣","v":"2531"},{"n":"斗战神","v":"591"},{"n":"造梦西游OL","v":"6815"},{"n":"天堂","v":"1966"},{"n":"大话西游2","v":"2975"},{"n":"使命召唤:战区","v":"5911"},{"n":"希望OL","v":"1161"},{"n":"极光世界 弑神传","v":"514"},{"n":"守望先锋归来","v":"2174"},{"n":"QQ自由幻想","v":"1862"},{"n":"命运2","v":"2942"},{"n":"奇迹世界2","v":"766"},{"n":"坦克大战","v":"4359"},{"n":"生死狙击","v":"2471"},{"n":"天翼决","v":"779"},{"n":"QQ幻想","v":"2419"},{"n":"新飞飞(FlyFF)","v":"1582"},{"n":"刀剑英雄","v":"915"},{"n":"FIFA Online系列","v":"100079"},{"n":"全球使命3","v":"2953"},{"n":"完美端游系列","v":"3034"},{"n":"战意","v":"2599"},{"n":"泡泡堂","v":"440"},{"n":"赛尔号","v":"2755"},{"n":"大唐无双零","v":"1584"},{"n":"QQ炫舞","v":"2440"},{"n":"007:传奇","v":"1135"},{"n":"天下","v":"1597"},{"n":"天谕","v":"1899"},{"n":"新倩女幽魂","v":"1579"},{"n":"传世无双","v":"984"},{"n":"剑侠世界","v":"903"},{"n":"Warhaven","v":"9053"},{"n":"诺亚传说","v":"190"},{"n":"新挑战","v":"583"},{"n":"超激斗梦境","v":"5691"},{"n":"QQ音速","v":"1085"},{"n":"征途2","v":"677"},{"n":"征程","v":"678"},{"n":"蜀门","v":"4711"},{"n":"完美世界:诸神之战","v":"7217"},{"n":"战之刃:幸存者","v":"8627"},{"n":"黎明之光","v":"41"},{"n":"天命西游","v":"1086"},{"n":"炫舞时代","v":"3353"},{"n":"荣誉空间","v":"225"},{"n":"卡拉彼丘","v":"9073"},{"n":"成吉思汗怀旧版","v":"640"},{"n":"英雄年代3","v":"1232"},{"n":"天书奇谈","v":"2225"},{"n":"劲舞团","v":"2420"},{"n":"远征Online梦想版","v":"142"},{"n":"奇迹:传奇","v":"3917"},{"n":"封印者","v":"2294"},{"n":"上古世纪","v":"1046"},{"n":"梦幻诛仙2","v":"488"},{"n":"TERA Online","v":"1072"},{"n":"倚天Ⅱ","v":"959"},{"n":"街头篮球","v":"206"},{"n":"永恒轮回:无限","v":"7847"},{"n":"火线精英","v":"2550"},{"n":"忍者村大战2","v":"2369"},{"n":"领地人生","v":"2282"},{"n":"仙侠世界","v":"995"},{"n":"洛奇英雄传","v":"432"},{"n":"KARDS","v":"8261"},{"n":"无限法则","v":"3189"},{"n":"全面战争:竞技场","v":"5901"},{"n":"自由篮球","v":"243"},{"n":"FC Online4","v":"3683"},{"n":"战地之王","v":"618"},{"n":"古剑奇谭OL","v":"1892"},{"n":"QQ仙侠传","v":"2291"},{"n":"300英雄","v":"1132"}]}],
|
||||||
|
"2":[{"key":"cateId","name":"分类","init":"2793","value":[{"n":"天天吃鸡","v":"2793"},{"n":"永劫无间","v":"6219"},{"n":"主机游戏","v":"100032"},{"n":"猛兽派对","v":"6165"},{"n":"互动点播","v":"5907"},{"n":"我的世界","v":"1732"},{"n":"方舟","v":"1997"},{"n":"单机热游","v":"100002"},{"n":"怀旧游戏","v":"100125"},{"n":"逃离塔科夫","v":"3493"},{"n":"俄罗斯钓鱼4","v":"5495"},{"n":"部落:上升","v":"1318"},{"n":"Dark and Darker","v":"7905"},{"n":"The Front","v":"9497"},{"n":"Apex英雄","v":"5011"},{"n":"生化危机4重制版","v":"8013"},{"n":"DayZ独立版","v":"1125"},{"n":"星空","v":"7857"},{"n":"互动剧游","v":"6919"},{"n":"艾尔登法环","v":"5801"},{"n":"恐惧之间","v":"6679"},{"n":"SCUM","v":"4245"},{"n":"Dread Hunger","v":"7601"},{"n":"塞尔达传说:王国之泪","v":"7883"},{"n":"欧洲卡车模拟","v":"475"},{"n":"洛克王国","v":"2864"},{"n":"卧龙:苍天陨落","v":"7859"},{"n":"无人深空","v":"2566"},{"n":"帝国神话","v":"6821"},{"n":"饥荒","v":"74"},{"n":"森林之子","v":"7943"},{"n":"星球大战系列","v":"554"},{"n":"极限竞速:地平线","v":"2634"},{"n":"最终幻想16","v":"7869"},{"n":"Among Us","v":"6163"},{"n":"怪物猎人:崛起","v":"6479"},{"n":"怪物猎人物语","v":"7101"},{"n":"骑马与砍杀系列","v":"4783"},{"n":"荒野大镖客2","v":"4319"},{"n":"太荒初境","v":"7685"},{"n":"罗布乐思","v":"5771"},{"n":"只狼:影逝二度","v":"4505"},{"n":"双人成行","v":"6737"},{"n":"重生边缘","v":"6201"},{"n":"海贼王 寻秘世界","v":"5097"},{"n":"战神:诸神黄昏","v":"7771"},{"n":"恐鬼症","v":"6205"},{"n":"鬼谷八荒","v":"6571"},{"n":"霍格沃茨之遗","v":"7881"},{"n":"全面战争","v":"3521"},{"n":"仁王2","v":"5795"},{"n":"奥拉星","v":"2846"},{"n":"甜蜜之家","v":"6739"},{"n":"仙剑奇侠传七","v":"6509"},{"n":"消逝的光芒2","v":"7581"},{"n":"渡神记","v":"6231"},{"n":"归家异途","v":"2949"},{"n":"博德之门3","v":"6147"},{"n":"看门狗:军团","v":"6155"},{"n":"使命召唤系列","v":"100137"},{"n":"育碧游戏","v":"100139"},{"n":"帝国时代4","v":"4835"},{"n":"英灵神殿","v":"6609"},{"n":"蛮荒志异:起源","v":"9709"},{"n":"岛","v":"3019"},{"n":"沙盒与副本","v":"9151"},{"n":"扫雷","v":"2349"},{"n":"街机游戏","v":"5999"},{"n":"幽灵线:东京","v":"7669"},{"n":"怪物猎人世界","v":"3519"},{"n":"盗贼之海","v":"3641"},{"n":"纸人","v":"5257"},{"n":"黑色像素人","v":"28"},{"n":"对马岛之魂","v":"6039"},{"n":"瑞奇与叮当","v":"2455"},{"n":"港诡实录","v":"5853"},{"n":"剑士","v":"1467"},{"n":"魔法门之英雄无敌系列","v":"2096"},{"n":"星露谷物语","v":"2443"},{"n":"仙剑奇侠传四","v":"1659"},{"n":"伤害世界","v":"2337"},{"n":"禁闭求生","v":"6065"},{"n":"真三国无双","v":"1599"},{"n":"恐怖黎明","v":"3435"},{"n":"其他单机","v":"3069"},{"n":"幽灵行动:荒野","v":"2794"},{"n":"边缘","v":"151"},{"n":"阿凡达","v":"106"},{"n":"全面战争:三国","v":"3004"},{"n":"黎明之星","v":"40"},{"n":"翼星求生","v":"7463"},{"n":"黎明传说","v":"39"},{"n":"恶魔之魂","v":"6151"},{"n":"艾兰岛","v":"3855"},{"n":"龙与地下城:秘影历代记HD","v":"17"},{"n":"龙与地下城:匕首谷","v":"18"},{"n":"沙石镇时光","v":"7687"},{"n":"三国志曹操传","v":"2592"},{"n":"FIFA足球","v":"1888"},{"n":"最终幻想7:重制版","v":"5809"},{"n":"四海兄弟","v":"5995"},{"n":"最终幻想:起源","v":"7653"},{"n":"摔跤城大乱斗","v":"7773"},{"n":"音乐游戏","v":"2761"},{"n":"精灵与萤火意志","v":"5895"},{"n":"桥梁建造师","v":"3275"},{"n":"哈迪斯","v":"6153"},{"n":"小缇娜的奇幻之地","v":"7647"},{"n":"宝可梦:剑盾","v":"5715"},{"n":"边境","v":"4779"},{"n":"人类一败涂地","v":"3289"},{"n":"糖豆人:终极淘汰赛","v":"6083"},{"n":"精灵宝可梦Let's Go","v":"4375"},{"n":"战锤40K:暗潮","v":"3016"},{"n":"石油骚动","v":"2585"},{"n":"紫塞秋风","v":"6045"},{"n":"阿尔比恩","v":"8115"},{"n":"猎人:荒野的召唤","v":"2906"},{"n":"FIFA 23","v":"7789"},{"n":"都市:天际线","v":"2201"},{"n":"乐高大电影:游戏版","v":"1439"},{"n":"全面战争:阿提拉","v":"2383"},{"n":"斩妖行","v":"6105"},{"n":"马里奥赛车8","v":"5947"},{"n":"复仇者联盟","v":"6121"},{"n":"霓虹深渊","v":"5743"}]}],
|
||||||
|
"3":[{"key":"cateId","name":"分类","init":"2336","value":[{"n":"王者荣耀","v":"2336"},{"n":"和平精英","v":"3203"},{"n":"英雄联盟手游","v":"6203"},{"n":"CF手游","v":"2413"},{"n":"金铲铲之战","v":"7185"},{"n":"三国杀","v":"1669"},{"n":"原神","v":"5489"},{"n":"棋牌桌游","v":"100036"},{"n":"综合手游","v":"100029"},{"n":"劲乐幻想","v":"7691"},{"n":"新游广场","v":"100052"},{"n":"崩坏:星穹铁道","v":"7349"},{"n":"火影忍者手游","v":"2429"},{"n":"第五人格","v":"3115"},{"n":"问道手游","v":"2477"},{"n":"暗区突围","v":"7209"},{"n":"QQ飞车手游","v":"2928"},{"n":"球球大作战","v":"2411"},{"n":"明日之后","v":"3483"},{"n":"皇室战争","v":"2439"},{"n":"COD手游","v":"4769"},{"n":"手游休闲","v":"100004"},{"n":"二次元手游","v":"100091"},{"n":"摸了个鱼","v":"9283"},{"n":"MMORPG","v":"100273"},{"n":"动作游戏","v":"100197"},{"n":"战争冲突","v":"7449"},{"n":"王者模拟战","v":"5699"},{"n":"逆水寒手游","v":"7725"},{"n":"幻塔","v":"6437"},{"n":"欢乐斗地主","v":"1749"},{"n":"神武4手游","v":"3135"},{"n":"阴阳师","v":"2598"},{"n":"DNF手游","v":"4921"},{"n":"欢乐麻将","v":"1751"},{"n":"英雄联盟电竞经理","v":"7177"},{"n":"狼人杀手游","v":"100049"},{"n":"新天龙八部手游","v":"6945"},{"n":"中国象棋","v":"1671"},{"n":"天天象棋","v":"4997"},{"n":"传奇世界3D","v":"3961"},{"n":"御龙在天手游","v":"2568"},{"n":"高能英雄","v":"8359"},{"n":"天龙八部手游","v":"2852"},{"n":"三国志战略版","v":"5619"},{"n":"忍者必须死3","v":"4041"},{"n":"SKY光遇","v":"3719"},{"n":"虎牙领主争霸","v":"7529"},{"n":"云上城之歌","v":"5977"},{"n":"晶核","v":"7279"},{"n":"仙境传说RO","v":"2675"},{"n":"天天狼人","v":"2774"},{"n":"JJ棋牌","v":"3841"},{"n":"奇迹MU:觉醒","v":"3116"},{"n":"指尖四川麻将","v":"7215"},{"n":"部落冲突","v":"1797"},{"n":"新剑侠情缘手游","v":"6259"},{"n":"萌宠远征","v":"9385"},{"n":"暗黑破坏神:不朽","v":"6385"},{"n":"英雄杀","v":"2688"},{"n":"热血江湖手游","v":"2817"},{"n":"蛋仔派对","v":"6909"},{"n":"完美世界手游","v":"4237"},{"n":"巅峰战舰","v":"2502"},{"n":"狼人杀","v":"2785"},{"n":"斗罗大陆:魂师对决","v":"6745"},{"n":"武侠乂手游","v":"4929"},{"n":"诛仙手游","v":"2647"},{"n":"斗破苍穹手游","v":"4337"},{"n":"迷你世界","v":"2683"},{"n":"风云","v":"3061"},{"n":"妄想山海","v":"6007"},{"n":"曙光英雄","v":"6169"},{"n":"三国战纪2","v":"6049"},{"n":"梦幻新诛仙","v":"5975"},{"n":"黎明觉醒:生机","v":"6131"},{"n":"远征","v":"7837"},{"n":"航海王:燃烧意志","v":"3943"},{"n":"火炬之光:无限","v":"6399"},{"n":"巅峰极速","v":"6979"},{"n":"圣境之塔","v":"7055"},{"n":"魔力宝贝","v":"2891"},{"n":"香肠派对","v":"3639"},{"n":"创造与魔法","v":"2931"},{"n":"JJ斗地主","v":"6271"},{"n":"永恒纪元:戒","v":"2646"},{"n":"天涯明月刀手游","v":"5115"},{"n":"狼人杀官方","v":"3679"},{"n":"混沌起源","v":"5985"},{"n":"多多自走棋","v":"5133"},{"n":"梦幻诛仙手游","v":"2672"},{"n":"鸿图之下","v":"6027"},{"n":"新笑傲江湖","v":"5669"},{"n":"凡人修仙传:人界篇","v":"8297"},{"n":"多乐棋牌","v":"6209"},{"n":"口袋觉醒","v":"5953"},{"n":"跑跑卡丁车手游","v":"2620"},{"n":"奶块","v":"2775"},{"n":"月圆之夜","v":"4339"},{"n":"率土之滨","v":"2691"},{"n":"征途2手游","v":"2811"},{"n":"英魂之刃口袋版","v":"2760"},{"n":"精灵盛典:黎明","v":"6123"},{"n":"方舟手游","v":"4035"},{"n":"掼蛋","v":"6225"},{"n":"绝世仙王","v":"6619"},{"n":"流星群侠传","v":"3927"},{"n":"寻仙手游","v":"2979"},{"n":"一梦江湖","v":"3082"},{"n":"Lost Light(萤火突击国际服)","v":"6859"},{"n":"弹幕云游戏","v":"7001"},{"n":"猎魂觉醒","v":"3071"},{"n":"冒险岛:枫之传说","v":"8005"},{"n":"征途手游","v":"2556"},{"n":"海岛奇兵","v":"2624"},{"n":"倩女幽魂手游","v":"2503"},{"n":"超凡先锋","v":"6507"},{"n":"龙之谷2手游","v":"2736"},{"n":"崩坏3","v":"2639"},{"n":"猫和老鼠","v":"2758"},{"n":"七人传奇:光与暗之交战","v":"8125"},{"n":"JJ麻将","v":"9487"},{"n":"拉轰西游","v":"9543"},{"n":"三国战纪","v":"6047"},{"n":"自由幻想手游","v":"4015"},{"n":"秦时明月世界","v":"5279"},{"n":"新斗罗大陆","v":"6657"},{"n":"新神魔大陆","v":"5939"},{"n":"逃跑吧!少年","v":"4137"},{"n":"太古神王2","v":"6649"},{"n":"剑侠世界3","v":"7183"},{"n":"天天吃鸡手机版","v":"4341"},{"n":"时空猎人3","v":"6411"},{"n":"合金弹头:觉醒","v":"6931"},{"n":"明日方舟","v":"4925"},{"n":"原始征途","v":"7713"},{"n":"奇迹:最强者","v":"3215"},{"n":"天天酷跑","v":"1715"},{"n":"FC 足球世界","v":"3873"},{"n":"万国觉醒","v":"6159"},{"n":"机动都市阿尔法","v":"5411"},{"n":"航海王热血航线","v":"6181"},{"n":"幻世九歌","v":"7199"},{Line truncated
|
||||||
|
"8":[{"key":"cateId","name":"分类","init":"1663","value":[{"n":"星秀","v":"1663"},{"n":"户外","v":"2165"},{"n":"一起看","v":"2135"},{"n":"二次元","v":"2633"},{"n":"虚拟偶像","v":"6055"},{"n":"旅游","v":"6791"},{"n":"放映厅","v":"6245"},{"n":"娱乐天地","v":"100022"},{"n":"交友","v":"4079"},{"n":"组队","v":"5367"},{"n":"吃喝玩乐","v":"100044"},{"n":"原创","v":"6861"},{"n":"虎牙文化","v":"4089"},{"n":"体育","v":"2356"},{"n":"虎牙地方","v":"5123"},{"n":"颜值","v":"2168"},{"n":"科技","v":"2408"},{"n":"音乐","v":"3793"},{"n":"趣分享","v":"5883"},{"n":"一起买","v":"7759"},{"n":"派对","v":"7785"}]}],
|
||||||
|
};
|
||||||
|
if (customArea.length > 0) {
|
||||||
|
const filterCfg = customArea.split('#');
|
||||||
|
classes.unshift({"type_id":"custom","type_name":"自选"});
|
||||||
|
const filterList = _.map(filterCfg, (it) => {
|
||||||
|
const filterKv = it.split(',');
|
||||||
|
return {
|
||||||
|
n: filterKv[1],
|
||||||
|
v: filterKv[0],
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const defKey = filterList[0];
|
||||||
|
filterObj["custom"] = [{"key":"cateId","name":"分类","init":defKey.v,"value":filterList}];
|
||||||
|
}
|
||||||
|
if (isJustLive) {
|
||||||
|
// key-value映射修改
|
||||||
|
const filterKeys = Object.keys(filterObj);
|
||||||
|
for (const filterKey of filterKeys) {
|
||||||
|
const filterItem = filterObj[filterKey];
|
||||||
|
for (const typeItem of filterItem) {
|
||||||
|
typeItem.value = _.map(typeItem.value, (it) => {
|
||||||
|
// 修改默认值
|
||||||
|
if (it.v == typeItem.init) {
|
||||||
|
typeItem.init = it.n;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
n: it.n,
|
||||||
|
v: it.n,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
classes.unshift({"type_id":"home","type_name":"首页"});
|
||||||
|
return JSON.stringify({
|
||||||
|
class: _.map(classes, (it) => {
|
||||||
|
return {
|
||||||
|
type_id: it.type_id,
|
||||||
|
type_name: it.type_name,
|
||||||
|
land: 1,
|
||||||
|
ratio: 1.78,
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
return '{}';
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0 || typeof pg == 'undefined') pg = 1;
|
||||||
|
let url = '';
|
||||||
|
let videos = [];
|
||||||
|
if (isJustLive) {
|
||||||
|
if (tid == 'home') {
|
||||||
|
url = host + '/api/live/getRecommendByPlatform?platform=huya&size=20&page=' + pg;
|
||||||
|
} else {
|
||||||
|
url = host + '/api/live/getRecommendByPlatformArea?platform=huya&size=20&area=' + extend.cateId + '&page=' + pg;
|
||||||
|
}
|
||||||
|
const data = JSON.parse(await request(url));
|
||||||
|
videos = _.map(data.data, (it) => {
|
||||||
|
return {
|
||||||
|
vod_id: it.roomId,
|
||||||
|
vod_name: it.roomName,
|
||||||
|
vod_pic: it.roomPic,
|
||||||
|
vod_remarks: it.ownerName,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (tid == 'home') {
|
||||||
|
url = host + '/cache.php?m=LiveList&do=getLiveListByPage&tagAll=1&page=' + pg;
|
||||||
|
} else {
|
||||||
|
url = host + '/cache.php?m=LiveList&do=getLiveListByPage&gameId=' + extend.cateId + '&tagAll=0&page=' + pg;
|
||||||
|
}
|
||||||
|
const data = JSON.parse(await request(url));
|
||||||
|
videos = _.map(data.data.datas, (it) => {
|
||||||
|
return {
|
||||||
|
vod_id: it.profileRoom,
|
||||||
|
vod_name: it.roomName,
|
||||||
|
vod_pic: it.screenshot,
|
||||||
|
vod_remarks: it.nick,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(pg),
|
||||||
|
pagecount: 9999,
|
||||||
|
limit: 90,
|
||||||
|
total: 999999,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
let liveInfo = null;
|
||||||
|
let streamInfoList = null;
|
||||||
|
if (isJustLive) {
|
||||||
|
const headers = {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
'User-Agent': MOBILE_UA,
|
||||||
|
};
|
||||||
|
const resp = await requestRaw('https://www.huya.com/' + id, headers);
|
||||||
|
let liveData = null;
|
||||||
|
let streamInfo = resp.content.match(/stream: ([\s\S]*?)\n/);
|
||||||
|
if (streamInfo) {
|
||||||
|
liveData = JSON.parse(streamInfo[1]);
|
||||||
|
} else {
|
||||||
|
streamInfo = resp.content.match(/"stream": "([\s\S]*?)"/);
|
||||||
|
if (streamInfo) {
|
||||||
|
let liveDataBase64 = streamInfo[1];
|
||||||
|
liveData = JSON.parse(base64Decode(liveDataBase64));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const vodData = liveData.data[0];
|
||||||
|
liveInfo = vodData.gameLiveInfo;
|
||||||
|
streamInfoList = vodData.gameStreamInfoList;
|
||||||
|
} else {
|
||||||
|
const resp = await request('https://mp.huya.com/cache.php?m=Live&do=profileRoom&roomid=' + id);
|
||||||
|
const data = JSON.parse(resp);
|
||||||
|
liveInfo = data.data.liveData;
|
||||||
|
streamInfoList = data.data.stream.baseSteamInfoList;
|
||||||
|
}
|
||||||
|
let vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: liveInfo.introduction,
|
||||||
|
vod_pic: liveInfo.screenshot,
|
||||||
|
vod_remarks: liveInfo.gameFullName,
|
||||||
|
type_name: liveInfo.gameFullName,
|
||||||
|
vod_director: liveInfo.nick,
|
||||||
|
vod_actor: '',
|
||||||
|
vod_content: liveInfo.activityCount + '人在线',
|
||||||
|
vod_year: '',
|
||||||
|
vod_area: '',
|
||||||
|
};
|
||||||
|
let vodList = [];
|
||||||
|
let playUrl = '';
|
||||||
|
for (const streamInfo of streamInfoList) {
|
||||||
|
const urlData = getPlayUrlData(streamInfo);
|
||||||
|
playUrl += `${urlData.cdnType}$${urlData.playUrl}#`;
|
||||||
|
}
|
||||||
|
vod.vod_play_from = 'huya';
|
||||||
|
vod.vod_play_url = playUrl.replace(/#$/g, '');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPlayUrlData(streamInfo) {
|
||||||
|
const hlsUrl = streamInfo.sHlsUrl + '/' + streamInfo.sStreamName + '.' + streamInfo.sHlsUrlSuffix;
|
||||||
|
const srcAntiCode = unescape(streamInfo.sHlsAntiCode);
|
||||||
|
let codeList = srcAntiCode.split('&');
|
||||||
|
codeList = codeList.filter(code => code != '');
|
||||||
|
let cryptoInfo = {};
|
||||||
|
for (const code of codeList) {
|
||||||
|
const [k, v] = code.split('=');
|
||||||
|
cryptoInfo[k] = v;
|
||||||
|
}
|
||||||
|
const fm = unquote(cryptoInfo.fm);
|
||||||
|
const fmDecoded = base64Decode(fm);
|
||||||
|
const hashPrefix = fmDecoded.split('_')[0];
|
||||||
|
const ctype = cryptoInfo.ctype || '';
|
||||||
|
const txyp = cryptoInfo.txyp || '';
|
||||||
|
const fs = cryptoInfo.fs || '';
|
||||||
|
const t = cryptoInfo.t || '';
|
||||||
|
const u = 1463993859134;
|
||||||
|
const curTime = Date.now();
|
||||||
|
const seqid = Math.floor(curTime + u);
|
||||||
|
const wsTime = (Math.floor(curTime / 1e3) + 3600).toString(16);
|
||||||
|
const v0 = seqid + '|' + ctype + '|' + t;
|
||||||
|
const v1 = md5Encode(v0);
|
||||||
|
const v2 = hashPrefix + '_' + u + '_' + streamInfo.sStreamName + '_' + v1 + '_' + wsTime;
|
||||||
|
const hash = md5Encode(v2);
|
||||||
|
const ratio = ''
|
||||||
|
const purl = `${hlsUrl}?wsSecret=${hash}&wsTime=${wsTime}&seqid=${seqid}&ctype=${ctype}&ver=1&txyp=${txyp}&fs=${fs}&ratio=${ratio}&u=${u}&t=${t}&sv=2107230339`;
|
||||||
|
return {
|
||||||
|
cdnType: streamInfo.sCdnType,
|
||||||
|
playUrl: purl,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
header: {
|
||||||
|
"User-Agent": MOBILE_UA,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick) {
|
||||||
|
const resp = await request('https://search.cdn.huya.com/?m=Search&do=getSearchContent&q=' + wd + '&uid=0&v=4&typ=-5&livestate=0&rows=40&start=0');
|
||||||
|
const data = JSON.parse(resp);
|
||||||
|
let videos = [];
|
||||||
|
for (const vod of data.response['3'].docs) {
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.room_id,
|
||||||
|
vod_name: vod.game_roomName,
|
||||||
|
vod_pic: vod.game_screenshot,
|
||||||
|
vod_remarks: vod.game_nick,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function unquote(str) {
|
||||||
|
return str.replace(/^"(.*)"$/, '$1');
|
||||||
|
}
|
||||||
|
|
||||||
|
function md5Encode(text) {
|
||||||
|
return Crypto.MD5(Crypto.enc.Utf8.parse(text)).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
function base64Decode(text) {
|
||||||
|
return Crypto.enc.Utf8.stringify(Crypto.enc.Base64.parse(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,278 @@
|
|||||||
|
import { Crypto, load, _ } from 'assets://js/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,
|
||||||
|
'referer': url
|
||||||
|
},
|
||||||
|
});
|
||||||
|
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() {
|
||||||
|
const html = await request(url);
|
||||||
|
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: '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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');
|
||||||
|
const remarks = $('span#line-tips').text();
|
||||||
|
let vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_pic: jsBase + base64Encode($('div.item-root > img')[0].attribs['data-src']),
|
||||||
|
vod_remarks: '',
|
||||||
|
vod_content: remarks || '',
|
||||||
|
vod_name: $(detail).find('h2').text().trim(),
|
||||||
|
vod_year: $(detail).find('h3:nth-child(3)').text(),
|
||||||
|
vod_area: $(detail).find('h3:nth-child(4)').text(),
|
||||||
|
vod_actor: $(detail).find('h3:nth-child(5)').text(),
|
||||||
|
};
|
||||||
|
const token = getToken($);
|
||||||
|
const res = await req(url + '/api/getResN?videoId=' + id.substring(id.lastIndexOf('/') + 1) + '&mtype=1&token=' + token, {
|
||||||
|
headers: {
|
||||||
|
Referer: 'play',
|
||||||
|
'User-Agent': UA,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const list = JSON.parse(res.content).data.list;
|
||||||
|
let playlist = {};
|
||||||
|
let arr = []
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var key in playlist) {
|
||||||
|
if ('kuaikan' == key) {
|
||||||
|
arr.push({
|
||||||
|
flag: '快看',
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 1
|
||||||
|
})
|
||||||
|
} else if ('bfzym3u8' == key) {
|
||||||
|
arr.push({
|
||||||
|
flag: '暴风',
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 2
|
||||||
|
})
|
||||||
|
} else if ('ffm3u8' == key) {
|
||||||
|
arr.push({
|
||||||
|
flag: '非凡',
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 3
|
||||||
|
})
|
||||||
|
} else if ('lzm3u8' == key) {
|
||||||
|
arr.push({
|
||||||
|
flag: '量子',
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 4
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
arr.push({
|
||||||
|
flag: key,
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 5
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arr.sort((a, b) => a.sort - b.sort);
|
||||||
|
let playFrom = [];
|
||||||
|
let playList = [];
|
||||||
|
arr.map(val => {
|
||||||
|
playFrom.push(val.flag);
|
||||||
|
playList.push(val.url);
|
||||||
|
})
|
||||||
|
vod.vod_play_from = playFrom.join("$$$");
|
||||||
|
vod.vod_play_url = playList.join("$$$");
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getToken($) {
|
||||||
|
const currentId = $('#current_id').val();
|
||||||
|
let eToken = $('#e_token').val();
|
||||||
|
if (!currentId || !eToken) return '';
|
||||||
|
const idLength = currentId.length;
|
||||||
|
const subId = currentId.substring(idLength - 4, idLength);
|
||||||
|
let keys = [];
|
||||||
|
for (let i = 0; i < subId.length; i++) {
|
||||||
|
const curInt = parseInt(subId[i]);
|
||||||
|
const splitPos = curInt % 3 + 1;
|
||||||
|
keys[i] = eToken.substring(splitPos, splitPos + 8);
|
||||||
|
eToken = eToken.substring(splitPos + 8, eToken.length);
|
||||||
|
}
|
||||||
|
return keys.join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
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, pg) {
|
||||||
|
if (pg <= 0 || typeof(pg) == 'undefined') pg = 1;
|
||||||
|
const html = await request(url + '/search?q=' + wd + '&p=' + pg);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.media');
|
||||||
|
var jsBase = await js2Proxy(true, siteType, siteKey, 'img/', {});
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const a = $(item).find('a:first')[0];
|
||||||
|
const img = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('span.label')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: a.attribs.href,
|
||||||
|
vod_name: img.attribs.alt,
|
||||||
|
vod_pic: jsBase + base64Encode(img.attribs['data-src']),
|
||||||
|
vod_remarks: 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,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
proxy: proxy,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,278 @@
|
|||||||
|
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,
|
||||||
|
'referer': url
|
||||||
|
},
|
||||||
|
});
|
||||||
|
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() {
|
||||||
|
const html = await request(url);
|
||||||
|
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: '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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');
|
||||||
|
const remarks = $('span#line-tips').text();
|
||||||
|
let vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_pic: jsBase + base64Encode($('div.item-root > img')[0].attribs['data-src']),
|
||||||
|
vod_remarks: '',
|
||||||
|
vod_content: remarks || '',
|
||||||
|
vod_name: $(detail).find('h2').text().trim(),
|
||||||
|
vod_year: $(detail).find('h3:nth-child(3)').text(),
|
||||||
|
vod_area: $(detail).find('h3:nth-child(4)').text(),
|
||||||
|
vod_actor: $(detail).find('h3:nth-child(5)').text(),
|
||||||
|
};
|
||||||
|
const token = getToken($);
|
||||||
|
const res = await req(url + '/api/getResN?videoId=' + id.substring(id.lastIndexOf('/') + 1) + '&mtype=1&token=' + token, {
|
||||||
|
headers: {
|
||||||
|
Referer: 'play',
|
||||||
|
'User-Agent': UA,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const list = JSON.parse(res.content).data.list;
|
||||||
|
let playlist = {};
|
||||||
|
let arr = []
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var key in playlist) {
|
||||||
|
if ('kuaikan' == key) {
|
||||||
|
arr.push({
|
||||||
|
flag: '快看',
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 1
|
||||||
|
})
|
||||||
|
} else if ('bfzym3u8' == key) {
|
||||||
|
arr.push({
|
||||||
|
flag: '暴风',
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 2
|
||||||
|
})
|
||||||
|
} else if ('ffm3u8' == key) {
|
||||||
|
arr.push({
|
||||||
|
flag: '非凡',
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 3
|
||||||
|
})
|
||||||
|
} else if ('lzm3u8' == key) {
|
||||||
|
arr.push({
|
||||||
|
flag: '量子',
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 4
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
arr.push({
|
||||||
|
flag: key,
|
||||||
|
url: playlist[key],
|
||||||
|
sort: 5
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arr.sort((a, b) => a.sort - b.sort);
|
||||||
|
let playFrom = [];
|
||||||
|
let playList = [];
|
||||||
|
arr.map(val => {
|
||||||
|
playFrom.push(val.flag);
|
||||||
|
playList.push(val.url);
|
||||||
|
})
|
||||||
|
vod.vod_play_from = playFrom.join("$$$");
|
||||||
|
vod.vod_play_url = playList.join("$$$");
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getToken($) {
|
||||||
|
const currentId = $('#current_id').val();
|
||||||
|
let eToken = $('#e_token').val();
|
||||||
|
if (!currentId || !eToken) return '';
|
||||||
|
const idLength = currentId.length;
|
||||||
|
const subId = currentId.substring(idLength - 4, idLength);
|
||||||
|
let keys = [];
|
||||||
|
for (let i = 0; i < subId.length; i++) {
|
||||||
|
const curInt = parseInt(subId[i]);
|
||||||
|
const splitPos = curInt % 3 + 1;
|
||||||
|
keys[i] = eToken.substring(splitPos, splitPos + 8);
|
||||||
|
eToken = eToken.substring(splitPos + 8, eToken.length);
|
||||||
|
}
|
||||||
|
return keys.join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
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, pg) {
|
||||||
|
if (pg <= 0 || typeof(pg) == 'undefined') pg = 1;
|
||||||
|
const html = await request(url + '/search?q=' + wd + '&p=' + pg);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.media');
|
||||||
|
var jsBase = await js2Proxy(true, siteType, siteKey, 'img/', {});
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const a = $(item).find('a:first')[0];
|
||||||
|
const img = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('span.label')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: a.attribs.href,
|
||||||
|
vod_name: img.attribs.alt,
|
||||||
|
vod_pic: jsBase + base64Encode(img.attribs['data-src']),
|
||||||
|
vod_remarks: 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,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
proxy: proxy,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
+166
@@ -0,0 +1,166 @@
|
|||||||
|
import { Crypto, load, _, jinja2 } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'jinm';
|
||||||
|
let HOST = 'https://jinman.tv';
|
||||||
|
let url = '';
|
||||||
|
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': HOST
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
let html = await request(HOST);
|
||||||
|
url = html.match(/<a href="(.*)" target=.*>点击进入</)[1];
|
||||||
|
console.debug('跟剧跳转地址 =====>' + url); // js_debug.log
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":1,"type_name":"电影"},{"type_id":2,"type_name":"追剧"},{"type_id":4,"type_name":"综艺"},{"type_id":3,"type_name":"动漫"},{"type_id":5,"type_name":"纪录片"},{"type_id":20,"type_name":"电影解说"}];
|
||||||
|
let filterObj = {
|
||||||
|
"1":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"/class/喜剧"},{"n":"爱情","v":"/class/爱情"},{"n":"恐怖","v":"/class/恐怖"},{"n":"动作","v":"/class/动作"},{"n":"科幻","v":"/class/科幻"},{"n":"剧情","v":"/class/剧情"},{"n":"战争","v":"/class/战争"},{"n":"警匪","v":"/class/警匪"},{"n":"犯罪","v":"/class/犯罪"},{"n":"动画","v":"/class/动画"},{"n":"奇幻","v":"/class/奇幻"},{"n":"武侠","v":"/class/武侠"},{"n":"冒险","v":"/class/冒险"},{"n":"枪战","v":"/class/枪战"},{"n":"恐怖","v":"/class/恐怖"},{"n":"悬疑","v":"/class/悬疑"},{"n":"惊悚","v":"/class/惊悚"},{"n":"经典","v":"/class/经典"},{"n":"青春","v":"/class/青春"},{"n":"文艺","v":"/class/文艺"},{"n":"微电影","v":"/class/微电影"},{"n":"古装","v":"/class/古装"},{"n":"历史","v":"/class/历史"},{"n":"运动","v":"/class/运动"},{"n":"农 村","v":"/class/农村"},{"n":"儿童","v":"/class/儿童"},{"n":"网络电影","v":"/class/网络电影"},{"n":"体育赛事","v":"/class/体育赛事"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"美国","v":"/area/美国"},{"n":"法国","v":"/area/法国"},{"n":"英国","v":"/area/英国"},{"n":"日本","v":"/area/日本"},{"n":"韩国","v":"/area/韩国"},{"n":"德国","v":"/area/德国"},{"n":"泰国","v":"/area/泰国"},{"n":"印度","v":"/area/印度"},{"n":"意大利","v":"/area/意大利"},{"n":"西班牙","v":"/area/西班牙"},{"n":"加拿大","v":"/area/加拿大"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽 南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"法语","v":"/lang/法语"},{"n":"德语","v":"/lang/德语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"2":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"偶像","v":"/class/偶像"},{"n":"爱情","v":"/class/爱情"},{"n":"言情","v":"/class/言情"},{"n":"古装","v":"/class/古装"},{"n":"历史","v":"/class/历史"},{"n":"玄幻","v":"/class/玄幻"},{"n":"谍战","v":"/class/谍战"},{"n":"历险","v":"/class/历险"},{"n":"都市","v":"/class/都市"},{"n":"科幻","v":"/class/科幻"},{"n":"军旅","v":"/class/军旅"},{"n":"喜剧","v":"/class/喜剧"},{"n":"武侠","v":"/class/武侠"},{"n":"江湖","v":"/class/江湖"},{"n":"罪案","v":"/class/罪案"},{"n":"青春","v":"/class/青春"},{"n":"家庭","v":"/class/家庭"},{"n":"战争","v":"/class/战争"},{"n":"悬疑","v":"/class/悬疑"},{"n":"穿越","v":"/class/穿越"},{"n":"宫廷","v":"/class/宫廷"},{"n":"神话","v":"/class/神话"},{"n":"商战","v":"/class/商战"},{"n":"警匪","v":"/class/警匪"},{"n":"动作","v":"/class/动作"},{"n":"惊悚","v":"/class/惊悚"},{"n":"剧情","v":"/class/剧情"},{"n":"同性","v":"/class/同性"},{"n":"奇幻","v":"/class/奇幻"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"/area/内地"},{"n":"韩国","v":"/area/韩国"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"日本","v":"/area/日本"},{"n":"美国","v":"/area/美国"},{"n":"泰国","v":"/area/泰国"},{"n":"英国","v":"/area/英国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"番剧","v":"/class/番剧"},{"n":"国创","v":"/class/国创"},{"n":"热血","v":"/class/热血"},{"n":"格斗","v":"/class/格斗"},{"n":"机战","v":"/class/机战"},{"n":"少女","v":"/class/少女"},{"n":"竞技","v":"/class/竞技"},{"n":"科幻","v":"/class/科幻"},{"n":"魔幻","v":"/class/魔幻"},{"n":"爆笑","v":"/class/爆笑"},{"n":"推理","v":"/class/推理"},{"n":"冒险","v":"/class/冒险"},{"n":"恋爱","v":"/class/恋爱"},{"n":"校园","v":"/class/校园"},{"n":"治愈","v":"/class/治愈"},{"n":"泡面","v":"/class/泡面"},{"n":"穿越","v":"/class/穿越"},{"n":"灵异","v":"/class/灵异"},{"n":"耽美","v":"/class/耽美"},{"n":"动画","v":"/class/动画"},{"n":"电影","v":"/class/电影"},{"n":"其它","v":"/class/其它/"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它/"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"法语","v":"/lang/法语"},{"n":"德语","v":"/lang/德语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"综艺","v":"/class/综艺"},{"n":"选秀","v":"/class/选秀"},{"n":"情感","v":"/class/情感"},{"n":"访谈","v":"/class/访谈"},{"n":"播报","v":"/class/播报"},{"n":"旅游","v":"/class/旅游"},{"n":"音乐","v":"/class/音乐"},{"n":"美食","v":"/class/美食"},{"n":"纪实","v":"/class/纪实"},{"n":"曲艺","v":"/class/曲艺"},{"n":"生活","v":"/class/生活"},{"n":"游戏互动","v":"/class/游戏互动"},{"n":"财经","v":"/class/财经"},{"n":"求职","v":"/class/求职"},{"n":"脱口秀","v":"/class/脱口秀"},{"n":"真人秀","v":"/class/真人秀/"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它/"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"5":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"文化","v":"/class/文化"},{"n":"探索","v":"/class/探索"},{"n":"军事","v":"/class/军事"},{"n":"解密","v":"/class/解密"},{"n":"科技","v":"/class/科技"},{"n":"历史","v":"/class/历史"},{"n":"人物","v":"/class/人物"},{"n":"自然","v":"/class/自然"},{"n":"其它","v":"/class/其它/"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法 国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它/"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"20":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"/class/喜剧"},{"n":"爱情","v":"/class/爱情"},{"n":"恐怖","v":"/class/恐怖"},{"n":"动作","v":"/class/动作"},{"n":"科幻","v":"/class/科幻"},{"n":"剧情","v":"/class/剧情"},{"n":"战 争","v":"/class/战争"},{"n":"警匪","v":"/class/警匪"},{"n":"犯罪","v":"/class/犯罪"},{"n":"动画","v":"/class/动画"},{"n":"奇幻","v":"/class/奇幻"},{"n":"武侠","v":"/class/武侠"},{"n":"冒险","v":"/class/冒险"},{"n":"枪战","v":"/class/枪战"},{"n":"恐怖","v":"/class/恐怖"},{"n":"悬疑","v":"/class/悬疑"},{"n":"惊悚","v":"/class/惊悚"},{"n":"经典","v":"/class/经典"},{"n":"青春","v":"/class/青春"},{"n":"文艺","v":"/class/文艺"},{"n":"微电影","v":"/class/微电影"},{"n":"古 装","v":"/class/古装"},{"n":"历史","v":"/class/历史"},{"n":"运动","v":"/class/运动"},{"n":"农村","v":"/class/农村"},{"n":"儿童","v":"/class/儿童"},{"n":"网络电影","v":"/class/网络电影"},{"n":"伦理","v":"/class/伦理"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"美国","v":"/area/美国"},{"n":"法国","v":"/area/法国"},{"n":"英国","v":"/area/英国"},{"n":"日本","v":"/area/日本"},{"n":"韩国","v":"/area/韩国"},{"n":"德国","v":"/area/德国"},{"n":"泰国","v":"/area/泰国"},{"n":"印度","v":"/area/印度"},{"n":"意大利","v":"/area/意大利"},{"n":"西班牙","v":"/area/西班牙"},{"n":"加拿大","v":"/area/加拿大"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"法语","v":"/lang/法语"},{"n":"德语","v":"/lang/德语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"}]},{"key":"letter","name":"字母","value":[{"n":"字母","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
const link = url + '/index.php/vod/show' + (extend.area || '') + (extend.by || '/by/time') + (extend.class || '') + '/id/' + tid + (extend.lang || '') + (extend.letter || '') + '/page/' + pg + (extend.year || '') + '.html';//https://jinmantv.com/index.php/vod/show/area/%E7%BE%8E%E5%9B%BD/by/hits/class/%E5%8A%A8%E4%BD%9C/id/1/lang/%E8%8B%B1%E8%AF%AD/year/2022.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.main a.module-poster-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item)[0];
|
||||||
|
const k = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('div.module-item-note')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/.*?\/id\/(.*).html/g, '$1'),
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: k.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('div#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) {
|
||||||
|
var html = await request( url + '/index.php/vod/detail/id/' + id + '.html');
|
||||||
|
var $ = load(html);
|
||||||
|
var vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('h1:first').text().trim(),
|
||||||
|
vod_type: $('.module-info-tag a').text(),
|
||||||
|
vod_actor: $('.module-info-items a').text(),
|
||||||
|
vod_pic: $('.video-cover img:first').attr('src'),
|
||||||
|
vod_remarks : $('.stui-content__detail p:nth-child(5)').text() || '',
|
||||||
|
vod_content: $('.show-desc p').text().trim().replace('如果你喜欢', '').replace('记得来金曼TV在线观看。', ''),
|
||||||
|
};
|
||||||
|
var playMap = {};
|
||||||
|
var tabs = $('div.module-tab-items-box div.module-tab-item span');
|
||||||
|
var playlists = $('div.module-play-list-content');
|
||||||
|
_.each(tabs, (tab, i) => {
|
||||||
|
var from = $(tab).text();
|
||||||
|
var list = playlists[i];
|
||||||
|
list = $(list).find('a');
|
||||||
|
_.each(list, (it) => {
|
||||||
|
var title = $(it).text();
|
||||||
|
var playUrl = it.attribs.href.replace(/.*?\/id\/(.*).html/g, '$1');
|
||||||
|
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) {
|
||||||
|
const link = url + '/index.php/vod/play/id/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=',''));
|
||||||
|
const playUrl = js.url;
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let data = await request(url + '/index.php/vod/search/page/' + pg + '/wd/' + wd + '.html');//https://fun.tvoled.net/index.php/vod/search/page/2/wd/%E6%88%91.html
|
||||||
|
const $ = load(data);
|
||||||
|
const items = $('div.module-items div.module-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const k = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('div.module-item-note')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/.*?\/id\/(.*).html/g, '$1'),
|
||||||
|
vod_name: k.attribs.alt,
|
||||||
|
vod_pic: k.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('div#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,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,206 @@
|
|||||||
|
import { Crypto, load, _, dayjs } from 'assets://js/lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'jiohub';
|
||||||
|
let url = 'https://jiohub.top';
|
||||||
|
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' : '',
|
||||||
|
});
|
||||||
|
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 series = $('.nav-list a[href*=/video]');
|
||||||
|
let classes = _.map(series, (s) => {
|
||||||
|
let typeId = s.attribs['href'];
|
||||||
|
let typeName = typeId.match(/\/video\/(.*)\?/)[1];
|
||||||
|
typeName = decodeURIComponent(typeName);
|
||||||
|
return {
|
||||||
|
type_id: typeName,
|
||||||
|
type_name: typeName,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
return '{}';
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
let page = pg || 1;
|
||||||
|
if (page == 0) page = 1;
|
||||||
|
const link = url + '/video/' + tid + "?page=" + page + '&size=18';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.content-body > a');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const img = $(item).find('img:first')[0].attribs['src'];
|
||||||
|
const a = item.attribs['href'].match(/\/watch\/(.*)/)[1];
|
||||||
|
const n = ($(item).find('p.card-title')[0]).children[0].data;
|
||||||
|
let speed = ($(item).find('p.item-speed')[0]).children[0].data || '';
|
||||||
|
const score = ($(item).find('p.score')[0]).children[0].data || '';
|
||||||
|
if (speed == tid) speed = '';
|
||||||
|
return {
|
||||||
|
vod_id: a,
|
||||||
|
vod_name: n,
|
||||||
|
vod_pic: img,
|
||||||
|
vod_remarks: speed || score || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
let total = 18;
|
||||||
|
const pag = $('ui-pagination');
|
||||||
|
if (pag.length > 0) {
|
||||||
|
try {
|
||||||
|
total = parseInt(pag[0].attribs['total']);
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
page: page,
|
||||||
|
pagecount: _.ceil(total / 18),
|
||||||
|
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 + '/watch/' + id);
|
||||||
|
const $ = load(html);
|
||||||
|
const detail = $('div.content-detail > p');
|
||||||
|
let vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_content: stripHtmlTag($('div.content-detail span.detail-sketch').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_type = i.substring(3);
|
||||||
|
} else if (i.startsWith('导演:')) {
|
||||||
|
vod.vod_director = i.substring(3);
|
||||||
|
} else if (i.startsWith('主演:')) {
|
||||||
|
vod.vod_actor = i.substring(3);
|
||||||
|
} else if (i.startsWith('语言:')) {
|
||||||
|
vod.vod_lang = i.substring(3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const urls = html.match(/let urls = \"(.*)\";/)[1].replace(/_/g, '/').replace(/-/g, '+');
|
||||||
|
var key = Crypto.enc.Utf8.parse("cf2d1a-6a4d-9ef8");
|
||||||
|
var playlist = Crypto.AES.decrypt(urls, key, { iv: key, padding: Crypto.pad.Pkcs7 });
|
||||||
|
playlist = Crypto.enc.Utf8.stringify(playlist).split('\n');
|
||||||
|
vod.vod_play_from = 'JOJO';
|
||||||
|
vod.vod_play_url = playlist.join('#');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function playPid() {
|
||||||
|
var key = Crypto.enc.Utf8.parse('VSmJTRRE'+dayjs().format('YYYYMMDD'));
|
||||||
|
var iv = Crypto.enc.Hex.parse("00000000000000000000000000000000");
|
||||||
|
var pid = Crypto.AES.encrypt(dayjs().format('YYYY-MM-DD HH:mm'), key, { iv: iv, padding: Crypto.pad.Pkcs7 });
|
||||||
|
pid = pid.toString().replace(/\+/g, '-');
|
||||||
|
return pid;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id + '?pid=' + playPid(),
|
||||||
|
header: {
|
||||||
|
'User-Agent': UA,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let page = pg || 1;
|
||||||
|
if (page == 0) page = 1;
|
||||||
|
const link = url + '/video/search?q=' + wd + "&page=" + page + '&size=18&pid=' + playPid();
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.content-body > a');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const img = $(item).find('img:first')[0].attribs['src'];
|
||||||
|
const a = item.attribs['href'].match(/\/watch\/(.*)/)[1];
|
||||||
|
const n = ($(item).find('p.card-title')[0]).children[0].data;
|
||||||
|
let speed = ($(item).find('p.item-speed')[0]).children[0].data || '';
|
||||||
|
const score = ($(item).find('p.score')[0]).children[0].data || '';
|
||||||
|
if (speed == '电影') speed = '';
|
||||||
|
return {
|
||||||
|
vod_id: a,
|
||||||
|
vod_name: n,
|
||||||
|
vod_pic: img,
|
||||||
|
vod_remarks: speed || score || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
let total = 18;
|
||||||
|
const pag = $('ui-pagination');
|
||||||
|
if (pag.length > 0) {
|
||||||
|
try {
|
||||||
|
total = parseInt(pag[0].attribs['total']);
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
page: page,
|
||||||
|
pagecount: _.ceil(total / 18),
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1C4Ahhra3lzX29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgxDcnlwdG8KZGF5anMMamluamEyAl8Ga2V5BnVybAxkZXZpY2UOc2l0ZUtleRBzaXRlVHlwZQJhDnJlcXVlc3QIaW5pdAhob21lDmhvbWVWb2QQY2F0ZWdvcnkMZGV0YWlsCnBhcnNlCHBsYXkMc2VhcmNoGGJhc2U2NEVuY29kZRhiYXNlNjREZWNvZGUOY2hhclN0cg5yYW5kU3RyFHJhbmREZXZpY2UaZm9ybWF0UGxheVVybBJqc29uUGFyc2UIa2t5cz5odHRwczovL2FwaTEuYmFpYmFpcGVpLmNvbTo4ODk5emFiYWNkZWZnaGprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkMcmVxVXJsEHBvc3REYXRhDmFnZW50U3AEdHMIcmFuZAhzaWduDmhlYWRlcnMGcmVzDmNvbnRlbnQGTUQ1LmFiY2RleHh4ZGQyZGFrbG1uMjUxMjlfFnRvTG93ZXJDYXNlBHVhFHVzZXItYWdlbnQQaW5jbHVkZXMSYmFpYmFpcGVpEmRldmljZS1pZARpZBRwdXNoLXRva2VuCHRpbWUGbWQ1DnZlcnNpb24KMi4xLjMYc3lzdGVtLW1vZGVsCm1vZGVsGHN5c3RlbS1icmFuZApicmFuZBxzeXN0ZW0tdmVyc2lvbg5yZWxlYXNlBnJlcQhwb3N0DG1ldGhvZAhkYXRhCGZvcm0QcG9zdFR5cGUGY2ZnDl8weDViYjcOXzB4MzU4OAplcnJvchJkZXZpY2VLZXkUZGV2aWNlSW5mbwhza2V5CnN0eXBlMHdxODZ3NzNDbU1PcEhjT2V3NkhDdXl3PSB3NHZDdDhLRHdvekNsZz09GHc3N0R2c085d3E5VhBObnc5QWNPTyBaM3cxQk1LWUtnTmF3Nlk9BjB4Mwg5bVZBBjB4MghlMGhFBjB4MQhOKW5sBjB4NAh3NzFmBjB4MAhIZ00zBmxvZw5jb25zb2xlCmxvY2FsDmlzRW1wdHkYb2todHRwLzQuMS4wEnN0cmluZ2lmeRJfMHg0MjE2NDYSXzB4NWJiNzBkEl8weDM1ODg4MBJfMHgzNWI5OTMIcHVzaApzaGlmdBJfMHgyNmY4YTYMdmFSTWNFDHlaU0RLVQx4SVVZWnIMU1FqZXRREl8weDNhMWQxYRJfMHg1ZDJmZTMSXzB4NGQyNWY1ggFBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPQhhdG9iEl8weDFkMWQ5MxJfMHg0Y2NiMmEmcmV0dXJuIChmdW5jdGlvbigpIEB7fS5jb25zdHJ1Y3RvcigicmV0dXJuIHRoaXMiKSggKQQpOwx3aW5kb3cSXzB4NGU4NDk2El8weDU5MThmNxJfMHg0MDM1YTkSXzB4NDdmODNiEl8weGQxZDRlNBJfMHgyMGFjNGMSXzB4NWMzODU2DnJlcGxhY2UMY2hhckF0DmluZGV4T2YYZnJvbUNoYXJDb2RlEl8weDRiNWQ0ZRJfMHg0NDIzYzUSXzB4MjgzMmUxDl8weDU5NGYSXzB4NGYzMTQwEl8weDQ2OGVlYRJfMHg0NWJiNTcSXzB4MmRjN2Q3El8weDVlMjczZhJfMHgzNzY3YzUSXzB4NTBkODJkAiUEMDAUY2hhckNvZGVBdApzbGljZSRkZWNvZGVVUklDb21wb25lbnQMZmlsdGVyDmNsYXNzZXMSZmlsdGVyT2JqCHR5cGUQdHlwZU5hbWUMdHlwZUlkEmZpbHRlckFsbBRmaWx0ZXJEYXRhFGl0ZW1WYWx1ZXMcdHlwZUV4dGVuZE5hbWUabmV3VHlwZUV4dGVuZB5uZXdUeXBlRXh0ZW5kS1YCagJlRC9hcGkucGhwL0luZGV4L2dldFRvcFZpZGVvQ2F0ZWdvcnkQbmF2X25hbWUFqGNQgxZuYXZfdHlwZV9pZA50eXBlX2lkEnR5cGVfbmFtZTgvYXBpLnBocC9WaWRlby9nZXRGaWx0ZXJUeXBlCGtleXMIcGxvdAV7fItXCGFyZWEFMFc6UwhsYW5nBe2LAIoIeWVhcgV0XuNOCHNvcnQFkmOPXgVoUeiQAm4Cdg5maWx0ZXJzEmpzb25BcnJheQx2aWRlb3MIaXRlbQh2T2JqNC9hcGkucGhwL0luZGV4L2dldEhvbWVQYWdlAnAKdmlkZW8KdGl0bGUSc3R5bGVUeXBlCGxpc3QMdm9kX2lkEHZvZF9uYW1lDnZvZF9waWMWdm9kX3JlbWFya3MSdm9kX3Njb3JlBnRpZARwZwxleHRlbmQQZm9ybURhdGEGdm9kQi9hcGkucGhwL1ZpZGVvL2dldEZpbHRlclZpZGVvTGlzdMwDewogICAgICAgICJ0eXBlIjogInt7dGlkfX0iLAogICAgICAgICJwIjogInt7cGd9fSIsCiAgICAgICAgImFyZWEiOiAie3tleHQuYXJlYXxkZWZhdWx0KDApfX0iLAogICAgICAgICJ5ZWFyIjogInt7ZXh0LnllYXJ8ZGVmYXVsdCgwKX19IiwKICAgICAgICAic29ydCI6ICJ7e2V4dC5zb3J0fGRlZmF1bHQoMCl9fSIsCiAgICAgICAgImNsYXNzIjogInt7ZXh0LmNsYXNzfGRlZmF1bHQoMCl9fSIKICAgIH0GZXh0EHBhcnNlSW50GGN1cnJlbnRfcGFnZQhwYWdlEmxhc3RfcGFnZRJwYWdlY291bnQQcGVyX3BhZ2UKbGltaXQKdG90YWwQcGxheWxpc3QIdXJscwJ1GHZvZF9wbGF5X3VybAx1cmxpc3Q2L2FwaS5waHAvVmlkZW8vZ2V0VmlkZW9JbmZvEHZpZGVvX2lkEnZvZF9jbGFzcxB2b2RfeWVhchB2b2RfYXJlYRJ2b2RfYWN0b3IYdm9kX2RpcmVjdG9yFnZvZF9jb250ZW50CHRyaW0Qdm9kX3BsYXkUcGxheWVyRm9ybQRqcAR4ZwIkEHBsYXlfdXJsHGhhc093blByb3BlcnR5BiQkJBp2b2RfcGxheV9mcm9tAiMIZmxhZwRqagxyZXN1bHQSanFxSGVhZGVyFGpxcUhlYWRlcnMGaWRzCmp4SnFxDmpxcUluZm8KeW91a3UKaXFpeWkQdi5xcS5jb20IcHB0dgxsZS5jb20QMTkwNS5jb20IbWd0dhhVc2VyIC0gQWdlbnQUVXNlci1BZ2VudAxoZWFkZXIOZm9yRWFjaAhqcXEtHi9qcXFoZWFkZXIuanNvbgItbmh0dHBzOi8vYXBpLmp1cXVhbnF1YW5hcHAuY29tL2FwcC9kcmFtYS9kZXRhaWw/ZHJhbWFJZD0YJmVwaXNvZGVTaWQ9FiZxdWFsaXR5PUxEEHBsYXlJbmZvDnBsYXlVcmwUL3ZpZGVvLnBocAh0ZXN0EGpzMlByb3h5Dmx6bTN1OC8EaGsQc2VnbWVudHMId2hhdAhyZXNwBmhscwxqc0Jhc2UOYmFzZVVybAxsem0zdTgMc3Vic3RyFmxhc3RJbmRleE9mAi8IY29kZQptYXRjaARwMQRwMgRwMwR1cBRzdGFydHNXaXRoCGh0dHAEd2QKcXVpY2syL2FwaS5waHAvU2VhcmNoL2dldFNlYXJjaAh0ZXh0BmVuYwxCYXNlNjQIVXRmOAZsZW4Od2l0aE51bQhfc3RyFmNvbnRhaW5zTnVtAmkGaWR4DHJhbmRvbQxIdWF3ZWkcSFVBV0VJIE1hdGUgMjAWdG9VcHBlckNhc2UOYnVpbGRJZAZzcmMUcmVwbGFjZUFsbAIgCGpzb24OcmVmZXJlcgQvLwxodHRwczoOUmVmZXJlcg+kAwGmAwEAG6gDAAQAqgMAAawDAAKuAwADsAMADgAGAaABAAAAARwQgwEAqgMADKwDAQyuAwIMsAMDDLIDAAm0AwEJtgMCCbgDAwm6AwQJvAMFAb4DBgHAAwcBwgMIAcQDCQHGAwoByAMLAcoDDAHMAw0BhgIOAc4DDwHQAxAB0gMRAdQDEg3WAxMB2AMUAdoDFQHcAxYBqAMXAQjoUr4AXwoAvgFfCwC+Al8MAL4DXw0AvgRfDgC+BV8PAL4GXxEAvgdfEgC+CF8TAL4JXxQAvgpfFQC+C18XAL4MXxgAvg1fGQC+Dl8aAL4PXxsAKQTvAAAAXwQABPAAAABfBQALXwYAv18HALNfCAAJXwkAJgAAXxAABPEAAABfFgAppAMBFQEAVAYrKxcXFwAEzgMABoICAAiOAQ5iBgG+AwQGBAUFAN4CCuQDAAEA5gMAAQDoAwABAIIBAAEA6gMBACDsAwEBIO4DAQIg8AMBAyDyAwEEIPQDAQUgvAMJAKwDAQzWAxcAqgMADLYDBghhBQBhBABhAwBhAgBhAQBhAADb6AO/LmUBAOxCOQAAACQAAEI3AAAAJAAAx927IO3IZQMAQvsAAAAE/AAAAGIAAJ0E2AAAAJ1iAQCdJAEAQjcAAAAkAABC/QAAACQAAMkL0RHpCg5lBABB/gAAAEz/AAAAys9CAAEAAAQBAQAAJAEAaYsAAABiAwAEAgEAAHFlBABBAwEAAEliAwAEBAEAAL9JYgMABPcAAABxYgIASWIDAAQFAQAAcWIAAEliAwAEBgEAAHFiAQBJYgMABAcBAAAECAEAAEliAwAECQEAAHFlBABBCgEAAEliAwAECwEAAHFlBABBDAEAAEliAwAEDQEAAHFlBABBDgEAAEk4DwEAAM8L0ugIBEEAAADqBgQQAQAATBEBAABiAwBM+AAAANAR6QMOC0wSAQAA0ugEv+oGBBMBAABMFAEAAO6LwQRiBABB+gAAAMEFYgUALqQDCRtdHGwcmSs
Line truncated
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import{Crypto,dayjs,jinja2,_}from"assets://js/lib/cat.js";let key="kkys",url="https://api1.baibaipei.com:8899",device={},siteKey="",siteType=0;async function request(reqUrl,postData,agentSp,get){var ts=dayjs().valueOf().toString(),rand=randStr(32),sign=Crypto.MD5("abcdexxxdd2daklmn25129_"+ts+"_"+rand).toString().toLowerCase(),agentSp={"user-agent":agentSp||device.ua},sign=(reqUrl.includes("baibaipei")&&(agentSp["device-id"]=device.id,agentSp["push-token"]="",agentSp.sign=sign,agentSp.time=ts,agentSp.md5=rand,agentSp.version="2.1.3",agentSp["system-model"]=device.model,agentSp["system-brand"]=device.brand,agentSp["system-version"]=device.release),await req(reqUrl,{method:get?"get":"post",headers:agentSp,data:postData||{},postType:get?"":"form"}));return sign.content}async function init(cfg){siteKey=cfg.skey,siteType=cfg.stype;cfg=await local.get(key,"device");if(0<cfg.length)try{device=JSON.parse(cfg)}catch(error){}_.isEmpty(device)&&((device=randDevice()).id=randStr(33).toLowerCase(),device.ua="okhttp/4.1.0",await local.set(key,"device",JSON.stringify(device)))}async function home(filter){var classes=[],filterObj={};for(const type of JSON.parse(await request(url+"/api.php/Index/getTopVideoCategory")).data){var typeName=type.nav_name;if("推荐"!=typeName){var typeId=type.nav_type_id.toString();if(classes.push({type_id:typeId,type_name:typeName}),filter)try{var key,filterAll=[],filterData=JSON.parse(await request(url+"/api.php/Video/getFilterType",{type:typeId})).data;for(key of Object.keys(filterData)){var itemValues=filterData[key];"plot"===key&&(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="排序"}if(0!==typeExtendName.length){var newTypeExtend={key:key,name:typeExtendName},newTypeExtendKV=[];for(let j=0;j<itemValues.length;j++){var name=itemValues[j],value="sort"===key?j+"":"全部"===name?"0":name;newTypeExtendKV.push({n:name,v:value})}newTypeExtend.init="sort"===key?"1":newTypeExtendKV[0].v,newTypeExtend.value=newTypeExtendKV,filterAll.push(newTypeExtend)}}_.isEmpty(filterAll)||(filterObj[typeId]=filterAll)}catch(e){console.log(e)}}}return JSON.stringify({class:classes,filters:filterObj})}async function homeVod(){var videos=[];for(const item of JSON.parse(await request(url+"/api.php/Index/getHomePage",{type:1,p:1})).data.video)if(0===item.title.styleType)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){0==pg&&(pg=1);var reqUrl=url+"/api.php/Video/getFilterVideoList",extend=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})),tid=(console.log(extend),JSON.parse(await request(reqUrl,extend)).data),videos=[];for(const vod of tid.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(tid.current_page),pagecount:parseInt(tid.last_page),limit:parseInt(tid.per_page),total:parseInt(tid.total),list:videos})}async function detail(id){var id=JSON.parse(await request(url+"/api.php/Video/getVideoInfo",{video_id:id})).data.video,vod={vod_id:id.vod_id,vod_name:id.vod_name,vod_pic:id.vod_pic,type_name:id.vod_class,vod_year:id.vod_year,vod_area:id.vod_area,vod_remarks:id.vod_remarks||"",vod_actor:id.vod_actor,vod_director:id.vod_director,vod_content:id.vod_content.trim()},playlist={};for(const item of id.vod_play){var from=item.playerForm;if("jp"!==from&&"xg"!==from){let urls=[];for(const u of item.url)urls.push(formatPlayUrl(vod.vod_name,u.title)+"$"+u.play_url);!playlist.hasOwnProperty(from)&&0<urls.length&&(playlist[from]=urls)}}parse=id.parse||[],vod.vod_play_from=_.keys(playlist).join("$$$");var vod_play_url=[];for(const urlist of _.values(playlist))vod_play_url.push(urlist.join("#"));return vod.vod_play_url=vod_play_url.join("$$$"),JSON.stringify({list:[vod]})}var parse=[];async function play(flag,id,flags){try{if((0<=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<parse.length)for(let index=0;index<parse.length;index++)try{var p=parse[index];let res=await req(p+id,{headers:{"user-agent":"okhttp/4.1.0"}});if((result=jsonParse(id,JSON.parse(res.content))).url)return result.parse=0,JSON.stringify(result)}catch(error){}if(0<=id.indexOf("jqq-")){var jqqHeader=await request(url+"/jqqheader.json",null,null,!0),jqqHeaders=JSON.parse(jqqHeader),ids=id.split("-"),jxJqq=await req("https://api.juquanquanapp.com/app/drama/detail?dramaId="+ids[1]+"&episodeSid="+ids[2]+"&quality=LD",{headers:jqqHeaders}),jqqInfo=JSON.parse(jxJqq.content);if(jqqInfo.data.playInfo.url)return JSON.stringify({parse:0,playUrl:"",url:jqqInfo.data.playInfo.url})}var result,res=await request(url+"/video.php",{url:id});return(result=jsonParse(id,JSON.parse(res).data)).url?(result.parse=0,JSON.stringify(result)):JSON.stringify({parse:0,playUrl:"",url:id})}catch(e){return console.log(e),JSON.stringify({parse:0,url:id})}}async function search(wd,quick){var videos=[];for(const vod of JSON.parse(await request(url+"/api.php/Search/getSearch",{key:wd,type_id:0,p:1})).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})}const charStr="abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789";function randStr(len,withNum){for(var _str="",containsNum=void 0===withNum||withNum,i=0;i<len;i++){var 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,!1).toUpperCase()+_.random(11,99)+randStr(1,!1).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=url.startsWith("//")?"https:"+url:url).startsWith("http"))return{};let headers=json.headers||{};var ua=(json["user-agent"]||"").trim(),referer=(0<ua.length&&(headers["User-Agent"]=ua),(json.referer||"").trim());return 0<referer.length&&(headers.Referer=referer),_.keys(headers).forEach(hk=>{headers[hk]||delete headers[hk]}),{header:headers,url:url}}catch(error){console.log(error)}return{}}function __jsEvalReturn(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search}}export{__jsEvalReturn};
|
||||||
+159
@@ -0,0 +1,159 @@
|
|||||||
|
import { Crypto, load, _, jinja2 } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'klm';
|
||||||
|
let HOST = 'https://www.ksksl.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,
|
||||||
|
'Referer': HOST
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":"dy","type_name":"电影"},{"type_id":"tv","type_name":"追剧"},{"type_id":"zy","type_name":"综艺"},{"type_id":"dm","type_name":"动漫"},{"type_id":"jl","type_name":"纪录片"}];
|
||||||
|
let filterObj = {
|
||||||
|
"dy":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"/area/中国大陆"},{"n":"中国香港","v":"/area/中国香港"},{"n":"中国台湾","v":"/area/中国台湾"},{"n":"美国","v":"/area/美国"},{"n":"日本","v":"/area/日本"},{"n":"韩国","v":"/area/韩国"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"}]},{"key":"class","name":"分类","value":[{"n":"全部","v":""},{"n":"喜剧","v":"/class/喜剧"},{"n":"爱情","v":"/class/爱情"},{"n":"恐怖","v":"/class/恐怖"},{"n":"动作","v":"/class/动作"},{"n":"科幻","v":"/class/科幻"},{"n":"剧情","v":"/class/剧情"},{"n":"警匪","v":"/class/警匪"},{"n":"犯罪","v":"/class/犯罪"},{"n":"动画","v":"/class/动画"},{"n":"奇幻","v":"/class/奇幻"},{"n":"武侠","v":"/class/武侠"},{"n":"冒险","v":"/class/冒险"},{"n":"枪战","v":"/class/枪战"},{"n":"恐怖","v":"/class/恐怖"},{"n":"悬疑","v":"/class/悬疑"},{"n":"惊悚","v":"/class/惊悚"},{"n":"经典","v":"/class/经典"},{"n":"青春","v":"/class/青春"},{"n":"文艺","v":"/class/文艺"},{"n":"古装","v":"/class/古装"},{"n":"历史","v":"/class/历史"},{"n":"运动","v":"/class/运动"},{"n":"农村","v":"/class/农村"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"tv":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"/area/中国大陆"},{"n":"中国香港","v":"/area/中国香港"},{"n":"中国台湾","v":"/area/中国台湾"},{"n":"美国","v":"/area/美国"},{"n":"日本","v":"/area/日本"},{"n":"韩国","v":"/area/韩国"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"}]},{"key":"class","name":"分类","value":[{"n":"全部","v":""},{"n":"古装","v":"/class/古装"},{"n":"言情","v":"/class/言情"},{"n":"武侠","v":"/class/武侠"},{"n":"偶像","v":"/class/美国"},{"n":"家庭","v":"/class/家庭"},{"n":"喜剧","v":"/class/喜剧"},{"n":"战争","v":"/class/战争"},{"n":"军旅","v":"/class/军旅"},{"n":"谍战","v":"/class/谍战"},{"n":"悬疑","v":"/class/悬疑"},{"n":"罪案","v":"/class/罪案"},{"n":"穿越","v":"/class/穿越"},{"n":"宫廷","v":"/class/宫廷"},{"n":"历史","v":"/class/历史"},{"n":"神话","v":"/class/神话"},{"n":"科幻","v":"/class/科幻"},{"n":"年代","v":"/class/年代"},{"n":"农村","v":"/class/农村"},{"n":"商战","v":"/class/商战"},{"n":"剧情","v":"/class/剧情"},{"n":"奇幻","v":"/class/奇幻"},{"n":"网剧","v":"/class/网剧"},{"n":"都市","v":"/class/都市"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"zy":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"/area/中国大陆"},{"n":"中国香港","v":"/area/中国香港"},{"n":"中国台湾","v":"/area/中国台湾"},{"n":"美国","v":"/area/美国"},{"n":"日本","v":"/area/日本"},{"n":"韩国","v":"/area/韩国"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"}]},{"key":"class","name":"分类","value":[{"n":"全部","v":""},{"n":"表演","v":"/class/表演"},{"n":"播报","v":"/class/播报"},{"n":"访谈","v":"/class/访谈"},{"n":"体验","v":"/class/体验"},{"n":"养成","v":"/class/养成"},{"n":"游戏","v":"/class/游戏"},{"n":"亲子","v":"/class/亲子"},{"n":"美食","v":"/class/美食"},{"n":"情感","v":"/class/情感"},{"n":"选秀","v":"/class/选秀"},{"n":"益智","v":"/class/益智"},{"n":"晚会","v":"/class/晚会"},{"n":"音乐","v":"/class/音乐"},{"n":"文化","v":"/class/文化"},{"n":"喜剧","v":"/class/喜剧"},{"n":"曲艺","v":"/class/曲艺"},{"n":"职场","v":"/class/职场"},{"n":"脱口秀","v":"/class/脱口秀"},{"n":"文艺","v":"/class/文艺"},{"n":"竞技","v":"/class/竞技"},{"n":"潮流文化","v":"/class/潮流文化"},{"n":"体育","v":"/class/体育"},{"n":"资讯","v":"/class/资讯"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"dm":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"/area/中国大陆"},{"n":"中国香港","v":"/area/中国香港"},{"n":"中国台湾","v":"/area/中国台湾"},{"n":"美国","v":"/area/美国"},{"n":"日本","v":"/area/日本"},{"n":"韩国","v":"/area/韩国"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"}]},{"key":"class","name":"分类","value":[{"n":"全部","v":""},{"n":"热门","v":"/class/热门"},{"n":"搞笑","v":"/class/搞笑"},{"n":"番剧","v":"/class/番剧"},{"n":"国创","v":"/class/国创"},{"n":"大电影","v":"/class/大电影"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"励志","v":"/class/励志"},{"n":"机战","v":"/class/机战"},{"n":"格斗","v":"/class/格斗"},{"n":"恋爱","v":"/class/恋爱"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"魔幻","v":"/class/魔幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"日常","v":"/class/日常"},{"n":"经典","v":"/class/经典"},{"n":"历史","v":"/class/历史"},{"n":"美食","v":"/class/美食"},{"n":"武侠","v":"/class/武侠"},{"n":"玄幻","v":"/class/玄幻"},{"n":"竞技","v":"/class/竞技"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}],
|
||||||
|
"jl":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"/area/中国大陆"},{"n":"日本","v":"/area/日本"},{"n":"美国","v":"/area/美国"},{"n":"国外","v":"/area/国外"},{"n":"其他","v":"/area/其他"}]},{"key":"class","name":"分类","value":[{"n":"全部","v":""},{"n":"社会","v":"/class/社会"},{"n":"动物","v":"/class/动物"},{"n":"文化","v":"/class/文化"},{"n":"自然","v":"/class/自然"},{"n":"人文","v":"/class/人文"},{"n":"军事","v":"/class/军事"},{"n":"历史","v":"/class/历史"},{"n":"记录","v":"/class/记录"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
const link = HOST + '/show/' + tid + (extend.area || '') + (extend.by || '/by/time') + (extend.class || '') + '/page/' + pg + (extend.year || '') + '.html';//https://www.ksksl.com/show/dy/area/%E7%BE%8E%E5%9B%BD/class/%E5%8A%A8%E4%BD%9C/page/2.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('ul.dx-list > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.vod_remarks')[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 = $('div.page_info> ul > a').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) {
|
||||||
|
var html = await request( HOST + '/voddetail/' + id + '.html');
|
||||||
|
var $ = load(html);
|
||||||
|
var vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('h1:first').text().trim(),
|
||||||
|
vod_type: $('.video-info-actor:eq(1)').text(),
|
||||||
|
vod_actor: $('.info-main a').text(),
|
||||||
|
vod_pic: $('.video-cover img:first').attr('src'),
|
||||||
|
vod_remarks : $('.stui-content__detail p:nth-child(5)').text() || '',
|
||||||
|
vod_content: $('.vod_content').text().trim(),
|
||||||
|
};
|
||||||
|
var playMap = {};
|
||||||
|
var tabs = $('div.player_info h2');
|
||||||
|
var playlists = $('div.play_li');
|
||||||
|
_.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.replace(/.*?\/vodplay\/(.*).html/g, '$1');
|
||||||
|
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) {
|
||||||
|
const link = HOST + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=',''));
|
||||||
|
const playUrl = js.url;
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let data = await request(HOST + '/ch/page/' + pg + '/wd/' + wd + '.html');//https://www.ksksl.com/ch/page/2/wd/%E6%88%91.html
|
||||||
|
const $ = load(data);
|
||||||
|
const items = $('ul.dx-list > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.vod_remarks')[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 = $('div.page_info > ul > a').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,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CsBB5rdW55dTc3X29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgxDcnlwdG8KZGF5anMMamluamEyBlVyaQJfDl8weDQ0YzgOXzB4MjBmYxJfMHgzMjBkYmYSXzB4M2IzNDVjEl8weDQzMDlmYhJfMHgxOThiMTMSXzB4M2IwZDFjEl8weDFmZmQ0MhJfMHg0MTFjYmESXzB4M2E2ZTMyEl8weDExOGNmZhJfMHg0ZjM1NWQSXzB4NDc5NTMxEl8weDM1YTlmZBJfMHgyMWJhYjkSXzB4NDA4NzkzEl8weDU3YTAxNxJfMHg1NzhkYTUSXzB4NWVmOGM3El8weDdkZThjORJfMHg0ZWFmMTUSXzB4NGRmMjhmEl8weDFhNDViYRJfMHg1OWNhYWEMd2luZG93MGpzdm1fdGhpc19pbml0aWFsaXphdGlvbhpqc3ZtX3RoaXNfcnVuGl9wYV9qNzRsY2lyODYaX3BhX2syN2RnOHphbRpfcGFfenMzZjdsazdzGl9wYV9mcWxzMDlwb3ckanN2bV90aGlzX3RtcFZhbHVlHmpzdm1fdGhpc19pbnNucx5qc3ZtX3RoaXNfc2RhdGEmanN2bV90aGlzX2VudHJhbmNlcx5qc3ZtX3RoaXNfcHJpdnMCZRhfcGFfbjRsdG83eGkGc3RyGl9wYV92NmRzeHI5aXcIc2lnbgpzaWduMQpzaWduMgptYXRjaAxvZmZzZXQcX3BhX2ZxbHM1M3N5enMoZW5jb2RlU3RyTm90V2l0aFNpZ24SZGVjb2RlU3RyFnNpZ25NYXRjaGVkDGZhY3RvchhjaGFyQ29kZUxpc3QYc3RyVG9rZW5MaXN0AmkebmV3Q2hhckNvZGVMaXN0CGNvZGUCcgJ6AmwQc2lnblBvczEQc2lnblBvczIYYWN0VmFsdWVQb3MxGGFjdFZhbHVlUG9zMhxqc3ZtcG9ydGFsXzBfMQJuAmEcanN2bXBvcnRhbF8yXzECbwJwHGpzdm1wb3J0YWxfNF8xDmFsaWpzdm0Mc29ydEJ5JGdldFF1ZXJ5UGFyYW1WYWx1ZRh7InZpZGVvSWQiOiIUc3RhcnRzV2l0aAxyYW5kb20KbWVyZ2UIdHJpbRRVc2VyLUFnZW50BnN5cxp2b2RfcGxheV9mcm9tLi9hcGkucGhwL3Byb3ZpZGUvY29uZmlnEnN0cmluZ2lmeRJUSy1WVG9rZW4QcGxheUF1dGhCL2FwaS5waHAvcHJvdmlkZS92aWRlb0RldGFpbD9pZHM9CHNjYXQUcGxheUhlYWRlcg5yZXBsYWNlFnRvTG93ZXJDYXNlFHVzZXItYWdlbnQOaXNFbXB0eQZlbmMKYnJhbmQGJCQkQERhbHZpay8yLjEuMCAoTGludXg7IFU7IEFuZHJvaWQgvgwtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNSUlDSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQWc4QU1JSUNDZ0tDQWdFQWcvOEh0RUIzZ0wram5nVmlIY0lRCis1VWkvQXh3N1A0KzRPQlhKbFRvbzVrZ0E4UU8yS0kyYmhxQURlV2JqNWZTcEFCYzdBV1BZZGNFRytWU245dk8KWkwrWE53MlIwa1M4Q3hpbitleWtHNmg2Ty9MaVFqc3pSeW5CMHJJeUpJTkUvVG5QQllVTHk1VG1Cc2lneHRsNwpHWU9mVjBOQVRUYnlTRzd6WE16d3BRUTlkcG5nWmcrNmxMTGpLMm0rdjA2THJST054V1hpdy9TZUZGUENDd25WCkN0d09BdEYzQTZJYW9NeTVjN00zQThUUXpKQ0FKRHVuVk4vbldPWC9sT1dJM20vZWpkZjlnNkRnc1BJSm10NmoKQytrOXo1U005TEQzTUNBczNFSHk5WWl1dXR3SGVmNndTZnFLVjhVQlpGYlZ3RlJ4ejhSRXZJdU9yd3FTdjYrTgp3VE1OK1FqbmdXWWNlbmsxSFd1K2IwbDFVVURGWmRJb0ZvMzN1WEtobjhhcnVjaXkzR1FGa2ZMalhQN1JodlA5Cnc2Smw3SmVWUDNONEtPRzd6RFJaVUMzakl4TlBmV0UzZ3JQWXF3UDJtb3l4V25hU1pOVHlkMzNNWnM0d3hiODcKZ21rV3hFMldqWklvQ2VLbHdnU2I2NzR4UWZ0RUQ0dk5SM1VScnU5SE5DMVg1YnMvdFFIcmsvdFVvNXI1N0czQwpjS0w0T3VNT0xZK0Znc3MwN2dTd2YrK3cwbCtUNmQ0SWxEbGp0a2czT3Raa2tTT0JqRVFNQ25nUE5EaHNwOFVRCkxIV1BvTVI4NEtpREwzQXJYa01KYTZNOUJPTGxZM2g3WUNyTllFbUwzd0ViMEtJMjJHNkpCZldtMCt2OUMyQnMKckdzU3cySjZISHZreVc2SGpKNmNUbWtDQXdFQUFRPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tFnRvVXBwZXJDYXNlEkhNQUMtU0hBMRpTZWN1cml0eVRva2VuDGh0dHBzOi4vYXBpLnBocC9wcm92aWRlL2ZpbHRlcg52aWRlb0lkDnBsYXl1cmweIiwidGltZXN0YW1wIjoiEFhTcGVVRmpKGFBsYXlJbmZvTGlzdAxCYXNlNjQGY2F0DmJ1aWxkSWQSdmlkZW9OYW1lCHVuaXhARGFsdmlrLzIuMS4wKHNldmVuVmlkZW8gYW5kcm9pZCk0L2FwaS5waHAvcHJvdmlkZS9nZXREb21haW4UcmVwbGFjZUFsbBpva2h0dHAvMy4xMi4wFHF1ZXJ5UGFpcnMGbXNnDnJlbGVhc2UIcGF0aBBwbGF5dXJsc3phYmFjZGVmZ2hqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5DiBCdWlsZC8aYWRkUXVlcnlQYXJhbQxIdWF3ZWkQSG1hY1NIQTEGbG9nCmFsaXZjDGRldmljZRYmU2lnbmF0dXJlPRBwbGF5ZnJvbQhrZXlzDmFuZHJvaWRUL2FwaS5waHAvcHJvdmlkZS9nZXRWaWRlb1BsYXlBdXRoP3ZpZGVvSWQ9CnN0eXBlUC9hcGkucGhwL3Byb3ZpZGUvc2VhcmNoVmlkZW8/c2VhcmNoTmFtZT0QcGFnZXNpemUIZGF0YQ5rdW55dTc3BnVybAYxLjAUdmlkZW9Db3ZlchBQbGF5SW5mbwhhcmVhCHllYXIMYmxvY2tzEnBhcnNlclVybBYmcmV0cnlOdW09MA5pbmRleE9mSC9hcGkucGhwL3Byb3ZpZGUvaG9tZUJsb2NrP3R5cGVfaWQ9MBRjb25kaXRpb25zElJTQS9QS0NTMRBkaXJlY3RvcghwdXNoFGJsb2NrX25hbWUUMjAxNy0wMy0yMQ5mb3JFYWNoCnRpdGxlDmhlYWRlcnMMaGVhZGVyEEdFVCYlMkYmFkFjY2Vzc0tleUlkHkFjY2Vzc0tleVNlY3JldBBlcGlzb2Rlcw5SZWZlcmVyCjIuMi42Bk1ENQxzeXN2ZXIwL2FwaS5waHAvcHJvdmlkZS9jaGFubmVsDnZlcnNpb25MaHR0cHM6Ly92b2QuY24tc2hhbmdoYWkuYWxpeXVuY3MuY29tLz8McmVzdWx0eC9hcGkucGhwL3Byb3ZpZGUvc2VhcmNoRmlsdGVyP3R5cGVfaWQ9MCZwYWdlbnVtPTEmcGFnZXNpemU9MQ5jb250ZW50CHBhZ2UcaGFzT3duUHJvcGVydHkKcGFyc2UKZGV2aWQWc3ViQ2F0ZWdvcnkKdG90YWwKbW9kZWwIMHg0NSpodHRwczovL2FwaS50eXVuNzcuY24IMHg2MQgweDE4CDB4MzTuQkx4b3h4eHV1OW5yeHV4VmRiYXhyZXRBYWwnCXNhb3h4IGN4Z0tleGluZWM5N3hyZWZ2YWR4eFZub3V0eCcnbnhlblZuCXgzCSdzeHh2eCAneCcJJ3gnRXRyM3gndnhqcFd4VHgJaW94b3gnaGE5UW85ZSdUeGQ5eDN0ZCcJJ2N4CWc5bidYeExuWGVmaXhleAl1b1llT3huZlQJOUFrdWV4bnZkeHV4QXh4CTNlZHgnOScJJ3hzdHR4VFZ4aW45CSdqczNteDl4CScJCW54c3hUZFR4Q2R4eGZfeHUJQlc3eHgnTidWaUVoTFRMeAl1eG54eGJCZ3hkM3g2eHhvQW40bFZ4N3hpTAl4eHhhbSA5eGJFSFF4ZGFmaW5lZAlzeGRlZmlueHh4eG5kV2ZWb3h4CXhuZGVmbm5lZml4bzRlZnhuckh4QTkJZWJ4bjN4CW4neHhhdHI5NGJmV0wzMwknWFZ4eCdqV2F4eHN4WSdqc3ZtVjlhYycgJ0xzdjl3VnhzYXh4YV8nCXhuZG5meFQzeAl4eHhlZmFubmQzeHh4L2ZqeGVYMnVfeGVhYTNlMHhMdnQJdV9wCUx2Nk94eEk5aXgnTHBzc3htSXhlVGlFJ2NiY3N2bSBlSUl4CTJueGV4TG5hbnh1eGRlVmk0ZWV4J3hWIDJ0Yyd1eHY3dW5kZWZpcXBMCW5WbGxHX2lJZTNmYXhOZQkndmFyIG1ieDNoaXMneFRXc3ZtZnhMY05WaHh4V214aHJ0YTMrOV8nMyd4J0knb3hhX3ZxanNsVjl5eHgneFRqczlsdHh4eGl4ZXUnanV4eGR4c0kneHV4TGs0aW5lZHNheGRkZidyaVR4dVNkeGZ4cHhkCVR4dnhsaXhleDR1eGRlZmk5ZXh4blZUbAl0cm1WCSd2bExkOSd4YWR4eHh4ZXhpc3hkeGpzdiBmdTN4JwlUQUV4M3hveHRhdl8zeDN4eG5uZSdpbnhlCTF4eE11eHh4CWRuMGlsCUxybjN4ZSdsTAlyJ3Z4TGV3bCd1OWlzJwltanh2eGZIbmMnZydrbHZJcG94dGFrYXh
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DbAR5rdW55dTc3X29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgxDcnlwdG8KZGF5anMMamluamEyBlVyaQJfBmtleQZ1cmwMZGV2aWNlFHRpbWVPZmZzZXQOc2l0ZUtleRBzaXRlVHlwZQ5yZXF1ZXN0CGluaXQIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFpbAhwbGF5DHNlYXJjaA5jaGFyU3RyDnJhbmRTdHIUcmFuZERldmljZRpmb3JtYXRQbGF5VXJsEmpzb25QYXJzZQ5rdW55dTc3KGh0dHA6Ly9hcGkudHl1bjc3LmNuemFiYWNkZWZnaGprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkMcmVxVXJsDmFnZW50U3AEc2oGdXJpCGtleXMCaQp0a1NyYwJrAnYEdGsMaGVhZGVyBnJlcxRzZXJ2ZXJUaW1lDmNvbnRlbnQWc2VydmVyVGltZVMIdW5peBphZGRRdWVyeVBhcmFtCnBjb2RlEjAxMDExMDAwNQ52ZXJzaW9uCjIuMS42CmRldmlkBGlkNGNvbS5zZXZlblZpZGVvLmFwcC5hbmRyb2lkBnN5cw5hbmRyb2lkDHN5c3Zlcg5yZWxlYXNlCmJyYW5kCm1vZGVsFHJlcGxhY2VBbGwCIBRxdWVyeVBhaXJzCHB1c2gMc29ydEJ5CHBhdGgkZ2V0UXVlcnlQYXJhbVZhbHVlJGVuY29kZVVSSUNvbXBvbmVudBBYU3BlVUZqSg5jb25zb2xlBmxvZwZNRDUWdG9Mb3dlckNhc2Uab2todHRwLzMuMTIuMBR1c2VyLWFnZW50AnQEVEsGcmVxDmhlYWRlcnMIZGF0ZQZjZmcSZGV2aWNlS2V5FGRldmljZUluZm8KZXJyb3IIc2tleQpzdHlwZQpsb2NhbApwYXJzZQ5pc0VtcHR5QERhbHZpay8yLjEuMCAoTGludXg7IFU7IEFuZHJvaWQgBDsgDiBCdWlsZC8OYnVpbGRJZAIpBHVhEnN0cmluZ2lmeTQvYXBpLnBocC9wcm92aWRlL2dldERvbWFpbi4vYXBpLnBocC9wcm92aWRlL2NvbmZpZzovYXBpLnBocC9wcm92aWRlL2NoZWNrVXBncmFkZTAvYXBpLnBocC9wcm92aWRlL2NoYW5uZWwMZmlsdGVyCGRhdGEOY2xhc3NlcxJmaWx0ZXJPYmoSZmlsdGVyQWxsDHR5cGVJZBRmaWx0ZXJEYXRhCHllYXIUeWVhclZhbHVlcwhhcmVhFGFyZWFWYWx1ZXMIdHlwZRR0eXBlVmFsdWVzAmUuL2FwaS5waHAvcHJvdmlkZS9maWx0ZXIOdHlwZV9pZAZjYXQSdHlwZV9uYW1leC9hcGkucGhwL3Byb3ZpZGUvc2VhcmNoRmlsdGVyP3R5cGVfaWQ9MCZwYWdlbnVtPTEmcGFnZXNpemU9MRRjb25kaXRpb25zBXRe/U4FaFHokAJuAnkOZm9yRWFjaAUwVzpTAmEFe3yLVwhzY2F0DmZpbHRlcnMMYmxvY2tzDHZpZGVvcwpibG9jaxBjb250ZW50c0gvYXBpLnBocC9wcm92aWRlL2hvbWVCbG9jaz90eXBlX2lkPTAUYmxvY2tfbmFtZQ5pbmRleE9mBe1wrWQMdm9kX2lkCnRpdGxlEHZvZF9uYW1lFHZpZGVvQ292ZXIOdm9kX3BpYwZtc2cWdm9kX3JlbWFya3MIbGlzdAZ0aWQEcGcMZXh0ZW5kBnZvZEwvYXBpLnBocC9wcm92aWRlL3NlYXJjaEZpbHRlcj90eXBlX2lkPRImcGFnZW51bT0aJnBhZ2VzaXplPTI0Jnp5ZWFyPXt7ZXh0LnllYXJ9fSZjYXRlZ29yeT17e2V4dC5jYXRlZ29yeX19JmFyZWE9e3tleHQuYXJlYX19BmV4dAxyZXN1bHQQcGFyc2VJbnQIcGFnZRBwYWdlc2l6ZRJwYWdlY291bnQKbGltaXQKdG90YWwQZXBpc29kZXMQcGxheWxpc3QOZXBpc29kZRBwbGF5dXJscw5wbGF5dXJsCHVybHMYdm9kX3BsYXlfdXJsDHVybGlzdEIvYXBpLnBocC9wcm92aWRlL3ZpZGVvRGV0YWlsP2lkcz0SdmlkZW9OYW1lFnN1YkNhdGVnb3J5EHZvZF90eXBlEHZvZF95ZWFyEHZvZF9hcmVhCmFjdG9yEnZvZF9hY3RvchBkaXJlY3Rvchh2b2RfZGlyZWN0b3IKYnJpZWYIdHJpbRZ2b2RfY29udGVudEYvYXBpLnBocC9wcm92aWRlL3ZpZGVvUGxheWxp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
Line truncated
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
// 修正:分类改静态 (网站频繁变动分类)
|
||||||
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1BgGGt1d29fb3Blbi5qcyxhc3NldHM6Ly9qcy9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuAl8Ga2V5CEhPU1QOc2l0ZUtleRBzaXRlVHlwZRJNT0JJTEVfVUEOcmVxdWVzdAhpbml0CGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxkZXRhaWwIcGxheQxzZWFyY2gHd5Htd2dSJmh0dHA6Ly93YXBpLmt1d28uY26WAk1vemlsbGEvNS4wIChpUGhvbmU7IENQVSBpUGhvbmUgT1MgMTNfMl8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xMy4wLjMgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjEMcmVxVXJsDmFnZW50U3AGcmVzBnJlcQxtZXRob2QUVXNlci1BZ2VudA5oZWFkZXJzDmNvbnRlbnQGY2ZnCHNrZXkKc3R5cGUMZmlsdGVyDmNsYXNzZXMSZmlsdGVyT2JqDnR5cGVfaWQJHHNgT/NgC3cSdHlwZV9uYW1lCR9Xc1QxcsVgCfRmGlm+fGlfDziXU5A7YMGIhHa6Th91CViNf1pTX1OQCytvK2/9j7tZ740JtlutXsVgH2ESc3RyaW5naWZ5DmZpbHRlcnMEe30GdGlkBHBnDGV4dGVuZAhsaW5rBGpvDHZpZGVvc1ovb3BlbmFwaS92MS9zaG9ydHBsYXkvbW9kdWxlTW9yZT9jdXJyZW50UGFnZT0UJm1vZHVsZUlkPQwmcm49MTIKcGFyc2UIZGF0YQhsaXN0DmZvckVhY2gQcGFyc2VJbnQIcGFnZRBuZXh0UGFnZRJwYWdlY291bnQQcGFnZVNpemUKbGltaXQKdG90YWwEaXQIcHVzaAZ1cmwMdm9kX2lkCnRpdGxlEHZvZF9uYW1lBmltZw52b2RfcGljGGN1cnJyZW50RGVzYxZ2b2RfcmVtYXJrcwRpZAZ2b2QOcGxheVVybFAvb3BlbmFwaS92MS9zaG9ydHBsYXkvdmlkZW9MaXN0P2FsYnVtSWQ9EnNob3J0aW5mbwpjb3ZlcgIjCVOQf5UoV79+GnZvZF9wbGF5X2Zyb20Ydm9kX3BsYXlfdXJsAiQSbXZwYXlpbmZvBnZpZAhmbGFn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
|
||||||
+167
@@ -0,0 +1,167 @@
|
|||||||
|
import { Crypto, load, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'dyxs';
|
||||||
|
let HOST = 'https://www.l0l.tv';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
const UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13E230 Safari/601.1';
|
||||||
|
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': agentSp || 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) {
|
||||||
|
let classes = [{"type_id":1,"type_name":"电影"},{"type_id":2,"type_name":"追剧"},{"type_id":3,"type_name":"综艺"},{"type_id":4,"type_name":"动漫"}];
|
||||||
|
let 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":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"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":"其他"}]},{"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"}]},{"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":"欧美"}]},{"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"}]},{"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":"其他"}]},{"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"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
const link = HOST + '/vodshow/' + tid + '-' + (extend.area || '') + '-' + (extend.by || 'time') + '-' + (extend.class || '') + '-----' + pg + '---' + (extend.year || '') + '/';//https://www.l0l.tv/vodshow/1-%E7%BE%8E%E5%9B%BD-hits-%E5%8A%A8%E4%BD%9C-%E8%8B%B1%E8%AF%AD-------2022.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('div.module-items div.module-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a')[0];
|
||||||
|
const k = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('div.module-item-text')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href,
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: k.attribs['data-src'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('div#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 html = await request( HOST + id);
|
||||||
|
const $ = load(html);
|
||||||
|
const vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('h1:first').text().trim(),
|
||||||
|
vod_type: $('.video-info-aux a').text(),
|
||||||
|
vod_actor: $('.video-info-main a').text(),
|
||||||
|
vod_pic: $('.module-item-pic img:first').attr('data-src'),
|
||||||
|
vod_remarks : $('.stui-content__detail p:nth-child(5)').text() || '',
|
||||||
|
vod_content: $('.video-info-content span').text().trim(),
|
||||||
|
};
|
||||||
|
let playMap = {};
|
||||||
|
const tabs = $('div.module-tab-content > div.module-tab-item > span');
|
||||||
|
const playlists = $('div.sort-item');
|
||||||
|
_.each(tabs, (tab, i) => {
|
||||||
|
const from = tab.children[0].data;
|
||||||
|
let list = playlists[i];
|
||||||
|
list = $(list).find('a');
|
||||||
|
_.each(list, (it) => {
|
||||||
|
const title = $(it).text();
|
||||||
|
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 link = HOST + id;
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=',''));
|
||||||
|
const playUrl = unescape(js.url);
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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 search(wd, quick, pg) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let data = await request(HOST + '/vodsearch/' + wd + '----------' + pg + '---' + '.html');//https://www.l0l.tv/vodsearch/%E6%88%91----------2---.html
|
||||||
|
const $ = load(data);
|
||||||
|
const items = $('div.module-items div.module-search-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a')[0];
|
||||||
|
const k = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('div.video-serial')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href,
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: k.attribs['data-src'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('div#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,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CiARhsYmdzX29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgxDcnlwdG8KZGF5anMCXwZrZXkMZGV2aWNlDnNpdGVLZXkQc2l0ZVR5cGUUYXBwVmVyc2lvbgphcHBVQQ5hcHBEYXRhGG5hdGl2ZUVuY29kZQRwawp4bmFtZRhiYXNlNjRFbmNvZGUYYmFzZTY0RGVjb2RlGmZvcm1hdFBsYXlVcmwOY2hhclN0cg5yYW5kU3RyFHJhbmREZXZpY2UOcmVxdWVzdAhpbml0CGhvbWUOaG9tZVZvZAxpbWdVcmwQY2F0ZWdvcnkMZGV0YWlsCHBsYXkMc2VhcmNoDGxhb2JhaQoxLjEuN7AJSEJrWkZCdDZkMzU5ZHhGa1lYdDZjWEVaZjN4b0dSa1VHeFU0ZEgxd2MzMWVlSGg2VlZKRlVWcGRjd0JCQ0hCNFpYeDNkWFYyZFhsakFYVjBlSDEyZWxGemNYaGxmSEJBWjA1WlRGQk1BMngwVzFwc2RVSnhTbjVoWVQ1blNXOTNRRkpCZEY5RVRWSUVER0o3WlVwYVgxZE9iMkpCYkdCT1Uxd01ZQTlPZWt4a2NGUkdYQXAzWG1oakJWVkVjbUlBVDJoeEN3d0xTVjE2WVIwWE9CSjllRXRqZkc1eERuOFNVRzVjZmxwOVQwRlFYR0Z2WlZ3RGNRRmhaSFFIQ0ZSblpnQmlmbVlOWW5oaVJnTjNVRXhWZWtJT1dWSm5DMXR1ZkhVRVNraytaa3Q3YTJKcWJGZ0haMVpUWFhGWGJnQitaVVJ0U1dGelYxRi9YMUJGUmw1eVQyUmZjbnBFQWdOV1VYUUxjM2h3VlhCTVQyRk1XbkJSRFFOQllYUllRamdOZlhBQUcwUmRSR2hHYm1aTUFYZHdVMWRBUkVwNFF3TUNZVjE3ZjJGMUIxNTNjVmhXVjNKYVNRQnlSSDFrY2dKcVhuQk1FZ2hBQmdGK0NBSVNCM0JCUGxGdlgwcGZVRlZBZFcxK2FGTUpVVk5kZlhwYmNXdGxVMzVNVm5OamNBWkFYQTFxQ2tCTGRsbFRZVk5BQVdoZldtTkFUQXhqZG1wZ1gzVjBRWEYwZUg4NFVFTndkWFZsZUhReUh4UVpGQnh4ZW4wV2FHZDdlSEJ5Rkg5OGJ4VWZGQmtVemFiYWNkZWZnaGprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkCZQJhAnQCchhmcm9tQ2hhckNvZGUUY2hhckNvZGVBdAZlbmMMQmFzZTY0EnN0cmluZ2lmeQhVdGY4CnBhcnNlCHRyaW0UcmVwbGFjZUFsbA5yZXBsYWNlAiACbgxyYW5kb20MSHVhd2VpCmJyYW5kHEhVQVdFSSBNYXRlIDIwCm1vZGVsDnJlbGVhc2UWdG9VcHBlckNhc2UOYnVpbGRJZAZyZXEMbWV0aG9kFFVzZXItQWdlbnQYaHR0cF9yZWZlcmVyDlJlZmVyZXIOaGVhZGVycwhkYXRhCHBvc3QIZm9ybRBwb3N0VHlwZQ5jb250ZW50CHNrZXkKc3R5cGUKbG9jYWwOaXNFbXB0eRZ0b0xvd2VyQ2FzZQRpZEBEYWx2aWsvMi4xLjAgKExpbnV4OyBVOyBBbmRyb2lkIAQ7IA4gQnVpbGQvAikEdWE6KE1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCDEATsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS82OC4wLjM0NDAuNzAgTW9iaWxlIFNhZmFyaS81MzcuMzYpVGh0dHBzOi8vbGFncy5vc3MtY24taGFuZ3pob3UuYWxpeXVuY3MuY29tLwouanNvbhgkNmMxY2VmNzhhZT0IcnNhWBJSU0EvUEtDUzECLwJvAmkCcxBqc29uX3VybBxjYXQvaW5kZXguanNvbgp0aXRsZQUGUnt8CHR5cGUFe3yLVwxyZWR1Y2UKdHlwZXMCdghzb3J0BZJjj14GaG90CHB1c2gF2J6kiwXtcOiVBd6PfY8Mc2VyaWFsBYxb034OdHlwZV9pZBJ0eXBlX25hbWUOZmlsdGVycxRzdGFydHNXaXRoCGh0dHAOaW1nX3VybAJwEmNhdF9saXN0Lwpib29rcw5ib29rX2lkEmJvb2tfbmFtZQZwaWMQYm9va19waWMYYm9va19yZW1hcmtzCHBhZ2UMc2Nyb2xsEnBhZ2Vjb3VudApsaW1pdAp0b3RhbAhsaXN0CmNvbnQvCmF1ZGlvCHRpbWUSYm9va195ZWFyEmJvb2tfYXJlYQx0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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CiARhsYmdzX29wZW4uanMYLi9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwpkYXlqcwJfBmtleQxkZXZpY2UOc2l0ZUtleRBzaXRlVHlwZRRhcHBWZXJzaW9uCmFwcFVBDmFwcERhdGEYbmF0aXZlRW5jb2RlBHBrCnhuYW1lGGJhc2U2NEVuY29kZRhiYXNlNjREZWNvZGUaZm9ybWF0UGxheVVybA5jaGFyU3RyDnJhbmRTdHIUcmFuZERldmljZQ5yZXF1ZXN0CGluaXQIaG9tZQ5ob21lVm9kDGltZ1VybBBjYXRlZ29yeQxkZXRhaWwIcGxheQxzZWFyY2gMbGFvYmFpCjEuMS43sAlIQmtaRkJ0NmQzNTlkeEZrWVh0NmNYRVpmM3hvR1JrVUd4VTRkSDF3YzMxZWVIaDZWVkpGVVZwZGN3QkJDSEI0Wlh4M2RYVjJkWGxqQVhWMGVIMTJlbEZ6Y1hobGZIQkFaMDVaVEZCTUEyeDBXMXBzZFVKeFNuNWhZVDVuU1c5M1FGSkJkRjlFVFZJRURHSjdaVXBhWDFkT2IySkJiR0JPVTF3TVlBOU9la3hrY0ZSR1hBcDNYbWhqQlZWRWNtSUFUMmh4Q3d3TFNWMTZZUjBYT0JKOWVFdGpmRzV4RG44U1VHNWNmbHA5VDBGUVhHRnZaVndEY1FGaFpIUUhDRlJuWmdCaWZtWU5ZbmhpUmdOM1VFeFZla0lPV1ZKbkMxdHVmSFVFU2trK1prdDdhMkpxYkZnSFoxWlRYWEZYYmdCK1pVUnRTV0Z6VjFGL1gxQkZSbDV5VDJSZmNucEVBZ05XVVhRTGMzaHdWWEJNVDJGTVduQlJEUU5CWVhSWVFqZ05mWEFBRzBSZFJHaEdibVpNQVhkd1UxZEFSRXA0UXdNQ1lWMTdmMkYxQjE1M2NWaFdWM0phU1FCeVJIMWtjZ0pxWG5CTUVnaEFCZ0YrQ0FJU0IzQkJQbEZ2WDBwZlVGVkFkVzErYUZNSlVWTmRmWHBiY1d0bFUzNU1Wbk5qY0FaQVhBMXFDa0JMZGxsVFlWTkFBV2hmV21OQVRBeGpkbXBnWDNWMFFYRjBlSDg0VUVOd2RYVmxlSFF5SHhRWkZCeHhlbjBXYUdkN2VIQnlGSDk4YnhVZkZCa1V6YWJhY2RlZmdoamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSEpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OQJlAmECdAJyGGZyb21DaGFyQ29kZRRjaGFyQ29kZUF0BmVuYwxCYXNlNjQSc3RyaW5naWZ5CFV0ZjgKcGFyc2UIdHJpbRRyZXBsYWNlQWxsDnJlcGxhY2UCIAJuDHJhbmRvbQxIdWF3ZWkKYnJhbmQcSFVBV0VJIE1hdGUgMjAKbW9kZWwOcmVsZWFzZRZ0b1VwcGVyQ2FzZQ5idWlsZElkBnJlcQxtZXRob2QUVXNlci1BZ2VudBhodHRwX3JlZmVyZXIOUmVmZXJlcg5oZWFkZXJzCGRhdGEIcG9zdAhmb3JtEHBvc3RUeXBlDmNvbnRlbnQIc2tleQpzdHlwZQpsb2NhbA5pc0VtcHR5FnRvTG93ZXJDYXNlBGlkQERhbHZpay8yLjEuMCAoTGludXg7IFU7IEFuZHJvaWQgBDsgDiBCdWlsZC8CKQR1YTooTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIMQBOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzY4LjAuMzQ0MC43MCBNb2JpbGUgU2FmYXJpLzUzNy4zNilUaHR0cHM6Ly9sYWdzLm9zcy1jbi1oYW5nemhvdS5hbGl5dW5jcy5jb20vCi5qc29uGCQ2YzFjZWY3OGFlPQhyc2FYElJTQS9QS0NTMQIvAm8CaQJzEGpzb25fdXJsHGNhdC9pbmRleC5qc29uCnRpdGxlBQZSe3wIdHlwZQV7fItXDHJlZHVjZQp0eXBlcwJ2CHNvcnQFkmOPXgZob3QIcHVzaAXYnqSLBe1w6JUF3o99jwxzZXJpYWwFjFvTfg50eXBlX2lkEnR5cGVfbmFtZQ5maWx0ZXJzFHN0YXJ0c1dpdGgIaHR0cA5pbWdfdXJsAnASY2F0X2xpc3QvCmJvb2tzDmJvb2tfaWQSYm9va19uYW1lBnBpYxBib29rX3BpYxhib29rX3JlbWFya3MIcGFnZQxzY3JvbGwScGFnZWNvdW50CmxpbWl0CnRvdGFsCGxpc3QKY29udC8KYXVkaW8IdGltZRJib29rX3llYXISYm9va19hcmVhDHRlbGxlchRib29r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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1CiARhsYmdzX29wZW4uanMYLi9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwpkYXlqcwJfBmtleQxkZXZpY2UOc2l0ZUtleRBzaXRlVHlwZRRhcHBWZXJzaW9uCmFwcFVBDmFwcERhdGEYbmF0aXZlRW5jb2RlBHBrCnhuYW1lGGJhc2U2NEVuY29kZRhiYXNlNjREZWNvZGUaZm9ybWF0UGxheVVybA5jaGFyU3RyDnJhbmRTdHIUcmFuZERldmljZQ5yZXF1ZXN0CGluaXQIaG9tZQ5ob21lVm9kDGltZ1VybBBjYXRlZ29yeQxkZXRhaWwIcGxheQxzZWFyY2gMbGFvYmFpCjEuMS43sAlIQmtaRkJ0NmQzNTlkeEZrWVh0NmNYRVpmM3hvR1JrVUd4VTRkSDF3YzMxZWVIaDZWVkpGVVZwZGN3QkJDSEI0Wlh4M2RYVjJkWGxqQVhWMGVIMTJlbEZ6Y1hobGZIQkFaMDVaVEZCTUEyeDBXMXBzZFVKeFNuNWhZVDVuU1c5M1FGSkJkRjlFVFZJRURHSjdaVXBhWDFkT2IySkJiR0JPVTF3TVlBOU9la3hrY0ZSR1hBcDNYbWhqQlZWRWNtSUFUMmh4Q3d3TFNWMTZZUjBYT0JKOWVFdGpmRzV4RG44U1VHNWNmbHA5VDBGUVhHRnZaVndEY1FGaFpIUUhDRlJuWmdCaWZtWU5ZbmhpUmdOM1VFeFZla0lPV1ZKbkMxdHVmSFVFU2trK1prdDdhMkpxYkZnSFoxWlRYWEZYYmdCK1pVUnRTV0Z6VjFGL1gxQkZSbDV5VDJSZmNucEVBZ05XVVhRTGMzaHdWWEJNVDJGTVduQlJEUU5CWVhSWVFqZ05mWEFBRzBSZFJHaEdibVpNQVhkd1UxZEFSRXA0UXdNQ1lWMTdmMkYxQjE1M2NWaFdWM0phU1FCeVJIMWtjZ0pxWG5CTUVnaEFCZ0YrQ0FJU0IzQkJQbEZ2WDBwZlVGVkFkVzErYUZNSlVWTmRmWHBiY1d0bFUzNU1Wbk5qY0FaQVhBMXFDa0JMZGxsVFlWTkFBV2hmV21OQVRBeGpkbXBnWDNWMFFYRjBlSDg0VUVOd2RYVmxlSFF5SHhRWkZCeHhlbjBXYUdkN2VIQnlGSDk4YnhVZkZCa1V6YWJhY2RlZmdoamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSEpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OQJlAmECdAJyGGZyb21DaGFyQ29kZRRjaGFyQ29kZUF0BmVuYwxCYXNlNjQSc3RyaW5naWZ5CFV0ZjgKcGFyc2UIdHJpbRRyZXBsYWNlQWxsDnJlcGxhY2UCIAJuDHJhbmRvbQxIdWF3ZWkKYnJhbmQcSFVBV0VJIE1hdGUgMjAKbW9kZWwOcmVsZWFzZRZ0b1VwcGVyQ2FzZQ5idWlsZElkBnJlcQxtZXRob2QUVXNlci1BZ2VudBhodHRwX3JlZmVyZXIOUmVmZXJlcg5oZWFkZXJzCGRhdGEIcG9zdAhmb3JtEHBvc3RUeXBlDmNvbnRlbnQIc2tleQpzdHlwZQpsb2NhbA5pc0VtcHR5FnRvTG93ZXJDYXNlBGlkQERhbHZpay8yLjEuMCAoTGludXg7IFU7IEFuZHJvaWQgBDsgDiBCdWlsZC8CKQR1YTooTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIMQBOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzY4LjAuMzQ0MC43MCBNb2JpbGUgU2FmYXJpLzUzNy4zNilUaHR0cHM6Ly9sYWdzLm9zcy1jbi1oYW5nemhvdS5hbGl5dW5jcy5jb20vCi5qc29uGCQ2YzFjZWY3OGFlPQhyc2FYElJTQS9QS0NTMQIvAm8CaQJzEGpzb25fdXJsHGNhdC9pbmRleC5qc29uCnRpdGxlBQZSe3wIdHlwZQV7fItXDHJlZHVjZQp0eXBlcwJ2CHNvcnQFkmOPXgZob3QIcHVzaAXYnqSLBe1w6JUF3o99jwxzZXJpYWwFjFvTfg50eXBlX2lkEnR5cGVfbmFtZQ5maWx0ZXJzFHN0YXJ0c1dpdGgIaHR0cA5pbWdfdXJsAnASY2F0X2xpc3QvCmJvb2tzDmJvb2tfaWQSYm9va19uYW1lBnBpYxBib29rX3BpYxhib29rX3JlbWFya3MIcGFnZQxzY3JvbGwScGFnZWNvdW50CmxpbWl0CnRvdGFsCGxpc3QKY29udC8KYXVkaW8IdGltZRJib29rX3llYXISYm9va19hcmVhDHRlbGxlchRib29r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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
function _0x4aa5(_0x48caa3,_0x315644){const _0x2164f9=_0x574f();return _0x4aa5=function(_0x5e2b05,_0x179281){_0x5e2b05=_0x5e2b05-0x164;let _0x164327=_0x2164f9[_0x5e2b05];return _0x164327;},_0x4aa5(_0x48caa3,_0x315644);}(function(_0x5f4666,_0x55a733){const _0x4589e5=_0x4aa5,_0xd355a0=_0x5f4666();while(!![]){try{const _0x1e1fc1=-parseInt(_0x4589e5(0x174))/0x1+-parseInt(_0x4589e5(0x168))/0x2+-parseInt(_0x4589e5(0x167))/0x3+parseInt(_0x4589e5(0x17e))/0x4*(parseInt(_0x4589e5(0x17b))/0x5)+parseInt(_0x4589e5(0x164))/0x6+parseInt(_0x4589e5(0x16c))/0x7+parseInt(_0x4589e5(0x181))/0x8*(-parseInt(_0x4589e5(0x177))/0x9);if(_0x1e1fc1===_0x55a733)break;else _0xd355a0['push'](_0xd355a0['shift']());}catch(_0x265350){_0xd355a0['push'](_0xd355a0['shift']());}}}(_0x574f,0x20821));const _0x179281=(function(){let _0x4eda66=!![];return function(_0x55af6d,_0x22e5f4){const _0x4a4b00=_0x4eda66?function(){const _0x5ab790=_0x4aa5;if(_0x22e5f4){const _0x1659b9=_0x22e5f4[_0x5ab790(0x169)](_0x55af6d,arguments);return _0x22e5f4=null,_0x1659b9;}}:function(){};return _0x4eda66=![],_0x4a4b00;};}()),_0x5e2b05=_0x179281(this,function(){const _0x11faca=_0x4aa5;let _0x2fa19b;try{const _0x3ff2b9=Function('return\x20(fu'+'nction()\x20'+(_0x11faca(0x16a)+_0x11faca(0x176)+_0x11faca(0x17a)+'\x20)')+');');_0x2fa19b=_0x3ff2b9();}catch(_0x25b157){_0x2fa19b=window;}const _0x3c5f06=_0x2fa19b['console']=_0x2fa19b['console']||{},_0x39a2bd=[_0x11faca(0x16e),_0x11faca(0x17d),'info','error',_0x11faca(0x17f),_0x11faca(0x183),'trace'];for(let _0x3fb5be=0x0;_0x3fb5be<_0x39a2bd[_0x11faca(0x173)];_0x3fb5be++){const _0x47f835=_0x179281[_0x11faca(0x16f)+'r'][_0x11faca(0x165)][_0x11faca(0x175)](_0x179281),_0xdc762c=_0x39a2bd[_0x3fb5be],_0x525bd5=_0x3c5f06[_0xdc762c]||_0x47f835;_0x47f835['__proto__']=_0x179281['bind'](_0x179281),_0x47f835[_0x11faca(0x172)]=_0x525bd5[_0x11faca(0x172)]['bind'](_0x525bd5),_0x3c5f06[_0xdc762c]=_0x47f835;}});_0x5e2b05();import{_}from'assets://js/lib/cat.js';import{initSome,setToken,getVod,playerContent,playerContentByFlag}from'./ali_api.js';const aliPattern=/(www.aliyundrive.com|www.alipan.com)\/s\/([^\/]+)(\/folder\/([^\/]+))?/;async function initAli(_0x413000){await initSome(),setToken(_0x413000);}async function detailContent(_0x4bc326){const _0x1a33eb=_0x4aa5;let _0x54bbc1=_0x4bc326['match'](aliPattern),_0x7888de=await parseVod(_0x54bbc1,_0x4bc326);const _0x9e9dd1={};_0x9e9dd1[_0x1a33eb(0x178)]=[_0x7888de];let _0x197b45=JSON['stringify'](_0x9e9dd1);return _0x197b45;}async function parseVod(_0x10689f,_0x1108c0){if(_['isEmpty'](_0x10689f))return{};let _0x474eae=_0x10689f[0x2],_0x36fe63=_0x10689f['length']>0x4?_0x10689f[0x4]:'';return await getVod(_0x474eae,_0x1108c0,_0x36fe63);}async function playContent(_0x52c526,_0x421b73,_0x4f10f8){const _0x3b573d=_0x4aa5;let _0x4fe837=_0x421b73['split']('+');_0x52c526=_0x52c526['split']('#')[0x0];let _0x2e68e0=_0x52c526=='原画'?await playerContent(_0x4fe837):await playerContentByFlag(_0x4fe837,_0x52c526);return console[_0x3b573d(0x186)](_0x3b573d(0x16b)+_0x3b573d(0x17c)+_0x3b573d(0x185)),console[_0x3b573d(0x186)](_0x2e68e0),_0x2e68e0;}function _0x574f(){const _0x44da7e=['prototype','isEmpty','374088ntufPj','121556CEjSKd','apply','{}.constru','-----playC','1731275IhHZho','vod_play_u','log','constructo','match','普画#','toString','length','125186RUUvVq','bind','ctor(\x22retu','3744KZBwKz','list','原画#','rn\x20this\x22)(','577405PyhvtD','ontent----','warn','4TSKBsq','exception','push','2832JFmsUo','join','table','$$$','---','debug','1369626tULFbE'];_0x574f=function(){return _0x44da7e;};return _0x574f();}function detailContentVodPlayFrom(_0xbe55e7){const _0x3fa4bc=_0x4aa5;let _0x305855=[];if(_0xbe55e7[_0x3fa4bc(0x173)]<0x2)return['原画','普画'][_0x3fa4bc(0x182)](_0x3fa4bc(0x184));for(let _0x241caf=0x1;_0x241caf<=_0xbe55e7[_0x3fa4bc(0x173)];_0x241caf++){_0x305855['push'](_0x3fa4bc(0x179)+_0x241caf),_0x305855[_0x3fa4bc(0x180)](_0x3fa4bc(0x171)+_0x241caf);}return _0x305855[_0x3fa4bc(0x182)](_0x3fa4bc(0x184));}async function detailContentVodPlayUrl(_0x2b2389){const _0x3ba1ef=_0x4aa5;let _0x2f0a10=[];for(var _0x954556 of _0x2b2389){let _0x5a95a4=_0x954556[_0x3ba1ef(0x170)](aliPattern);if(!_[_0x3ba1ef(0x166)](_0x5a95a4)){let _0x139a04=await parseVod(_0x5a95a4,_0x954556);_0x2f0a10['push'](_0x139a04[_0x3ba1ef(0x16d)+'rl']);}}return _0x2f0a10[_0x3ba1ef(0x182)](_0x3ba1ef(0x184));}export{initAli,detailContent,playContent,detailContentVodPlayFrom,detailContentVodPlayUrl,aliPattern};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
const _0x38ddfc=_0x4763;(function(_0x437d8e,_0x230ed6){const _0x3887a5=_0x4763,_0x5530d0=_0x437d8e();while(!![]){try{const _0x881deb=parseInt(_0x3887a5(0x1e3))/0x1+parseInt(_0x3887a5(0x2ba))/0x2+parseInt(_0x3887a5(0x254))/0x3+-parseInt(_0x3887a5(0x279))/0x4+parseInt(_0x3887a5(0x273))/0x5+parseInt(_0x3887a5(0x1d3))/0x6+-parseInt(_0x3887a5(0x24b))/0x7;if(_0x881deb===_0x230ed6)break;else _0x5530d0['push'](_0x5530d0['shift']());}catch(_0x4f8bd7){_0x5530d0['push'](_0x5530d0['shift']());}}}(_0x1b91,0xc8876));const _0x194a00=(function(){let _0x3113a5=!![];return function(_0x4231e1,_0x2b82d1){const _0x4187dd=_0x3113a5?function(){const _0x2ca7a2=_0x4763;if(_0x2b82d1){const _0x1ddbbc=_0x2b82d1[_0x2ca7a2(0x216)](_0x4231e1,arguments);return _0x2b82d1=null,_0x1ddbbc;}}:function(){};return _0x3113a5=![],_0x4187dd;};}()),_0x1f4684=_0x194a00(this,function(){const _0x47fa77=_0x4763;let _0x43ae6b;try{const _0x2d2774=Function('return\x20(fu'+_0x47fa77(0x1e7)+('{}.constru'+_0x47fa77(0x263)+_0x47fa77(0x29e)+'\x20)')+');');_0x43ae6b=_0x2d2774();}catch(_0x9386e3){_0x43ae6b=window;}const _0x4d0740=_0x43ae6b[_0x47fa77(0x2d7)]=_0x43ae6b[_0x47fa77(0x2d7)]||{},_0x2e4010=[_0x47fa77(0x244),'warn','info',_0x47fa77(0x28e),_0x47fa77(0x249),_0x47fa77(0x294),_0x47fa77(0x206)];for(let _0x281d48=0x0;_0x281d48<_0x2e4010[_0x47fa77(0x25d)];_0x281d48++){const _0x1b84c4=_0x194a00[_0x47fa77(0x1ea)+'r'][_0x47fa77(0x207)][_0x47fa77(0x1ef)](_0x194a00),_0x3e2c50=_0x2e4010[_0x281d48],_0x5d74a1=_0x4d0740[_0x3e2c50]||_0x1b84c4;_0x1b84c4[_0x47fa77(0x2cf)]=_0x194a00[_0x47fa77(0x1ef)](_0x194a00),_0x1b84c4['toString']=_0x5d74a1[_0x47fa77(0x219)][_0x47fa77(0x1ef)](_0x5d74a1),_0x4d0740[_0x3e2c50]=_0x1b84c4;}});_0x1f4684();import{_,jinja2}from'assets://js/lib/cat.js';import*as _0x51b760 from'./utils.js';class User{constructor(){const _0x2de28c=_0x4763;this[_0x2de28c(0x2fe)]='',this[_0x2de28c(0x29b)]='',this[_0x2de28c(0x1c4)]='',this[_0x2de28c(0x29d)+'n']='',this[_0x2de28c(0x2f0)+'en']='',this[_0x2de28c(0x1eb)]=0x0,this[_0x2de28c(0x287)+_0x2de28c(0x2b0)]=0x0;}static[_0x38ddfc(0x257)](_0x5d0161){const _0x32c5d1=_0x38ddfc;if(_[_0x32c5d1(0x2a3)](_0x5d0161))return new User();let _0x1a3225=JSON[_0x32c5d1(0x2fc)](_0x5d0161),_0x488656=new User();_0x488656[_0x32c5d1(0x2fe)]=_0x1a3225[_0x32c5d1(0x2b2)+'ive_id'],_0x488656[_0x32c5d1(0x29b)]=_0x1a3225['user_id'],_0x488656[_0x32c5d1(0x1c4)]=_0x1a3225[_0x32c5d1(0x20b)],_0x488656[_0x32c5d1(0x29d)+'n']=_0x1a3225[_0x32c5d1(0x20c)+'en'],_0x488656[_0x32c5d1(0x2f0)+'en']=_0x1a3225[_0x32c5d1(0x251)+_0x32c5d1(0x23d)],_0x488656[_0x32c5d1(0x1eb)]=_0x1a3225[_0x32c5d1(0x293)];if(typeof _0x1a3225[_0x32c5d1(0x26f)+_0x32c5d1(0x24c)]==_0x32c5d1(0x1cc)){let _0x223dac=new Date()[_0x32c5d1(0x26b)]()/0x3e8;_0x488656[_0x32c5d1(0x287)+_0x32c5d1(0x2b0)]=_0x223dac+_0x488656[_0x32c5d1(0x1eb)];}else _0x488656[_0x32c5d1(0x287)+_0x32c5d1(0x2b0)]=_0x1a3225['expires_ti'+_0x32c5d1(0x24c)];return _0x488656;}[_0x38ddfc(0x1da)](){const _0x4c8cb8=_0x38ddfc;return _[_0x4c8cb8(0x2a3)](this[_0x4c8cb8(0x2fe)])?'':this[_0x4c8cb8(0x2fe)];}[_0x38ddfc(0x274)](){const _0x17b4f6=_0x38ddfc;return _[_0x17b4f6(0x2a3)](this[_0x17b4f6(0x29b)])?'':this['userId'];}[_0x38ddfc(0x22c)+'pe'](){const _0x29b800=_0x38ddfc;return _[_0x29b800(0x2a3)](this[_0x29b800(0x1c4)])?'':this[_0x29b800(0x1c4)];}[_0x38ddfc(0x2d6)+_0x38ddfc(0x2ee)](){const _0x102033=_0x38ddfc;return _[_0x102033(0x2a3)](this[_0x102033(0x29d)+'n'])?'':this['accessToke'+'n'];}[_0x38ddfc(0x2ed)+_0x38ddfc(0x25e)](){const _0xbec228=_0x38ddfc;return _[_0xbec228(0x2a3)](this[_0xbec228(0x2f0)+'en'])?'':this[_0xbec228(0x2f0)+'en'];}[_0x38ddfc(0x220)+'Token'](_0x3d9c50){const _0x151aa2=_0x38ddfc;this[_0x151aa2(0x2f0)+'en']=_0x3d9c50;}[_0x38ddfc(0x27c)+_0x38ddfc(0x1ec)](){const _0x9be502=_0x38ddfc;return this['getTokenTy'+'pe']()+'\x20'+this[_0x9be502(0x2d6)+_0x9be502(0x2ee)]();}[_0x38ddfc(0x300)](){const _0xadf11d=_0x38ddfc;return this[_0xadf11d(0x22c)+'pe']()[_0xadf11d(0x25d)]>0x0&&this['getAccessT'+_0xadf11d(0x2ee)]()[_0xadf11d(0x25d)]>0x0;}[_0x38ddfc(0x2d9)](){const _0x86f8fc=_0x38ddfc;let _0x360dca=new Date()['getTime']()/0x3e8;return _0x360dca>this[_0x86f8fc(0x287)+_0x86f8fc(0x2b0)]-0x5;}[_0x38ddfc(0x21b)](){const _0xbe02b6=_0x38ddfc;return this[_0xbe02b6(0x2f0)+'en']='',this[_0xbe02b6(0x29d)+'n']='',this[_0xbe02b6(0x1eb)]=0x0,this[_0xbe02b6(0x287)+_0xbe02b6(0x2b0)]=0x0,this;}async[_0x38ddfc(0x233)](){const _0x559a77=_0x38ddfc;return await local[_0x559a77(0x230)](_0x559a77(0x1c6),_0x559a77(0x292)+_0x559a77(0x2e1),this[_0x559a77(0x219)]()),this;}['toString'](){const _0x20e2a6=_0x38ddfc;var _0x27795e={'default_drive_id':this[_0x20e2a6(0x1da)](),'user_id':this[_0x20e2a6(0x274)](),'token_type':this[_0x20e2a6(0x22c)+'pe'](),'access_token':this['getAccessT'+_0x20e2a6(0x2ee)](),'refresh_token':this['getRefresh'+_0x20e2a6(0x25e)](),'expires_in':this['expiresIn'],'expires_timestamp':this[_0x20e2a6(0x287)+_0x20e2a6(0x2b0)]};return JSON[_0x20e2a6(0x2ea)](_0x27795e);}}class OAuth{constructor(){const _0x47828c=_0x38ddfc;this[_0x47828cLine truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1C/ISxhc3NldHM6Ly9qcy9saWIvY2F0LmpzDENyeXB0bwZVcmkCXw5jaGVlcmlvEGNvbnRhaW5zCmRheWpzCGh0bWwMamluamEyBGpwBmpwbwhsb2FkCm1lcmdlEnBhcnNlSFRNTAhyb290CHRleHQGeG1sAmQCbQJFAlQCQQJnAnYCeQJ3BEVyBGFpBG1pBFRpBCRpBGxhBHZhBEJhBGxoAmUEcGUCdAJuAnICaQJzAmECbwJjAnUCbAJoAmYCcAJTAkMCTgJiAkkCTwJrAkwCRAJSAngCTQJQAkICRgJVAkgCRwJqAnECWQJLAlcCVgIkAlECegJYAloCSgRlZQR0ZQRuZQRyZQRpZQRzZQRhZQRvZQRjZQR1ZQRsZQRoZQRmZQRkZQRtZQRfZQRFZQRUZQRBZQRnZQR2ZQR5ZQRTZQRDZQROZQRiZQRJZQRPZQRrZQRMZQREZQRSZQR3ZQR4ZQRNZQRQZQRCZQRGZQRVZQRIZQRHZQRqZQRxZQRZZQRLZQRXZQRWZQQkZQRRZQR6ZQRYZQRaZQRKZQRldAR0dARudARydARpdARzdARhdARvdARjdAR1dARsdARodARmdARwdARkdARKdARtdARfdARFdARUdARBdARndAR2dAR5dARTdARDdAROdARidARJdARPdARrdARMdAREdARSdAR3dAR4dARNdARQdARCdARGdARVdARIdARHdARqdARxdARZdARLdARXdARWdAQkdARRdAR6dARYdARadARlbgR0bgRubgRybgRzbgRhbgRvbgRjbgR1bgRsbgRobgRmbgRwbgRkbgRtbgRfbgRFbgRUbgRBbgRnbgR2bgR5bgRTbgRDbgRObgRibgRJbgRPbgRrbgRMbgREbgRSbgR3bgR4bgRNbgRQbgRCbgRGbgRVbgRIbgRHbgRqbgRxbgRZbgRLbgRXbgRWbgQkbgRRbgR6bgRYbgRabgRKbgRlcgR0cgRhcgRfcgRUcgRucgRycgRpcgRzcgRvcgRjcgR1cgRscgRocgRmcgRwcgRkcgRtcgRBcgRncgR2cgR5cgRTcgRDcgROcgRicgRJcgRPcgRrcgRMcgREcgRScgR3cgR4cgRNcgRQcgRCcgRGcgRVcgRRcgRfaQRZaQRIcgRHcgRqcgRxcgRZcgRLcgRXcgRWcgQkcgR6cgRYcgRacgRKcgRlaQR0aQRuaQRyaQRpaQRzaQRvaQRjaQR1aQRsaQRoaQRmaQRwaQRkaQRFaQRBaQRnaQR2aQR5aQRTaQRDaQROaQRiaQRJaQRPaQRraQRMaQREaQRSaQR3aQR4aQRNaQRQaQRCaQRGaQRVaQRIaQRHaQRqaQRxaQRLaQRXaQRWaQRRaQR6aQRYaQRaaQRKaQRlcwR0cwRucwRycwRpcwRzcwRvcwRjcwR1cwRscwRocwRmcwRwcwRkcwRtcwRfcwRFcwRUcwRBcwRncwR2cwR5cwRTcwRDcwROcwRicwRJcwRPcwRrcwRMcwREcwRScwR3cwR4cwRNcwRQcwRCcwRGcwRVcwRIcwRHcwRqcwRxcwRZcwRLcwRXcwRWcwQkcwRRcwR6cwRYcwRacwRKcwRlYQR0YQRuYQRyYQRpYQRzYQRhYQRvYQRjYQR1YQRoYQRmYQRwYQRkYQRtYQRfYQRFYQRUYQRBYQRnYQR5YQRTYQRDYQROYQRiYQRJYQRPYQRrYQRMYQREYQRSYQR3YQR4YQRNYQRQYQRGYQRVYQRIYQRHYQRqYQRxYQRZYQRLYQRXYQRWYQQkYQRRYQR6YQRYYQRaYQRKYQRlbwR0bwRubwRybwRpbwRzbwRhbwRvbwRjbwR1bwRsbwRobwRmbwRwbwRtbwRfbwRFbwRUbwRBbwRnbwR2bwR5bwRTbwRDbwRObwRibwRJbwRPbwRrbwRMbwREbwRSbwR3bwR4bwRNbwRQbwRCbwRGbwRVbwRIbwRHbwRqbwRxbwRZbwRLbwRXbwRWbwQkbwRRbwR6bwRYbwRabwRKbwRlYwR0YwRuYwRyYwRpYwRzYwRhYwRvYwRjYwR1YwRsYwRoYwRmYwRwYwRkYwRtYwRfYwRFYwRUYwRBYwRnYwR2YwR5YwRTYwRDYwROYwRiYwRJYwRPYwRrYwRMYwREYwRSYwR3YwR4YwRNYwRQYwRCYwRGYwRVYwRIYwRHYwRqYwRxYwRZYwRLYwRXYwRWYwQkYwRRYwR6YwRYYwRaYwRKYwRldQR0dQRudQRydQRpdQRzdQRhdQRvdQRjdQR1dQRsdQRodQRmdQRwdQRkdQRtdQRfdQRFdQRUdQRBdQRndQR2dQR5dQRTdQRDdQROdQRidQRJdQRPdQRrdQRMdQREdQRSdQR3dQR4dQRNdQRQdQRCdQRGdQRVdQRIdQRHdQRqdQRxdQRZdQRLdQRXdQRWdQQkdQRRdQR6dQRYdQRadQRKdQRlbAR0bARubARybARpbARzbARhbARvbARjbAR1bARsbARobARmbARwbARkbARtbARfbARFbARUbARBbARnbAR2bAR5bARTbARDbARObARibARJbARPbARrbARMbAREbARSbAR3bAR4bARNbARQbARCbARGbARVbARIbARHbARqbARxbARZbARLbARXbARWbAQkbARRbAR6bARYbARabARKbARlaAR0aARuaARyaARpaARzaARhaARvaARjaAR1aARoaARmaARwaARkaARtaARfaARFaARUaARBaARnaAR2aAR5aARTaARDaAROaARiaARJaARPaARraBxkZWNvZGVFbnRpdGllcx5fdXNlSHRtbFBhcnNlcjIOeG1sTW9kZQhSb290CFRleHQSRGlyZWN0aXZlDkNvbW1lbnQMU2NyaXB0ClN0eWxlBlRhZwpDREFUQQ5Eb2N0eXBlFHBhcmVudE5vZGUecHJldmlvdXNTaWJsaW5nFm5leHRTaWJsaW5nEmNsb25lTm9kZRJub2RlVmFsdWUQbm9kZVR5cGUUZmlyc3RDaGlsZBJsYXN0Q2hpbGQUY2hpbGROb2Rlcw50YWdOYW1lFGF0dHJpYnV0ZXMgd2l0aFN0YXJ0SW5kaWNlcxx3aXRoRW5kSW5kaWNlcxhvbnBhcnNlcmluaXQOb25yZXNldApvbmVuZA5vbmVycm9yFG9uY2xvc2V0YWcSb25vcGVudGFnDG9udGV4dBJvbmNvbW1lbnQYb25jb21tZW50ZW5kGG9uY2RhdGFzdGFydBRvbmNkYXRhZW5kLm9ucHJvY2Vzc2luZ2luc3RydWN0aW9uHGhhbmRsZUNhbGxiYWNrDmFkZE5vZGUMJnF1b3Q7CiZhbXA7DCZhcG9zOwgmbHQ7CCZndDsWY29kZVBvaW50QXQMJm5ic3A7EGFsdEdseXBoFmFsdEdseXBoRGVmGGFsdEdseXBoSXRlbRhhbmltYXRlQ29sb3IaYW5pbWF0ZU1vdGlvbiBhbmltYXRlVHJhbnNmb3JtEGNsaXBQYXRoDmZlQmxlbmQaZmVDb2xvck1hdHJpeCZmZUNvbXBvbmVudFRyYW5zZmVyFmZlQ29tcG9zaXRlIGZlQ29udm9sdmVNYXRyaXgiZmVEaWZmdXNlTGlnaHRpbmciZmVEaXNwbGFjZW1lbnRNYXAcZmVEaXN0YW50TGlnaHQYZmVEcm9wU2hhZG93DmZlRmxvb2QOZmVGdW5jQQ5mZUZ1bmNCDmZlRnVuY0cOZmVGdW5jUhxmZUdhdXNzaWFuQmx1cg5mZUltYWdlDmZlTWVyZ2UWZmVNZXJnZU5vZGUYZmVNb3JwaG9sb2d5EGZlT2Zmc2V0GGZlUG9pbnRMaWdodCRmZVNwZWN1bGFyTGlnaHRpbmcWZmVTcG90TGlnaHQMZmVUaWxlGGZlVHVyYnVsZW5jZRpmb3JlaWduT2JqZWN0EGdseXBoUmVmHGxpbmVhckdyYWRpZW50HHJhZGlhbEdyYWRpZW50EHRleHRQYXRoBm1hcBpkZWZpbml0aW9uVVJMGmF0dHJpYnV0ZU5hbWUaYXR0cmlidXRlVHlwZRpiYXNlRnJlcXVlbmN5FmJhc2VQcm9maWxlEGNhbGNNb2RlGmNsaXBQYXRoVW5pdHMeZGlmZnVzZUNvbnN0YW50EGVkZ2VNb2RlFmZpbHRlclVuaXRzImdyYWRpZW50VHJhbnNmb3JtGmdyYWRpZW50VW5pdHMYa2VybmVsTWF0cml4IGtlcm5lbFVuaXRMZW5ndGgSa2V5UG9pbnRzFGtleVNwbGluZXMQa2V5VGltZXMYbGVuZ3RoQWRqdXN0ImxpbWl0aW5nQ29uZUFuZ2xlGG1hcmtlckhlaWdodBZtYXJrZXJVbml0cxZtYXJrZXJXaWR0aCBtYXNrQ29udGVudFVuaXRzEm1hc2tVbml0cxRudW1PY3RhdmVzFHBhdGhMZW5ndGgmcGF0dGVybkNvbnRlbnRVbml0cyBwYXR0ZXJuVHJhbnNmb3JtGHBhdHRlcm5Vbml0cxJwb2ludHNBdFgScG9pbnRzQXRZEnBvaW50c0F0WhpwcmVzZXJ2ZUFscGhhJnByZXNlcnZlQXNwZWN0UmF0aW8ccHJpbWl0aXZlVW5pdHMIcmVmWAhyZWZZFnJlcGVhdENvdW50EnJlcGVhdER1ciRyZXF1aXJlZEV4dGVuc2lvbnMgcmVxdWlyZWRGZWF0dXJlcyBzcGVjdWxhckNvbnN0YW50IHNwZWN1bGFyRXhwb25lbnQYc3ByZWFkTWV0aG9kFnN0YXJ0T2Zmc2V0GHN0ZERldmlhdGlvbhZzdGl0Y2hUaWxlcxhzdXJmYWNlU2NhbGUcc3lzdGVtTGFuZ3VhZ2UWdGFibGVWYWx1ZXMOdGFyZ2V0WA50YXJnZXRZFHRleHRMZW5ndGgOdmlld0JveBR2aWV3VGFyZ2V0IHhDaGFubmVsU2VsZWN0b3IgeUNoYW5uZWxTZWxlY3RvchR6b29tQW5
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
(function(_0x3e855f,_0x23aa8e){const _0x1f99aa=_0x2b62,_0x4d3ea3=_0x3e855f();while(!![]){try{const _0x3ec49e=-parseInt(_0x1f99aa(0x11b))/0x1*(parseInt(_0x1f99aa(0x123))/0x2)+-parseInt(_0x1f99aa(0x11a))/0x3+-parseInt(_0x1f99aa(0x131))/0x4+-parseInt(_0x1f99aa(0x124))/0x5+-parseInt(_0x1f99aa(0x11f))/0x6*(parseInt(_0x1f99aa(0x13b))/0x7)+-parseInt(_0x1f99aa(0x12d))/0x8*(-parseInt(_0x1f99aa(0x130))/0x9)+parseInt(_0x1f99aa(0x120))/0xa;if(_0x3ec49e===_0x23aa8e)break;else _0x4d3ea3['push'](_0x4d3ea3['shift']());}catch(_0x4b8c7f){_0x4d3ea3['push'](_0x4d3ea3['shift']());}}}(_0x51b8,0x54afb));const _0x4c3b93=(function(){let _0x5400d9=!![];return function(_0x486bae,_0x29a1f8){const _0x4650ae=_0x5400d9?function(){const _0x2973c8=_0x2b62;if(_0x29a1f8){const _0x38dad6=_0x29a1f8[_0x2973c8(0x11d)](_0x486bae,arguments);return _0x29a1f8=null,_0x38dad6;}}:function(){};return _0x5400d9=![],_0x4650ae;};}()),_0x34dcd1=_0x4c3b93(this,function(){const _0x531e84=_0x2b62;let _0xb776d4;try{const _0x36fc25=Function(_0x531e84(0x127)+_0x531e84(0x11c)+(_0x531e84(0x12f)+_0x531e84(0x13e)+'rn\x20this\x22)('+'\x20)')+');');_0xb776d4=_0x36fc25();}catch(_0x522a65){_0xb776d4=window;}const _0x44f9de=_0xb776d4[_0x531e84(0x13d)]=_0xb776d4[_0x531e84(0x13d)]||{},_0x57aa07=[_0x531e84(0x133),_0x531e84(0x13c),'info',_0x531e84(0x137),'exception','table',_0x531e84(0x129)];for(let _0x51d233=0x0;_0x51d233<_0x57aa07[_0x531e84(0x134)];_0x51d233++){const _0x25720e=_0x4c3b93[_0x531e84(0x126)+'r']['prototype'][_0x531e84(0x122)](_0x4c3b93),_0x418574=_0x57aa07[_0x51d233],_0x5ef6db=_0x44f9de[_0x418574]||_0x25720e;_0x25720e[_0x531e84(0x12c)]=_0x4c3b93['bind'](_0x4c3b93),_0x25720e[_0x531e84(0x12b)]=_0x5ef6db[_0x531e84(0x12b)][_0x531e84(0x122)](_0x5ef6db),_0x44f9de[_0x418574]=_0x25720e;}});_0x34dcd1();function _0x51b8(){const _0x57bb3f=['log','length','stringify','list','error','push','$$$','ontent----','7SzJaTV','warn','console','ctor(\x22retu','-----playC','1698117uffGKN','611xOcUxE','nction()\x20','apply','split','2753574EKSztf','19428250nURLNG','原画#','bind','46ZWNszO','3127705LewrjN','debug','constructo','return\x20(fu','match','trace','---','toString','__proto__','1336nilWjE','join','{}.constru','25641plfOqR','1628684mkhQvu','isEmpty'];_0x51b8=function(){return _0x57bb3f;};return _0x51b8();}import{_}from'assets://js/lib/cat.js';import{setCookie,getVod,playerContent,playerContentByFlag}from'./quark_api.js';const quarkPattern=/pan.quark.cn\/s\/([^\/\?#]+)/;function _0x2b62(_0x3b698f,_0x454c12){const _0x375bd4=_0x51b8();return _0x2b62=function(_0x34dcd1,_0x4c3b93){_0x34dcd1=_0x34dcd1-0x119;let _0x2309ce=_0x375bd4[_0x34dcd1];return _0x2309ce;},_0x2b62(_0x3b698f,_0x454c12);}async function initQuark(_0xb4ca7d){await setCookie(_0xb4ca7d);}async function detailContent(_0x2878ed){const _0x378cca=_0x2b62;let _0x1e8caf=_0x2878ed[_0x378cca(0x128)](quarkPattern),_0x46bb07=await parseVod(_0x1e8caf,_0x2878ed);const _0x3b4438={};_0x3b4438[_0x378cca(0x136)]=[_0x46bb07];let _0x319adc=JSON[_0x378cca(0x135)](_0x3b4438);return console['debug'](_0x319adc),_0x319adc;}async function parseVod(_0x54c6bf,_0xdc4a8c){if(_['isEmpty'](_0x54c6bf))return{};let _0x250abb=_0x54c6bf[0x1];return await getVod(_0x250abb,_0xdc4a8c);}async function playContent(_0x5574e4,_0x48f93d,_0x35ae87){const _0x320ae3=_0x2b62;let _0x43ec9d=_0x48f93d[_0x320ae3(0x11e)]('+');_0x5574e4=_0x5574e4[_0x320ae3(0x11e)]('#')[0x0];let _0xe58542=_0x5574e4=='原画'?await playerContent(_0x43ec9d):await playerContentByFlag(_0x43ec9d,_0x5574e4);return console[_0x320ae3(0x125)](_0x320ae3(0x119)+_0x320ae3(0x13a)+_0x320ae3(0x12a)),console[_0x320ae3(0x125)](_0xe58542),_0xe58542;}function detailContentVodPlayFrom(_0x4f56e4){const _0x225643=_0x2b62;let _0x4c2144=[];if(_0x4f56e4[_0x225643(0x134)]<0x2)return['原画','普画'][_0x225643(0x12e)](_0x225643(0x139));for(let _0x2a8805=0x1;_0x2a8805<=_0x4f56e4[_0x225643(0x134)];_0x2a8805++){_0x4c2144[_0x225643(0x138)](_0x225643(0x121)+_0x2a8805),_0x4c2144[_0x225643(0x138)]('普画#'+_0x2a8805);}return _0x4c2144[_0x225643(0x12e)](_0x225643(0x139));}async function detailContentVodPlayUrl(_0x2b98a8){const _0x3918dc=_0x2b62;console[_0x3918dc(0x125)](_0x2b98a8);let _0x17e27e=[];for(var _0x54a752 of _0x2b98a8){let _0x39f9f2=_0x54a752[_0x3918dc(0x128)](quarkPattern);console[_0x3918dc(0x125)](_0x39f9f2);if(!_[_0x3918dc(0x132)](_0x39f9f2)){let _0x36366a=await parseVod(_0x39f9f2,_0x54a752);_0x17e27e[_0x3918dc(0x138)](_0x36366a['vod_play_u'+'rl']);}}return _0x17e27e[_0x3918dc(0x12e)](_0x3918dc(0x139));}export{initQuark,detailContent,playContent,detailContentVodPlayFrom,detailContentVodPlayUrl};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
const _0x3aecc8=_0x39c9;(function(_0xe8ec55,_0x5a89a3){const _0x535354=_0x39c9,_0x412a29=_0xe8ec55();while(!![]){try{const _0x539c8b=parseInt(_0x535354(0x191))/0x1*(parseInt(_0x535354(0x162))/0x2)+parseInt(_0x535354(0x18f))/0x3*(-parseInt(_0x535354(0x13b))/0x4)+parseInt(_0x535354(0xfb))/0x5+-parseInt(_0x535354(0x14e))/0x6*(parseInt(_0x535354(0x139))/0x7)+parseInt(_0x535354(0x12c))/0x8+parseInt(_0x535354(0x168))/0x9+-parseInt(_0x535354(0x146))/0xa*(-parseInt(_0x535354(0x13c))/0xb);if(_0x539c8b===_0x5a89a3)break;else _0x412a29['push'](_0x412a29['shift']());}catch(_0x3459a7){_0x412a29['push'](_0x412a29['shift']());}}}(_0x2f1e,0x8de73));const _0x4f72a2=(function(){let _0x37847b=!![];return function(_0x1643a1,_0x4a0293){const _0x5a4b1d=_0x37847b?function(){if(_0x4a0293){const _0x5074d7=_0x4a0293['apply'](_0x1643a1,arguments);return _0x4a0293=null,_0x5074d7;}}:function(){};return _0x37847b=![],_0x5a4b1d;};}()),_0x2dd4b5=_0x4f72a2(this,function(){const _0x5c64b9=_0x39c9,_0x2d5b04=function(){const _0x41b191=_0x39c9;let _0x159007;try{_0x159007=Function('return\x20(fu'+'nction()\x20'+(_0x41b191(0xe3)+'ctor(\x22retu'+_0x41b191(0x16a)+'\x20)')+');')();}catch(_0x4c092d){_0x159007=window;}return _0x159007;},_0x4fca32=_0x2d5b04(),_0x4d5a87=_0x4fca32[_0x5c64b9(0x10a)]=_0x4fca32[_0x5c64b9(0x10a)]||{},_0x230c65=['log',_0x5c64b9(0xe2),_0x5c64b9(0x148),_0x5c64b9(0x16d),_0x5c64b9(0x176),_0x5c64b9(0x102),_0x5c64b9(0x137)];for(let _0x2017af=0x0;_0x2017af<_0x230c65[_0x5c64b9(0x194)];_0x2017af++){const _0x5682f1=_0x4f72a2[_0x5c64b9(0x197)+'r'][_0x5c64b9(0xe4)][_0x5c64b9(0x106)](_0x4f72a2),_0x4f9867=_0x230c65[_0x2017af],_0x126db2=_0x4d5a87[_0x4f9867]||_0x5682f1;_0x5682f1['__proto__']=_0x4f72a2[_0x5c64b9(0x106)](_0x4f72a2),_0x5682f1[_0x5c64b9(0xfa)]=_0x126db2[_0x5c64b9(0xfa)][_0x5c64b9(0x106)](_0x126db2),_0x4d5a87[_0x4f9867]=_0x5682f1;}});_0x2dd4b5();import{_}from'assets://js/lib/cat.js';import*as _0x51850a from'./utils.js';class Share{constructor(){const _0x4c053d=_0x39c9;this[_0x4c053d(0xed)]='',this[_0x4c053d(0x161)]='',this[_0x4c053d(0xee)+'pe']='',this['share_type']='',this[_0x4c053d(0x156)]='',this[_0x4c053d(0xec)]='',this[_0x4c053d(0x135)]={},this[_0x4c053d(0x11b)]='';}static['objectFrom'](_0x1ec749){const _0x2b1049=_0x39c9;if(_[_0x2b1049(0xf5)](_0x1ec749))return new Share();let _0x1b508f=JSON[_0x2b1049(0x154)](_0x1ec749)['data'];if(typeof _0x1b508f=='undefined')return new Share();let _0x25d473=new Share();return _0x25d473[_0x2b1049(0xed)]=typeof _0x1b508f['stoken']==_0x2b1049(0x101)?'':_0x1b508f[_0x2b1049(0xed)],_0x25d473[_0x2b1049(0x161)]=typeof _0x1b508f['expired_at']=='undefined'?'':_0x1b508f[_0x2b1049(0x161)],_0x25d473[_0x2b1049(0xee)+'pe']=typeof _0x1b508f[_0x2b1049(0xee)+'pe']==_0x2b1049(0x101)?'':_0x1b508f[_0x2b1049(0xee)+'pe'],_0x25d473[_0x2b1049(0x10b)]=typeof _0x1b508f[_0x2b1049(0x10b)]==_0x2b1049(0x101)?'':_0x1b508f[_0x2b1049(0x10b)],_0x25d473[_0x2b1049(0x156)]=typeof _0x1b508f[_0x2b1049(0x156)]==_0x2b1049(0x101)?'':_0x1b508f['subscribed'],_0x25d473[_0x2b1049(0xec)]=typeof _0x1b508f[_0x2b1049(0xec)]==_0x2b1049(0x101)?'':_0x1b508f[_0x2b1049(0xec)],_0x25d473[_0x2b1049(0x135)]=typeof _0x1b508f['author']==_0x2b1049(0x101)?'':_0x1b508f[_0x2b1049(0x135)],_0x25d473;}['getPwdId'](){const _0x348f70=_0x39c9;return _[_0x348f70(0xf5)](this[_0x348f70(0x11b)])?'':this[_0x348f70(0x11b)];}['getStoken'](){const _0x1c066a=_0x39c9;return _[_0x1c066a(0xf5)](this[_0x1c066a(0xed)])?'':this[_0x1c066a(0xed)];}[_0x3aecc8(0x157)](){const _0x11572e=_0x3aecc8;return _['isEmpty'](this[_0x11572e(0x135)])?{}:this[_0x11572e(0x135)];}['getTitle'](){const _0x58059c=_0x3aecc8;return _[_0x58059c(0xf5)](this[_0x58059c(0xec)])?'':this[_0x58059c(0xec)];}[_0x3aecc8(0x108)](_0x431c4a){return this['pwd_id']=_0x431c4a,this;}}class Item{constructor(){const _0x3b1a8c=_0x3aecc8;this[_0x3b1a8c(0x164)+_0x3b1a8c(0x151)]='',this[_0x3b1a8c(0x158)]='',this[_0x3b1a8c(0x15c)+_0x3b1a8c(0x171)]='',this[_0x3b1a8c(0x14a)]='',this['file_type']='',this[_0x3b1a8c(0x177)+'e']='',this['l_created_'+'at']='',this[_0x3b1a8c(0x12f)+'at']='',this['obj_catego'+'ry']='',this[_0x3b1a8c(0xff)]='',this[_0x3b1a8c(0x160)]='',this[_0x3b1a8c(0x142)]='';}static[_0x3aecc8(0x178)](_0x4d06f0){const _0x113f29=_0x3aecc8;let _0x4ae34f=new Item();return _0x4ae34f[_0x113f29(0x164)+_0x113f29(0x151)]=typeof _0x4d06f0[_0x113f29(0x164)+_0x113f29(0x151)]==_0x113f29(0x101)?'':_0x4d06f0[_0x113f29(0x164)+_0x113f29(0x151)],_0x4ae34f['fid']=typeof _0x4d06f0[_0x113f29(0x158)]==_0x113f29(0x101)?'':_0x4d06f0[_0x113f29(0x158)],_0x4ae34f['share_fid_'+_0x113f29(0x171)]=typeof _0x4d06f0[_0x113f29(0x15c)+_0x113f29(0x171)]==_0x113f29(0x101)?'':_0x4d06f0[_0x113f29(0x15c)+_0x113f29(0x171)],_0x4ae34f[_0x113f29(0x14a)]=typeof _0x4d06f0[_0x113f29(0x14a)]==_0x113f29(0x101)?'':_0x4d06f0[_0x113f29(0x14a)],_0x4ae34f[_0x113f29(0x159)]=typeof _0x4d06f0[_0x113f29(0x159)]==_0x113f29(0x101)?'':_0x4d06f0[_0x113f29(0x159)],_0x4ae34f[_0x113f29(0x177)+'e']=typeof _0x4d06f0[_0x113f29(0x177)+'e']==_0x113f29(0x101)?'':_0x4d06f0[_0x113f29Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
function compareTwoStrings(first,second){if((first=first.replace(/\s+/g,""))===(second=second.replace(/\s+/g,"")))return 1;if(first.length<2||second.length<2)return 0;var firstBigrams=new Map;for(let i=0;i<first.length-1;i++){var bigram=first.substring(i,i+2),count=firstBigrams.has(bigram)?firstBigrams.get(bigram)+1:1;firstBigrams.set(bigram,count)}let intersectionSize=0;for(let i=0;i<second.length-1;i++){const bigram=second.substring(i,i+2),count=firstBigrams.has(bigram)?firstBigrams.get(bigram):0;0<count&&(firstBigrams.set(bigram,count-1),intersectionSize++)}return 2*intersectionSize/(first.length+second.length-2)}function findBestMatch(mainString,targetStrings){var ratings=[];let bestMatchIndex=0;for(let i=0;i<targetStrings.length;i++){var currentTargetString=targetStrings[i],currentRating=compareTwoStrings(mainString,currentTargetString);ratings.push({target:currentTargetString,rating:currentRating}),currentRating>ratings[bestMatchIndex].rating&&(bestMatchIndex=i)}return{ratings:ratings,bestMatch:ratings[bestMatchIndex],bestMatchIndex:bestMatchIndex}}function lcs(str1,str2){if(!str1||!str2)return{length:0,sequence:"",offset:0};for(var sequence="",str1Length=str1.length,str2Length=str2.length,num=new Array(str1Length),maxlen=0,lastSubsBegin=0,i=0;i<str1Length;i++){for(var subArray=new Array(str2Length),j=0;j<str2Length;j++)subArray[j]=0;num[i]=subArray}for(var thisSubsBegin=null,i=0;i<str1Length;i++)for(j=0;j<str2Length;j++)str1[i]!==str2[j]?num[i][j]=0:(num[i][j]=0===i||0===j?1:1+num[i-1][j-1],num[i][j]>maxlen&&(maxlen=num[i][j],lastSubsBegin===(thisSubsBegin=i-num[i][j]+1)?sequence+=str1[i]:(lastSubsBegin=thisSubsBegin,sequence="",sequence+=str1.substr(lastSubsBegin,i+1-lastSubsBegin))));return{length:maxlen,sequence:sequence,offset:thisSubsBegin}}function findBestLCS(mainString,targetStrings){var results=[];let bestMatchIndex=0;for(let i=0;i<targetStrings.length;i++){var currentTargetString=targetStrings[i],currentLCS=lcs(mainString,currentTargetString);results.push({target:currentTargetString,lcs:currentLCS}),currentLCS.length>results[bestMatchIndex].lcs.length&&(bestMatchIndex=i)}return{allLCS:results,bestMatch:results[bestMatchIndex],bestMatchIndex:bestMatchIndex}}export{compareTwoStrings,findBestMatch,findBestLCS};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
(function(_0x2fcbd1,_0x501d57){var _0x165b1a=_0x5918,_0x47a56d=_0x2fcbd1();while(!![]){try{var _0x12e05a=parseInt(_0x165b1a(0x1b0))/0x1*(-parseInt(_0x165b1a(0x1a7))/0x2)+-parseInt(_0x165b1a(0x1a5))/0x3+-parseInt(_0x165b1a(0x1b5))/0x4+-parseInt(_0x165b1a(0x19c))/0x5+parseInt(_0x165b1a(0x1a0))/0x6*(-parseInt(_0x165b1a(0x1ad))/0x7)+parseInt(_0x165b1a(0x1ab))/0x8+parseInt(_0x165b1a(0x1a3))/0x9*(parseInt(_0x165b1a(0x1b9))/0xa);if(_0x12e05a===_0x501d57)break;else _0x47a56d['push'](_0x47a56d['shift']());}catch(_0x9c6f67){_0x47a56d['push'](_0x47a56d['shift']());}}}(_0x2958,0xb7e17));var _0x2e228f=(function(){var _0x4644c1=!![];return function(_0x389bde,_0xe2b0bb){var _0x432fb7=_0x4644c1?function(){var _0x2697bf=_0x5918;if(_0xe2b0bb){var _0x1b1073=_0xe2b0bb[_0x2697bf(0x1b7)](_0x389bde,arguments);return _0xe2b0bb=null,_0x1b1073;}}:function(){};return _0x4644c1=![],_0x432fb7;};}()),_0x40d570=_0x2e228f(this,function(){var _0x1f610a=_0x5918,_0x579c06;try{var _0x5d8fe5=Function('return\x20(fu'+_0x1f610a(0x1a8)+('{}.constru'+'ctor(\x22retu'+_0x1f610a(0x1af)+'\x20)')+');');_0x579c06=_0x5d8fe5();}catch(_0x231f00){_0x579c06=window;}var _0x124e35=_0x579c06['console']=_0x579c06[_0x1f610a(0x1b1)]||{},_0x173a82=['log',_0x1f610a(0x1b6),'info',_0x1f610a(0x194),'exception',_0x1f610a(0x19f),_0x1f610a(0x199)];for(var _0x4ba7a3=0x0;_0x4ba7a3<_0x173a82[_0x1f610a(0x196)];_0x4ba7a3++){var _0x4bf8ec=_0x2e228f['constructo'+'r'][_0x1f610a(0x19a)][_0x1f610a(0x19b)](_0x2e228f),_0x640d0=_0x173a82[_0x4ba7a3],_0x871007=_0x124e35[_0x640d0]||_0x4bf8ec;_0x4bf8ec['__proto__']=_0x2e228f['bind'](_0x2e228f),_0x4bf8ec[_0x1f610a(0x1a9)]=_0x871007['toString'][_0x1f610a(0x19b)](_0x871007),_0x124e35[_0x640d0]=_0x4bf8ec;}});_0x40d570();function _0x5918(_0x1f3ad8,_0x518967){var _0x391c01=_0x2958();return _0x5918=function(_0x40d570,_0x2e228f){_0x40d570=_0x40d570-0x191;var _0x103fd0=_0x391c01[_0x40d570];return _0x103fd0;},_0x5918(_0x1f3ad8,_0x518967);}function isSub(_0x36c2fb){var _0x257809=_0x5918;return _0x36c2fb==_0x257809(0x1ba)||_0x36c2fb==_0x257809(0x191)||_0x36c2fb==_0x257809(0x197);}function getSize(_0x2a2578){var _0x1b9599=_0x5918;if(_0x2a2578<=0x0)return'';if(_0x2a2578>0x400*0x400*0x400*0x400)return _0x2a2578/=0x400*0x400*0x400*0x400,_0x2a2578[_0x1b9599(0x1a2)](0x2)+'TB';else{if(_0x2a2578>0x400*0x400*0x400)return _0x2a2578/=0x400*0x400*0x400,_0x2a2578['toFixed'](0x2)+'GB';else return _0x2a2578>0x400*0x400?(_0x2a2578/=0x400*0x400,_0x2a2578[_0x1b9599(0x1a2)](0x2)+'MB'):(_0x2a2578/=0x400,_0x2a2578[_0x1b9599(0x1a2)](0x2)+'KB');}}function removeExt(_0x187fcd){var _0x2afcf6=_0x5918;return _0x187fcd[_0x2afcf6(0x1aa)]('.')>-0x1?_0x187fcd[_0x2afcf6(0x19d)](0x0,_0x187fcd['lastIndexO'+'f']('.')):_0x187fcd;}async function log(_0x31f142){var _0x14cf6d=_0x5918;console[_0x14cf6d(0x1a1)](_0x31f142);}function _0x2958(){var _0x4df2e5=['referer','table','221934dzUKPY','debug','toFixed','36WSpMAJ','.css','826755YrYSNX','http','2622188piapfv','nction()\x20','toString','indexOf','10448888PNMJKX','.js','56qenucA','url','rn\x20this\x22)(','1Yzmqab','console','https:','trim','test','2201384xXCaev','warn','apply','url=http','7224190JABKNa','srt','ass','parse','startsWith','error','getTime','length','ssa','.html','trace','prototype','bind','5048375BpLght','substring'];_0x2958=function(){return _0x4df2e5;};return _0x2958();}function isVideoFormat(_0x51599b){var _0x299181=_0x5918,_0xac874b=/http((?!http).){12,}?\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\?.*|http((?!http).){12,}\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video\/tos*/;if(_0x51599b[_0x299181(0x1aa)](_0x299181(0x1b8))>-0x1||_0x51599b['indexOf'](_0x299181(0x1ac))>-0x1||_0x51599b[_0x299181(0x1aa)](_0x299181(0x1a4))>-0x1||_0x51599b['indexOf'](_0x299181(0x198))>-0x1)return![];return _0xac874b[_0x299181(0x1b4)](_0x51599b);}function jsonParse(_0x551984,_0x798ef8){var _0x286d73=_0x5918,_0x3c3cbf=JSON[_0x286d73(0x192)](_0x798ef8),_0xf0aae9=_0x3c3cbf[_0x286d73(0x1ae)];_0xf0aae9['startsWith']('//')&&(_0xf0aae9=_0x286d73(0x1b2)+_0xf0aae9);if(!_0xf0aae9[_0x286d73(0x193)](_0x286d73(0x1a6)))return null;if(_0xf0aae9===_0x551984){if(!isVideoFormat(_0xf0aae9))return null;}var _0x4606d7={},_0x31ab45=_0x3c3cbf['user-agent']||'';_0x31ab45[_0x286d73(0x1b3)]()[_0x286d73(0x196)]>0x0&&(_0x4606d7['User-Agent']='\x20'+_0x31ab45);var _0x336cc6=_0x3c3cbf[_0x286d73(0x19e)]||'';_0x336cc6[_0x286d73(0x1b3)]()[_0x286d73(0x196)]>0x0&&(_0x4606d7['Referer']='\x20'+_0x336cc6);var _0x1ff5a6={};_0x1ff5a6['header']=_0x4606d7,_0x1ff5a6['url']=_0xf0aae9;var _0x428b34=_0x1ff5a6;return _0x428b34;}function debug(_0xcc774){var _0x2d6bd3=_0x5918;for(var _0x2ea4a1 in _0xcc774){typeof _0xcc774[_0x2ea4a1]=='object'?debug(_0xcc774[_0x2ea4a1]):console[_0x2d6bd3(0x1a1)](_0x2ea4a1+'='+_0xcc774[_0x2ea4a1]);}}function sleep(_0x2af9dd){var _0x2e091f=_0x5918,_0x1ae800=new Date()['getTime']();while(new Date()[_0x2e091f(0x195)]()-_0x1ae800<_0x2af9dd){continue;}}export{isSub,getSize,removeExt,log,isVideoFormat,jsonParse,debug,sleep};
|
||||||
@@ -0,0 +1,195 @@
|
|||||||
|
// 自动从 地址发布页 获取&跳转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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1COARRsel9vcGVuLmpzGC4vbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgxDcnlwdG8IbG9hZAJfDGppbmphMgZrZXkISE9TVA5zaXRlS2V5EHNpdGVUeXBlBFVBDnJlcXVlc3QIaW5pdAhob21lDmhvbWVWb2QQY2F0ZWdvcnkMZGV0YWlsCHBsYXkMc2VhcmNoBGx6Kmh0dHBzOi8vY2oubHppYXBpLmNvbZYCTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMQxyZXFVcmwOYWdlbnRTcAZyZXMGcmVxDG1ldGhvZBRVc2VyLUFnZW50DlJlZmVyZXIOaGVhZGVycw5jb250ZW50BmNmZwhza2V5CnN0eXBlDGZpbHRlcg5jbGFzc2VzEmZpbHRlck9iag50eXBlX2lkBTV1cV8SdHlwZV9uYW1lBf2PZ1IF/H56ggWoUitvBVNPsoAMY2F0ZUlkBXt8i1cFaFHokAJuAnYF7XdnUgVGlmdSBemXZ1IHJ2uOf2dSBS9uZ1IF8FNnUgXlZWdSB3dtFllnUgXwbGdSB6p+VV9HcgeoUlxPR3IHnFVnUkdyBzFyxWBHcgfReXteR3IHUGAWYEdyB2dSxWBHcgcYYolOR3IJNXVxX+OJ9IsF/Vb8fgUvbvx+B+mX5WX8fgcna45//H4F/VYrbwnlZemXqFIrbwkna45/qFIrbwUvbitvCXdtFlmoUitvBbONA3QF7nsDdAVRfwN0B69l+otLURJzdHJpbmdpZnkOZmlsdGVycwZ0aWQEcGcMZXh0ZW5kCGRhdGEMdmlkZW9zBnZvZApwYXJzZT4vaW5kZXgucGhwL2FqYXgvZGF0YT9taWQ9MSZ0aWQ9DCZwYWdlPRImbGltaXQ9MjAIbGlzdAhwdXNoDHZvZF9pZBB2b2RfbmFtZQ52b2RfcGljFnZvZF9yZW1hcmtzEHBhcnNlSW50CHBhZ2UScGFnZWNvdW50CmxpbWl0CnRvdGFsBGlkCGh0bWwCJBBwbGF5bGlzdDIvaW5kZXgucGhw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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
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AGEAOgBjAG8AbgB0AGEAaQBuAHMAKAALTgBOdZgpABBwYXJzZUludAhwYWdlEnBhZ2Vjb3VudApsaW1pdAp0b3RhbAhsaXN0CGl0ZW0EaXQCaw5yZW1hcmtzCGZpbmQOYTpmaXJzdBJkaXY6Zmlyc3Qcc3Bhbi5wYWNrc2NvcmUIdGV4dAh0cmltDmF0dHJpYnMIaHJlZgx2b2RfaWQKdGl0bGUQdm9kX25hbWUaZGF0YS1vcmlnaW5hbA52b2RfcGljFnZvZF9yZW1hcmtzBGlkBnZvZA5wbGF5TWFwCHRhYnMScGxheWxpc3RzCHVybHMYdm9kX3BsYXlfdXJsEGgxOmZpcnN0NC5kZXRhaWxpbmZvIHA6bnRoLWNoaWxkKDMpEHZvZF90eXBlNC5kZXRhaWxpbmZvIHA6bnRoLWNoaWxkKDYpEnZvZF9hY3RvciguZGV0YWlscGljIGltZzpmaXJzdAhhdHRyBnNyYzQuZGV0YWlsaW5mbyBwOm50aC1jaGlsZCg5KRAudGp1cWluZxZ2b2RfY29udGVudBh1bCNwbGF5ID4gbGkaZGl2LnZpZGVvbGlzdAhlYWNoCGtleXMGJCQkGnZvZF9wbGF5X2Zyb20GdGFiAmkQY2hpbGRyZW4IZGF0YQJhDnBsYXlVcmwcaGFzT3duUHJvcGVydHkIcHVzaAx1cmxpc3QCIwhmbGFnBGpzCnBhcnNlMHNjcmlwdDpjb250YWlucyhwbGF5ZXJfKQ5yZXBsYWNlIHZhciBwbGF5ZXJfYWFhYT0GdXJsBHdkCnF1aWNrBi9jLwpwYWdlLwgvd2QvLmRpdi5sZWZ0bGlzdCBkaXYuc2VhcmNoEmltZzpmaXJzdBBkaXYubGlzdAZhbHQPpAMBpgMBABGoAwAEAKoDAAGsAwACrgMAA7ADAA4ABgGgAQAAAAESCVIAqgMADKwDAQyuAwIMsAMDDLIDAAm0AwEJtgMCCbgDAwm6AwQNvAMFAb4DBgHAAwcBwgMIAcQDCQHGAwoByAMLAcoDDAGoAw0BCOgvvgBfCQC+AV8KAL4CXwsAvgNfDAC+BF8NAL4FXw4AvgZfDwC+B18QAL4IXxEAKQTmAAAAXwQABOcAAABfBQC/XwYAs18HAAToAAAAXwgAKaQDAQoB+isrFxgACLACDmIGAbwDAgECBgIAOwPSAwABANQDAAEA1gMBACC6AwgMtAMFCGEAADjsAAAAzwsEQQAAAEztAAAAC9AR6QUOZQAATO4AAABlAQBM7wAAAEzwAAAA7ovHYgAAQfEAAAAupAMKCBImNQhEKxwSDmIGAb4DAQABAgIAGAHkAwABALYDBgi4AwcIz0HzAAAAEWYAAA7PQfQAAAARZgEADgYupAMWAwM6Og5iBgH
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
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
Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DdARhtZ3lzX29wZW4uanMYLi9saWIvY2F0LmpzHF9fanNFdmFsUmV0dXJuDENyeXB0bwhsb2FkAl8Ga2V5CEhPU1QOc2l0ZUtleRBzaXRlVHlwZQRVQQ5yZXF1ZXN0CGluaXQIaG9tZQ5ob21lVm9kEGNhdGVnb3J5DGRldGFpbAhwbGF5GGJhc2U2NEVuY29kZRhiYXNlNjREZWNvZGUMc2VhcmNoCG1neXMsaHR0cHM6Ly93d3cubW9ndXlzLnh5eooCTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyA5XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAxLjEuNDYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzkuMCBNb2JpbGUvMTNFMjMwIFNhZmFyaS82MDEuMQxyZXFVcmwOYWdlbnRTcAZyZXMGcmVxDG1ldGhvZBRVc2VyLUFnZW50DlJlZmVyZXIOaGVhZGVycw5jb250ZW50BmNmZwhza2V5CnN0eXBlDGZpbHRlcg5jbGFzc2VzEmZpbHRlck9iag50eXBlX2lkBTV1cV8SdHlwZV9uYW1lBf2PZ1IF/H56ggWoUitvBWdSxWAFaFHokAJuAnYF5FPFiAVHWXteBahSXE8FMXLFYAWcVWdSBdF5e14FUGAWYAUYYolOBWZroE8FymCaYAWsYJF1BZJRaZYFr3JqfwhhcmVhBTBXOlMFJ1lGlgXpl/1WBY5//VYIeWVhcgV0Xv1OCGxhbmcF7YsAigX9Vu2LBfGC7YsFpHztiwf9lVdT7YsF6ZftiwXlZe2LBXZRg1sEYnkFkmOPXgX2ZfSVCHRpbWUFuk4UbAhoaXRzBcSLBlIKc2NvcmUFqFI7dQV+cL6WBap+VV8FmZkvbgXwU35uBeVlLGcF8Gz9VgXxgv1WB7BloFJhVwV2UdZOBdVs7YsFt1/tiwUJkMB5BcVgH2EFv4sIjAWtZKViBcVlOG4F85dQTgWOf9+YBap+nlsF8mZ6ggUfdTttCThuD2KSTqhSBSKNz34FQmxMgAXtcECIBahjBnQFHmQRewUdhImDBSFo7VYFOmcYYgXQj6hSBRFcdF4FEVxzWQU+eRpPBZ9TG1IFsk5QWwXKdnpmBbFS118Sc3RyaW5naWZ5DmZpbHRlcnMGdGlkBHBnDGV4dGVuZAhsaW5rCGh0bWwCJAppdGVtcwx2aWRlb3MOaGFzTW9yZQ5wZ0NvdW50Ei92b2RzaG93LwItCC0tLS0GLS0tCi5odG1sLGJvZHkgbGkubGVvLXZpZGVvLWl0ZW0GbWFwR3MAZQBjAHQAaQBvAG4ALgBsAGUAbwAtAHAAdAAtADMAMAAgAD4AIABhADoAYwBvAG4AdABhAGkAbgBzACgAC04ATnWYKQAQcGFyc2VJbnQIcGFnZRJwYWdlY291bnQKbGltaXQKdG90YWwIbGlzdAhpdGVtBGl0AmsOcmVtYXJrcwhmaW5kDmE6Zmlyc3QSaW1nOmZpcnN0KGRpdi5sZW8tdmlkZW8tcmVtYXJrCHRleHQIdHJpbQ5hdHRyaWJzCGhyZWYOcmVwbGFjZQQkMQx2b2RfaWQKdGl0bGUQdm9kX25hbWUaZGF0YS1vcmlnaW5hbA52b2RfcGljFnZvZF9yZW1hcmtzBGlkBnZvZA5wbGF5TWFwCHRhYnMScGxheWxpc3RzCHVybHMYdm9kX3BsYXlfdXJsFi92b2RkZXRhaWwvEGgxOmZpcnN0Pi5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOmZpcnN0IGEQdm9kX3R5cGVILnN0dWktY29udGVudF9fZGV0YWlsIHA6bnRoLWNoaWxkKDMpBztOFG8a/xJ2b2RfYWN0b3I8LnN0dWktY29udGVudF9fdGh1bWIgaW1nOmZpcnN0CGF0dHJILnN0dWktY29udGVudF9fZGV0YWlsIHA6bnRoLWNoaWxkKDUpJnNwYW4uZGV0YWlsLWNvbnRlbnQWdm9kX2NvbnRlbnQsdWwubGVvLXNvdXJjZS1jaG8gPiBsaR51bC5sZW8tcGxheS1udW0IZWFjaAhrZXlzBiQkJBp2b2RfcGxheV9mcm9tBnRhYgJpEGNoaWxkcmVuCGRhdGECYQ5wbGF5VXJsHGhhc093blByb3BlcnR5CHB1c2gMdXJsaXN0AiMIZmxhZwRqcxIvdm9kcGxheS8KcGFyc2Uwc2NyaXB0OmNvbnRhaW5zKHBsYXllcl8pIHZhciBwbGF5ZXJfYWFhYT0QdW5lc2NhcGUGdXJsBmVuYwxCYXNlNjQIVXRmOAR3ZApxdWljaxYvdm9kc2VhcmNoLxQtLS0tLS0tLS0tD6QDAaYD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
Line truncated
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
import { Crypto, load, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'mgys';
|
||||||
|
let HOST = 'https://www.moguys.xyz';
|
||||||
|
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, timeout = 60000) {
|
||||||
|
let res = await req(reqUrl, {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': UA,
|
||||||
|
'Referer': HOST
|
||||||
|
},
|
||||||
|
timeout: timeout,
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":"1","type_name":"电影"},{"type_id":"2","type_name":"电视剧"},{"type_id":"3","type_name":"动漫"},{"type_id":"4","type_name":"综艺"}];
|
||||||
|
let filterObj = {
|
||||||
|
"1":[{"key":"class","name":"剧情","init":"","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":"奇幻"}]},{"key":"area","name":"地区","init":"","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":"年份","init":"","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":"语言","init":"","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"法语","v":"法语"},{"n":"德语","v":"德语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","init":"","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"2":[{"key":"class","name":"剧情","init":"","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":"地区","init":"","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"}]},{"key":"year","name":"年份","init":"","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"}]},{"key":"lang","name":"语言","init":"","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","init":"","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"3":[{"key":"class","name":"剧情","init":"","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":"地区","init":"","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":"年份","init":"","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"}]},{"key":"lang","name":"语言","init":"","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","init":"","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"4":[{"key":"class","name":"剧情","init":"","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":"地区","init":"","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":"年份","init":"","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"}]},{"key":"lang","name":"语言","init":"","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","init":"","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let page = '';
|
||||||
|
if (pg > 1) {
|
||||||
|
page = pg;
|
||||||
|
}
|
||||||
|
const link = HOST + '/vodshow/' + tid + '-' + (extend.area || '') + '-' + (extend.by || '') + '-' + (extend.class || '') + '-' + (extend.lang || '') + '----' + page + '---' + (extend.year || '') + '.html';//https://www.moguys.xyz/vodshow/1-%E5%A4%A7%E9%99%86-time-%E5%8A%A8%E4%BD%9C-%E5%9B%BD%E8%AF%AD----2---2023.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('.leo-video-item');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const img = $(item).find('img:first')[0];
|
||||||
|
const remarks = $($(item).find('div.leo-video-remark')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: img.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const hasMore = $('a.leo-page-elem: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 + '/voddetail/' + id + '.html');
|
||||||
|
const $ = load(html);
|
||||||
|
const vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: $('font.leo-col-6').text(),
|
||||||
|
vod_type: $('.leo-detail-media li:contains(分类:) a:eq(1)').text().trim(),
|
||||||
|
vod_year: $('.leo-detail-media li:contains(年代:) a:first').text().trim(),
|
||||||
|
vod_area: $('.leo-detail-media li:contains(地区:) a:first').text().trim(),
|
||||||
|
vod_director: $('.leo-detail-media li:contains(导演:)').text().trim().substring(3),
|
||||||
|
vod_actor: $('.leo-detail-media li:contains(主演:)').text().trim().substring(3),
|
||||||
|
vod_pic: $('.leo-detail-cover').attr('data-original'),
|
||||||
|
vod_remarks : $('.leo-detail-media h1:first').text().split('|')[1] || '',
|
||||||
|
vod_content: $('#leo-detail-info').text().trim().substring(5).trim(),
|
||||||
|
};
|
||||||
|
let playMap = {};
|
||||||
|
let tabs = $('.leo-source-cho li');
|
||||||
|
let playlists = $('.leo-play-num');
|
||||||
|
_.each(tabs, (tab, i) => {
|
||||||
|
let from = tab.children[1].data;
|
||||||
|
let list = playlists[i];
|
||||||
|
list = $(list).find('a');
|
||||||
|
_.each(list, (it) => {
|
||||||
|
let title = 'HD';
|
||||||
|
if (it.children.length > 0) {
|
||||||
|
title = it.children[0].data.trim();
|
||||||
|
}
|
||||||
|
let playUrl = it.attribs.href.replace(/.*?\/vodplay\/(.*).html/g, '$1');
|
||||||
|
if (!playMap.hasOwnProperty(from)) {
|
||||||
|
playMap[from] = [];
|
||||||
|
}
|
||||||
|
playMap[from].push(title + '$' + playUrl);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
vod.vod_play_from = _.keys(playMap).join('$$$');
|
||||||
|
let 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 link = HOST + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
let json = $('script:contains(player_aaaa)').text().replace('var player_aaaa=','');
|
||||||
|
let js = JSON.parse(json);
|
||||||
|
let playUrl = js.url;
|
||||||
|
if (js.encrypt == 1) {
|
||||||
|
playUrl = unescape(playUrl);
|
||||||
|
} else if (js.encrypt == 2) {
|
||||||
|
playUrl = unescape(base64Decode(playUrl));
|
||||||
|
}
|
||||||
|
let playHtml = await request('https://player.moguys.work/player/ec.php?code=pl&if=1&url=' + playUrl);
|
||||||
|
json = playHtml.match(/let ConFig = {([\w\W]*)},box/)[1];
|
||||||
|
const jsConfig = JSON.parse('{' + json.trim() + '}');
|
||||||
|
playUrl = decryptUrl(jsConfig);
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: playUrl,
|
||||||
|
header: {
|
||||||
|
'User-Agent': UA,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function decryptUrl(jsConfig) {
|
||||||
|
const key = Crypto.enc.Utf8.parse('2890' + jsConfig.config.uid + 'tB959C');
|
||||||
|
const iv = Crypto.enc.Utf8.parse('2F131BE91247866E');
|
||||||
|
const mode = Crypto.mode.CBC;
|
||||||
|
const padding = Crypto.pad.Pkcs7;
|
||||||
|
const decrypted = Crypto.AES.decrypt(jsConfig.url, key, {
|
||||||
|
'iv': iv,
|
||||||
|
'mode': mode,
|
||||||
|
'padding': padding
|
||||||
|
});
|
||||||
|
const decryptedUrl = Crypto.enc.Utf8.stringify(decrypted);
|
||||||
|
return decryptedUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
function base64Decode(text) {
|
||||||
|
return Crypto.enc.Utf8.stringify(Crypto.enc.Base64.parse(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let data = JSON.parse(await request(HOST + '/index.php/ajax/suggest?mid=1&limit=50&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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1D5AxhtaWt1X29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgpkYXlqcwxqaW5qYTIGVXJpAl8OXzB4NDlhNA5fMHgxMTlkEl8weDQ3N2NjNhJfMHgzNDFiMmQSXzB4NDU5ZWU0El8weDUxNWE4MBJfMHgyZTBiYTgSXzB4M2JiMTUwEl8weDRiODJiMhJfMHgxNWRhNDASXzB4MzYxMTM5El8weDE2NmYxMxJfMHgyNmVhNDMSXzB4MTIxM2QxEl8weDJhNDZkMhJfMHg1MjkwZjASXzB4MTMwYmNjEl8weDI5NzU1NhJfMHgzNDQ3ZTESXzB4ZjM1NGNjIDVZYUQ2WUdPNWJxajVMdUIYY3NPeXdvekR1dz09EHc3Y253N004KHc0RUxRc0tOd3BNUXdyYzNidz09IHc0c1B3NnJEcWh2Q2tzT1cgSEhYQ2xzTzhWc082V2c9PShJbGpEaWdIQ3ZpekRud2xTY01LTxB3NzR4WW1ZPThMRkhDbzhLSndvNG93NmpDcXo4ZkRndkRvdz09KHc1WVR3N2ZDcnczQ3VNT0lWZz09EFU4T2l3N0k9IFRNTzRKSDVPdzRQRG9nPT0gRzhLTlhNT0R3NkxDbXc9PSBaTU8yd29qRHRnckRtOEtCEHc2SW53N2d4GHdwSlF3NlhDakE9PTB3N292YW5Kb1hHNGV3N1RDaUFuQ3A4S24gU2NPeXdxSmpiV1ZTdzRNPYABdzRrRHc3bkRrc09ZV2hURG9jTy9VY0swdzYvRG4xbGRGY09OTlZ0N0psUVdZY09PdzRERGpFMDNBenZEanc0WCB3NHZDdGpUQ2dNS3d3cGdqEGRrZDNXUT09EEtjS3dMOEszGHdwbFVRY09SYnNPVThETUtRdzVzUnc3NHJTc09wWU1LR1FYL0NpTUtISHdvVENxem5EdUhMQ3RjSzd3NFUvd29IQ2tNT3RHei9DcWxZPVBjRTBqUThPUks4T2RYOEtPUDI4dHdvdkNwOEtIQ2NLRHc0bE9hdz09EElzSzF3NWtwGEt4d1RFeGZDbXc9PRB3cExDcXpBMyB3cEhDc3pyRHJrbkN1TUtvKHdxbkRxc08zd29KZndwa3J3NWM9KFV3N0R1TU9kd3BwZndvTld3N1E9IHc2VXlCY0tTTE1LemFBdGsYdzd3c2IxUkhRSDg9OEVzS2V3NHdCdzdrcGU4T2lVTUtRVm1MQ2tRPT0QSFdIQ2c4T08wT3NLa3c1SXp3cTNEcXNPcXdxVEN2Zz09WHdvOWdmY08xdzd6Q2w4T0xKWFhEaThLOFpWMEdNOEtXd3AvQ3ZtbkRoak0zIFFzT2l3NlBDc01LQVNVYz0wUkdURHNTVjdjTU9lQnNLWEhISENxZz09GFhNTzRNbVJHdzRRPRBHY0thUjhPUCB3by9DcWdrN3c1NFB3NU09KEtjTzJJbW5Eb2NLbnc3Rk9Udz09GHc3TENzMmQ2dzVJPRhQQi9EaE1PMUlVTT0gYWNLK2ZNT0J3N3pEdlE9PTBYV2JDajhLZ3dwSEN0c0ttdzVIQ3ZBPT0Qd3BoUVh3PT1wTzFncHc0TVlGbVBDbXNLREJzT2hHaGx3RE1PSnc3NWV3cDdDamNLS3c0YkNyY09xdzVQRHJNSzkgd3BuRGc4S25UamtzUEE9PQhLQmRuEEFIM0NtOE9UIElsakRpZ0hDclNyRGtnPT0YSFhYQ2dzT1Z3cTQ9IE84SzF3NUEyd3FMRHJzT20YdzVZVHc2ZkRvZz09KHdwSWJ3N25EbnNLcFJCM0R2TUsxKEM4S0hlOE9XdzduQ25uSENrZz09EFNzT3Z3cW89OHdwWk93NjNDbUVqQ3NnN0RsY09UVHcvQ3VzT1gQUG1YQ2c4T3gwdzVOa2JNT3V3ckhDajhPOE1UdkRpY09zKEczdkNsTU81d3FVS3c0ZkRvUT09MHc1UUl3NnJEcWd6Q2dzT2NTOE96Snc9PRBKc0s5dzRnPShGOEtFdzRvdHc3MDNjOE8xYUE9PRBPRmpEaVE9PShGOEtGdzVvM3c2Y2ljOE85ZGc9PRh3NU5CVHNPUmY4S0IgYkNmQ3BNS1N3cXpDZ2NLehh3N3dzYjFSWlNIRVggNVlhRDZZR081bzJGNWJxdBBiRUFuVmc9PTB3cW5Edk1PVXdwTnl3cHdzdzRQQ3BBPT0gWWxZOXc3VkZCV1RDbU1PShBmTUsrYzhPVRB3N0ExdzZZZzB3cTdEc2NPRndvUlp3b01TdzVuQ3BNSzggdzdjeHc1QXR3ckZNd3BocDB3NXpDb0NyQ2tjS0t3cGcyd3BiRHVnPT0Yd3A3RGxNSzdVUT09MHc1UEN1WEp0d296RGhnakN2Q25EbVE9PSBHVzNDZ01PRHdwUUN3NDQ9GHdwN0N0VkRDcUE9PSB3NVZ1Vk1LYXc2RERyRFU9KHdwWENyU3N6dzRJYnc1OUl3NWs9EEVNS0R3NEV6GEpoWERqc09OUEU4PShEY0tKUnNPSnc1VENtM2JDaHNPdSB3NDVsUU1LVHc3bkRnRFk9EFhUckRnQT09KFpNTzJ3b2pEdGdyRG04S0JWWDA5GGZWYzl3NDlPS1cwPRhXOE93dzVUQ3JzS1YgdzVOeVZNS1R3NTdEcGpRPSh3cjFiVGNLUUs4S2xHc094Znc9PSA1WVM4NllPZjU3T1Y1WitWIGJsWXpiTUtJYU1LVEhjT0wYd3JuQ3NRN0R1Zz09KEJNSzl3cUxEaFNyQ284S3lXM009KHc3d3NiMVJGVEhFVHc1bkNqeE09kAFPMWdwdzRNWUZtUENtc0tEQnNPaEdnbDVETU9JdzY1Znc1ZkNrTU9FdzVIQ284Szd3NUREcmNPdXdxUENzV25Ebk1Pa3dyOUEQTXNLM3c1dz0Yd3BYQ3BUbkR2dz09IEJYSENrY09Dd3E0Wnc1az0QdzdiQ3YyUjMYRDhLSldzT1J3NjQ9EFQ4T293clZVkAFaY09wdzRzdUY4S1hjQWZDa2NLOE5NS1l3NWxlS3NPWXdxUkhKVWZDbkN0cWRzT3p3clE5d3FUQ2hFbkRuY0tsYmo3RGxBPT0gWU1POHdwekRoUUxEbkE9PShYY08rdzRMQ2dzS2VYRlBEa1E9PRh3NlF0dzc4NERFZz0QWkV3cXc0ST0gT24vQ284T3RWc08yUmlFPRBCOEt0d3JaaiBQSFhDbHNPOFZzTzZXZz09KHc1UjRmY081d28zQ2ljT0NPRDg9GFdjT3d3NGpDdGc9PRh3cDFGVzhPR2FjS0cIMHg0MwhTUmVQCDB4MjgIJilYUxJfMHgzYTczYWESXzB4NDlhNDBmEl8weDExOWRmNBJfMHgxN2ZjZmQIcHVzaApzaGlmdBJfMHhlNWJhZTcMUEVGSWlPDHBTYXVWSgx5Z1dwdUQMbnVJZ21VEl8weDNlOTE4MRJfMHg1YzFhYmYSXzB4M2QwYTdkEl8weDQ5MjRjZiZyZXR1cm4gKGZ1bmN0aW9uKCkgQHt9LmNvbnN0cnVjdG9yKCJyZXR1cm4gdGhpcyIpKCApBCk7DHdpbmRvd4IBQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0IYXRvYhJfMHgyMTFmYTISXzB4MzEzMDhhEl8weDVhMjljMxJfMHgyZmJmMGQSXzB4NGMwNjlkEl8weDVkZWY1YhJfMHg1OWFjMDcOcmVwbGFjZQxjaGFyQXQOaW5kZXhPZhhmcm9tQ2hhckNvZGUSXzB4MThhOWU1El8weGYwYzlhNBJfMHg0NDVhYTYSXzB4ZjFhOTA4El8weDI4Y2Q2YRJfMHgyMTE4NWYSXzB4M2U5ZmEwEl8weDQ5MjY2MRJfMHgxOWQyYmESXzB4MzE5MzJhEl8weDUwYTg2MwIlBDAwFGNoYXJDb2RlQXQKc2xpY2UkZGVjb2RlVVJJQ29tcG9uZW50El8weDU4MDljYxJfMHg1NGIxMWISXzB4M2QzY2EzEl8weDI4N2MxMxJfMHgxZThhNTDsAU1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQ7IHYyKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTkuMC40ODQ0LjUxIFNhZmFyaS81MzcuMzYUVXNlci1BZ2VudAZyZXEOaGVhZGVycwgweDc3CE1LYyEMbWV0aG9kCGRhdGEIMHgyMghQV3RPCDB4NjYIWClGbRRzdGFydHNXaXRoAnsKcGFyc2UIMHg0NQhhZXNYCDB4MTcIMHgyNxJfMHg0M2Q0NjgIMHg1YwhFVG9iCnN0eXBlEl8weDJlMjBlNhJfMHgzZTYyNjISXzB4MzQ0MGU5El8weDQ4OWM4MxJfMHg1YmUwZDASXzB4MTk1NDc4El8weDVlYzM0ZhJfMHg0MGViYTQSXzB4OGMwMjM0El8weDE5NTMxNRJfMHgxMzgwMzgSXzB4NGQyZmU3El8weDZhYWUxMxJfMHgzNTAyOWQSXzB4M2U1OGI4CDB4MzQIKnZdMQgweDcyCDldMlkIMHgzYgg3Z1NeCDB4MmMIMHg2MggweDQ5CDFwUyUOdHlwZV9pZAgweDVmEnR5cGVfbmFtZQYweDQIakBZawgweDU5CEhOUCYFe3yLVwgweDU4CDB4NzMIM0k2QQUwVzpTCGFyZWEIMHgxMghSbCVBBe2LAIoIbGFuZwgweDY4BZJjj14GMHhkCEhAczQIMHgzYQh3dWRIBXRe404IeWVhcggweDNjCGxpemUGa2V5CGluaXQIMHg0OAhCc3lZCDB4NTUIJkp6ZAVoUeiQBjB4YwgweDRjCE1KZ3gCbgJ2BjB4MQgweDM1CDB4NmUII2tXdwgweDJmCCFkYVUOZml
Line truncated
|
||||||
@@ -0,0 +1,144 @@
|
|||||||
|
import { Crypto, load, _, jinja2 } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'mimiju';
|
||||||
|
let url = 'https://mimiju.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,
|
||||||
|
'Referer': url
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [{"type_id":20,"type_name":"短剧"}, {"type_id":21,"type_name":"电视剧"}];
|
||||||
|
let filterObj = {
|
||||||
|
"20": [{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
|
||||||
|
"21": [{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]};
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0 || typeof(pg) == 'undefined') pg = 1;
|
||||||
|
const link = url + '/vodshow/' + tid + '--' + (extend.by || 'time') + '---' + '---' + pg + '---' + '.html';//https://mimiju.com/vodshow/20--hits---------.html
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const items = $('ul.hl-vod-list > li');
|
||||||
|
let videos = _.map(items, (item) => {
|
||||||
|
const it = $(item).find('a:first')[0];
|
||||||
|
const remarks = $($(item).find('span.hl-lc-1')[0]).text().trim();
|
||||||
|
return {
|
||||||
|
vod_id: it.attribs.href.replace(/.*?\/voddetail\/(.*).html/g, '$1'),
|
||||||
|
vod_name: it.attribs.title,
|
||||||
|
vod_pic: url + it.attribs['data-original'],
|
||||||
|
vod_remarks: remarks || '',};
|
||||||
|
});
|
||||||
|
const hasMore = $('ul.hl-page-wrap > li > a >span: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,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
var html = await request(url + '/voddetail/' + 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 = $('ul.hl-from-list > li >span');
|
||||||
|
var playlists = $('ul#hl-plays-list');
|
||||||
|
_.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.replace(/\/vodplay\/(.*).html/g, '$1');
|
||||||
|
|
||||||
|
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) {
|
||||||
|
const link = url + '/vodplay/' + id + '.html';
|
||||||
|
const html = await request(link);
|
||||||
|
const $ = load(html);
|
||||||
|
const js = JSON.parse($('script:contains(player_a)').html().replace('var player_aaaa=', ''));
|
||||||
|
const playUrl = js.url;
|
||||||
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DBBBhtaW5vX29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgxDcnlwdG8KZGF5anMMamluamEyBlVyaQJfDl8weDUyYzgOXzB4MmJjOBJfMHgzMTQwNTQSXzB4NTZlMjY2El8weDNjMzhlYxJfMHg1ZWVmYmQSXzB4MzAxN2EwEl8weDVkNWE4MxJfMHg1ODlkNmQSXzB4NWYzYTRjEl8weDE3MTEyZBJfMHhjNzNkZmQSXzB4MTcwNGY0El8weDViMmIzNhJfMHg2OGFjNDcSXzB4MWMwNjYyEl8weDM1Yjc1OBJfMHgyYWViMTcSXzB4MjA4ODI0El8weDU4ZGEyZRJfMHgxNmQzYTcSXzB4M2VhNjJjEl8weDMwNDhlORJfMHhkM2Q3YWQSXzB4MWVhN2UzEl8weDMxYzY0NRJfMHgxNDJhNTQSXzB4MzEyMmEwEl8weDFiZmFiNxJfMHg0YTEwNzISXzB4MzMzMWZkEl8weDE5NjY3OBJfMHgyZDg0M2USXzB4MTE1OTEyEl8weDQyYjgzNhJfMHhhZTkzZGQSXzB4MzAyZjc0El8weDM5MjRiORB2b2RfeWVhcg52b2Rfc3ViDHlaU0RLVRZwbGF5ZXJfaW5mbxh2b2RfcGxheV91cmw4L2FwcHRvdjUvdjEvdXNlci9nZXRVc2VySW5mbxRyZXBsYWNlQWxsEnN0cmluZ2lmeRJzdWJzdHJpbmcQTm53OUFjT08IdHJpbQhlYWNoFnZvZF9jb250ZW50CGE5VWUIeFsjJiB3NHZDdDhLRHdvekNsZz09FnZvZF9yZW1hcmtzCnNsaWNlDGh0dHBzOgxleHRlbmQIa2V5cxRjaGFyQ29kZUF0BjB4NAhkYXRhBjB4NUomcGFnZVNpemU9MjEmX19wbGF0Zm9ybT1hbmRyb2lkJnNpZ249EnZvZF9hY3RvcgwmcGFnZT0IdzcxZg5mb3JFYWNoCHB1c2gQL2FwcHRvdjUKc2NvcmUGa2V5SEswUENueFRDaDhLSkk4S1FWTU9udzdIQ29qL0NxUURDdWc9PRRzdGFydHNXaXRoEHBhZ2VTaXplCGNlaWwISGdNMw5oZWFkZXJzBmVuYwYweDM0L2FwcHRvdjUvdjEvdm9kL2dldFZvZD9pZD0Ic2tleQp1c2VyMQhoaXRzFnRvVXBwZXJDYXNlMi9hcHB0b3Y1L3YxL3VzZXIvcmVnaXN0ZXJYdzVURGg4S2d3NEhDdWNLdlIySERyejBkd3FQQ3NNT2F3NEV6d28xMHdxaz0MS1FCZ1hCCGxhbmcMQmFzZTY0DmNvbnRlbnQMZG9tYWluKmh0dHBzOi8vcG8uY2F0dm9kLnRvcAhwYWdlCE4pbmwcaGFzT3duUHJvcGVydHkWdG9Mb3dlckNhc2UMY2hhckF0CGUwaEUSeWVhcl9saXN0DGlMUXhCTApwYXJzZQ52b2RfcGljci9hcHB0b3Y1L3YxL2NvbmZpZy9nZXQ/cD1hbmRyb2lkJl9fcGxhdGZvcm09YW5kcm9pZCZzaWduPSZyZXR1cm4gKGZ1bmN0aW9uKCkgCnN0eXBlBjB4MQxiRWZLa3I4YkVUQ244T2VSOEtBd28vQ2p4ckR0Q0REclZnPQhodHRwCm9yZGVyDnJlZmVyZXIgWjN3MUJNS1lLZ05hdzZZPQ51c2VyX2lkDFNRamV0URR1c2VyLWFnZW50DmluZGV4T2YIdXJscwxlcE1YeGQSdHlwZV9uYW1lDmRldmljZTEadm9kX3BsYXlfbGlzdAhzaWduDmNvbnNvbGUOIEJ1aWxkLwpzaGlmdAg5bVZBDnJlcGxhY2UGMHgwEHZvZF9uYW1lBm1hcHBlVVhDbWNLb3c3WENpbVZXWEVuQ3BYbkRuOE9vTk1LWndxakNoc09IVUI0Q0tsWERuc09ld3BaNxh2b2RfZGlyZWN0b3IIYXJlYRJ2b2RfY2xhc3MaZ2V0X2hvbWVfY2F0ZQptb2RlbAhVdGY4DHZvZF9pZAZwd2QOYW5kcm9pZApsYWJlbDImX19wbGF0Zm9ybT1hbmRyb2lkJnNpZ249emFiYWNkZWZnaGprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkKdG90YWwIdGltZQhsYUNyOC9hcHB0b3Y1L3YxL3NlYXJjaC9saXN0cz93ZD2AAWFjS3FTc08wUzNmRHVsekNtQ1hEaDhLRmNNS3J3cExEbXNPc1pjS3didzFld29yRG9UWTBLVWpDblgvQ2d3PT0IeWVhcgp0b2tlbgYweDIyP19fcGxhdGZvcm09YW5kcm9pZCZzaWduPQYkJCQIYXRvYg50eXBlX2lkMHdxODZ3NzNDbU1PcEhjT2V3NkhDdXl3PQhjYXRlDmVuYWJsZWQIamhtcxJhcmVhX2xpc3QGdXJsDHZhUk1jRQ5pc0VtcHR5DGNvbmZpZxJsYW5nX2xpc3QGIjoiQHt9LmNvbnN0cnVjdG9yKCJyZXR1cm4gdGhpcyIpKCApHEhVQVdFSSBNYXRlIDQwDnJlbGVhc2WCAUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89DHhJVVlacghtaW5vBmxvZxRFTkNSWVBUSU9OGGZyb21DaGFyQ29kZQgweDY2eEVVakNpbWRwdzZWZ1FzT3R3N2ZDZ2NLRVdXRlBNQW91dzdFRnc3dkN0OE8vZmd3dXc2WVBJTUtTd3B0dggweDIyCDB4NGQIMHgzYwgweDkwBjB4YwgweDIwCDB4N2IIMHg4NAgweDdhCDB4ODYIMHg0YggweDUwCDRoKGoIMHgzOQgweDU5CG9wRioIMHg0OBJfMHg1YjBmMTISXzB4NTJjODNlEl8weDJiYzhmYRJfMHg0MDA3MzkSXzB4MWQxOGI0El8weDIzODgwNRJfMHgxY2I4ZWMSXzB4NTJkNjlkCDB4OGMIMHgzNhJfMHgxMDQxNGYSXzB4NTY2OWU3El8weDIxMDIzMhJfMHgzODA2NzIQXzB4ZTU1ZWMIMHgyMQgweDJmCDB4MWEGMHhkEl8weDVhOWQ5MhJfMHg0Yzc3OTYSXzB4ZmM4NjAyCDB4NjQIMHg1MxJfMHgyY2VmYTMSXzB4MTIwNmZhCDB4MWUIMHg2MQQpOwx3aW5kb3cSXzB4M2NlOWU5El8weDUzNDczNRJfMHg1MGZiNzESXzB4MjUwZmFmEl8weDU3MTY0MRJfMHg0ZTJkOWMQXzB4Y2JiNDgIMHgxNwgweDJkCDB4NjkSXzB4Mjk2NDYzEl8weDU3ODgxMhJfMHg0ZmMyOTcSXzB4MmE3YWI2El8weDhmMzRlOBJfMHg0MTUyYmISXzB4M2M1YmI1El8weGMyZDg2YhJfMHgxZmQ5MjcSXzB4MTM1MjVjEl8weDQyNzkxYQgweDI3AiUEMDAIMHg4MwgweDczCDB4N2YkZGVjb2RlVVJJQ29tcG9uZW50El8weDQxMjgyNRJfMHgyOTYwYWESXzB4NWZkM2Y1El8weDFjMDNjZAJ7AiwCfQZyZXEIMHgxMggweDhkCHBvc3QMbWV0aG9kCDB4MzMGYWN0CDB4MWIGYXJnDnRpbWVvdXQIMHgxMBJfMHgzNDAwYjQSXzB4NTQ1MTk5AiIEIjoIMHg2MBJfMHg0MmFlZDESXzB4NWEwOThjEl8weDM3OWQxYRJfMHg1OGI0OWESXzB4NWQ2YmViEl8weDI0MDg1YxJfMHgzMTAzZjUUVXNlci1BZ2VudAgweDRmEmZvcm0tZGF0YRBwb3N0VHlwZQgweDY4CGFlc1gIMHg4NRJfMHgzMzJlOTcSXzB4MjZhY2I1El8weDRhZGJlZhJfMHgyZjhjNGESXzB4MzliYmM4El8weDU4M2IxMRJfMHgzNTIyZTgSXzB4MWU1OTFmEl8weDI3Y2ZiYxJfMHg1NzBjMWESXzB4MWZjZDZkEl8weDNjYjQwYRJfMHgyNTc4MGQSXzB4MTMwM2NlEl8weDQyYmQxZRJfMHgzZTI3Y2MSXzB4MWI2MGM0El8weDIzMzM4ZhJfMHgzOGRmMjAGMHg3CDB4MWYIMHg1NggweDdjGHc3N0R2c085d3E5VggweDc2CDB4MjkIMHgzNwgweDE4CDB4MTQIMHg4YQgweDM0CDB4MzEKbG9jYWwIMHg3NAgweDVkBGlkCDB4MTYEdWFARGFsdmlrLzIuMS4wIChMaW51eDsgVTsgQW5kcm9pZCAIMHg2MwQ7IAgweDQxCDB4MzUOYnVpbGRJZAIpCDB4NzIIMHgxMQgweDU4CDB4NWUIMHgxZBJfMHgyN2IwOTMSXzB4NDliNGM2El8weDM1MGU3NhJfMHgyZGJmMTUSXzB4M2UwNWY1El8weDVjODI2MxJfMHgzZmFmMGUSXzB4NGM3MjgwEl8weDU5OTFkNggweDVjCDB4NmMIMHg2NQgweDJiEl8weDI2YWRjMBJfMHhkNjk4NmISXzB4NDJjMWNjEl8weDI2ZTdlMhJfMHg1NDA1N2YSXzB4Mzg2ZjVhEl8weDQ1ZDBkZBJfMHgyZjk1YTMSXzB4YmI4NDQzEl8weDE5MWNmZhJfMHgxZTMyNDgSXzB4NTJhZjBiCDB4MzgSXzB4NGI4NjcyEl8weDM1NWEzNxJfMHg0MDM3NWESXzB4NDNjODU3El8weDMzNmI0NhJfMHg0YzAwZWMSXzB4MjI5NTExEl8weDM4NjMzZRJfMHg0OWFhOGQSXzB4MjczY2M4El8weDExNDNmZBJfMHg0ZWI4ZDkSXzB4MTc4MTczEl8weDNhMjNkYxJfMHgzZmRlMjcSXzB4NDU0NjUwEl8weDQzMTAyYhJfMHgzZjNlMzUSXzB4MjE5Njg
Line truncated
|
||||||
+200
@@ -0,0 +1,200 @@
|
|||||||
|
import { Crypto, _ } from './lib/cat.js';
|
||||||
|
|
||||||
|
let key = 'mtsp';
|
||||||
|
let main = 'https://mt7886.sbs/';
|
||||||
|
let url = '';
|
||||||
|
let siteKey = '';
|
||||||
|
let siteType = 0;
|
||||||
|
|
||||||
|
let searchKeys = [];
|
||||||
|
|
||||||
|
let tags = 'JTVCJTIyJUU2JUI1JTkzJUU1JUFGJTg2JUU2JUJGJTgwJUU2JTgzJTg1JTIyJTJDJTIyJUU2JTkwJTlDJUU2JTlGJUE1JUU1JUFFJTk4JTIyJTJDJTIyJUU1JUE1JUIzJUU0JUJCJTg2JTIyJTJDJTIyJUU1JTkwJThFJUU1JTg1JUE1JTIyJTJDJTIyJUU3JUJFJThFJUU0JUI5JUIzJUU1JUI3JUE4JUU4JTgzJUI4JTIyJTJDJTIyJUU1JThGJUEzJUU0JUJBJUE0JUU1JThGJUEzJUU3JTg4JTg2JTIyJTJDJTIyJUU1JTg2JTg1JUU1JUIwJTg0JTIyJTJDJTIyJUU1JUE1JUIzJUU0JUI4JThBJTIyJTJDJTIyJUU3JUJFJThFJUU4JTg1JUJGJTIyJTJDJTIyJUU3JUIyJUJFJUU1JTkzJTgxJTIyJTJDJTIyJUU0JUI4JTlEJUU4JUEyJTlDJTIyJTJDJTIyJUU1JUIwJTkxJUU1JUE1JUIzJTIyJTJDJTIyJUU1JTg4JUI2JUU2JTlDJThEJTIyJTJDJTIyJUU3JUJFJUE0UCUyMiUyQyUyMiVFNyU5OSVCRCVFOCU5OSU4RSUyMiUyQyUyMiVFNiU4MyU4NSVFOCVCNiVBMyVFOCVBRiVCMSVFNiU4MyU5MSUyMiUyQyUyMiVFOSU4MSU5MyVFNSU4NSVCNyUyMiUyQyUyMiVFNSVBNSVCMyVFNyVBNSU5RSUyMiUyQyUyMiVFOSVCQSVCQiVFOCVCMSU4NiVFNCVCQyVBMCVFNSVBQSU5MiUyMiUyQyUyMiVFOSVBMiU5QyVFNSVCMCU4NCUyMiUyQyUyMiVFNSVBRCVBNiVFNyU5NCU5RiUyMiUyQyUyMiVFNCVCQSVCQSVFNSVBNiVCQiUyMiUyQyUyMiVFNyVCNCVBMCVFNCVCQSVCQSUyMiUyQyUyMiVFNiVCNSVCNCVFNSVBRSVBNCUyMiUyQyUyMiVFOSU4NSU5MiVFNSVCQSU5NyUyMiUyQyUyMiVFNyU4NiU5RiVFNSVBNSVCMyUyMiUyQyUyMiVFOCU4NyVBQSVFNiU4QiU4RCUyMiUyQyUyMiVFNSVCMCU5MSVFNSVBNiU4NyUyMiUyQyUyMiVFNSU4OSVBNyVFNiU4MyU4NSUyMiUyQyUyMiVFNCVCOSVCMyVFNCVCQSVBNCUyMiUyQyUyMiVFNiU4OCVCNyVFNSVBNCU5NiUyMiUyQyUyMlNXQUclMjIlMkMlMjIlRTUlQTUlQjMlRTQlQjglQkIlRTYlOTIlQUQlMjIlMkMlMjIlRTQlQjglQUQlRTYlOTYlODclRTUlQUQlOTclRTUlQjklOTUlMjIlMkMlMjIlRTQlQjklQjElRTQlQkMlQTYlMjIlMkMlMjIlRTglQjAlODMlRTYlOTUlOTklMjIlMkMlMjIlRTYlOEQlODYlRTclQkIlOTElMjIlMkMlMjIlRTYlQTglQTElRTclODklQjklMjIlMkMlMjIlRTclOUIlQjQlRTYlOTIlQUQlMjIlMkMlMjI5MSVFNSU4OCVCNiVFNyU4OSU4NyVFNSU4RSU4MiUyMiUyQyUyMiVFOSU4NyU4RSVFNiU4OCU5OCUyMiUyQyUyMiVFNSU4MSVCNyVFNiU4QiU4RCUyMiUyQyUyMiVFNSU4QiVCRSVFNiU5MCVBRCUyMiUyQyUyMiVFNiU5MSU4NCVFNSU4MyU4RiVFNSVBNCVCNCUyMiUyQyUyMiVFNSU4NyVCQSVFOCVCRCVBOCUyMiUyQyUyMiVFNyVCRCU5MSVFNyVCQSVBMiUyMiUyQyUyMiVFNSVCNyVBOCVFNiVBMCVCOSUyMiUyQyUyMiVFNiVBQyVBNyVFNyVCRSU4RSUyMiUyQyUyMmNvc3BsYXklMjIlMkMlMjIlRTUlQkMlQkElRTUlQTUlQjglMjIlMkMlMjIlRTUlQTQlQTklRTclQkUlOEUlRTQlQkMlQTAlRTUlQUElOTIlMjIlMkMlMjIlRTYlOEMlODklRTYlOTElQTklMjIlMkMlMjIzRCVFNSU4QSVBOCVFNiVCQyVBQiUyMiUyQyUyMiVFOCU5MCU5RCVFOCU4RSU4OSUyMiUyQyUyMiVFNSVBNyU5MCVFNSVBNiVCOSVFOCU4QSVCMSUyMiUyQyUyMiVFNSU4QSU5RSVFNSU4NSVBQyVFNSVBRSVBNCUyMiUyQyUyMiVFOCVCRCVBNiVFOSU5QyU4NyUyMiUyQyUyMiVFNSU4MSVCNyVFNiU4MyU4NSUyMiUyQyUyMiVFNiU5RSU5QyVFNSU4NiVCQiVFNCVCQyVBMCVFNSVBQSU5MiUyMiUyQyUyMiVFOCU4MiU5QiVFNCVCQSVBNCUyMiUyQyUyMlNNJTIyJTJDJTIyJUU5JTg3JThEJUU1JThGJUEzJTIyJTJDJTIyJUU2JUIzJUIzJUU4JUExJUEzJTIyJTJDJTIyU1BBJTIyJTJDJTIyJUU2JThFJUEyJUU4JThBJUIxJTIyJTJDJTIyJUU4JUI2JUIzJUU0JUJBJUE0JTIyJTJDJTIyJUU3JUE5JUJBJUU1JUE3JTkwJTIyJTJDJTIyJUU4JTlDJTlDJUU2JUExJTgzJUU0JUJDJUEwJUU1JUFBJTkyJTIyJTJDJTIyJUU2JTk1JTk5JUU1JUI4JTg4JTIyJTJDJTIyJUU2JUJEJUFFJUU1JTkwJUI5JTIyJTJDJTIyJUU5JTk3JUE4JUU0JUJBJThCJUU0JUJCJUI2JTIyJTJDJTIyJUU1JUE1JUIzJUU1JTkwJThDJTIyJTJDJTIyJUU2JThBJTgwJUU1JUI4JTg4JTIyJTJDJTIyJUU3JUIyJUJFJUU0JUI4JTlDJUU0JUJDJUEwJUU1JUFBJTkyJTIyJTJDJTIyJUU2JTk1JTk5JUU1JUFFJUE0JTIyJTJDJTIyJUU4JUJGJUI3JUU1JUE1JUI4JTIyJTJDJTIyJUU2JThEJUEyJUU1JUE2JUJCJTIyJTJDJTIyS1RWJTIyJTJDJTIyJUU2JTk4JTlGJUU3JUE5JUJBJUU0JUJDJUEwJUU1JUFBJTkyJTIyJTJDJTIyJUU2JThBJUE0JUU1JUEzJUFCJTIyJTJDJTIyJUU2JUFGJThEJUU1JUE1JUIzJTIyJTVE';
|
||||||
|
const UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36';
|
||||||
|
async function request(reqUrl, agentSp) {
|
||||||
|
const res = await req(reqUrl, {
|
||||||
|
headers: {
|
||||||
|
'User-Agent': agentSp || UA,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return res.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cfg = {skey: siteKey, ext: extend}
|
||||||
|
async function init(cfg) {
|
||||||
|
siteKey = cfg.skey;
|
||||||
|
siteType = cfg.stype;
|
||||||
|
// 获取url
|
||||||
|
let html = await request(main);
|
||||||
|
url = html.match(/location\.href="(.*)"/)[1].replace('https', 'http');
|
||||||
|
tags = JSON.parse(decodeURIComponent(base64Decode(tags)));
|
||||||
|
searchKeys = cfg.tags || [];
|
||||||
|
let mainJs = await request(url + '/main.js');
|
||||||
|
url = mainJs.match(/apiurl = '(.*)'/)[1].replace('https', 'http');
|
||||||
|
}
|
||||||
|
|
||||||
|
async function home(filter) {
|
||||||
|
let classes = [];
|
||||||
|
let filterObj = {};
|
||||||
|
let tagIdx = 1;
|
||||||
|
_.each(_.chunk(tags, 24), (array) => {
|
||||||
|
const subs = _.chunk(array, 8);
|
||||||
|
let tid = '';
|
||||||
|
let init = '';
|
||||||
|
for (let i = 0; i < subs.length; i++) {
|
||||||
|
let tt = {
|
||||||
|
key: 'tag',
|
||||||
|
name: '',
|
||||||
|
init: '',
|
||||||
|
value: _.map(subs[i], (e) => {
|
||||||
|
return { n: e, v: e };
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
if (i == 0) {
|
||||||
|
init = tt.value[0].v;
|
||||||
|
tt['init'] = init;
|
||||||
|
tid = tt.value[0].v;
|
||||||
|
filterObj[tid] = [tt];
|
||||||
|
} else {
|
||||||
|
tt['init'] = init;
|
||||||
|
filterObj[tid].push(tt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
classes.push({
|
||||||
|
type_id: tid,
|
||||||
|
type_name: '综合' + tagIdx,
|
||||||
|
land: 1,
|
||||||
|
});
|
||||||
|
tagIdx++;
|
||||||
|
});
|
||||||
|
|
||||||
|
_.each(searchKeys, (s) => {
|
||||||
|
classes.push({
|
||||||
|
type_id: 'sc_' + s,
|
||||||
|
type_name: s,
|
||||||
|
land: 1,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
class: classes,
|
||||||
|
filters: filterObj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function homeVod() {
|
||||||
|
return '{}';
|
||||||
|
}
|
||||||
|
|
||||||
|
async function category(tid, pg, filter, extend) {
|
||||||
|
if (pg <= 0) pg = 1;
|
||||||
|
let link = url;
|
||||||
|
if (tid.startsWith('sc_')) {
|
||||||
|
link = link + '/search?q=' + encodeURIComponent(tid.substr(3)) + '&page=' + pg + '&size=16';
|
||||||
|
} else {
|
||||||
|
link = link + '/vodList?&tag=' + (extend.tag || tid) + '&page=' + pg + '&size=16';
|
||||||
|
}
|
||||||
|
const data = decrypt(JSON.parse(await request(link)).data);
|
||||||
|
let videos = [];
|
||||||
|
for (const vod of data.movies) {
|
||||||
|
if (!vod.id) continue;
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.id,
|
||||||
|
vod_name: vod.name,
|
||||||
|
vod_pic: vod.thumb,
|
||||||
|
vod_remarks: vod.views,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(data.page),
|
||||||
|
pagecount: _.ceil(data.totals / 16),
|
||||||
|
limit: 16,
|
||||||
|
total: data.totals,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function detail(id) {
|
||||||
|
const link = url + '/vodDetail?id=' + id;
|
||||||
|
const data = decrypt(JSON.parse(await request(link)).data).info;
|
||||||
|
let desc = data.name + '\n';
|
||||||
|
if (data.views) {
|
||||||
|
desc += '观看次数:' + data.views + '\n';
|
||||||
|
}
|
||||||
|
let vod = {
|
||||||
|
vod_id: id,
|
||||||
|
vod_name: data.name,
|
||||||
|
vod_pic: data.thumb,
|
||||||
|
type_name: (data.tag || []).join(','),
|
||||||
|
vod_year: data.date,
|
||||||
|
vod_content: desc,
|
||||||
|
};
|
||||||
|
vod.vod_play_from = 'm3u8';
|
||||||
|
let urls = [];
|
||||||
|
if (data.m3u8) {
|
||||||
|
urls.push('主力$' + data.m3u8);
|
||||||
|
}
|
||||||
|
if (data.m3u8bak) {
|
||||||
|
urls.push('备用$' + data.m3u8bak);
|
||||||
|
}
|
||||||
|
vod.vod_play_url = urls.join('#');
|
||||||
|
return JSON.stringify({
|
||||||
|
list: [vod],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function proxy(segments, headers) {}
|
||||||
|
|
||||||
|
async function play(flag, id, flags) {
|
||||||
|
return JSON.stringify({
|
||||||
|
parse: 0,
|
||||||
|
url: id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function search(wd, quick, pg) {
|
||||||
|
let page = pg || 1;
|
||||||
|
if (page == 0) page = 1;
|
||||||
|
let videos = [];
|
||||||
|
let link = url + '/search?q=' + encodeURIComponent(wd) + '&page=' + page + '&size=16';
|
||||||
|
const data = decrypt(JSON.parse(await request(link)).data);
|
||||||
|
for (const vod of data.movies) {
|
||||||
|
if (!vod.id) continue;
|
||||||
|
videos.push({
|
||||||
|
vod_id: vod.id,
|
||||||
|
vod_name: vod.name,
|
||||||
|
vod_pic: vod.thumb,
|
||||||
|
vod_remarks: vod.views,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return JSON.stringify({
|
||||||
|
page: parseInt(data.page),
|
||||||
|
pagecount: _.ceil(data.totals / 16),
|
||||||
|
land: 1,
|
||||||
|
list: videos,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function decrypt(content) {
|
||||||
|
return JSON.parse(aesX('AES/CBC/PKCS7', false, content, true, 'F31F2A75FBF94099', '12345BCA901ER456', false));
|
||||||
|
}
|
||||||
|
|
||||||
|
function base64Encode(text) {
|
||||||
|
return Crypto.enc.Base64.stringify(Crypto.enc.Utf8.parse(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
function base64Decode(text) {
|
||||||
|
return Crypto.enc.Utf8.stringify(Crypto.enc.Base64.parse(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
export function __jsEvalReturn() {
|
||||||
|
return {
|
||||||
|
init: init,
|
||||||
|
home: home,
|
||||||
|
homeVod: homeVod,
|
||||||
|
category: category,
|
||||||
|
detail: detail,
|
||||||
|
play: play,
|
||||||
|
search: search,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,265 @@
|
|||||||
|
// 一级&搜索页 直向改横向 --> 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 = "https://ghproxy.net/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/txt/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:'周慧敏MV4Line truncated
|
||||||
|
演唱会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:'YLine truncated
|
||||||
|
白噪音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军武Line truncated
|
||||||
|
说案:[{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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//bbQ0FUT1DEARhteXNwX29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybghsb2FkAl8Ga2V5CEhPU1QOc2l0ZUtleRBzaXRlVHlwZRJNT0JJTEVfVUEOcmVxdWVzdAhpbml0CGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxkZXRhaWwIcGxheQxzZWFyY2gJgoaBhsaJkZgkaHR0cHM6Ly9saWJ2aW8udG9w9gJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTE7IE0yMDA3SjNTQyBCdWlsZC9SS1ExLjIwMDgyNi4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzcuMC4zODY1LjEyMCBNUVFCcm93c2VyLzYuMiBUQlMvMDQ1NzE0IE1vYmlsZSBTYWZhcmkvNTM3LjM2DHJlcVVybA5hZ2VudFNwBnJlcwZyZXEMbWV0aG9kFFVzZXItQWdlbnQOUmVmZXJlcg5oZWFkZXJzDmNvbnRlbnQGY2ZnCHNrZXkKc3R5cGUMZmlsdGVyCGh0bWwCJBZjbGFzc19wYXJzZQ5jbGFzc2VzEmZpbHRlck9ialJ1bC5zdHVpLWhlYWRlcl9fbWVudSA+IGxpID4gYVtocmVmKj10eXBlXQZtYXAIYXJlYQUwVzpTBWhR6JACbgJ2CS1O/VYnWUaWCS1O/VaZmS9uCS1O/VbwU35uBY5//VYF1Wz9VgXxgv1WBeVlLGcF6Zf9VgW3X/1WBfBs/VYFcFOmXgcPYSdZKVIHf4ntc1lyB6BS/2InWQV2UdZOCHllYXIFdF79TghsYW5nBe2LAIoF/VbtiwXxgu2LBaR87YsH/ZVXU+2LBemX7YsF5WXtiwXVbO2LBbdf7YsFdlGDWwRieQWSY49eBfZl9JUIdGltZQW6ThRsCGhpdHMFxIsGUgpzY29yZQewZaBSYVcFLU79VgUna45/EnN0cmluZ2lmeQ5maWx0ZXJzBmNscwx0eXBlSWQOYXR0cmlicwhocmVmEnN1YnN0cmluZxZsYXN0SW5kZXhPZgIvDnJlcGxhY2UKLmh0bWwOdHlwZV9pZBBjaGlsZHJlbghkYXRhEnR5cGVfbmFtZQhsaW5rCml0ZW1zDHZpZGVvczYvc2hvdy8xLS1oaXRzLS0tLS0tLS0tLmh0bWwodWwuc3R1aS12b2RsaXN0ID4gbGkIbGlzdAhpdGVtAmEOcmVtYXJrcwhmaW5kDmE6Zmlyc3Qac3Bhbi5waWMtdGV4dAh0ZXh0CHRyaW0EJDEMdm9kX2lkCnRpdGxlEHZvZF9uYW1lGmRhdGEtb3JpZ2luYWwOdm9kX3BpYxZ2b2RfcmVtYXJrcwZ0aWQEcGcMZXh0ZW5kDmhhc01vcmUOcGdDb3VudAwvc2hvdy8CLQQtLQgtLS0tBi0tLVN1AGwALgBzAHQAdQBpAC0AcABhAGcAZQBfAF8AaQB0AGUAbQAgAD4AIABsAGkAIAA+ACAAYQA6AGMAbwBuAHQAYQBpAG4AcwAoAAtOAE51mCkAEHBhcnNlSW50CHBhZ2UScGFnZWNvdW50CmxpbWl0CnRvdGFsBGlkBnZvZA5wbGF5TWFwCHRhYnMScGxheWxpc3RzCHVybHMYdm9kX3BsYXlfdXJsEC9kZXRhaWwvEGgxOmZpcnN0Pi5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOmZpcnN0IGEQdm9kX3R5cGVILnN0dWktY29udGVudF9fZGV0YWlsIHA6bnRoLWNoaWxkKDMpBztOFG8a/xJ2b2RfYWN0b3I8LnN0dWktY29udGVudF9fdGh1bWIgaW1nOmZpcnN0CGF0dHJILnN0dWktY29udGVudF9fZGV0YWlsIHA6bnRoLWNoaWxkKDUpJnNwYW4uZGV0YWlsLWNvbnRlbnQWdm9kX2NvbnRlbnRWZGl2LnN0dWktcGFubmVsX19oZWFkID4gaDNbY2xhc3MqPWljb25mb250XTJ1bC5zdHVpLWNvbnRlbnRfX3BsYXlsaXN0CGVhY2gIa2V5cwYkJCQadm9kX3BsYXlfZnJvbQZ0YWICaQRpdA5wbGF5VXJsHGhhc093blByb3BlcnR5CHB1c2gMdXJsaXN0AiMIZmxhZwptaHRtbAhqc29uBnVybAZpZGQGbmlkCnBhdXJsDG1wYXVybAhwdXJsEG1wbGF5VXJsCm1hdGNoCnBhcnNlEmxpbmtfbmV4dB4vc3RhdGljL3BsYXllci8GLmpzDCZuZXh0PQgmaWQ9CiZuaWQ9DmNvbnNvbGUKZGVidWcsbGlidmlvIG1wbGF5VXJs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
Line truncated
|
||||||
Reference in new issue
Block a user