const axios = require("axios"); const config = require("./config/config.json"); const $ = require('cheerio'); const { Collection } = require("discord.js"); class Genius { search_song(q, callback) { axios({ method: "get", url: "https://api.genius.com/search?q=" + q, headers: {'Authorization': 'Bearer ' + config["genius-token"]} }).then(response => { return callback(null, response.data.response.hits[0].result); }).catch(err => { return callback(err); }) } get_lyrics(song_id, use_mobile, 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, headers: { "User-Agent": use_mobile ? "Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" } }).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]) { element.children.forEach(children => { if (children.data) lyrics += children.data; if (children.children) if (children.children[0]) lyrics += children.children[0].data; }); } }); return callback(null, lyrics); }).catch(err => { return callback(err); }); }); } } module.exports = new Genius();