MusicBrainz API for larger album art (using Last.fm API as fallback)

This commit is contained in:
A Bunch of Computer Nerds 2024-12-17 17:42:59 -03:00
parent 31aa86d390
commit 49e1bc8661

View File

@ -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) => { module.exports = (bot) => {
loadUsers(); loadUsers();
@ -104,6 +125,18 @@ module.exports = (bot) => {
const trackName = track.name; const trackName = track.name;
const artistName = track.artist['#text']; const artistName = track.artist['#text'];
const nowPlaying = track['@attr'] && track['@attr'].nowplaying ? Strings.varIs : Strings.varWas; 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) { if (imageUrl == genericImg) {
imageUrl = ""; imageUrl = "";
} }