[READ-ONLY] Mirror of https://github.com/FoxxMD/multi-scrobbler. Scrobble plays from multiple sources to multiple clients docs.multi-scrobbler.app
deezer docker jellyfin koito lastfm listenbrainz maloja mopidy mpris music music-assistant plex scrobble self-hosted spotify subsonic tautulli youtube-music
0

Configure Feed

Select the types of activity you want to include in your feed.

feat(lzendpoint): Add MS specific timestamp SOC to payload

#360

FoxxMD (Sep 19, 2025, 12:54 PM UTC) 44f2a295 e061540e

+11 -2
+4 -2
src/backend/common/vendor/ListenbrainzApiClient.ts
··· 1 1 import { stringSameness } from '@foxxmd/string-sameness'; 2 2 import dayjs from "dayjs"; 3 3 import request, { Request, Response } from 'superagent'; 4 - import { BrainzMeta, PlayObject, URLData } from "../../../core/Atomic.js"; 4 + import { BrainzMeta, PlayObject, SCROBBLE_TS_SOC_START, URLData } from "../../../core/Atomic.js"; 5 5 import { combinePartsToString, slice } from "../../../core/StringUtils.js"; 6 6 import { 7 7 findDelimiters, ··· 263 263 release_mbid, 264 264 release_group_mbid, 265 265 release_artist_name, 266 - release_artist_names = [] 266 + release_artist_names = [], 267 + scrobble_ts_soc = SCROBBLE_TS_SOC_START 267 268 } = {} 268 269 } = {}, 269 270 } = payload; ··· 295 296 }, 296 297 meta: { 297 298 nowPlaying, 299 + scrobbleTsSOC: scrobble_ts_soc 298 300 } 299 301 } 300 302 }
+7
src/backend/common/vendor/listenbrainz/interfaces.ts
··· 3 3 * https://musicbrainz.org/doc/MusicBrainz_Database/Schema#Overview 4 4 */ 5 5 6 + import { ScrobbleTsSOC } from "../../../../core/Atomic.js"; 7 + 6 8 /** A unique product a Recording is issued on. 7 9 * 8 10 * This is like an album (release group) but is specific to the type, year, catalog, etc... for this release ··· 123 125 spotify_album_artist_ids?: string[]; 124 126 spotify_artist_ids?: string[]; 125 127 albumartist?: string; 128 + /** Is the timestamp (listened_at) from when the user started listening or when they stopped listening? 129 + * 130 + * Specific to multi-scrobbler 131 + */ 132 + scrobble_ts_soc?: ScrobbleTsSOC 126 133 } 127 134 export interface TrackPayload extends MinimumTrack { 128 135 additional_info?: SubmitListenAdditionalTrackInfo;