From 49e1bc86610d3287e2f1e7c9d24b2910a0c9bc35 Mon Sep 17 00:00:00 2001 From: A Bunch of Computer Nerds Date: Tue, 17 Dec 2024 17:42:59 -0300 Subject: [PATCH] MusicBrainz API for larger album art (using Last.fm API as fallback) --- src/commands/lastfm.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/commands/lastfm.js b/src/commands/lastfm.js index 597b87e..0cb4c34 100644 --- a/src/commands/lastfm.js +++ b/src/commands/lastfm.js @@ -34,6 +34,27 @@ function saveUsers() { } } +async function getFromMusicBrainz(mbid) { + try { + const response = await axios.get(`https://coverartarchive.org/release/${mbid}`); + const imageUrl = response.data.images[0]?.thumbnails?.large || ''; + return imageUrl; + } catch (error) { + return undefined; + } +} + + +function getFromLast(track) { + if (!track || !track.image) return ''; + + const imageExtralarge = track.image.find(img => img.size === 'extralarge'); + const imageMega = track.image.find(img => img.size === 'mega'); + const imageUrl = (imageExtralarge?.['#text']) || (imageMega?.['#text']) || ''; + + return imageUrl; +} + module.exports = (bot) => { loadUsers(); @@ -104,6 +125,18 @@ module.exports = (bot) => { const trackName = track.name; const artistName = track.artist['#text']; const nowPlaying = track['@attr'] && track['@attr'].nowplaying ? Strings.varIs : Strings.varWas; + const albumMbid = track.album.mbid; + + let imageUrl = ""; + + if (albumMbid) { + imageUrl = await getFromMusicBrainz(albumMbid); + } + + if (!imageUrl) { + imageUrl = getFromLast(track); + } + if (imageUrl == genericImg) { imageUrl = ""; }