ariaa
Version:
A CLI for music lovers
32 lines • 1.3 kB
JavaScript
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