From e62e1ac2dd4c5c116874d7e5f68883628bde8352 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 24 Mar 2026 19:38:05 +0000 Subject: [PATCH] feat: Add seenAt to source/client play meta --- src/backend/scrobblers/AbstractScrobbleClient.ts | 2 +- src/backend/utils/PlayTransformUtils.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 478a127b..6d896bb9 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -847,7 +847,7 @@ export default abstract class AbstractScrobbleClient extends AbstractComponent i } queueScrobble = async (data: PlayObject | PlayObject[], source: string) => { - const plays = Array.isArray(data) ? data : [data]; + const plays = (Array.isArray(data) ? data : [data]).map(x => ({...x, meta: {...x.meta, seenAt: dayjs()}})); const sm = staggerMapper({concurrency: 2}); for await(const play of pMapIterable(plays, sm(async x => await this.transformPlay(x, TRANSFORM_HOOK.preCompare)), {concurrency: 2})) { try { diff --git a/src/backend/utils/PlayTransformUtils.ts b/src/backend/utils/PlayTransformUtils.ts index 709a6cfb..fb999739 100644 --- a/src/backend/utils/PlayTransformUtils.ts +++ b/src/backend/utils/PlayTransformUtils.ts @@ -15,6 +15,7 @@ import { WhenConditionsConfig, WhenParts } from "../common/infrastructure/Transform.js"; +import dayjs from "dayjs"; export const isWhenCondition = (val: unknown): val is WhenParts => { if (val !== null && typeof val === 'object') { @@ -173,11 +174,12 @@ export interface TransformPlayPartsOptions { } export const baseFormatPlayObj = (data: any, play: PlayObjectLifecycleless): PlayObject => { - return { + const basePlay = { data: { ...play.data }, meta: { + seenAt: dayjs(), ...play.meta, lifecycle: { input: data, @@ -186,6 +188,8 @@ export const baseFormatPlayObj = (data: any, play: PlayObjectLifecycleless): Pla } } } + basePlay.meta.lifecycle.original.meta.seenAt = basePlay.meta.seenAt; + return basePlay; } export const defaultLifecycle = (extra?: PlayLifecycle): PlayLifecycle => { -- 2.51.2