UNPKG

llyrics

Version:

A simple package to fetch lyrics from Genius API

62 lines 2.28 kB
"use strict"; 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