diff --git a/src/backend/common/vendor/ListenbrainzApiClient.ts b/src/backend/common/vendor/ListenbrainzApiClient.ts index 62c75b2d..f3c175c4 100644 --- a/src/backend/common/vendor/ListenbrainzApiClient.ts +++ b/src/backend/common/vendor/ListenbrainzApiClient.ts @@ -548,7 +548,13 @@ export const listenResponseToPlay = (listen: ListenResponse): PlayObject => { ...naivePlay, data: { ...naivePlay.data, - artists: artistNamesToCredits(derivedArtists) + artists: derivedArtists.map(x => { + const mappedArtist = artistMappings.find(y => y.artist_credit_name === x); + if(mappedArtist !== undefined) { + return {name: mappedArtist.artist_credit_name, mbid: mappedArtist.artist_mbid} + } + return {name: x}; + }) } }; } @@ -579,7 +585,13 @@ export const listenResponseToPlay = (listen: ListenResponse): PlayObject => { data: { ...naivePlay.data, track: normalTrackName, - artists: artistNamesToCredits(derivedArtists) + artists: derivedArtists.map(x => { + const mappedArtist = artistMappings.find(y => y.artist_credit_name === x); + if(mappedArtist !== undefined) { + return {name: mappedArtist.artist_credit_name, mbid: mappedArtist.artist_mbid} + } + return {name: x}; + }) }, meta: naivePlay.meta } diff --git a/src/backend/sources/JellyfinApiSource.ts b/src/backend/sources/JellyfinApiSource.ts index 19c7f7c1..8521f27a 100644 --- a/src/backend/sources/JellyfinApiSource.ts +++ b/src/backend/sources/JellyfinApiSource.ts @@ -42,8 +42,8 @@ import { from "@jellyfin/sdk/lib/index.js"; import dayjs from "dayjs"; import EventEmitter from "events"; -import { BrainzMeta, PlayObject, PlayObjectLifecycleless } from "../../core/Atomic.js"; -import { buildTrackString, combinePartsToString, truncateStringToLength } from "../../core/StringUtils.js"; +import { ArtistCredit, BrainzMeta, PlayObject, PlayObjectLifecycleless } from "../../core/Atomic.js"; +import { artistNamesToCredits, buildTrackString, combinePartsToString, truncateStringToLength } from "../../core/StringUtils.js"; import { FormatPlayObjectOptions, InternalConfig, @@ -466,9 +466,16 @@ export default class JellyfinApiSource extends MemoryPositionalSource { meta.albumArtist = [ProviderIds.MusicBrainzAlbumArtist]; } + let playArtists: ArtistCredit[] = []; + if(Artists.length === 1 && meta.artist !== undefined) { + playArtists.push({name: Artists[0], mbid: meta.artist[0]}); + } else { + playArtists = artistNamesToCredits(Artists); + } + const play: PlayObjectLifecycleless = { data: { - artists: Artists, + artists: playArtists, album: Album, track: Name, albumArtists: AlbumArtists !== undefined ? AlbumArtists.map(x => x.Name) : undefined,