Added get lyrics function
This commit is contained in:
26
genius.js
26
genius.js
@@ -1,5 +1,6 @@
|
||||
const axios = require("axios");
|
||||
const config = require("./config/config.json");
|
||||
const $ = require('cheerio');
|
||||
|
||||
class Genius {
|
||||
search_song(q, callback) {
|
||||
@@ -8,11 +9,34 @@ class Genius {
|
||||
url: "https://api.genius.com/search?q=" + q,
|
||||
headers: {'Authorization': 'Bearer ' + config["genius-token"]}
|
||||
}).then(response => {
|
||||
return callback(response.data.response.hits[0]);
|
||||
return callback(response.data.response.hits[0].result);
|
||||
}).catch(err => {
|
||||
console.error(err);
|
||||
})
|
||||
}
|
||||
|
||||
get_lyrics(song_id, callback) {
|
||||
axios({
|
||||
method: "get",
|
||||
url: "https://api.genius.com/songs/" + song_id,
|
||||
headers: {'Authorization': 'Bearer ' + config["genius-token"]}
|
||||
}).then(response => {
|
||||
axios({
|
||||
method: "get",
|
||||
url: response.data.response.song.url
|
||||
}).then(response => {
|
||||
const texts = $("div.lyrics > p", response.data)["0"].children;
|
||||
let lyrics;
|
||||
texts.forEach(element => {
|
||||
if (element.type === 'text') lyrics += element.data;
|
||||
else if (element.children[0]) lyrics += element.children[0].data;
|
||||
});
|
||||
return callback(null, lyrics);
|
||||
}).catch(err => {
|
||||
return callback(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new Genius();
|
||||
Reference in New Issue
Block a user