diff --git a/src/backend/common/vendor/ListenbrainzApiClient.ts b/src/backend/common/vendor/ListenbrainzApiClient.ts index a3e7ae0a..53926498 100644 --- a/src/backend/common/vendor/ListenbrainzApiClient.ts +++ b/src/backend/common/vendor/ListenbrainzApiClient.ts @@ -1,7 +1,7 @@ import { stringSameness } from '@foxxmd/string-sameness'; import dayjs from "dayjs"; import request, { Request, Response } from 'superagent'; -import { BrainzMeta, PlayObject, URLData } from "../../../core/Atomic.js"; +import { BrainzMeta, PlayObject, SCROBBLE_TS_SOC_START, URLData } from "../../../core/Atomic.js"; import { combinePartsToString, slice } from "../../../core/StringUtils.js"; import { findDelimiters, @@ -263,7 +263,8 @@ export class ListenbrainzApiClient extends AbstractApiClient { release_mbid, release_group_mbid, release_artist_name, - release_artist_names = [] + release_artist_names = [], + scrobble_ts_soc = SCROBBLE_TS_SOC_START } = {} } = {}, } = payload; @@ -295,6 +296,7 @@ export class ListenbrainzApiClient extends AbstractApiClient { }, meta: { nowPlaying, + scrobbleTsSOC: scrobble_ts_soc } } } diff --git a/src/backend/common/vendor/listenbrainz/interfaces.ts b/src/backend/common/vendor/listenbrainz/interfaces.ts index 360d358a..a1e672f7 100644 --- a/src/backend/common/vendor/listenbrainz/interfaces.ts +++ b/src/backend/common/vendor/listenbrainz/interfaces.ts @@ -3,6 +3,8 @@ * https://musicbrainz.org/doc/MusicBrainz_Database/Schema#Overview */ +import { ScrobbleTsSOC } from "../../../../core/Atomic.js"; + /** A unique product a Recording is issued on. * * This is like an album (release group) but is specific to the type, year, catalog, etc... for this release @@ -123,6 +125,11 @@ export interface SubmitListenAdditionalTrackInfo extends AdditionalTrackInfo { spotify_album_artist_ids?: string[]; spotify_artist_ids?: string[]; albumartist?: string; + /** Is the timestamp (listened_at) from when the user started listening or when they stopped listening? + * + * Specific to multi-scrobbler + */ + scrobble_ts_soc?: ScrobbleTsSOC } export interface TrackPayload extends MinimumTrack { additional_info?: SubmitListenAdditionalTrackInfo;