llyrics
Version:
A simple package to fetch lyrics from Genius API
62 lines • 2.28 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.version = void 0;
exports.find = find;
const axios_1 = __importDefault(require("axios"));
const package_json_1 = require("../package.json");
Object.defineProperty(exports, "version", { enumerable: true, get: function () { return package_json_1.version; } });
const apiBaseUrl = 'https://lyrics.lewdhutao.my.eu.org/v2';
const searchEngines = ['youtube', 'musixmatch'];
/**
* Finds the lyrics of a song.
* @param {searchOptions} searchOptions Options to refine your search
* @returns Promise<fetchResponse>
* @example
* const { find } = require('llyrics');
* const response = await find({
* song: 'Bohemian Rhapsody',
* engine: 'musixmatch'
* });
* console.log(response.artist);
*/
async function find(searchOptions) {
const fetchParams = {
title: searchOptions.song,
};
if (searchOptions.forceSearch === true) {
for (const currentEngine of searchEngines) {
try {
const iterationSearch = await find({
song: searchOptions.song,
artist: searchOptions.artist,
engine: currentEngine,
});
if (iterationSearch.status === 200 && iterationSearch.artist !== undefined) {
return iterationSearch;
}
}
catch {
continue;
}
}
}
if (searchOptions.engine === 'musixmatch' && searchOptions.artist) {
fetchParams.artist = searchOptions.artist;
}
const fetchResponse = await axios_1.default.get(`${apiBaseUrl}/${searchOptions.engine ?? 'youtube'}/lyrics`, {
params: fetchParams,
});
return {
artist: fetchResponse.data.data.artistName,
title: fetchResponse.data.data.trackName,
id: fetchResponse.data.data.trackId,
engine: fetchResponse.data.data.searchEngine,
artworkURL: fetchResponse.data.data.artworkUrl,
lyrics: fetchResponse.data.data.lyrics,
status: fetchResponse.status,
};
}
//# sourceMappingURL=index.js.map