From 56fdb126838042db603e77562a0bf69b99cea56b Mon Sep 17 00:00:00 2001 From: Exerra Date: Wed, 15 Jul 2026 00:04:14 +0300 Subject: [PATCH] feat(sources): update Apple Music configuration and environment variables Refactored Apple Music source configuration to support token-based authentication via key files and custom headers. Renamed environment variable prefixes from 'AM' to 'APPLEMUSIC' for consistency. --- src/backend/sources/ScrobbleSources.ts | 29 +++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/backend/sources/ScrobbleSources.ts b/src/backend/sources/ScrobbleSources.ts index 2dda83d6..94fea038 100644 --- a/src/backend/sources/ScrobbleSources.ts +++ b/src/backend/sources/ScrobbleSources.ts @@ -833,12 +833,31 @@ export default class ScrobbleSources { } } break; case 'applemusic': { + const key = (() => { + const id = process.env.APPLEMUSIC_KEY_ID; + const teamId = process.env.APPLEMUSIC_TEAM_ID; + const p8 = process.env.APPLEMUSIC_KEY_P8; + if (id !== undefined && teamId !== undefined && p8 !== undefined) { + return { id, teamId, p8 }; + } + return undefined; + })(); + const headersEnv = process.env.APPLEMUSIC_HEADERS; + let headers: Record | undefined; + if (headersEnv !== undefined && headersEnv.trim() !== '') { + try { + headers = JSON.parse(headersEnv); + } catch (e) { + throw new Error(`APPLEMUSIC_HEADERS could not be parsed as JSON: ${headersEnv}`, { cause: e }); + } + } const data = removeUndefinedKeys({ - mediaUserToken: process.env.AM_MEDIA_USER_TOKEN, - token: process.env.AM_TOKEN, - storefront: process.env.AM_STOREFRONT, + mediaUserToken: process.env.APPLEMUSIC_MEDIA_USER_TOKEN, + token: process.env.APPLEMUSIC_TOKEN, + key, + headers, }, false); - const p = getCommonComponentEnvConfig('AM'); + const p = getCommonComponentEnvConfig('APPLEMUSIC'); if (nonEmptyObj(data) || nonEmptyObj(p)) { configs.push({ type: 'applemusic', @@ -848,7 +867,7 @@ export default class ScrobbleSources { configureAs: defaultConfigureAs, data: data, ...p, - options: transformPresetEnv('AM') + options: transformPresetEnv('APPLEMUSIC') }); } } break; -- 2.51.2