Spaces:
Runtime error
Runtime error
import { makeRequest } from '../utils.js' | |
async function search(query) { | |
const { body: data } = await makeRequest(`https://genius.com/api/search/multi?q=${encodeURIComponent(query)}`, { | |
method: 'GET' | |
}) | |
if (data.response.sections[1].hits.length === 0) return null | |
return data.response.sections[1].hits[0].result.path | |
} | |
async function loadLyrics(decodedTrack, language) { | |
const searchResult = await search(`${decodedTrack.title} ${decodedTrack.author}`) | |
if (!searchResult) return null | |
const { body: data } = await makeRequest(`https://genius.com${searchResult}`, { | |
method: 'GET' | |
}) | |
const trackInfo = JSON.parse(data.match(/JSON.parse\('(.*)'\);/)[1].replace(/\\(.)/g, '$1')) | |
const lyricsEvents = [] | |
trackInfo.songPage.lyricsData.body.children[0].children.forEach((text) => { | |
if (typeof text === 'object') { | |
if (!text.children) return; | |
text.children.forEach((child) => { | |
if (typeof child !== 'string') return; | |
lyricsEvents.push({ | |
text: child | |
}) | |
}) | |
return; | |
} | |
lyricsEvents.push({ | |
text | |
}) | |
}) | |
return { | |
loadType: 'lyricsSingle', | |
data: { | |
name: 'original', | |
synced: false, | |
data: lyricsEvents, | |
rtl: false | |
} | |
} | |
} | |
export default { | |
loadLyrics | |
} |