From ffa9ef637a87c2e0512fe3e46bbb7f41d0019584 Mon Sep 17 00:00:00 2001 From: Cory Dransfeldt Date: Sat, 30 Mar 2024 16:31:02 -0700 Subject: [PATCH] chore: scrobbling --- src/_data/helpers/music.js | 41 +++++++++++++++++++++++++++++++++++++- src/_data/music.js | 14 +++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/_data/helpers/music.js b/src/_data/helpers/music.js index a365bdce..9c07119b 100644 --- a/src/_data/helpers/music.js +++ b/src/_data/helpers/music.js @@ -13,4 +13,43 @@ export const sanitizeMediaString = (string) => { .replace(/[\(\)\[\]\{\}]/g, '') } -export const mbidMap = (artist) => mbidPatches[artist.toLowerCase()] || '' \ No newline at end of file +export const mbidMap = (artist) => mbidPatches[artist.toLowerCase()] || '' + +export const buildChart = (tracks) => { + const artistsData = {} + const albumsData = {} + const tracksData = {} + + const objectToArray = (inputObject) => { + return Object.keys(inputObject).map(key => ({ + name: key, + count: inputObject[key] + })); + }; + + tracks.forEach(track => { + if (!tracksData[track['track']]) { + tracksData[track['track']] = 1 + } else { + tracksData[track['track']]++ + } + + if (!artistsData[track['artist']]) { + artistsData[track['artist']] = 1 + } else { + artistsData[track['artist']]++ + } + + if (!albumsData[track['album']]) { + albumsData[track['album']] = 1 + } else { + albumsData[track['album']]++ + } + }) + + return { + artists: objectToArray(artistsData).sort((a, b) => b.count - a.count), + albums: objectToArray(albumsData).sort((a, b) => b.count - a.count), + tracks: objectToArray(tracksData).sort((a, b) => b.count - a.count), + } +} \ No newline at end of file diff --git a/src/_data/music.js b/src/_data/music.js index e69de29b..be8ccd34 100644 --- a/src/_data/music.js +++ b/src/_data/music.js @@ -0,0 +1,14 @@ +import EleventyFetch from '@11ty/eleventy-fetch'; +import { artistCapitalization, buildChart } from './helpers/music.js' + +export default async function () { + const API_KEY_MUSIC = process.env.API_KEY_MUSIC; + const url = `https://coryd.dev/api/music?key=${API_KEY_MUSIC}`; + const res = EleventyFetch(url, { + duration: '1h', + type: 'json', + }).catch(); + const resObj = await res; + console.log(buildChart(resObj['data'])) + return buildChart(resObj['data']) +}