dotfiles/.config/spicetify/CustomApps/lyrics-plus/ProviderLRCLIB.js
2024-06-26 12:05:08 +02:00

53 lines
1.3 KiB
JavaScript

const ProviderLRCLIB = (() => {
async function findLyrics(info) {
const baseURL = "https://lrclib.net/api/get";
const durr = info.duration / 1000;
const params = {
track_name: info.title,
artist_name: info.artist,
album_name: info.album,
duration: durr
};
const finalURL = `${baseURL}?${Object.keys(params)
.map(key => `${key}=${encodeURIComponent(params[key])}`)
.join("&")}`;
const body = await fetch(finalURL, {
headers: {
"user-agent": `spicetify v${Spicetify.Config.version} (https://github.com/spicetify/cli)`
}
});
if (body.status !== 200) {
return {
error: "Request error: Track wasn't found",
uri: info.uri
};
}
return await body.json();
}
function getUnsynced(body) {
const unsyncedLyrics = body?.plainLyrics;
const isInstrumental = body.instrumental;
if (isInstrumental) return [{ text: "♪ Instrumental ♪" }];
if (!unsyncedLyrics) return null;
return Utils.parseLocalLyrics(unsyncedLyrics).unsynced;
}
function getSynced(body) {
const syncedLyrics = body?.syncedLyrics;
const isInstrumental = body.instrumental;
if (isInstrumental) return [{ text: "♪ Instrumental ♪" }];
if (!syncedLyrics) return null;
return Utils.parseLocalLyrics(syncedLyrics).synced;
}
return { findLyrics, getSynced, getUnsynced };
})();