Create liumingye_music_open.js
This commit is contained in:
parent
2357738fd9
commit
d122e4ba40
219
open/liumingye_music_open.js
Normal file
219
open/liumingye_music_open.js
Normal file
@ -0,0 +1,219 @@
|
||||
import { Crypto, load, _ } from './lib/cat.js';
|
||||
|
||||
let siteUrl = 'https://www.cs1369.com';
|
||||
let siteKey = '';
|
||||
let siteType = 0;
|
||||
let headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'origin': 'https://tool.liumingye.cn',
|
||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
|
||||
};
|
||||
async function request(reqUrl, postData, get) {
|
||||
let res = await req(reqUrl, {
|
||||
method: get ? 'get' : 'post',
|
||||
headers: headers,
|
||||
data: postData || {},
|
||||
});
|
||||
let content = res.content;
|
||||
return content;
|
||||
}
|
||||
|
||||
async function init(cfg) {
|
||||
siteKey = cfg.skey;
|
||||
siteType = cfg.stype;
|
||||
}
|
||||
|
||||
async function home(filter) {
|
||||
const classes = [{
|
||||
type_id: '1',
|
||||
type_name: '歌手'
|
||||
}];
|
||||
let filters = [];
|
||||
for(let i=0;i<=27;i++) {
|
||||
let name = String.fromCodePoint(i+64);
|
||||
if(i <= 0) name = '热门';
|
||||
if(i >= 27) name = '#';
|
||||
filters.push({
|
||||
'v': String(i),
|
||||
'n': name
|
||||
})
|
||||
}
|
||||
return JSON.stringify({
|
||||
class: classes,
|
||||
filters: {
|
||||
'1': [
|
||||
{
|
||||
'key': 'word',
|
||||
'name': '首字母',
|
||||
'init':'0',
|
||||
'value': filters
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async function homeVod() {
|
||||
|
||||
}
|
||||
|
||||
async function category(tid, pg, filter, extend) {
|
||||
if(!pg || pg <=0) pg = 1;
|
||||
let url = 'https://api.liumingye.cn/m/api/artist/list';
|
||||
let param = {
|
||||
'initial': extend['word'] || '0',
|
||||
'page': pg,
|
||||
'_t': new Date().getTime()
|
||||
}
|
||||
param['token'] = genToken(param);
|
||||
let data = JSON.parse(await request(url, param)).data;
|
||||
let videos = [];
|
||||
for (const vod of data.list) {
|
||||
videos.push({
|
||||
vod_id: vod.name,
|
||||
vod_name: vod.name,
|
||||
vod_pic: vod.pic,
|
||||
vod_remarks: ``,
|
||||
});
|
||||
}
|
||||
return JSON.stringify({
|
||||
list: videos,
|
||||
page: pg,
|
||||
limit: 20,
|
||||
});
|
||||
}
|
||||
|
||||
async function searchSongs(name,pg){
|
||||
if (!pg || pg <=0) pg = 1;
|
||||
let params = {
|
||||
"type":"YQM",
|
||||
"text":name,
|
||||
"page":pg,
|
||||
"v":"beta",
|
||||
"_t": new Date().getTime()
|
||||
}
|
||||
let token = genToken(params);
|
||||
params['token'] = token;
|
||||
let data = JSON.parse(await request('https://api.liumingye.cn/m/api/search', params)).data;
|
||||
//console.log(data);
|
||||
let videos = [];
|
||||
for (const vod of data.list) {
|
||||
if (vod.hash || vod.id) {
|
||||
videos.push({
|
||||
vod_id: vod.hash || vod.id,
|
||||
vod_name: vod.name,
|
||||
vod_pic: vod.pic || '',
|
||||
vod_remarks: vod.time?`${Math.floor(vod.time/60)}:${vod.time % 60}`:'',
|
||||
});
|
||||
}
|
||||
}
|
||||
return videos;
|
||||
}
|
||||
|
||||
async function detail(id) {
|
||||
try {
|
||||
let vod = {
|
||||
vod_id: id,
|
||||
vod_play_from: 'Leospring',
|
||||
vod_content: '该影视由leospring采集分享,公众号【蚂蚁科技杂谈】,请勿传播分享,仅供技术学习使用,请在学习后24小时内删除;由此产生的任何法律风险自行承担,与本作者无关!',
|
||||
};
|
||||
if(id.length > 15) {
|
||||
vod.vod_play_url = '播放$' + id;
|
||||
} else {
|
||||
let list1 = await searchSongs(id, 1);
|
||||
let list2 = await searchSongs(id, 2);
|
||||
let list3 = await searchSongs(id, 3);
|
||||
let videos = list1.concat(list2).concat(list3);
|
||||
vod.vod_name = id,
|
||||
vod.vod_play_url = _.map(videos, item => {
|
||||
return item.vod_name + '$' + item.vod_id;
|
||||
}).join('#');
|
||||
}
|
||||
return JSON.stringify({
|
||||
list: [vod],
|
||||
});
|
||||
} catch (e) {
|
||||
console.log('err', e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
async function search(wd, quick, pg) {
|
||||
let videos = await searchSongs(wd, pg);
|
||||
return JSON.stringify({
|
||||
list: videos,
|
||||
});
|
||||
}
|
||||
|
||||
async function play(flag, id, flags) {
|
||||
let url = getMp3(id);
|
||||
return JSON.stringify({
|
||||
parse: 0,
|
||||
url: url,
|
||||
header: headers,
|
||||
});
|
||||
}
|
||||
|
||||
function base64Encode(text) {
|
||||
return Crypto.enc.Base64.stringify(Crypto.enc.Utf8.parse(text));
|
||||
}
|
||||
|
||||
function base64Decode(text) {
|
||||
return Crypto.enc.Utf8.stringify(Crypto.enc.Base64.parse(text));
|
||||
}
|
||||
|
||||
const Es = "pW8jg/mke6cO1F4CTuaiswhZfQGzMyq5NJRLPVIvDxlA7=E3YrSUoH0b2BXKn9td+";
|
||||
const t= 'yGz4n9XE9xYy2Oj5Ub7E6u9a5p5aIWZYe53Orq5wE5UgnjbWq0410WTvmLBO1Z2N';
|
||||
function Bs(ee){
|
||||
let f=0,h='';
|
||||
do{
|
||||
let s=ee[f++],
|
||||
o=ee[f++],
|
||||
i=ee[f++],
|
||||
u=(s << 16 | o << 8) | i,
|
||||
a = ((u >> 18) & 63),
|
||||
l = (u >> 12) & 63,
|
||||
r = 63 & (u >> 6),
|
||||
c = (u & 63);
|
||||
h += (Es.charAt(a)+ Es.charAt(l)) + Es.charAt(r) + Es.charAt(c);
|
||||
} while(f<ee.length);
|
||||
if(ee.length % 3) {
|
||||
h = h.substring(0, h.length-2) + '==';
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
|
||||
function genToken(data) {
|
||||
let res = encodeURIComponent(JSON.stringify(data));
|
||||
let arr = [];
|
||||
for(let i=0;i<res.length;i++) {
|
||||
arr[i] = res.charCodeAt(i) ^ t.charCodeAt(i%64);
|
||||
}
|
||||
return '20230327.' + md5X(Bs(arr));
|
||||
}
|
||||
|
||||
function getMp3(musicId) {
|
||||
let data = {
|
||||
id: musicId,
|
||||
quality: "128",
|
||||
_t: String(new Date().getTime())
|
||||
}
|
||||
let token = genToken(data);
|
||||
let url = `https://api.liumingye.cn/m/api/link?id=${data.id}&quality=${data.quality}&_t=${data._t}&token=${token}`;
|
||||
//console.log(url);
|
||||
return url;
|
||||
}
|
||||
|
||||
export function __jsEvalReturn() {
|
||||
return {
|
||||
init: init,
|
||||
home: home,
|
||||
homeVod: homeVod,
|
||||
category: category,
|
||||
detail: detail,
|
||||
play: play,
|
||||
search: search,
|
||||
//test: test,
|
||||
};
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user