添加更多源
parent
5e8a049014
commit
5f58cbfe3b
18
app/main.js
18
app/main.js
|
@ -6,7 +6,7 @@ const { storeMusic, storeLrc, storePic } = require('./model/StoreModel');
|
||||||
const { SuccessResult, ErrorResult } = require('./model/ResultModel');
|
const { SuccessResult, ErrorResult } = require('./model/ResultModel');
|
||||||
|
|
||||||
const { QQSource } = require('./source/QQSource');
|
const { QQSource } = require('./source/QQSource');
|
||||||
const { MyFreemp3QQSource } = require('./source/MyFreemp3QQSource');
|
const mfm = require('./source/MyFreemp3Source');
|
||||||
|
|
||||||
// 防止进程中断
|
// 防止进程中断
|
||||||
// process.on('uncaughtException', function (err) {
|
// process.on('uncaughtException', function (err) {
|
||||||
|
@ -15,8 +15,20 @@ const { MyFreemp3QQSource } = require('./source/MyFreemp3QQSource');
|
||||||
// ***********************************************************************
|
// ***********************************************************************
|
||||||
// 注册源
|
// 注册源
|
||||||
const searcher = new SearchModel();
|
const searcher = new SearchModel();
|
||||||
searcher.registerSourceModel(new QQSource());
|
//searcher.registerSourceModel(new QQSource());
|
||||||
searcher.registerSourceModel(new MyFreemp3QQSource());
|
searcher.registerSourceModel(new mfm.MyFreemp3QQSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp3NeteaseSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp3KugouSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp3KuwoSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp3MiguSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp3QianqianSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp3QingtingSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp3XimalayaSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp3LizhiSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp3KgSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp31tingSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp35singycSource());
|
||||||
|
searcher.registerSourceModel(new mfm.MyFreemp35singfcSource());
|
||||||
|
|
||||||
|
|
||||||
// ***********************************************************************
|
// ***********************************************************************
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
const { SourceModel } = require('../model/SourceModel');
|
|
||||||
|
|
||||||
class MyFreemp3QQSource extends SourceModel {
|
|
||||||
constructor() {
|
|
||||||
super();
|
|
||||||
this.name = "MyFreemp3_QQ";
|
|
||||||
}
|
|
||||||
|
|
||||||
async search(keywords) {
|
|
||||||
keywords = encodeURIComponent(keywords);
|
|
||||||
// POST请求
|
|
||||||
let options = {
|
|
||||||
url: `http://myfreemp3.sharerj.com/?name=${keywords}&type=qq`,
|
|
||||||
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=qq&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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
MyFreemp3QQSource
|
|
||||||
}
|
|
|
@ -0,0 +1,173 @@
|
||||||
|
const { SourceModel } = require('../model/SourceModel');
|
||||||
|
|
||||||
|
class MyFreemp3Source {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Document</title>
|
<title>音乐下载器-AML</title>
|
||||||
<link rel="stylesheet" href="static/js/iview/styles/iview.css">
|
<link rel="stylesheet" href="static/js/iview/styles/iview.css">
|
||||||
<script type="text/javascript" src="static/js/vue.min.js"></script>
|
<script type="text/javascript" src="static/js/vue.min.js"></script>
|
||||||
<script type="text/javascript" src="static/js/iview/iview.min.js"></script>
|
<script type="text/javascript" src="static/js/iview/iview.min.js"></script>
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 下载依赖包
|
|
||||||
npm install
|
|
||||||
|
|
||||||
# 运行服务器端
|
|
||||||
node /music-downloader/app/main.js
|
|
11
start.sh
11
start.sh
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 拉取代码
|
|
||||||
cd /
|
|
||||||
git clone http://192.168.1.253:9130/amuliang/music-downloader.git
|
|
||||||
|
|
||||||
# 运行服务
|
|
||||||
./server.sh &
|
|
||||||
./start.sh &
|
|
||||||
|
|
||||||
echo "start success !!!"
|
|
|
@ -3,6 +3,9 @@
|
||||||
# 下载依赖包
|
# 下载依赖包
|
||||||
npm install http-server -g
|
npm install http-server -g
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
# 运行前端页面
|
# 运行前端页面
|
||||||
cd /music-downloader/html
|
cd /music-downloader/html
|
||||||
|
echo "run html, localhost:8080"
|
||||||
http-server -p 8080
|
http-server -p 8080
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 下载依赖包
|
||||||
|
cd /music-downloader
|
||||||
|
npm install
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
|
# 运行服务器端
|
||||||
|
echo "run server, localhost:5000"
|
||||||
|
node /music-downloader/app/main.js
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 拉取代码
|
||||||
|
git clone http://${REMOTE_ADDR}/amuliang/music-downloader.git /music-downloader
|
||||||
|
wait
|
||||||
|
|
||||||
|
# 运行服务
|
||||||
|
/start/server.sh &
|
||||||
|
/start/html.sh &
|
||||||
|
wait
|
Loading…
Reference in New Issue