Added get lyrics function

This commit is contained in:
2020-12-17 23:23:27 +01:00
parent 6028849c0f
commit 4e08c70bcb
3 changed files with 168 additions and 1 deletions

View File

@@ -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();