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 | |
| } |