Something went wrong. Try again.
[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
Something went wrong. Try again.
1.8 kB · 45 lines
TypeScript
at commit fa6ed323
123456789101112131415161718192021222324252627282930313233343536373839404142434445import dayjs from 'dayjs';import duration from 'dayjs/plugin/duration.js';import isBetween from 'dayjs/plugin/isBetween.js';import relativeTime from 'dayjs/plugin/relativeTime.js';import isToday from 'dayjs/plugin/isToday.js';import timezone from 'dayjs/plugin/timezone.js';import utc from 'dayjs/plugin/utc.js';import { AmbPlayObject, ListenRangeData, ListenRangeDataAmb, PlayObject, PlayProgress, PlayProgressAmb } from '../../core/Atomic.js';
dayjs.extend(utc)dayjs.extend(isBetween);dayjs.extend(relativeTime);dayjs.extend(duration);dayjs.extend(timezone);dayjs.extend(isToday);
export const rehydratePlay = (obj: AmbPlayObject): PlayObject => { if(obj.data?.playDate !== undefined && typeof obj.data.playDate === 'string') { obj.data.playDate = dayjs(obj.data.playDate); if(obj.data.playDateCompleted !== undefined) { obj.data.playDateCompleted = dayjs(obj.data.playDateCompleted); } if(obj.data.listenRanges !== undefined) { obj.data.listenRanges = obj.data.listenRanges.map(rehydrateListenRangeData); } } return obj as PlayObject;}
// this may become problematic since we aren't re-instantiating Progress class, just implementing interface// but that may only be an issue if rehydrating source data which isn't in scope so farexport const rehydrateListenRangeData = (obj: ListenRangeDataAmb): ListenRangeData => { return { start: rehydratePlayProgress(obj.start), end: rehydratePlayProgress(obj.end) } as ListenRangeData;}
export const rehydratePlayProgress = (obj: PlayProgressAmb): PlayProgress => { if(typeof obj.timestamp === 'string') { obj.timestamp = dayjs(obj.timestamp); } return obj as PlayProgress;}