203 lines
5.1 KiB
JavaScript
203 lines
5.1 KiB
JavaScript
import { Crypto, load, _ } from './lib/cat.js';
|
||
|
||
//let siteUrl = 'https://m.xiangdao.me';
|
||
let siteUrl ='https://v.nmvod.cn/api.php';
|
||
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';
|
||
let headers = {
|
||
'User-Agent': MOBILE_UA,
|
||
'Referer': siteUrl + '/'
|
||
};
|
||
|
||
let jxUrl = ['https://api.cnmcom.com/webcloud/nmsvip.php?url=','https://api.cnmcom.com/webcloud/nmsssvip.php?vid=', 'https://api.cnmcom.com/webcloud/nmssvip.php?url=', 'https://api.cnmcom.com/webcloud/m3u8.php?url='];
|
||
async function request(reqUrl, postData) {
|
||
|
||
let res = await req(reqUrl, {
|
||
method: 'post',
|
||
headers: headers,
|
||
data: postData || {},
|
||
postType: 'form',
|
||
});
|
||
|
||
let content = res.content;
|
||
return content;
|
||
}
|
||
|
||
async function init(cfg) {
|
||
siteKey = cfg.skey;
|
||
siteType = cfg.stype;
|
||
if (cfg.ext) {
|
||
siteUrl = cfg.ext;
|
||
}
|
||
}
|
||
|
||
async function home(filter) {
|
||
let classes = [{
|
||
type_id: '3778678',
|
||
type_name: '热歌榜',
|
||
},{
|
||
type_id: '19723756',
|
||
type_name: '飙升榜',
|
||
},{
|
||
type_id: '3779629',
|
||
type_name: '新歌榜',
|
||
},{
|
||
type_id: '2884035',
|
||
type_name: '原创歌曲榜',
|
||
},{
|
||
type_id: '5213356842',
|
||
type_name: '新说唱热歌榜',
|
||
},{
|
||
type_id: '991319590',
|
||
type_name: '说唱榜',
|
||
},{
|
||
type_id: '2250011882',
|
||
type_name: '抖音排行榜',
|
||
},{
|
||
type_id: '745956260',
|
||
type_name: '韩语榜',
|
||
},{
|
||
type_id: '2809513713',
|
||
type_name: '欧美热歌榜',
|
||
},{
|
||
type_id: '2809577409',
|
||
type_name: '欧美新歌榜',
|
||
},{
|
||
type_id: '5059644681',
|
||
type_name: '日语榜',
|
||
},{
|
||
type_id: '3112516681',
|
||
type_name: '中国新乡村音乐排行榜',
|
||
}];
|
||
return JSON.stringify({
|
||
class: classes,
|
||
});
|
||
}
|
||
|
||
async function homeVod() {
|
||
}
|
||
|
||
async function category(tid, pg, filter, ext) {
|
||
let playList = JSON.parse(await request(siteUrl, {
|
||
'types': 'playlist',
|
||
'id': tid,
|
||
})).playlist;
|
||
let videos = _.map(playList.tracks, n => {
|
||
return {
|
||
vod_id: n.id,
|
||
vod_name: n.name,
|
||
vod_pic: n.al.picUrl,
|
||
vod_remarks: n.ar[0].name
|
||
}
|
||
});
|
||
return JSON.stringify({
|
||
list: videos,
|
||
page: pg,
|
||
total: videos.length
|
||
});
|
||
}
|
||
|
||
async function detail(id) {
|
||
try {
|
||
let playUrl = JSON.parse(await request(siteUrl, {
|
||
'types': 'url',
|
||
'id': id,
|
||
'source': 'netease',
|
||
})).url;
|
||
|
||
const video = {
|
||
vod_play_from: 'Leospring',
|
||
vod_play_url: playUrl,
|
||
vod_content: '该作品由leospring采集分享,公众号【蚂蚁科技杂谈】,请勿传播分享,仅供技术学习使用,请在学习后24小时内删除;由此产生的任何法律风险自行承担,与本作者无关!',
|
||
};
|
||
const list = [video];
|
||
const result = { list };
|
||
return JSON.stringify(result);
|
||
} catch (e) {
|
||
console.log('err', e);
|
||
}
|
||
return null;
|
||
}
|
||
|
||
async function search(wd, quick, pg) {
|
||
let playList = JSON.parse(await request(siteUrl, {
|
||
'types': 'search',
|
||
'name': wd,
|
||
'source':'netease',
|
||
'count': '20',
|
||
'pages': pg
|
||
}));
|
||
const js2Base = await js2Proxy(true, siteType, siteKey, 'img/', {});
|
||
let videos = _.map(playList, n => {
|
||
return {
|
||
vod_id: n.id,
|
||
vod_name: n.name,
|
||
vod_pic: js2Base + base64Encode(n.pic_id),
|
||
vod_remarks: ''
|
||
}
|
||
});
|
||
return JSON.stringify({
|
||
list: videos,
|
||
page: pg,
|
||
total: videos.length
|
||
});
|
||
}
|
||
|
||
async function play(flag, id, flags) {
|
||
return JSON.stringify({
|
||
parse: 0,
|
||
url: id,
|
||
});
|
||
}
|
||
|
||
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') {
|
||
let picUrl = JSON.parse(await request(siteUrl, {
|
||
'types': 'pic',
|
||
'id': url,
|
||
'source': 'netease',
|
||
})).url
|
||
|
||
var resp = await req(picUrl, {
|
||
buffer: 2,
|
||
headers: {
|
||
Referer: 'https://api.douban.com/',
|
||
'User-Agent': MOBILE_UA,
|
||
},
|
||
});
|
||
return JSON.stringify({
|
||
code: resp.code,
|
||
buffer: 2,
|
||
content: resp.content,
|
||
headers: resp.headers,
|
||
});
|
||
}
|
||
return JSON.stringify({
|
||
code: 500,
|
||
content: '',
|
||
});
|
||
}
|
||
|
||
export function __jsEvalReturn() {
|
||
return {
|
||
init: init,
|
||
home: home,
|
||
homeVod: homeVod,
|
||
category: category,
|
||
detail: detail,
|
||
play: play,
|
||
proxy: proxy,
|
||
search: search,
|
||
};
|
||
} |