music-downloader/app/source/MyFreemp3Source.js

169 lines
4.5 KiB
JavaScript
Raw Normal View History

2023-08-02 14:49:56 +00:00
const { SourceModel } = require('../model/SourceModel');
class MyFreemp3Source extends SourceModel {
constructor() {
super();
this.type = 'qq';
this.name = "MyFreemp3_QQ";
}
async search(keywords) {
keywords = encodeURIComponent(keywords);
// POST请求
let options = {
url: `http://myfreemp3.sharerj.com/?name=${keywords}&type=${this.type}`,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
//'Host': 'myfreemp3.sharerj.com',
//'Origin': 'http://myfreemp3.sharerj.com',
//'Referer': `http://myfreemp3.sharerj.com/?name=${keywords}&type=qq`,
//'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 Edg/115.0.1901.183',
//'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest', //此行必须填写
//'Cookie': '__gads=ID=f167a79e430852c8-227b3bd2b6e70079:T=1690680059:RT=1690680059:S=ALNI_MZixvU2-9BVQv0qTuN2kVnZttuZIQ; __gpi=UID=00000d30f9e155c5:T=1690680059:RT=1690680059:S=ALNI_MZtwSz24f5LJ-tGCRKRuzz0AFH5rA'
},
json: true, //将body解析为json
body: `input=${keywords}&filter=name&type=${this.type}&page=1`
};
let result = await this.request(options);
if(result.data instanceof Array) {
result = result.data.map(item => {
return {
title: item.title,
author: item.author,
url: item.url,
link: item.link,
lrc: item.lrc,
pic: item.pic,
source_name: this.getName()
}
});
}else {
result = result;
}
return result;
}
}
class MyFreemp3QQSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'qq';
this.name = "MyFreemp3_QQ";
}
}
class MyFreemp3NeteaseSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'netease';
this.name = "MyFreemp3_网易";
}
}
class MyFreemp3KugouSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'kugou';
this.name = "MyFreemp3_酷狗";
}
}
class MyFreemp3KuwoSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'kuwo';
this.name = "MyFreemp3_酷我";
}
}
class MyFreemp3QianqianSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'baidu';
this.name = "MyFreemp3_千千";
}
}
class MyFreemp31tingSource extends MyFreemp3Source {
constructor() {
super();
this.type = '1ting';
this.name = "MyFreemp3_一听";
}
}
class MyFreemp3MiguSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'migu';
this.name = "MyFreemp3_咪咕";
}
}
class MyFreemp3LizhiSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'lizhi';
this.name = "MyFreemp3_荔枝";
}
}
class MyFreemp3QingtingSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'qingting';
this.name = "MyFreemp3_蜻蜓";
}
}
class MyFreemp3XimalayaSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'ximalaya';
this.name = "MyFreemp3_喜马拉雅";
}
}
class MyFreemp35singycSource extends MyFreemp3Source {
constructor() {
super();
this.type = '5singyc';
this.name = "MyFreemp3_5sing原创";
}
}
class MyFreemp35singfcSource extends MyFreemp3Source {
constructor() {
super();
this.type = '5singfc';
this.name = "MyFreemp3_5sing翻唱";
}
}
class MyFreemp3KgSource extends MyFreemp3Source {
constructor() {
super();
this.type = 'kg';
this.name = "MyFreemp3_全民K歌";
}
}
module.exports = {
MyFreemp3QQSource,
MyFreemp3NeteaseSource,
MyFreemp3KugouSource,
MyFreemp3KuwoSource,
MyFreemp3QianqianSource,
MyFreemp31tingSource,
MyFreemp3MiguSource,
MyFreemp3LizhiSource,
MyFreemp3QingtingSource,
MyFreemp3XimalayaSource,
MyFreemp35singycSource,
MyFreemp35singfcSource,
MyFreemp3KgSource
}