forked from trazyn/ieaseMusic
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBaidu.js
58 lines (46 loc) · 1.42 KB
/
Baidu.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import _debug from 'debug';
import chalk from 'chalk';
const debug = _debug('dev:plugin:Baidu');
export default async(request, keyword, artists) => {
debug(chalk.black.bgGreen('💊 Loaded Baidu music.'));
try {
var response = await request({
uri: 'http://sug.music.baidu.com/info/suggestion',
qs: {
word: [keyword].concat(artists.split(',')).join('+'),
version: 2,
from: 0,
_: +new Date(),
},
});
var songs = (response.data || {}).song;
var song = (songs || []).find(e => artists.indexOf(e.artistname) > -1);
if (!song) {
return Promise.reject(Error(404));
}
console.log('done');
response = await request({
uri: 'http://music.taihe.com/data/music/fmlink',
qs: {
songIds: song.songid,
},
});
if (
false
|| +response.errorCode !== 22000
|| response.data.songList.length === 0
) {
return Promise.reject(Error(404));
}
song = response.data.songList[0];
song.src = song.songLink;
song.bitRate = song.rate * 1000;
if (!song.src) {
return Promise.reject(Error(404));
}
} catch (ex) {
// Anti-warnning
return Promise.reject(ex);
}
return song;
};