From e7ee6d57adef7fd62dc48da6665f2d89d1dc8e6e Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 30 Sep 2026 14:01:32 +0000 Subject: [PATCH] fix(tuneshine): More url logging and cleaner destructuring for checking required art url --- .../vendor/tuneshine/TuneshineApiClient.ts | 22 ++++++++++++++----- src/backend/scrobblers/TuneshineScrobbler.ts | 22 ++++++++++++++----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/backend/common/vendor/tuneshine/TuneshineApiClient.ts b/src/backend/common/vendor/tuneshine/TuneshineApiClient.ts index e37eb3d0..c099e042 100644 --- a/src/backend/common/vendor/tuneshine/TuneshineApiClient.ts +++ b/src/backend/common/vendor/tuneshine/TuneshineApiClient.ts @@ -64,12 +64,22 @@ export class TuneshineApiClient extends AbstractApiClient { async sendNowPlaying(play: PlayObject) { let artUrl: string | undefined = undefined; - if (play.meta?.art?.track !== undefined) { - artUrl = play.meta?.art?.track; - } else if (play.meta?.art?.album !== undefined) { - artUrl = play.meta?.art?.album; - } else if (play.meta?.art?.artist !== undefined) { - artUrl = play.meta?.art?.artist; + if(play.meta?.art !== undefined && typeof play.meta.art === 'object' && play.meta.art !== null) { + const { + track, + album, + artist + } = play.meta.art + if(track !== undefined) { + artUrl = track; + this.logger.trace(`Using art from track: ${track}`); + } else if(album !== undefined) { + artUrl = album; + this.logger.trace(`Using art from album: ${album}`); + } else if(artist !== undefined) { + artUrl = artist; + this.logger.trace(`Using art from artist: ${artist}`); + } } if (artUrl === undefined) { throw new SimpleError('No art found on Play'); diff --git a/src/backend/scrobblers/TuneshineScrobbler.ts b/src/backend/scrobblers/TuneshineScrobbler.ts index 8cefc65e..2626d7b8 100644 --- a/src/backend/scrobblers/TuneshineScrobbler.ts +++ b/src/backend/scrobblers/TuneshineScrobbler.ts @@ -76,12 +76,22 @@ export default class TuneshineScrobbler extends AbstractScrobbleClient { return [true]; } let artUrl: string | undefined = undefined; - if (data.play.meta?.art?.track !== undefined) { - artUrl = data.play.meta?.art?.track; - } else if (data.play.meta?.art?.album !== undefined) { - artUrl = data.play.meta?.art?.album; - } else if (data.play.meta?.art?.artist !== undefined) { - artUrl = data.play.meta?.art?.artist; + if(data.play.meta?.art !== undefined && typeof data.play.meta.art === 'object' && data.play.meta.art !== null) { + const { + track, + album, + artist + } = data.play.meta.art + if(track !== undefined) { + artUrl = track; + this.logger.trace(`Found track art`); + } else if(album !== undefined) { + artUrl = album; + this.logger.trace(`Found album art`); + } else if(artist !== undefined) { + artUrl = artist; + this.logger.trace(`Found artist art`); + } } if (artUrl === undefined) { return [false, 'Play does not contain artwork']; -- 2.54.0