UNPKG

ariaa

Version:
32 lines 1.3 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); import { getGenre } from "./genre.js"; import { getArtist, getAudioFeatures, searchSpotify } from "./spotify.js"; async function getMetadata(song, songObj) { const data = await searchSpotify(song, "track", 5); const track = findClosestTrack(data.tracks.items, songObj); const features = await getAudioFeatures(track.id); track.genre = getGenre((await getArtist(track.artists[0].id)).genres) ?? "Unknown"; track.key = assignKey(features.key); track.tempo = Math.round(features.tempo); return track; } __name(getMetadata, "getMetadata"); function findClosestTrack(songs, songObj) { const time = songObj.duration; const times = songs.map((s) => s.duration_ms); const closest = times.reduce((prev, curr) => Math.abs(curr - time) < Math.abs(prev - time) ? curr : prev); const song = songs.find((s) => s.duration_ms === closest); return song; } __name(findClosestTrack, "findClosestTrack"); function assignKey(key) { return ["C", "C# | Db", "D", "D# | Eb", "E", "F", "F# | Gb", "G", "G# | Ab", "A", "A# | Bb", "B"][key]; } __name(assignKey, "assignKey"); export { assignKey, findClosestTrack, getMetadata }; //# sourceMappingURL=metadata.js.map