diff --git a/package-lock.json b/package-lock.json index 2fc86ec2..393ee019 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,6 +48,7 @@ "react-redux": "^8.1.2", "react-router-dom": "^6.15.0", "safe-stable-stringify": "^1.1.1", + "sass": "^1.66.1", "spotify-web-api-node": "^5.0.2", "superagent": "^8.0.9", "tailwindcss": "^3.3.3", @@ -11896,6 +11897,11 @@ "url": "https://opencollective.com/immer" } }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -20793,6 +20799,22 @@ "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", "dev": true }, + "node_modules/sass": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", + "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/sass-loader": { "version": "12.6.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", diff --git a/package.json b/package.json index d2724f1b..1eca3922 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "react-redux": "^8.1.2", "react-router-dom": "^6.15.0", "safe-stable-stringify": "^1.1.1", + "sass": "^1.66.1", "spotify-web-api-node": "^5.0.2", "superagent": "^8.0.9", "tailwindcss": "^3.3.3", diff --git a/src/client/components/player/Player.tsx b/src/client/components/player/Player.tsx new file mode 100644 index 00000000..a29fa4df --- /dev/null +++ b/src/client/components/player/Player.tsx @@ -0,0 +1,340 @@ +import React, {useState, useCallback} from 'react'; +import './player.scss'; +import PlayerTimestamp from "./PlayerTimestamp"; +import PlayerControls from "./PlayerControls"; + +export interface PlayerProps { + tracks: Track[] + +} + +export interface Track { + name: string + artist: string + album: string + year: number + duration: number + artwork: string +} + +export const sampleTracks: Track[] = [ + { + name: "Somebody Hates Me", + artist: "Reel Big Fish", + album: "Why Do They Rock So Hard?", + year: 1998, + duration: 210, + artwork: "https://is5-ssl.mzstatic.com/image/thumb/Music/59/db/b5/mzi.nloomwwj.jpg/268x0w.jpg" + }, + { + name: "Beer", + artist: "Reel Big Fish", + album: "We're Not Happy Til You're Not Happy", + year: 2005, + duration: 233, + artwork: "https://upload.wikimedia.org/wikipedia/en/9/9d/Reel_Big_Fish_-_We%27re_Not_Happy_%27til_You%27re_Not_Happy_cover.jpg" + }, + { + name: "We Will Fall Together", + artist: "Streetlight Manifesto", + album: "Somewhere In The Between", + year: 2007, + duration: 289, + artwork: "https://upload.wikimedia.org/wikipedia/en/9/95/Streetlight_Manifesto_-_Somewhere_in_the_Between.jpg" + }, + { + name: "Welcome To The Jungle", + artist: "Guns N' Roses", + album: "Appetite For Destruction", + year: 1987, + duration: 277, + artwork: "https://upload.wikimedia.org/wikipedia/en/6/60/GunsnRosesAppetiteforDestructionalbumcover.jpg" + }, + { + name: "Estranged", + artist: "Guns N' Roses", + album: "Use Your Illusion II", + year: 1991, + duration: 563, + artwork: "https://www.lifeofvinyl.com/images/super/0720642442012.jpg" + }, + { + name: "Cheer Up!", + artist: "Reel Big Fish", + album: "Cheer Up!", + year: 2002, + duration: 163, + artwork: "https://upload.wikimedia.org/wikipedia/en/f/f9/Reel_Big_Fish_-_Cheer_Up%21_cover.jpg" + } +]; + +const Player = (props: PlayerProps) => { + const [playStatus, setPlayStatus] = useState(false); + const [currentTrack, setCurrentTrack] = useState(0); + const [nextTrack, setNextTrack] = useState(1); + const [prevTrack, setPrevTrack] = useState(props.tracks.length - 1); + const [currentTime, setCurrentTime] = useState(0); + const [sliding, setSliding] = useState(0); + const [viewMode, setViewMode] = useState('player'); + + const toggleViewMode = useCallback(() => { + let newViewMode = ""; + switch(viewMode) { + case "player": + newViewMode = "playlist"; + break; + case "playlist": + newViewMode = "player" + break; + } + setViewMode(newViewMode); + }, [viewMode, setViewMode]); + + const togglePlay = useCallback(() => {},[playStatus, setPlayStatus]); + const changeTrack = useCallback((track) => {}, [props.tracks, nextTrack, prevTrack, setCurrentTrack, setSliding, setCurrentTrack, setNextTrack, setPrevTrack]); + const toggleNextTrack = useCallback(() => {}, [nextTrack, changeTrack]); + const togglePrevTrack = useCallback(() => {}, [prevTrack, changeTrack]); + const setTime = useCallback((time) => {}, [props.tracks, currentTrack, setNextTrack, setCurrentTime]); + + const aPrevTrack = props.tracks[prevTrack]; + const aCurrentTrack = props.tracks[currentTrack]; + const aNextTrack = props.tracks[nextTrack]; + + let slidingStatus = ""; + switch (sliding) { + case -1: + slidingStatus = "is-sliding-prev"; + break; + case 1: + slidingStatus = "is-sliding-next"; + break; + } + + let playlistIcon = "fa fa-fw "; + if (viewMode == "playlist") { + playlistIcon += "fa-times"; + } else { + playlistIcon += "fa-bars"; + } + + return ( +
+
+
+
+
+
+ + + + + {/**/} + + {/**/} +
+
+

{aCurrentTrack.name}

+

{aCurrentTrack.artist}

+ +
+ {/* {}} />*/} +
+
+ ); +} + +export default Player; + +/* +export class PlayerC extends React.Component { + static get defaultProps() { + return { + + } + } + + constructor(props, defaultProps) { + super(props, defaultProps); + + this.state = { + playStatus: 0, + currentTrack: 0, + nextTrack: 1, + prevTrack: this.props.tracks.length-1, + currentTime: 0, + sliding: 0, + likedTracks: [], + viewMode: "player" + } + + this.togglePlay = this.togglePlay.bind(this); + this.toggleViewMode = this.toggleViewMode.bind(this); + this.nextTrack = this.nextTrack.bind(this); + this.prevTrack = this.prevTrack.bind(this); + this.likeTrack = this.likeTrack.bind(this); + } + + toggleViewMode() { + let viewMode = ""; + switch(this.state.viewMode) { + case "player": + viewMode = "playlist"; + break; + case "playlist": + viewMode = "player" + break; + } + + this.setState({ + viewMode: viewMode + }); + } + + togglePlay() { + let status = this.state.playStatus; + if (status == 0) { + // Play + status = 1; + this.timer = setInterval(() => { + this.setTime(this.state.currentTime + 1); + }, 1000); + } else { + // Pause + status = 0; + clearInterval(this.timer); + } + this.setState({ playStatus: status }); + } + + changeTrack(track, dir) { + if (this.state.sliding == 0) { + let this_track = track; + let next_track = track + 1; + let prev_track = track - 1; + + if (next_track >= this.props.tracks.length) next_track = 0; + if (prev_track < 0) prev_track = this.props.tracks.length - 1; + + this.setState({ + sliding: dir + }); + + setTimeout(() => { + this.setState({ + sliding: 0, + currentTrack: this_track, + nextTrack: next_track, + prevTrack: prev_track, + currentTime: 0 + }); + }, 500); + } + } + + nextTrack() { + this.changeTrack(this.state.nextTrack, 1); + } + + prevTrack() { + if (this.state.currentTime < 2) { + this.changeTrack(this.state.prevTrack, -1); + } else { + this.setState({ + currentTime: 0 + }); + } + } + + likeTrack() { + let likedTracks = this.state.likedTracks; + let found = false; + for (let i = 0; i < this.state.likedTracks.length; i++) { + if (this.state.likedTracks[i] == this.state.currentTrack) { + found = true; + likedTracks.splice(i, 1); + break; + } + } + + if (!found) { + likedTracks.push(this.state.currentTrack); + } + + this.setState({ + likedTracks: likedTracks + }); + } + + setTime(time) { + time = Math.floor(time); + if (time > this.props.tracks[this.state.currentTrack].duration) { + this.nextTrack(); + } else { + this.setState({ currentTime: time }); + } + } + + render() { + const prevTrack = this.props.tracks[this.state.prevTrack]; + const currentTrack = this.props.tracks[this.state.currentTrack]; + const nextTrack = this.props.tracks[this.state.nextTrack]; + + let sliding = ""; + switch (this.state.sliding) { + case -1: + sliding = "is-sliding-prev"; + break; + case 1: + sliding = "is-sliding-next"; + break; + } + + let playlistIcon = "fa fa-fw "; + if (this.state.viewMode == "playlist") { + playlistIcon += "fa-times"; + } else { + playlistIcon += "fa-bars"; + } + + let isLiked = false; + for (let i = 0; i < this.state.likedTracks.length; i++) { + if (this.state.likedTracks[i] == this.state.currentTrack) { + isLiked = true; + } + } + + return ( +
+
+
+
+
+
+ + + + + + + +
+
+

{currentTrack.name}

+

{currentTrack.artist}

+ +
+ +
+
+ ); + } +} +*/ diff --git a/src/client/components/player/PlayerControls.tsx b/src/client/components/player/PlayerControls.tsx new file mode 100644 index 00000000..caff1a33 --- /dev/null +++ b/src/client/components/player/PlayerControls.tsx @@ -0,0 +1,111 @@ +import React from "react"; +import './controls.scss'; + +export interface ControlsProps { + isPlaying: boolean + isLiked: boolean + prevTrack: () => any + togglePlay: () => any + nextTrack: () => any + likeTrack: () => any +} + +const Controls = (props: ControlsProps) => { + let playClass = "fa fa-fw "; + if (!props.isPlaying) { + playClass += "fa-play"; + } else { + playClass += "fa-pause"; + } + + let likeClass = "button like "; + let heartClass = "fa fa-fw "; + if (!props.isLiked) { + heartClass += "fa-heart-o"; + } else { + likeClass += "is-liked"; + heartClass += "fa-heart"; + } + + return( +
+ + + + + +
+ ); +} + +/*export class ControlsC extends React.Component { + render() { + let playClass = "fa fa-fw "; + if (!this.props.isPlaying) { + playClass += "fa-play"; + } else { + playClass += "fa-pause"; + } + + let likeClass = "button like "; + let heartClass = "fa fa-fw "; + if (!this.props.isLiked) { + heartClass += "fa-heart-o"; + } else { + likeClass += "is-liked"; + heartClass += "fa-heart"; + } + + return( +
+ + + + + +
+ ); + } +}*/ + +export default Controls; diff --git a/src/client/components/player/PlayerTimestamp.tsx b/src/client/components/player/PlayerTimestamp.tsx new file mode 100644 index 00000000..11ec7c7f --- /dev/null +++ b/src/client/components/player/PlayerTimestamp.tsx @@ -0,0 +1,62 @@ +import React from "react"; +import './timestamp.scss'; + +export interface TimestampProps { + current: number + duration: number +} + +const convertTime = (rawTime: number) => { + let mins = Math.floor(rawTime / 60); + let seconds = rawTime - (mins * 60); + let secStr: string = seconds.toString(); + if (seconds < 10) { + secStr = "0" + seconds; + } + return mins + ":" + secStr; +} + +const Timestamp = (props: TimestampProps) => { + return( +
+
+ {convertTime(props.current)} +
+
+
+
+
+ {convertTime(props.duration - props.current)} +
+
+ ); +} +/*export class TimestampC extends React.Component { + convertTime(time) { + let mins = Math.floor(time / 60); + let seconds = time - (mins * 60); + if (seconds < 10) { + seconds = "0" + seconds; + } + time = mins + ":" + seconds; + return time; + } + + render() { + return( +
+
+ {this.convertTime(this.props.current)} +
+
+
+
+
+ {this.convertTime(this.props.duration - this.props.current)} +
+
+ ); + } +}*/ + +export default Timestamp; diff --git a/src/client/components/player/Playlist.tsx b/src/client/components/player/Playlist.tsx new file mode 100644 index 00000000..3a929cee --- /dev/null +++ b/src/client/components/player/Playlist.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +/*export class Playlist extends React.Component { + render() { + const tracks = this.props.tracks; + + let isHidden = ""; + if (!this.props.isVisible) { + isHidden = "is-hidden"; + } + + return( + + ); + } +}*/ diff --git a/src/client/components/player/README.md b/src/client/components/player/README.md new file mode 100644 index 00000000..138bd96d --- /dev/null +++ b/src/client/components/player/README.md @@ -0,0 +1 @@ +Player designed based on [React Music Player UI](https://codepen.io/keithpickering/pen/wjYJKM) by [Keith Pickering](https://keithpickering.github.io/) diff --git a/src/client/components/player/controls.scss b/src/client/components/player/controls.scss new file mode 100644 index 00000000..57759951 --- /dev/null +++ b/src/client/components/player/controls.scss @@ -0,0 +1,40 @@ +@use './playerBase.scss'; +$spacing: 1.5rem; +$primary: #00ACC1; + + +.controls { + display: flex; + justify-content: space-around; + align-items: center; + height: $spacing*2.5; + text-align: center; + background: $primary; + + .button { + height: 100%; + width: $spacing*2.5; + border: 0; + border-radius: 0; + transition: background 250ms; + box-shadow: none !important; + background: transparent; + color: white; + + &:hover { + background: lighten($primary, 4%); + } + + &.play { + font-size: 1.6rem; + } + + &.like.is-liked { + background: #F06292; + } + + .icon { + //transition: transform 150ms; + } + } +} diff --git a/src/client/components/player/player.scss b/src/client/components/player/player.scss new file mode 100644 index 00000000..be8d39a7 --- /dev/null +++ b/src/client/components/player/player.scss @@ -0,0 +1,113 @@ +@use './playerBase.scss'; +$spacing: 1.5rem; +$primary: #00ACC1; + + +.player { + color: black; + overflow: hidden; + max-width: 90%; + max-height: 90vh; + //min-height: 487px; + border-radius: 5px; + background: white; + box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); + + &__bg { + position: fixed; + top: -40px; + right: -40px; + bottom: -40px; + left: -40px; + background-size: cover; + background-position: center; + filter: blur(20px); + z-index: -2; + + &:after { + content: ""; + position: absolute; + top: -40px; + right: -40px; + bottom: -40px; + left: -40px; + background: rgba(#263238, 0.8); + transition: background 1s; + + [class*="is-sliding"] & { + background: rgba(#263238, 1); + } + } + + &.prev, + &.next { + opacity: 0; + z-index: -1; + } + } + + &__head { + padding: $spacing/2 $spacing; + } + + &__art { + position: relative; + padding-bottom: 100%; + width: 100%; + border-bottom: 1px solid #ECEFF1; + background: darken(#263238, 10%); + + .is-sliding-next & { + transform: translate(-100%, 0); + transition: transform 500ms ease-in-out; + } + + .is-sliding-prev & { + transform: translate(100%, 0); + transition: transform 500ms ease-in-out; + } + + > img { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + margin: 0 auto; + + &.prev { + left: -100%; + } + + &.next { + left: 100%; + } + } + } + + &__body { + text-align: center; + padding: $spacing; + transition: all 250ms; + + [class*="is-sliding"] & { + opacity: 0; + transform: scale(0.95); + } + + .title { + position: relative; + width: 100%; + font-size: 1.2rem; + white-space: nowrap; + } + + .subtitle { + font-size: 0.75rem; + color: #90A4AE; + padding-top: $spacing/4; + margin-bottom: $spacing; + text-transform: uppercase; + } + } +} diff --git a/src/client/components/player/playerBase.scss b/src/client/components/player/playerBase.scss new file mode 100644 index 00000000..a0919afa --- /dev/null +++ b/src/client/components/player/playerBase.scss @@ -0,0 +1,10 @@ +$spacing: 1.5rem; +$primary: #00ACC1; + +.button { + &:active { + > .icon { + transform: scale(0.85); + } + } +} diff --git a/src/client/components/player/playlist.scss b/src/client/components/player/playlist.scss new file mode 100644 index 00000000..8360194b --- /dev/null +++ b/src/client/components/player/playlist.scss @@ -0,0 +1,62 @@ +$spacing: 1.5rem; +$primary: #00ACC1; + + +.playlist { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: $spacing; + padding-right: $spacing*2; + overflow: auto; + background: #263238; + + &__item.media { + align-items: center; + border-top: 2px solid #37474F; + + &:first-child { + border-top: 0; + } + + .title, + .subtitle { + white-space: nowrap; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + } + + .title { + font-size: 0.85rem; + color: #B0BEC5; + } + + .subtitle { + margin-top: -$spacing/2; + font-size: 0.75rem; + text-transform: uppercase; + color: #607D8B + } + } +} + +.toggle-playlist { + position: absolute; + top: $spacing/2; + right: $spacing/2; + border: 0; + outline: 0; + background: transparent; + text-shadow: rgba(black, 0.75) 0 0 5px; + box-shadow: none !important; + color: white !important; + z-index: 1; + transition: all 500ms; + + [class*="is-sliding"] & { + opacity: 0; + } +} diff --git a/src/client/components/player/timestamp.scss b/src/client/components/player/timestamp.scss new file mode 100644 index 00000000..fe055ebd --- /dev/null +++ b/src/client/components/player/timestamp.scss @@ -0,0 +1,46 @@ +@use './playerBase.scss'; +$spacing: 1.5rem; +$primary: #00ACC1; + + +.timestamp { + position: relative; + width: 100%; + height: $spacing; + + &__progress, + &__current, + &__total { + position: absolute; + top: 0; + font-size: 0.75rem; + } + + &__progress { + position: relative; + top: $spacing/4; + left: 50%; + height: $spacing/4; + width: calc(100% - #{$spacing*3}); + transform: translate(-50%, 0); + border-radius: 5px; + overflow: hidden; + background: #ECEFF1; + + > div { + position: absolute; + top: 0; + left: 0; + bottom: 0; + background: $primary; + } + } + + &__current { + left: 0; + } + + &__total { + right: 0; + } +} -- 2.54.0 From f7195fb40c0446218d41794d73ec40e4c1de8120 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 8 Sep 2023 14:47:53 -0400 Subject: [PATCH 02/82] feat: Rework source api to include player states * Create and implement api interface for player state data * Serialize memory source players to object indexed by platform id * Refactor event emitters to separate event data better from event metadata * Update source slice when player update event is broadcast --- .../scrobblers/AbstractScrobbleClient.ts | 2 +- src/backend/server/api.ts | 4 +++- src/backend/sources/AbstractSource.ts | 6 +++--- src/backend/sources/MemorySource.ts | 14 ++++++++++++- .../PlayerState/AbstractPlayerState.ts | 20 +++++++++++++++++- src/client/status/ducks.ts | 10 +++++++-- src/core/Atomic.ts | 21 +++++++++++++++++++ 7 files changed, 68 insertions(+), 9 deletions(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index f9e3bb33..890ddda6 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -376,7 +376,7 @@ export default abstract class AbstractScrobbleClient { public emitEvent = (eventName: string, payload: object) => { this.emitter.emit(eventName, { - ...payload, + data: payload, type: this.type, name: this.name, from: 'client' diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index 4fb3519d..8807502f 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -22,6 +22,7 @@ import {setupJellyfinRoutes} from "./jellyfinRoutes"; import {setupDeezerRoutes} from "./deezerRoutes"; import {setupAuthRoutes} from "./auth"; import { ExpressHandler } from "../common/infrastructure/Atomic"; +import MemorySource from "../sources/MemorySource.js"; let output: LogInfo[] = [] @@ -106,7 +107,7 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput const session = await createSession(req, res); scrobbleSources.emitter.on('*', (payload: any, eventName: string) => { if(payload.from !== undefined) { - session.push({...payload.data, event: eventName}, payload.from); + session.push({event: eventName, ...payload}, payload.from); } }); }); @@ -143,6 +144,7 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput hasAuth: requiresAuth, hasAuthInteraction: requiresAuthInteraction, authed, + players: x instanceof MemorySource ? x.playersToObject() : {} }; if (!initialized) { base.status = 'Not Initialized'; diff --git a/src/backend/sources/AbstractSource.ts b/src/backend/sources/AbstractSource.ts index 48dbdfeb..8d81f431 100644 --- a/src/backend/sources/AbstractSource.ts +++ b/src/backend/sources/AbstractSource.ts @@ -383,12 +383,12 @@ export default abstract class AbstractSource { } } - public emitEvent = (eventName: string, payload: object) => { + public emitEvent = (eventName: string, payload: object = {}) => { this.emitter.emit(eventName, { - ...payload, type: this.type, name: this.name, - from: 'source' + from: 'source', + data: payload, }); } } diff --git a/src/backend/sources/MemorySource.ts b/src/backend/sources/MemorySource.ts index 72579087..0e64713c 100644 --- a/src/backend/sources/MemorySource.ts +++ b/src/backend/sources/MemorySource.ts @@ -27,7 +27,7 @@ import TupleMap from "../common/TupleMap"; import { AbstractPlayerState, PlayerStateOptions } from "./PlayerState/AbstractPlayerState"; import { GenericPlayerState } from "./PlayerState/GenericPlayerState"; import {Logger} from "@foxxmd/winston"; -import { PlayObject } from "../../core/Atomic"; +import {PlayObject, SourcePlayerObj} from "../../core/Atomic"; import { buildTrackString } from "../../core/StringUtils"; export default class MemorySource extends AbstractSource { @@ -58,6 +58,17 @@ export default class MemorySource extends AbstractSource { players: Map = new Map(); + playersToObject = (): Record => { + if(this.players.size === 0) { + return {}; + } + const record: Record = {}; + for(const [k,v] of this.players.entries()) { + record[k] = v.getApiState(); + } + return record; + } + getFlatCandidateRecentlyPlayed = (): PlayObject[] => { // TODO sort? return Array.from(this.candidateRecentlyPlayed.values()).flat(); @@ -154,6 +165,7 @@ export default class MemorySource extends AbstractSource { } if(this.config.options?.logPlayerState === true) { player.logSummary(); + this.emitEvent('playerUpdate', player.getApiState()); } } for (const deadId of deadPlatformIds) { diff --git a/src/backend/sources/PlayerState/AbstractPlayerState.ts b/src/backend/sources/PlayerState/AbstractPlayerState.ts index bea0f9ee..4de82f84 100644 --- a/src/backend/sources/PlayerState/AbstractPlayerState.ts +++ b/src/backend/sources/PlayerState/AbstractPlayerState.ts @@ -9,7 +9,7 @@ import dayjs, {Dayjs} from "dayjs"; import { formatNumber, genGroupIdStr, playObjDataMatch, progressBar } from "../../utils"; import {Logger} from "@foxxmd/winston"; import { ListenProgress } from "./ListenProgress"; -import { ListenRange, PlayData, PlayObject } from "../../../core/Atomic"; +import {ListenRange, PlayData, PlayObject, SourcePlayerObj} from "../../../core/Atomic"; import { buildTrackString } from "../../../core/StringUtils"; export interface PlayerStateIntervals { @@ -274,4 +274,22 @@ export abstract class AbstractPlayerState { logSummary() { this.logger.debug(this.textSummary()); } + + getApiState(): SourcePlayerObj { + return { + platformId: this.platformIdStr, + play: this.getPlayedObject(), + playLastUpdatedAt: this.playLastUpdatedAt.toISOString(), + playFirstSeenAt: this.playFirstSeenAt.toISOString(), + playerLastUpdatedAt: this.stateLastUpdatedAt.toISOString(), + position: this.currentListenRange !== undefined && this.currentListenRange[1].position !== undefined ? this.currentListenRange[1].position : undefined, + listenedDuration: this.getListenDuration(), + status: { + reported: this.reportedStatus, + calculated: this.calculatedStatus, + stale: this.isUpdateStale(), + orphaned: this.isOrphaned() + } + } + } } diff --git a/src/client/status/ducks.ts b/src/client/status/ducks.ts index 3374da7f..abc932d3 100644 --- a/src/client/status/ducks.ts +++ b/src/client/status/ducks.ts @@ -7,7 +7,7 @@ import { } from '@reduxjs/toolkit' import { Api } from '@reduxjs/toolkit/query/react'; import {statusApi} from "./statusApi"; -import {ClientStatusData, SourceStatusData} from "../../core/Atomic"; +import {ClientStatusData, SourcePlayerJson, SourceStatusData} from "../../core/Atomic"; export interface ApiEventPayload { type: string, @@ -48,7 +48,13 @@ const sourceSlice = createSlice({ (state, action) => { state.entities[action.payload.id].tracksDiscovered = state.entities[action.payload.id].tracksDiscovered + 1; } - ) + ).addMatcher( + (action) => sourceUpdate.match(action) && action.payload.event === 'playerUpdate', + (state, action) => { + const playerState = action.payload.data as SourcePlayerJson; + state.entities[action.payload.id].players[playerState.platformId] = playerState; + } + ) } }); const clientSlice = createSlice({ diff --git a/src/core/Atomic.ts b/src/core/Atomic.ts index a7768840..71cfb61f 100644 --- a/src/core/Atomic.ts +++ b/src/core/Atomic.ts @@ -11,6 +11,7 @@ export interface SourceStatusData { hasAuth: boolean; hasAuthInteraction: boolean; authed: boolean; + players: Record } export interface ClientStatusData { @@ -149,3 +150,23 @@ export interface LogOutputConfig { export interface LogInfoJson extends LogInfo { formattedMessage: string } + +export interface SourcePlayerObj { + platformId: string, + play: PlayObject, + playFirstSeenAt: string, + playLastUpdatedAt: string, + playerLastUpdatedAt: string + position?: number + listenedDuration: number + status: { + reported: string + calculated: string + stale: boolean + orphaned: boolean + } +} + +export interface SourcePlayerJson extends Omit { + play: JsonPlayObject +} -- 2.54.0 From 9cc820c76e027288121203ed961ff9d9591b4b80 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 8 Sep 2023 16:33:23 -0400 Subject: [PATCH 03/82] feat: More player polish and additional info pane --- package-lock.json | 52 ++- package.json | 3 + src/backend/server/api.ts | 2 +- src/client/components/player/Player.tsx | 332 ++---------------- src/client/components/player/PlayerInfo.tsx | 40 +++ .../components/player/PlayerTimestamp.tsx | 4 +- src/client/components/player/Playlist.tsx | 33 -- src/client/components/player/controls.scss | 2 +- src/client/components/player/player.scss | 31 +- .../player/{playlist.scss => trackInfo.scss} | 24 +- .../statusCard/SourceStatusCard.tsx | 12 +- .../statusCard/StatusCardSkeleton.tsx | 2 +- 12 files changed, 185 insertions(+), 352 deletions(-) create mode 100644 src/client/components/player/PlayerInfo.tsx delete mode 100644 src/client/components/player/Playlist.tsx rename src/client/components/player/{playlist.scss => trackInfo.scss} (74%) diff --git a/package-lock.json b/package-lock.json index 393ee019..0b9c7fca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,9 @@ "license": "MIT", "dependencies": { "@awaitjs/express": "^0.6.3", + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/react-fontawesome": "^0.2.0", "@foxxmd/string-sameness": "^0.1.3", "@foxxmd/winston": "3.3.31", "@foxxmd/youtube-music-ts-api": "1.5.1", @@ -2684,6 +2687,51 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", + "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", + "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz", + "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz", + "integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, "node_modules/@foxxmd/string-sameness": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@foxxmd/string-sameness/-/string-sameness-0.1.3.tgz", @@ -19392,7 +19440,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -19402,8 +19449,7 @@ "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/proxy-addr": { "version": "2.0.7", diff --git a/package.json b/package.json index 1eca3922..bf14394c 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,9 @@ "homepage": ".", "dependencies": { "@awaitjs/express": "^0.6.3", + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/react-fontawesome": "^0.2.0", "@foxxmd/string-sameness": "^0.1.3", "@foxxmd/winston": "3.3.31", "@foxxmd/youtube-music-ts-api": "1.5.1", diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index 8807502f..f05b37df 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -144,7 +144,7 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput hasAuth: requiresAuth, hasAuthInteraction: requiresAuthInteraction, authed, - players: x instanceof MemorySource ? x.playersToObject() : {} + players: 'players' in x ? (x as MemorySource).playersToObject() : {} }; if (!initialized) { base.status = 'Not Initialized'; diff --git a/src/client/components/player/Player.tsx b/src/client/components/player/Player.tsx index a29fa4df..8e2a8c6b 100644 --- a/src/client/components/player/Player.tsx +++ b/src/client/components/player/Player.tsx @@ -1,11 +1,13 @@ -import React, {useState, useCallback} from 'react'; +import React, {useState, useCallback, Fragment} from 'react'; import './player.scss'; import PlayerTimestamp from "./PlayerTimestamp"; -import PlayerControls from "./PlayerControls"; +import {SourcePlayerJson} from "../../../core/Atomic"; +import PlayerInfo from "./PlayerInfo"; +import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; +import {faBars, faTimes} from '@fortawesome/free-solid-svg-icons' export interface PlayerProps { - tracks: Track[] - + data: SourcePlayerJson } export interface Track { @@ -17,64 +19,22 @@ export interface Track { artwork: string } -export const sampleTracks: Track[] = [ - { - name: "Somebody Hates Me", - artist: "Reel Big Fish", - album: "Why Do They Rock So Hard?", - year: 1998, - duration: 210, - artwork: "https://is5-ssl.mzstatic.com/image/thumb/Music/59/db/b5/mzi.nloomwwj.jpg/268x0w.jpg" - }, - { - name: "Beer", - artist: "Reel Big Fish", - album: "We're Not Happy Til You're Not Happy", - year: 2005, - duration: 233, - artwork: "https://upload.wikimedia.org/wikipedia/en/9/9d/Reel_Big_Fish_-_We%27re_Not_Happy_%27til_You%27re_Not_Happy_cover.jpg" - }, - { - name: "We Will Fall Together", - artist: "Streetlight Manifesto", - album: "Somewhere In The Between", - year: 2007, - duration: 289, - artwork: "https://upload.wikimedia.org/wikipedia/en/9/95/Streetlight_Manifesto_-_Somewhere_in_the_Between.jpg" - }, - { - name: "Welcome To The Jungle", - artist: "Guns N' Roses", - album: "Appetite For Destruction", - year: 1987, - duration: 277, - artwork: "https://upload.wikimedia.org/wikipedia/en/6/60/GunsnRosesAppetiteforDestructionalbumcover.jpg" - }, - { - name: "Estranged", - artist: "Guns N' Roses", - album: "Use Your Illusion II", - year: 1991, - duration: 563, - artwork: "https://www.lifeofvinyl.com/images/super/0720642442012.jpg" - }, - { - name: "Cheer Up!", - artist: "Reel Big Fish", - album: "Cheer Up!", - year: 2002, - duration: 163, - artwork: "https://upload.wikimedia.org/wikipedia/en/f/f9/Reel_Big_Fish_-_Cheer_Up%21_cover.jpg" - } -]; - const Player = (props: PlayerProps) => { - const [playStatus, setPlayStatus] = useState(false); - const [currentTrack, setCurrentTrack] = useState(0); - const [nextTrack, setNextTrack] = useState(1); - const [prevTrack, setPrevTrack] = useState(props.tracks.length - 1); - const [currentTime, setCurrentTime] = useState(0); - const [sliding, setSliding] = useState(0); + const { + data, + } = props; + + const { + play: { + data: { + track = '???', + artists = ['???'], + duration = 0 + } = {} + } = {}, + play + } = data; + const [viewMode, setViewMode] = useState('player'); const toggleViewMode = useCallback(() => { @@ -90,251 +50,23 @@ const Player = (props: PlayerProps) => { setViewMode(newViewMode); }, [viewMode, setViewMode]); - const togglePlay = useCallback(() => {},[playStatus, setPlayStatus]); - const changeTrack = useCallback((track) => {}, [props.tracks, nextTrack, prevTrack, setCurrentTrack, setSliding, setCurrentTrack, setNextTrack, setPrevTrack]); - const toggleNextTrack = useCallback(() => {}, [nextTrack, changeTrack]); - const togglePrevTrack = useCallback(() => {}, [prevTrack, changeTrack]); - const setTime = useCallback((time) => {}, [props.tracks, currentTrack, setNextTrack, setCurrentTime]); - - const aPrevTrack = props.tracks[prevTrack]; - const aCurrentTrack = props.tracks[currentTrack]; - const aNextTrack = props.tracks[nextTrack]; - - let slidingStatus = ""; - switch (sliding) { - case -1: - slidingStatus = "is-sliding-prev"; - break; - case 1: - slidingStatus = "is-sliding-next"; - break; - } - - let playlistIcon = "fa fa-fw "; - if (viewMode == "playlist") { - playlistIcon += "fa-times"; - } else { - playlistIcon += "fa-bars"; - } - return ( -
-
-
-
-
-
- - - - - {/**/} - - {/**/} -
+
+
+
+
-

{aCurrentTrack.name}

-

{aCurrentTrack.artist}

- +

{track}

+

{artists.join(' / ')}

+
- {/* {}} />*/} + +
); } export default Player; - -/* -export class PlayerC extends React.Component { - static get defaultProps() { - return { - - } - } - - constructor(props, defaultProps) { - super(props, defaultProps); - - this.state = { - playStatus: 0, - currentTrack: 0, - nextTrack: 1, - prevTrack: this.props.tracks.length-1, - currentTime: 0, - sliding: 0, - likedTracks: [], - viewMode: "player" - } - - this.togglePlay = this.togglePlay.bind(this); - this.toggleViewMode = this.toggleViewMode.bind(this); - this.nextTrack = this.nextTrack.bind(this); - this.prevTrack = this.prevTrack.bind(this); - this.likeTrack = this.likeTrack.bind(this); - } - - toggleViewMode() { - let viewMode = ""; - switch(this.state.viewMode) { - case "player": - viewMode = "playlist"; - break; - case "playlist": - viewMode = "player" - break; - } - - this.setState({ - viewMode: viewMode - }); - } - - togglePlay() { - let status = this.state.playStatus; - if (status == 0) { - // Play - status = 1; - this.timer = setInterval(() => { - this.setTime(this.state.currentTime + 1); - }, 1000); - } else { - // Pause - status = 0; - clearInterval(this.timer); - } - this.setState({ playStatus: status }); - } - - changeTrack(track, dir) { - if (this.state.sliding == 0) { - let this_track = track; - let next_track = track + 1; - let prev_track = track - 1; - - if (next_track >= this.props.tracks.length) next_track = 0; - if (prev_track < 0) prev_track = this.props.tracks.length - 1; - - this.setState({ - sliding: dir - }); - - setTimeout(() => { - this.setState({ - sliding: 0, - currentTrack: this_track, - nextTrack: next_track, - prevTrack: prev_track, - currentTime: 0 - }); - }, 500); - } - } - - nextTrack() { - this.changeTrack(this.state.nextTrack, 1); - } - - prevTrack() { - if (this.state.currentTime < 2) { - this.changeTrack(this.state.prevTrack, -1); - } else { - this.setState({ - currentTime: 0 - }); - } - } - - likeTrack() { - let likedTracks = this.state.likedTracks; - let found = false; - for (let i = 0; i < this.state.likedTracks.length; i++) { - if (this.state.likedTracks[i] == this.state.currentTrack) { - found = true; - likedTracks.splice(i, 1); - break; - } - } - - if (!found) { - likedTracks.push(this.state.currentTrack); - } - - this.setState({ - likedTracks: likedTracks - }); - } - - setTime(time) { - time = Math.floor(time); - if (time > this.props.tracks[this.state.currentTrack].duration) { - this.nextTrack(); - } else { - this.setState({ currentTime: time }); - } - } - - render() { - const prevTrack = this.props.tracks[this.state.prevTrack]; - const currentTrack = this.props.tracks[this.state.currentTrack]; - const nextTrack = this.props.tracks[this.state.nextTrack]; - - let sliding = ""; - switch (this.state.sliding) { - case -1: - sliding = "is-sliding-prev"; - break; - case 1: - sliding = "is-sliding-next"; - break; - } - - let playlistIcon = "fa fa-fw "; - if (this.state.viewMode == "playlist") { - playlistIcon += "fa-times"; - } else { - playlistIcon += "fa-bars"; - } - - let isLiked = false; - for (let i = 0; i < this.state.likedTracks.length; i++) { - if (this.state.likedTracks[i] == this.state.currentTrack) { - isLiked = true; - } - } - - return ( -
-
-
-
-
-
- - - - - - - -
-
-

{currentTrack.name}

-

{currentTrack.artist}

- -
- -
-
- ); - } -} -*/ diff --git a/src/client/components/player/PlayerInfo.tsx b/src/client/components/player/PlayerInfo.tsx new file mode 100644 index 00000000..bff6d6d0 --- /dev/null +++ b/src/client/components/player/PlayerInfo.tsx @@ -0,0 +1,40 @@ +import React, {Fragment} from 'react'; +import './trackInfo.scss'; +import {SourcePlayerJson} from "../../../core/Atomic"; + +export interface PlayerInfoProps { + data: SourcePlayerJson + isVisible: boolean +} + +const PlayerInfo = (props: PlayerInfoProps) => { + const { + isVisible = true, + data, + data: { + play, + } = {} + } = props; + + let isHidden = ""; + if (!isVisible) { + isHidden = "hidden"; + } + + if (play === undefined || play === null) { + return
    +
; + } + + return ( +
+
+
Player ID: {data.platformId}
+
Player Updated: {data.playerLastUpdatedAt}
+
Track Seen: {data.playFirstSeenAt}
+
Track Updated: {data.playLastUpdatedAt}
+
+
+ ); +} +export default PlayerInfo; diff --git a/src/client/components/player/PlayerTimestamp.tsx b/src/client/components/player/PlayerTimestamp.tsx index 11ec7c7f..c353f6aa 100644 --- a/src/client/components/player/PlayerTimestamp.tsx +++ b/src/client/components/player/PlayerTimestamp.tsx @@ -20,13 +20,13 @@ const Timestamp = (props: TimestampProps) => { return(
- {convertTime(props.current)} + {convertTime(Math.floor(props.current))}
- {convertTime(props.duration - props.current)} + {convertTime(Math.floor(props.duration) - Math.floor(props.current))}
); diff --git a/src/client/components/player/Playlist.tsx b/src/client/components/player/Playlist.tsx deleted file mode 100644 index 3a929cee..00000000 --- a/src/client/components/player/Playlist.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -/*export class Playlist extends React.Component { - render() { - const tracks = this.props.tracks; - - let isHidden = ""; - if (!this.props.isVisible) { - isHidden = "is-hidden"; - } - - return( -
    - {tracks.map((track, i) => { - return( -
  • this.props.changeTrack(i)}> -
    -

    - -

    -
    -
    -
    -

    {track.name}

    -

    {track.artist}

    -
    -
    -
  • - ) - })} -
- ); - } -}*/ diff --git a/src/client/components/player/controls.scss b/src/client/components/player/controls.scss index 57759951..71da75a1 100644 --- a/src/client/components/player/controls.scss +++ b/src/client/components/player/controls.scss @@ -1,5 +1,5 @@ @use './playerBase.scss'; -$spacing: 1.5rem; +$spacing: 1rem; $primary: #00ACC1; diff --git a/src/client/components/player/player.scss b/src/client/components/player/player.scss index be8d39a7..0ddf1a73 100644 --- a/src/client/components/player/player.scss +++ b/src/client/components/player/player.scss @@ -1,17 +1,39 @@ @use './playerBase.scss'; -$spacing: 1.5rem; +$spacing: 0.5rem; $primary: #00ACC1; .player { color: black; overflow: hidden; - max-width: 90%; + //max-width: 90%; max-height: 90vh; //min-height: 487px; - border-radius: 5px; + border-radius: 2px; background: white; - box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); + //box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); + + &__wrapper { + position: relative; + } + + .toggle-playlist { + position: absolute; + top: $spacing/2; + right: $spacing/0.5; + border: 0; + outline: 0; + background: transparent; + text-shadow: rgba(black, 0.75) 0 0 5px; + box-shadow: none !important; + color: white !important; + z-index: 1; + transition: all 500ms; + + [class*="is-sliding"] & { + opacity: 0; + } + } &__bg { position: fixed; @@ -88,6 +110,7 @@ $primary: #00ACC1; &__body { text-align: center; padding: $spacing; + //position: relative; transition: all 250ms; [class*="is-sliding"] & { diff --git a/src/client/components/player/playlist.scss b/src/client/components/player/trackInfo.scss similarity index 74% rename from src/client/components/player/playlist.scss rename to src/client/components/player/trackInfo.scss index 8360194b..de2b4d6a 100644 --- a/src/client/components/player/playlist.scss +++ b/src/client/components/player/trackInfo.scss @@ -3,15 +3,31 @@ $primary: #00ACC1; .playlist { + color: white; + font-size:0.80rem; position: absolute; top: 0; bottom: 0; left: 0; right: 0; - padding: $spacing; - padding-right: $spacing*2; - overflow: auto; - background: #263238; + padding: $spacing/1.7; + padding-right: $spacing/1.5; + //overflow: auto; + //background: #282c34; + + .playlist_body { + display: flex; + flex-wrap: wrap; + + .full { + width: 100%; + flex: 100%; + } + .half { + width: 100%; + flex: 50%; + } + } &__item.media { align-items: center; diff --git a/src/client/components/statusCard/SourceStatusCard.tsx b/src/client/components/statusCard/SourceStatusCard.tsx index 84cce58d..844d765c 100644 --- a/src/client/components/statusCard/SourceStatusCard.tsx +++ b/src/client/components/statusCard/SourceStatusCard.tsx @@ -5,6 +5,7 @@ import {Link} from "react-router-dom"; import {sourceAdapter} from "../../status/ducks"; import {RootState} from "../../store"; import {connect, ConnectedProps} from "react-redux"; +import Player from "../player/Player"; export interface SourceStatusCardData extends StatusCardSkeletonData, PropsFromRedux { loading?: boolean @@ -25,6 +26,7 @@ const SourceStatusCard = (props: SourceStatusCardData) => { },[data]); if(data !== undefined) { + const className = data.type !== 'spotify' ? 'md:pt-6' : ''; const { display, name, @@ -34,18 +36,22 @@ const SourceStatusCard = (props: SourceStatusCardData) => { status, tracksDiscovered, hasAuthInteraction, - type + type, + players = {} } = data; header = `(Source) ${display} - ${name}` + const platformIds = Object.keys(players); + // TODO links - body = ( + body = (
+ {platformIds.map(x => )}
Status: {status}
Tracks Discovered (since app started): {tracksDiscovered}
{canPoll && (!hasAuth || authed) ?
See recently played tracks returned by API
: null} {canPoll && hasAuthInteraction ? (Re)authenticate and (re)start polling : null} {canPoll && (!hasAuth || authed) ?
Restart Polling
: null} - ); +
); } return ( diff --git a/src/client/components/statusCard/StatusCardSkeleton.tsx b/src/client/components/statusCard/StatusCardSkeleton.tsx index fc4840ef..3464ca5b 100644 --- a/src/client/components/statusCard/StatusCardSkeleton.tsx +++ b/src/client/components/statusCard/StatusCardSkeleton.tsx @@ -19,7 +19,7 @@ const StatusCardSkeleton = (props: PropsWithChildren) =>

{loading || header === undefined ? : header}

-
+
{loading ? : children}
-- 2.54.0 From b9f04deb283665235f40cf62f41fd31d7770e573 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 8 Sep 2023 16:35:20 -0400 Subject: [PATCH 04/82] Always emit player state --- src/backend/sources/MemorySource.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/sources/MemorySource.ts b/src/backend/sources/MemorySource.ts index 0e64713c..e3513a44 100644 --- a/src/backend/sources/MemorySource.ts +++ b/src/backend/sources/MemorySource.ts @@ -165,8 +165,8 @@ export default class MemorySource extends AbstractSource { } if(this.config.options?.logPlayerState === true) { player.logSummary(); - this.emitEvent('playerUpdate', player.getApiState()); } + this.emitEvent('playerUpdate', player.getApiState()); } for (const deadId of deadPlatformIds) { this.players.delete(deadId); -- 2.54.0 From 3762f95bae8b6f05d57ca354a2dfba5adc2c0a64 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 11 Sep 2023 12:34:09 -0400 Subject: [PATCH 05/82] fix(player state): Fix stale/dead logic checks * Stale should not reset to stale when status is orphaned * Dead check should be in seconds, not minutes --- src/backend/sources/PlayerState/AbstractPlayerState.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/sources/PlayerState/AbstractPlayerState.ts b/src/backend/sources/PlayerState/AbstractPlayerState.ts index 4de82f84..7d454e1f 100644 --- a/src/backend/sources/PlayerState/AbstractPlayerState.ts +++ b/src/backend/sources/PlayerState/AbstractPlayerState.ts @@ -62,7 +62,7 @@ export abstract class AbstractPlayerState { checkStale() { const isStale = this.isUpdateStale(); - if (isStale && this.calculatedStatus !== CALCULATED_PLAYER_STATUSES.stale) { + if (isStale && ![CALCULATED_PLAYER_STATUSES.stale, CALCULATED_PLAYER_STATUSES.orphaned].includes(this.calculatedStatus)) { this.calculatedStatus = CALCULATED_PLAYER_STATUSES.stale; this.logger.debug(`Stale after no Play updates for ${Math.abs(dayjs().diff(this.playLastUpdatedAt, 'seconds'))} seconds`); // end current listening sessions @@ -76,7 +76,7 @@ export abstract class AbstractPlayerState { } isDead() { - return dayjs().diff(this.stateLastUpdatedAt, 'minutes') >= this.stateIntervalOptions.orphanedInterval * 2; + return dayjs().diff(this.stateLastUpdatedAt, 'seconds') >= this.stateIntervalOptions.orphanedInterval * 2; } checkOrphaned() { -- 2.54.0 From a7faaaac862a9701f9aaaaf1ed711a7624c413d5 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 11 Sep 2023 12:35:41 -0400 Subject: [PATCH 06/82] refactor(player state): Refactor handling of non-updated players * Check for stale/orphaned/dead in independent loop so they are not dependent on getting source updates to update * Only emit events if player state has updated --- package-lock.json | 8 +++ package.json | 2 + src/backend/sources/MemorySource.ts | 89 +++++++++++++++++++++-------- 3 files changed, 76 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b9c7fca..8a4a14b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,6 +42,7 @@ "mopidy": "^1.3.0", "normalize-url": "^6.1.0", "ntfy": "1.0.5", + "object-hash": "^3.0.0", "p-event": "^4.2.0", "passport": "^0.6.0", "passport-deezer": "^0.2.0", @@ -83,6 +84,7 @@ "@types/jscodeshift": "^0.11.6", "@types/mocha": "^9.1.0", "@types/node": "^18.0.0", + "@types/object-hash": "^3.0.0", "@types/passport": "^1.0.12", "@types/react": "^18.2.18", "@types/react-dom": "^18.2.7", @@ -4867,6 +4869,12 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.12.tgz", "integrity": "sha512-d6xjC9fJ/nSnfDeU0AMDsaJyb1iHsqCSOdi84w4u+SlN/UgQdY5tRhpMzaFYsI4mnpvgTivEaQd0yOUhAtOnEQ==" }, + "node_modules/@types/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-lHH/AKLbBWaKUYuWzzB1M/9XzN94AhG1B2wuoXPTLL6B4KLOfEfGOoTq2u5FVbqgnhCPpgPULr1qH1eYs68ZWA==", + "dev": true + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", diff --git a/package.json b/package.json index bf14394c..c49a15c7 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,7 @@ "mopidy": "^1.3.0", "normalize-url": "^6.1.0", "ntfy": "1.0.5", + "object-hash": "^3.0.0", "p-event": "^4.2.0", "passport": "^0.6.0", "passport-deezer": "^0.2.0", @@ -120,6 +121,7 @@ "@types/jscodeshift": "^0.11.6", "@types/mocha": "^9.1.0", "@types/node": "^18.0.0", + "@types/object-hash": "^3.0.0", "@types/passport": "^1.0.12", "@types/react": "^18.2.18", "@types/react-dom": "^18.2.7", diff --git a/src/backend/sources/MemorySource.ts b/src/backend/sources/MemorySource.ts index e3513a44..5f6abbb1 100644 --- a/src/backend/sources/MemorySource.ts +++ b/src/backend/sources/MemorySource.ts @@ -4,7 +4,6 @@ import { sortByOldestPlayDate, toProgressAwarePlayObject, getProgress, - genGroupIdStrFromPlay, playPassesScrobbleThreshold, timePassesScrobbleThreshold, thresholdResultSummary, @@ -16,12 +15,12 @@ import dayjs from "dayjs"; import { asPlayerStateData, DeviceId, - GroupedPlays, + GroupedPlays, InternalConfig, PlayerStateData, PlayPlatformId, PlayUserId, ProgressAwarePlayObject, - ScrobbleThresholdResult, + ScrobbleThresholdResult, SourceType, } from "../common/infrastructure/Atomic"; import TupleMap from "../common/TupleMap"; import { AbstractPlayerState, PlayerStateOptions } from "./PlayerState/AbstractPlayerState"; @@ -29,6 +28,10 @@ import { GenericPlayerState } from "./PlayerState/GenericPlayerState"; import {Logger} from "@foxxmd/winston"; import {PlayObject, SourcePlayerObj} from "../../core/Atomic"; import { buildTrackString } from "../../core/StringUtils"; +import {SimpleIntervalJob, Task, ToadScheduler} from "toad-scheduler"; +import {SourceConfig} from "../common/infrastructure/config/source/sources"; +import {EventEmitter} from "events"; +import objectHash from 'object-hash'; export default class MemorySource extends AbstractSource { /* @@ -57,6 +60,43 @@ export default class MemorySource extends AbstractSource { candidateRecentlyPlayed: GroupedPlays = new TupleMap players: Map = new Map(); + playerState: Map = new Map(); + + scheduler: ToadScheduler = new ToadScheduler(); + + constructor(type: SourceType, name: string, config: SourceConfig, internal: InternalConfig, emitter: EventEmitter) { + super(type, name, config, internal, emitter); + this.scheduler.addSimpleIntervalJob(new SimpleIntervalJob({seconds: 15}, new Task('Player Cleanup', () => { + this.cleanupPlayers(); + }))); + } + + cleanupPlayers = () => { + const deadPlatformIds: string[] = []; + for (const [key, player] of this.players.entries()) { + // no communication from the source was received for this player + const isStale = player.checkStale(); + if (isStale && player.checkOrphaned() && player.isDead()) { + player.logger.debug(`Removed after being orphaned for ${dayjs.duration(player.stateIntervalOptions.orphanedInterval, 'seconds').asMinutes()} minutes`); + deadPlatformIds.push(player.platformIdStr); + this.emitEvent('playerDelete', {platformId: player.platformIdStr}); + } else if (isStale) { + const state = player.getApiState(); + // @ts-ignore + const stateHash = objectHash.sha1(state); + if(stateHash !== this.playerState.get(key)) { + this.playerState.set(key, stateHash); + this.emitEvent('playerUpdate', state); + } + if(this.config.options?.logPlayerState === true) { + player.logSummary(); + } + } + } + for (const deadId of deadPlatformIds) { + this.deletePlayer(deadId); + } + } playersToObject = (): Record => { if(this.players.size === 0) { @@ -78,6 +118,20 @@ export default class MemorySource extends AbstractSource { return new GenericPlayerState(logger, id, opts); } + setNewPlayer = (idStr: string, logger: Logger, id: PlayPlatformId, opts: PlayerStateOptions = {}) => { + this.players.set(idStr, this.getNewPlayer(this.logger, id, { + staleInterval: (this.config.data.interval ?? 30) * 3, + orphanedInterval: (this.config.data.maxInterval ?? 60) * 5, + ...opts + })); + this.playerState.set(idStr, ''); + } + + deletePlayer = (id: string) => { + this.players.delete(id); + this.playerState.delete(id); + } + processRecentPlaysNew = (datas: (PlayObject | PlayerStateData)[]) => { const { @@ -89,20 +143,15 @@ export default class MemorySource extends AbstractSource { const newStatefulPlays: PlayObject[] = []; // create any new players from incoming data - //const incomingPlatformIds: PlayPlatformId[] = []; for (const data of datas) { const id = getPlatformIdFromData(data); const idStr = genGroupIdStr(id); if (!this.players.has(idStr)) { - //incomingPlatformIds.push(id); - this.players.set(idStr, this.getNewPlayer(this.logger, id, { - staleInterval: (this.config.data.interval ?? 30) * 3, - orphanedInterval: (this.config.data.maxInterval ?? 60) * 5 - })); + this.setNewPlayer(idStr, this.logger, id); } } - const deadPlatformIds: string[] = []; + //const deadPlatformIds: string[] = []; for (const [key, player] of this.players.entries()) { @@ -155,21 +204,15 @@ export default class MemorySource extends AbstractSource { } } } - } else { - // no communication from the source was received for this player - player.checkStale(); - if (player.checkOrphaned() && player.isDead()) { - player.logger.debug(`Removed after being orphaned for ${dayjs.duration(player.stateIntervalOptions.orphanedInterval, 'seconds').asMinutes()} minutes`); - deadPlatformIds.push(player.platformIdStr); + + if(this.config.options?.logPlayerState === true) { + player.logSummary(); } + const apiState = player.getApiState(); + // @ts-ignore + this.playerState.set(key, objectHash.sha1(apiState)) + this.emitEvent('playerUpdate', apiState); } - if(this.config.options?.logPlayerState === true) { - player.logSummary(); - } - this.emitEvent('playerUpdate', player.getApiState()); - } - for (const deadId of deadPlatformIds) { - this.players.delete(deadId); } return newStatefulPlays; -- 2.54.0 From d1060e724e084f807807aaa9ed72a70565f29625 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 11 Sep 2023 12:36:10 -0400 Subject: [PATCH 07/82] feat(ui): Remove player when dead --- src/client/status/ducks.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/client/status/ducks.ts b/src/client/status/ducks.ts index abc932d3..52eee732 100644 --- a/src/client/status/ducks.ts +++ b/src/client/status/ducks.ts @@ -53,6 +53,11 @@ const sourceSlice = createSlice({ (state, action) => { const playerState = action.payload.data as SourcePlayerJson; state.entities[action.payload.id].players[playerState.platformId] = playerState; + }).addMatcher( + (action) => sourceUpdate.match(action) && action.payload.event === 'playerDelete', + (state, action) => { + const playerState = action.payload.data as {platformId: string}; + delete state.entities[action.payload.id].players[playerState.platformId]; } ) } -- 2.54.0 From d95fef09a3b27e961db5ddd4d84bf6ba11583700 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 11 Sep 2023 12:38:10 -0400 Subject: [PATCH 08/82] refactor(player state): Remove old play logic Recent plays are dead. Long live recent plays. --- src/backend/sources/JRiverSource.ts | 2 +- src/backend/sources/JellyfinSource.ts | 2 +- src/backend/sources/KodiSource.ts | 2 +- src/backend/sources/MPRISSource.ts | 2 +- src/backend/sources/MemorySource.ts | 157 +------------------------- src/backend/sources/MopidySource.ts | 2 +- src/backend/sources/SpotifySource.ts | 2 +- src/backend/sources/SubsonicSource.ts | 2 +- 8 files changed, 8 insertions(+), 163 deletions(-) diff --git a/src/backend/sources/JRiverSource.ts b/src/backend/sources/JRiverSource.ts index 72b0261e..fcbd625c 100644 --- a/src/backend/sources/JRiverSource.ts +++ b/src/backend/sources/JRiverSource.ts @@ -141,7 +141,7 @@ export class JRiverSource extends MemorySource { } } - return this.processRecentPlaysNew(play); + return this.processRecentPlays(play); } } diff --git a/src/backend/sources/JellyfinSource.ts b/src/backend/sources/JellyfinSource.ts index aab60915..3fd41b6a 100644 --- a/src/backend/sources/JellyfinSource.ts +++ b/src/backend/sources/JellyfinSource.ts @@ -350,7 +350,7 @@ export default class JellyfinSource extends MemorySource { scrobbleOpts.checkAll = true; } else { - newPlays = this.processRecentPlaysNew([playObj]); + newPlays = this.processRecentPlays([playObj]); } if(newPlays.length > 0) { diff --git a/src/backend/sources/KodiSource.ts b/src/backend/sources/KodiSource.ts index 91ec5e56..9cb5d46a 100644 --- a/src/backend/sources/KodiSource.ts +++ b/src/backend/sources/KodiSource.ts @@ -70,7 +70,7 @@ export class KodiSource extends MemorySource { let play = await this.client.getRecentlyPlayed(options); - return this.processRecentPlaysNew(play); + return this.processRecentPlays(play); } } diff --git a/src/backend/sources/MPRISSource.ts b/src/backend/sources/MPRISSource.ts index c09e7309..44006458 100644 --- a/src/backend/sources/MPRISSource.ts +++ b/src/backend/sources/MPRISSource.ts @@ -218,7 +218,7 @@ export class MPRISSource extends MemorySource { if(options.display === true) { return deduped; } - return this.processRecentPlaysNew(deduped); + return this.processRecentPlays(deduped); } } diff --git a/src/backend/sources/MemorySource.ts b/src/backend/sources/MemorySource.ts index 5f6abbb1..32a33995 100644 --- a/src/backend/sources/MemorySource.ts +++ b/src/backend/sources/MemorySource.ts @@ -42,23 +42,6 @@ export default class MemorySource extends AbstractSource { * * where these timestamps don't have enough granularity (IE second accuracy) * such as subsonic and jellyfin */ - /** - * Tracks we are tracked that we are confident qualified as being played based on: - * - * - MS saw the track for the first time while it was running/polling - * - Continued to see this same track through consecutive polling/ingress events for AT LEAST 30 seconds - * - If the play info contains playback position data we also check if that has progressed at least 30 seconds - * - * These are tracks that are actually used by the source to scrobble to clients - * */ - //statefulRecentlyPlayed: GroupedPlays = new Map(); - /** - * Tracks that are actively being tracked (discovered from source recently) to see if they will "qualify" as being played. - * - * Once a track qualifies it is added to statefuls. - * */ - candidateRecentlyPlayed: GroupedPlays = new TupleMap - players: Map = new Map(); playerState: Map = new Map(); @@ -109,11 +92,6 @@ export default class MemorySource extends AbstractSource { return record; } - getFlatCandidateRecentlyPlayed = (): PlayObject[] => { - // TODO sort? - return Array.from(this.candidateRecentlyPlayed.values()).flat(); - } - getNewPlayer = (logger: Logger, id: PlayPlatformId, opts: PlayerStateOptions) => { return new GenericPlayerState(logger, id, opts); } @@ -132,7 +110,7 @@ export default class MemorySource extends AbstractSource { this.playerState.delete(id); } - processRecentPlaysNew = (datas: (PlayObject | PlayerStateData)[]) => { + processRecentPlays = (datas: (PlayObject | PlayerStateData)[]) => { const { data: { @@ -218,139 +196,6 @@ export default class MemorySource extends AbstractSource { return newStatefulPlays; } - processRecentPlays = (plays: PlayObject[], useExistingPlayDate = false) => { - - const { - data: { - scrobbleThresholds = {} - } = {} - } = this.config; - - let newStatefulPlays: PlayObject[] = []; - // if we can't trust existing play dates (like for subsonic where there is no timestamp) then - // we format new plays with locked play date IE the first time we have "seen" this track - - // -- otherwise, for sources like Spotify that accurately report when track started to play, we can use existing dates - const flatLockedPlays = useExistingPlayDate ? plays : plays.map((p: any) => { - const {data: {playDate, ...restData}, ...rest} = p; - return {data: {...restData, playDate: dayjs()}, ...rest}; - }); - - // group by device-user - const groupedLockedPlays = flatLockedPlays.reduce((acc: GroupedPlays, curr: ProgressAwarePlayObject) => { - const id = genGroupId(curr); - acc.set(id, (acc.get(id) ?? []).concat(curr)); - return acc; - }, new Map()); - - for (const [groupId, lockedPlays] of groupedLockedPlays.entries()) { - const groupIdStr = `${groupId[0]}-${groupId[1]}`; - let cRecentlyPlayed = this.candidateRecentlyPlayed.get(groupId) ?? []; - // if no candidates exist new plays are new candidates - if (cRecentlyPlayed.length === 0) { - this.logger.debug(`[Platform ${groupIdStr}] No prior candidate recent plays!`) - // update activity date here so that polling interval decreases *before* we get a new valid play - // so that we don't miss a play due to long polling interval - this.lastActivityAt = dayjs(); - const progressAware: ProgressAwarePlayObject[] = []; - for (const p of lockedPlays) { - progressAware.push(toProgressAwarePlayObject(p)); - this.logger.debug(`[Platform ${groupIdStr}] Adding new locked play: ${buildTrackString(p, {include: ['trackId', 'artist', 'track']})}`); - } - this.candidateRecentlyPlayed.set(groupId, progressAware) - } else { - // otherwise determine new tracks (not found in prior candidates) - const newTracks = lockedPlays.filter((x: any) => cRecentlyPlayed.every(y => !playObjDataMatch(y, x))); - const newProgressAwareTracks: ProgressAwarePlayObject[] = []; - if (newTracks.length > 0) { - // update activity date here so that polling interval decreases *before* we get a new valid play - // so that we don't miss a play due to long polling interval - this.lastActivityAt = dayjs(); - this.logger.debug(`[Platform ${groupIdStr}] New plays found that do not match existing candidates.`) - for (const p of newTracks) { - this.logger.debug(`[Platform ${groupIdStr}] Adding new locked play: ${buildTrackString(p, {include: ['trackId', 'artist', 'track']})}`); - newProgressAwareTracks.push(toProgressAwarePlayObject(p)); - } - } - // filter prior candidates based on new recently played - cRecentlyPlayed = cRecentlyPlayed.filter(x => { - const candidateMatchedLocked = lockedPlays.some((y: any) => playObjDataMatch(x, y)); - if (!candidateMatchedLocked) { - this.logger.debug(`[Platform ${groupIdStr}] Existing candidate not found in locked plays will be removed: ${buildTrackString(x, {include: ['trackId', 'artist', 'track']})}`); - } - return candidateMatchedLocked; - }); - // and then combine still playing with new tracks - cRecentlyPlayed = cRecentlyPlayed.concat(newProgressAwareTracks); - cRecentlyPlayed.sort(sortByOldestPlayDate); - - this.candidateRecentlyPlayed.set(groupId, cRecentlyPlayed); - - //const sRecentlyPlayed = this.statefulRecentlyPlayed.get(groupId) ?? []; - - // now we check if all candidates pass tests for having been tracked long enough: - // * Has been tracked for at least [duration] seconds or [percentage] of track duration - // * If it has playback position data then it must also have progressed at least [duration] seconds or [percentage] of track duration progress since our initial tracking data - for (const candidate of cRecentlyPlayed) { - let thresholdResults: ScrobbleThresholdResult; - thresholdResults = playPassesScrobbleThreshold(candidate, scrobbleThresholds); - const {passes: firstSeenValid} = thresholdResults; - let progressValid = firstSeenValid; - if (firstSeenValid) { - // check if we can get progress as well - const matchingLockedPlay = lockedPlays.find(x => playObjDataMatch(x, candidate)); - // this should always be found but checking just in case - if (matchingLockedPlay !== undefined) { - const progress = getProgress(candidate, matchingLockedPlay); - if (progress !== undefined) { - thresholdResults = timePassesScrobbleThreshold(scrobbleThresholds, progress, candidate.data.duration); - const {passes: progressPasses} = thresholdResults; - progressValid = progressPasses; - } - } - } - - if (firstSeenValid && progressValid) { - // a prior candidate has been playing for more than 30 seconds and passed progress test, time to check statefuls - - const matchingRecent = this.existingDiscovered(candidate); //sRecentlyPlayed.find(x => playObjDataMatch(x, candidate)); - let stPrefix = `[Platform ${groupId}] (Stateful Play) ${buildTrackString(candidate, {include: ['trackId', 'artist', 'track']})}`; - if (matchingRecent === undefined) { - this.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)} and not matching any prior plays`); - newStatefulPlays.push(candidate); - //sRecentlyPlayed.push(candidate); - } else { - const {data: {playDate, duration}} = candidate; - const {data: {playDate: rplayDate}} = matchingRecent; - if (!playDate.isSame(rplayDate)) { - if (duration !== undefined) { - if (playDate.isAfter(rplayDate.add(duration, 's'))) { - this.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)} and having a different timestamp than a prior play`); - newStatefulPlays.push(candidate); - //sRecentlyPlayed.push(candidate); - } - } else { - const discoveredPlays = this.getRecentlyDiscoveredPlaysByPlatform(genGroupId(candidate)); - if (discoveredPlays.length === 0 || !playObjDataMatch(discoveredPlays[0], candidate)) { - // if most recent stateful play is not this track we'll add it - this.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)}. Matched other recent play but could not determine time frame due to missing duration. Allowed due to not being last played track.`); - newStatefulPlays.push(candidate); - } - //sRecentlyPlayed.push(candidate); - } - } - } - } - } - //sRecentlyPlayed.sort(sortByPlayDate); - //this.statefulRecentlyPlayed.set(groupId, sRecentlyPlayed); - } - } - return newStatefulPlays; - //return this.getFlatStatefulRecentlyPlayed(); - //return newStatefulPlays; - } - recentlyPlayedTrackIsValid = (playObj: any) => { return playObj.data.playDate.isBefore(dayjs().subtract(30, 's')); } diff --git a/src/backend/sources/MopidySource.ts b/src/backend/sources/MopidySource.ts index 1b007a3b..1d1bce27 100644 --- a/src/backend/sources/MopidySource.ts +++ b/src/backend/sources/MopidySource.ts @@ -209,7 +209,7 @@ export class MopidySource extends MemorySource { play } - return this.processRecentPlaysNew([playerState]); + return this.processRecentPlays([playerState]); } } diff --git a/src/backend/sources/SpotifySource.ts b/src/backend/sources/SpotifySource.ts index 30598b34..15e09497 100644 --- a/src/backend/sources/SpotifySource.ts +++ b/src/backend/sources/SpotifySource.ts @@ -283,7 +283,7 @@ export default class SpotifySource extends MemorySource { plays.push(currPlay); } } - return this.processRecentPlaysNew(plays); + return this.processRecentPlays(plays); } getPlayHistory = async (options: RecentlyPlayedOptions = {}) => { diff --git a/src/backend/sources/SubsonicSource.ts b/src/backend/sources/SubsonicSource.ts index 76dd5f22..027aba9b 100644 --- a/src/backend/sources/SubsonicSource.ts +++ b/src/backend/sources/SubsonicSource.ts @@ -194,6 +194,6 @@ export class SubsonicSource extends MemorySource { } = resp; // sometimes subsonic sources will return the same track as being played twice on the same player, need to remove this so we don't duplicate plays const deduped = removeDuplicates(entry.map(SubsonicSource.formatPlayObj)); - return this.processRecentPlaysNew(deduped); + return this.processRecentPlays(deduped); } } -- 2.54.0 From f1cd66d3e8c8fb0f600e8ba94b3dc9ceeeed70f4 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 11 Sep 2023 13:20:58 -0400 Subject: [PATCH 09/82] feat(player state): Preserve position when player is not in stopped status Makes for a nicer UI experience to see where the player was paused --- .../sources/PlayerState/AbstractPlayerState.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/backend/sources/PlayerState/AbstractPlayerState.ts b/src/backend/sources/PlayerState/AbstractPlayerState.ts index 7d454e1f..8c270772 100644 --- a/src/backend/sources/PlayerState/AbstractPlayerState.ts +++ b/src/backend/sources/PlayerState/AbstractPlayerState.ts @@ -275,6 +275,22 @@ export abstract class AbstractPlayerState { this.logger.debug(this.textSummary()); } + getPosition() { + if(this.calculatedStatus === 'stopped') { + return undefined; + } + let lastRange: [ListenProgress, ListenProgress] | undefined; + if(this.currentListenRange !== undefined) { + lastRange = this.currentListenRange; + } else if(this.listenRanges.length > 0) { + lastRange = this.listenRanges[this.listenRanges.length - 1]; + } + if(lastRange === undefined || lastRange[1] === undefined || lastRange[1].position === undefined) { + return undefined; + } + return lastRange[1].position; + } + getApiState(): SourcePlayerObj { return { platformId: this.platformIdStr, @@ -282,7 +298,7 @@ export abstract class AbstractPlayerState { playLastUpdatedAt: this.playLastUpdatedAt.toISOString(), playFirstSeenAt: this.playFirstSeenAt.toISOString(), playerLastUpdatedAt: this.stateLastUpdatedAt.toISOString(), - position: this.currentListenRange !== undefined && this.currentListenRange[1].position !== undefined ? this.currentListenRange[1].position : undefined, + position: this.getPosition(), listenedDuration: this.getListenDuration(), status: { reported: this.reportedStatus, -- 2.54.0 From dcff9ee73d6118131ae413a15a2548be08cafcf0 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 11 Sep 2023 13:21:24 -0400 Subject: [PATCH 10/82] feat(player state): Implement player status and listened duration in UI --- .../common/vendor/AbstractApiClient.ts | 3 ++- .../scrobblers/AbstractScrobbleClient.ts | 3 +-- src/backend/scrobblers/LastfmScrobbler.ts | 3 +-- .../scrobblers/ListenbrainzScrobbler.ts | 3 +-- src/backend/scrobblers/MalojaScrobbler.ts | 3 +-- src/backend/server/api.ts | 4 +-- src/backend/sources/AbstractSource.ts | 3 +-- src/backend/utils.ts | 11 ++++---- src/client/components/player/Player.tsx | 26 +++++++++++++++++-- src/client/components/player/PlayerInfo.tsx | 7 ++++- src/client/components/player/player.scss | 4 +++ src/client/components/player/timestamp.scss | 2 +- src/core/StringUtils.ts | 4 ++- 13 files changed, 52 insertions(+), 24 deletions(-) diff --git a/src/backend/common/vendor/AbstractApiClient.ts b/src/backend/common/vendor/AbstractApiClient.ts index bcbe86cb..8fd170e7 100644 --- a/src/backend/common/vendor/AbstractApiClient.ts +++ b/src/backend/common/vendor/AbstractApiClient.ts @@ -1,8 +1,9 @@ -import { capitalize, mergeArr } from "../../utils"; +import { mergeArr } from "../../utils"; import {Logger} from '@foxxmd/winston'; import { FormatPlayObjectOptions } from "../infrastructure/Atomic"; import winston from '@foxxmd/winston'; import { PlayObject } from "../../../core/Atomic"; +import {capitalize} from "../../../core/StringUtils"; export default abstract class AbstractApiClient { name: string; diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 890ddda6..63d3e228 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -1,6 +1,5 @@ import dayjs, {Dayjs} from "dayjs"; import { - capitalize, isPlayTemporallyClose, mergeArr, playObjDataMatch, @@ -21,7 +20,7 @@ import { ClientConfig } from "../common/infrastructure/config/client/clients"; import { Notifiers } from "../notifier/Notifiers"; import {FixedSizeList} from 'fixed-size-list'; import { PlayObject, TrackStringOptions } from "../../core/Atomic"; -import { buildTrackString, truncateStringToLength } from "../../core/StringUtils"; +import {buildTrackString, capitalize, truncateStringToLength} from "../../core/StringUtils"; import EventEmitter from "events"; export default abstract class AbstractScrobbleClient { diff --git a/src/backend/scrobblers/LastfmScrobbler.ts b/src/backend/scrobblers/LastfmScrobbler.ts index 883c01ad..c623bc2e 100644 --- a/src/backend/scrobblers/LastfmScrobbler.ts +++ b/src/backend/scrobblers/LastfmScrobbler.ts @@ -2,7 +2,6 @@ import AbstractScrobbleClient from "./AbstractScrobbleClient"; import dayjs from 'dayjs'; import { - capitalize, playObjDataMatch, removeUndefinedKeys, setIntersection, @@ -16,7 +15,7 @@ import {TrackScrobbleResponse, UserGetRecentTracksResponse} from "lastfm-node-cl import { Notifiers } from "../notifier/Notifiers"; import {Logger} from '@foxxmd/winston'; import { PlayObject, TrackStringOptions } from "../../core/Atomic"; -import { buildTrackString } from "../../core/StringUtils"; +import {buildTrackString, capitalize} from "../../core/StringUtils"; import EventEmitter from "events"; export default class LastfmScrobbler extends AbstractScrobbleClient { diff --git a/src/backend/scrobblers/ListenbrainzScrobbler.ts b/src/backend/scrobblers/ListenbrainzScrobbler.ts index c34636b2..46ccf2bd 100644 --- a/src/backend/scrobblers/ListenbrainzScrobbler.ts +++ b/src/backend/scrobblers/ListenbrainzScrobbler.ts @@ -2,7 +2,6 @@ import dayjs from 'dayjs'; import AbstractScrobbleClient from "./AbstractScrobbleClient"; import { - capitalize, playObjDataMatch, removeUndefinedKeys, setIntersection, @@ -16,7 +15,7 @@ import {Logger} from '@foxxmd/winston'; import { ListenBrainzClientConfig } from "../common/infrastructure/config/client/listenbrainz"; import { ListenbrainzApiClient } from "../common/vendor/ListenbrainzApiClient"; import { PlayObject, TrackStringOptions } from "../../core/Atomic"; -import { buildTrackString } from "../../core/StringUtils"; +import {buildTrackString, capitalize} from "../../core/StringUtils"; import EventEmitter from "events"; export default class ListenbrainzScrobbler extends AbstractScrobbleClient { diff --git a/src/backend/scrobblers/MalojaScrobbler.ts b/src/backend/scrobblers/MalojaScrobbler.ts index a381f025..6bfba90d 100644 --- a/src/backend/scrobblers/MalojaScrobbler.ts +++ b/src/backend/scrobblers/MalojaScrobbler.ts @@ -8,7 +8,6 @@ import { sleep, sortByOldestPlayDate, parseRetryAfterSecsFromObj, - capitalize, isPlayTemporallyClose, } from "../utils"; import { FormatPlayObjectOptions, INITIALIZING } from "../common/infrastructure/Atomic"; @@ -22,7 +21,7 @@ import { MalojaScrobbleV3RequestData, MalojaScrobbleV3ResponseData, MalojaV2ScrobbleData, MalojaV3ScrobbleData } from "../common/vendor/maloja/interfaces"; import { PlayObject, TrackStringOptions } from "../../core/Atomic"; -import { buildTrackString } from "../../core/StringUtils"; +import {buildTrackString, capitalize} from "../../core/StringUtils"; import EventEmitter from "events"; const feat = ["ft.", "ft", "feat.", "feat", "featuring", "Ft.", "Ft", "Feat.", "Feat", "Featuring"]; diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index f05b37df..fd6988f5 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -1,6 +1,5 @@ import {ExpressWithAsync} from "@awaitjs/express"; import {getRoot} from "../ioc"; -import { capitalize } from "../utils"; import {makeClientCheckMiddle, makeSourceCheckMiddle} from "./middleware"; import AbstractSource from "../sources/AbstractSource"; import { @@ -22,7 +21,8 @@ import {setupJellyfinRoutes} from "./jellyfinRoutes"; import {setupDeezerRoutes} from "./deezerRoutes"; import {setupAuthRoutes} from "./auth"; import { ExpressHandler } from "../common/infrastructure/Atomic"; -import MemorySource from "../sources/MemorySource.js"; +import MemorySource from "../sources/MemorySource"; +import {capitalize} from "../../core/StringUtils"; let output: LogInfo[] = [] diff --git a/src/backend/sources/AbstractSource.ts b/src/backend/sources/AbstractSource.ts index 8d81f431..e932c96d 100644 --- a/src/backend/sources/AbstractSource.ts +++ b/src/backend/sources/AbstractSource.ts @@ -1,6 +1,5 @@ import dayjs, {Dayjs} from "dayjs"; import { - capitalize, isPlayTemporallyClose, genGroupId, genGroupIdStrFromPlay, @@ -30,7 +29,7 @@ import {EventEmitter} from "events"; import {FixedSizeList} from "fixed-size-list"; import TupleMap from "../common/TupleMap"; import { PlayObject } from "../../core/Atomic"; -import { buildTrackString } from "../../core/StringUtils"; +import {buildTrackString, capitalize} from "../../core/StringUtils"; export interface RecentlyPlayedOptions { limit?: number diff --git a/src/backend/utils.ts b/src/backend/utils.ts index 326bc3f5..38145bca 100644 --- a/src/backend/utils.ts +++ b/src/backend/utils.ts @@ -7,7 +7,8 @@ import {TimeoutError, WebapiError} from "spotify-web-api-node/src/response-error import Ajv, {Schema} from 'ajv'; import { asPlayerStateData, - DEFAULT_SCROBBLE_DURATION_THRESHOLD, DELIMITERS, + DEFAULT_SCROBBLE_DURATION_THRESHOLD, + DELIMITERS, lowGranularitySources, NO_DEVICE, NO_USER, @@ -23,11 +24,12 @@ import {Request} from "express"; import pathUtil from "path"; import {ErrorWithCause} from "pony-cause"; import backoffStrategies from '@kenyip/backoff-strategies'; -import { ScrobbleThresholds } from "./common/infrastructure/config/source/index"; +import {ScrobbleThresholds} from "./common/infrastructure/config/source/index"; import {replaceResultTransformer, stripIndentTransformer, TemplateTag, trimResultTransformer} from 'common-tags'; import {Duration} from "dayjs/plugin/duration.js"; -import { ListenRange, PlayObject } from "../core/Atomic"; +import {ListenRange, PlayObject} from "../core/Atomic"; import address from "address"; + dayjs.extend(utc); export async function readJson(this: any, path: any, {throwOnNotFound = true} = {}) { @@ -177,9 +179,6 @@ const sentenceLengthWeight = (length: number) => { return (Math.log(length) / 0.20) - 5; } -export const capitalize = (str: any) => { - return str.charAt(0).toUpperCase() + str.slice(1) -} /** * Check if two play objects are the same by comparing non time-related data using most-to-least specific/confidence * diff --git a/src/client/components/player/Player.tsx b/src/client/components/player/Player.tsx index 8e2a8c6b..61081eb9 100644 --- a/src/client/components/player/Player.tsx +++ b/src/client/components/player/Player.tsx @@ -6,6 +6,8 @@ import PlayerInfo from "./PlayerInfo"; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import {faBars, faTimes} from '@fortawesome/free-solid-svg-icons' +import {capitalize} from "../../../core/StringUtils"; + export interface PlayerProps { data: SourcePlayerJson } @@ -30,11 +32,27 @@ const Player = (props: PlayerProps) => { track = '???', artists = ['???'], duration = 0 - } = {} + } = {}, } = {}, - play + play, + listenedDuration, + status: { + calculated = '???', + reported, + stale, + orphaned + } } = data; + let durPer = null; + if(duration !== undefined && duration !== null) { + if(listenedDuration === 0) { + durPer = ' (0%)'; + } else { + durPer = ` (${((listenedDuration/duration) * 100).toFixed(0)}%)`; + } + } + const [viewMode, setViewMode] = useState('player'); const toggleViewMode = useCallback(() => { @@ -61,6 +79,10 @@ const Player = (props: PlayerProps) => {

{track}

{artists.join(' / ')}

+
+

Status: {capitalize(calculated)}

+

Listened: {listenedDuration.toFixed(0)}s{durPer}

+
diff --git a/src/client/components/player/PlayerInfo.tsx b/src/client/components/player/PlayerInfo.tsx index bff6d6d0..d338e405 100644 --- a/src/client/components/player/PlayerInfo.tsx +++ b/src/client/components/player/PlayerInfo.tsx @@ -13,7 +13,11 @@ const PlayerInfo = (props: PlayerInfoProps) => { data, data: { play, - } = {} + status: { + calculated, + reported + } + } = {}, } = props; let isHidden = ""; @@ -33,6 +37,7 @@ const PlayerInfo = (props: PlayerInfoProps) => {
Player Updated: {data.playerLastUpdatedAt}
Track Seen: {data.playFirstSeenAt}
Track Updated: {data.playLastUpdatedAt}
+
Status: Calculated -> {calculated.toUpperCase()} | Reported -> {reported.toUpperCase()}
); diff --git a/src/client/components/player/player.scss b/src/client/components/player/player.scss index 0ddf1a73..ffd632d1 100644 --- a/src/client/components/player/player.scss +++ b/src/client/components/player/player.scss @@ -118,6 +118,10 @@ $primary: #00ACC1; transform: scale(0.95); } + .stats { + font-size: 0.75rem; + } + .title { position: relative; width: 100%; diff --git a/src/client/components/player/timestamp.scss b/src/client/components/player/timestamp.scss index fe055ebd..2d649824 100644 --- a/src/client/components/player/timestamp.scss +++ b/src/client/components/player/timestamp.scss @@ -1,6 +1,6 @@ @use './playerBase.scss'; $spacing: 1.5rem; -$primary: #00ACC1; +$primary: #556a77; .timestamp { diff --git a/src/core/StringUtils.ts b/src/core/StringUtils.ts index f59413e0..b4192658 100644 --- a/src/core/StringUtils.ts +++ b/src/core/StringUtils.ts @@ -1,5 +1,4 @@ import dayjs, {Dayjs} from "dayjs"; -import React, {createElement, ReactElement} from "react"; import utc from "dayjs/plugin/utc.js"; import isBetween from "dayjs/plugin/isBetween.js"; import relativeTime from "dayjs/plugin/relativeTime.js"; @@ -96,3 +95,6 @@ export const slice = (str: string, index: number, count: number, add?: string): return str.slice(0, index) + (add || "") + str.slice(index + count); } +export const capitalize = (str: any) => { + return str.charAt(0).toUpperCase() + str.slice(1) +} -- 2.54.0 From 0fb192dd4105a82be01f94f21ef456c1094c81cd Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 12 Sep 2023 10:16:16 -0400 Subject: [PATCH 11/82] refactor(ui): Prevent nodemon from restarting on tailwind config change --- nodemon.json | 3 ++- tailwind.config.js | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/nodemon.json b/nodemon.json index c7d09f69..620fcbd3 100644 --- a/nodemon.json +++ b/nodemon.json @@ -1,3 +1,4 @@ { - "ext": "js" + "ext": "js", + "ignore": ["tailwind.config.js"] } diff --git a/tailwind.config.js b/tailwind.config.js index c0958ec4..186aad44 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -4,8 +4,10 @@ module.exports = { "./src/**/*.{js,jsx,ts,tsx}", ], theme: { + container: { + padding: '1rem', + }, extend: {}, }, plugins: [], } - -- 2.54.0 From 81894d691b934157301740afb727f0b5d2a36896 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 12 Sep 2023 11:07:39 -0400 Subject: [PATCH 12/82] feat(ui): Compact ui a bit * Reduce padding on card headers and bodies * Improve log experience * Reduce log font size and convert to mono * Use proper log message parsing to remove dangerous html set --- .../components/statusCard/StatusCardSkeleton.tsx | 4 ++-- src/client/logs/LogLine.tsx | 8 +++++++- src/client/logs/LogsSection.css | 6 ++++++ src/client/logs/LogsSection.tsx | 8 ++++---- src/client/status/StatusSection.tsx | 2 +- src/client/utils/index.tsx | 13 +++++++++++++ 6 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/client/components/statusCard/StatusCardSkeleton.tsx b/src/client/components/statusCard/StatusCardSkeleton.tsx index 3464ca5b..6250d654 100644 --- a/src/client/components/statusCard/StatusCardSkeleton.tsx +++ b/src/client/components/statusCard/StatusCardSkeleton.tsx @@ -16,10 +16,10 @@ const StatusCardSkeleton = (props: PropsWithChildren) => return (
-
+

{loading || header === undefined ? : header}

-
+
{loading ? : children}
diff --git a/src/client/logs/LogLine.tsx b/src/client/logs/LogLine.tsx index a40804a9..e2dc232f 100644 --- a/src/client/logs/LogLine.tsx +++ b/src/client/logs/LogLine.tsx @@ -1,4 +1,5 @@ import React, {PropsWithChildren} from 'react'; +import {parseLogLine} from "../utils/index"; const breakSymbol = '
'; @@ -26,7 +27,12 @@ const getClass = (level: string) => { } } const LogLine = (props: PropsWithChildren<{level: string, message: string}>) => { - return
+ const lineParts = parseLogLine(props.message); + const level = props.level ?? lineParts.level; + const levelClass = getClass(level); + return ( +
{lineParts.timestamp} {level.padEnd(7, ' ')} : {lineParts.message}
+ ) }; export default LogLine; diff --git a/src/client/logs/LogsSection.css b/src/client/logs/LogsSection.css index e14237f2..f9add133 100644 --- a/src/client/logs/LogsSection.css +++ b/src/client/logs/LogsSection.css @@ -6,3 +6,9 @@ fill: white; display: none; } +.line { + display: block; + white-space: pre-wrap; + font-size: 0.675rem; + line-height: 0.9rem; +} diff --git a/src/client/logs/LogsSection.tsx b/src/client/logs/LogsSection.tsx index f8feb3a8..87302bc2 100644 --- a/src/client/logs/LogsSection.tsx +++ b/src/client/logs/LogsSection.tsx @@ -60,7 +60,7 @@ const LogsSection = (props: PropsFromRedux) => { useEventSourceListener(eventSource, ['messsage', 'stream'], evt => { const data = JSON.parse(evt.data); // @ts-ignore - list.add({message: data.message, id: evt.lastEventId}); + list.add({message: data.message, id: evt.lastEventId, level: data.level}); setLogList(Array.from(list.data)); //console.log(evt); }, [setLogList]); @@ -69,7 +69,7 @@ const LogsSection = (props: PropsFromRedux) => { return (
-
+

Log (Most Recent) {/*https://codepen.io/nikhil8krishnan/pen/rVoXJa*/} {

-
+
Level : | |

-
+
{ logList.map(x => ) } diff --git a/src/client/status/StatusSection.tsx b/src/client/status/StatusSection.tsx index 54d19813..26c58884 100644 --- a/src/client/status/StatusSection.tsx +++ b/src/client/status/StatusSection.tsx @@ -26,7 +26,7 @@ const StatusSection = (props: PropsFromRedux) => { return ( -
+
{isLoading ? : undefined} {props.sourceIds.map(x => )}
diff --git a/src/client/utils/index.tsx b/src/client/utils/index.tsx index ce4e1e17..54a0b7b6 100644 --- a/src/client/utils/index.tsx +++ b/src/client/utils/index.tsx @@ -20,3 +20,16 @@ export const buildTrackStringReactOptions: TrackStringOptions = { } } } + +const LOG_LINE_REGEX = new RegExp(/(?\S+)\s+(?\w+)\s*:\s*(?.*)/); +export const parseLogLine = (line: string) => { + const match = line.match(LOG_LINE_REGEX); + if (match === null) { + return undefined; + } + return { + timestamp: match.groups.timestamp, + level: match.groups.level, + message: match.groups.message + } +} -- 2.54.0 From a524e18820e404412591e1282361d20f4df7f3b9 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 12 Sep 2023 12:03:49 -0400 Subject: [PATCH 13/82] feat(ui): More ui compaction * Better use of header * Show name on separate line * Only show client/source if ambiguous * Move status into right side of header * Reduce padding/margin on card grid --- src/client/components/player/Player.tsx | 2 -- .../components/skeleton/SkeletonTitle.tsx | 10 ++++++--- .../statusCard/ClientStatusCard.tsx | 14 +++++++++---- .../statusCard/SourceStatusCard.tsx | 20 +++++++++++------- .../statusCard/StatusCardSkeleton.tsx | 21 ++++++++++++++++--- .../components/statusCard/statusCard.scss | 7 +++++++ src/client/status/StatusSection.tsx | 4 ++-- 7 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 src/client/components/statusCard/statusCard.scss diff --git a/src/client/components/player/Player.tsx b/src/client/components/player/Player.tsx index 61081eb9..4c4f223d 100644 --- a/src/client/components/player/Player.tsx +++ b/src/client/components/player/Player.tsx @@ -69,7 +69,6 @@ const Player = (props: PlayerProps) => { }, [viewMode, setViewMode]); return ( -
-
); } diff --git a/src/client/components/skeleton/SkeletonTitle.tsx b/src/client/components/skeleton/SkeletonTitle.tsx index 797d255a..1344013f 100644 --- a/src/client/components/skeleton/SkeletonTitle.tsx +++ b/src/client/components/skeleton/SkeletonTitle.tsx @@ -1,8 +1,12 @@ import React from 'react'; - -const SkeletonTitle = () => { +export interface SkeletonTitleProps { + show?: boolean +} +const SkeletonTitle = (props?: SkeletonTitleProps) => { + const {show = true} = props; + const cn = `max-w-sm animate-pulse${show ? '' : ' hidden'}`; return ( -
+
); diff --git a/src/client/components/statusCard/ClientStatusCard.tsx b/src/client/components/statusCard/ClientStatusCard.tsx index f9815f61..d7c4f920 100644 --- a/src/client/components/statusCard/ClientStatusCard.tsx +++ b/src/client/components/statusCard/ClientStatusCard.tsx @@ -14,8 +14,14 @@ const ClientStatusCard = (props: ClientStatusCardData) => { const { loading = false, data, + data: { + name, + type, + display, + status + } = {} } = props; - let header: string | undefined = undefined; + let header: string | undefined = display; let body = ; if(data !== undefined) { const { @@ -23,17 +29,17 @@ const ClientStatusCard = (props: ClientStatusCardData) => { name, type } = data; - header = `(Client) ${data.display} - ${data.name}` + if(type === 'lastfm' || type === 'listenbrainz') + header = `${display} (Client)`; // TODO links body = ( -
Status: {data.status}
Tracks Scrobbled (since app started): {data.tracksDiscovered}
{hasAuth ? (Re)authenticate or initialize : null}
); } return ( - + {body} ); diff --git a/src/client/components/statusCard/SourceStatusCard.tsx b/src/client/components/statusCard/SourceStatusCard.tsx index 844d765c..ea0b9596 100644 --- a/src/client/components/statusCard/SourceStatusCard.tsx +++ b/src/client/components/statusCard/SourceStatusCard.tsx @@ -6,6 +6,7 @@ import {sourceAdapter} from "../../status/ducks"; import {RootState} from "../../store"; import {connect, ConnectedProps} from "react-redux"; import Player from "../player/Player"; +import './statusCard.scss'; export interface SourceStatusCardData extends StatusCardSkeletonData, PropsFromRedux { loading?: boolean @@ -14,9 +15,14 @@ export interface SourceStatusCardData extends StatusCardSkeletonData, PropsFromR const SourceStatusCard = (props: SourceStatusCardData) => { const { loading = false, - data + data, + data: { + display, + name, + status, + } = {} } = props; - let header: string | undefined = undefined; + let header: string | undefined = display; let body = ; const poll = useCallback(async () => { const params = new URLSearchParams({type: data.type, name: data.name}); @@ -26,7 +32,6 @@ const SourceStatusCard = (props: SourceStatusCardData) => { },[data]); if(data !== undefined) { - const className = data.type !== 'spotify' ? 'md:pt-6' : ''; const { display, name, @@ -39,14 +44,15 @@ const SourceStatusCard = (props: SourceStatusCardData) => { type, players = {} } = data; - header = `(Source) ${display} - ${name}` + if(type === 'listenbrainz' || type === 'lastfm') { + header = `${display} (Source)`; + } const platformIds = Object.keys(players); // TODO links - body = (
+ body = (
{platformIds.map(x => )} -
Status: {status}
Tracks Discovered (since app started): {tracksDiscovered}
{canPoll && (!hasAuth || authed) ?
See recently played tracks returned by API
: null} {canPoll && hasAuthInteraction ? (Re)authenticate and (re)start polling : null} @@ -54,7 +60,7 @@ const SourceStatusCard = (props: SourceStatusCardData) => {
); } return ( - + {body} ); diff --git a/src/client/components/statusCard/StatusCardSkeleton.tsx b/src/client/components/statusCard/StatusCardSkeleton.tsx index 6250d654..b0df1b46 100644 --- a/src/client/components/statusCard/StatusCardSkeleton.tsx +++ b/src/client/components/statusCard/StatusCardSkeleton.tsx @@ -5,19 +5,34 @@ import SkeletonParagraph from "../skeleton/SkeletonParagraph"; export interface StatusCardSkeletonData { loading?: boolean header?: string + title?: string + subtitle?: string + status?: string } const StatusCardSkeleton = (props: PropsWithChildren) => { const { loading, header, + status = null, + title, + subtitle, children } = props || {}; + const showLoading = loading || (header === undefined && title === undefined); return ( -
-
-

{loading || header === undefined ? : header}

+
+
+ +
+
+ {header ?
{header}
: null} + {title ?
{title}
: null} + {subtitle ?
{subtitle}
: null} +
+
{status}
+
{loading ? : children} diff --git a/src/client/components/statusCard/statusCard.scss b/src/client/components/statusCard/statusCard.scss new file mode 100644 index 00000000..9e82fe21 --- /dev/null +++ b/src/client/components/statusCard/statusCard.scss @@ -0,0 +1,7 @@ +.statusCardBody { + article { + &:last-of-type { + margin-bottom: 1rem; + } + } +} diff --git a/src/client/status/StatusSection.tsx b/src/client/status/StatusSection.tsx index 26c58884..7f6d4bb5 100644 --- a/src/client/status/StatusSection.tsx +++ b/src/client/status/StatusSection.tsx @@ -26,11 +26,11 @@ const StatusSection = (props: PropsFromRedux) => { return ( -
+
{isLoading ? : undefined} {props.sourceIds.map(x => )}
-
+
{!isLoading ? props.clientIds.map(x => ) : null}
-- 2.54.0 From c7b2dcbbbe2c400ea253f00fc40ac1a1890b7fd6 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 12 Sep 2023 12:11:39 -0400 Subject: [PATCH 14/82] fix(ui): Use normal match parameters groups are undefined probably due to minification? --- src/client/utils/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/client/utils/index.tsx b/src/client/utils/index.tsx index 54a0b7b6..ba8104d5 100644 --- a/src/client/utils/index.tsx +++ b/src/client/utils/index.tsx @@ -28,8 +28,8 @@ export const parseLogLine = (line: string) => { return undefined; } return { - timestamp: match.groups.timestamp, - level: match.groups.level, - message: match.groups.message + timestamp: match[1], + level: match[2], + message: match[3] } } -- 2.54.0 From 40a7d9e39873d613ba791f89953ae12a226016d1 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 12 Sep 2023 14:57:41 -0400 Subject: [PATCH 15/82] feat(ui): Make player dates human friendly --- src/client/components/player/PlayerInfo.tsx | 7 ++-- src/client/utils/index.tsx | 41 ++++++++++++++++++++- src/index.tsx | 5 +++ 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/client/components/player/PlayerInfo.tsx b/src/client/components/player/PlayerInfo.tsx index d338e405..00c7adc7 100644 --- a/src/client/components/player/PlayerInfo.tsx +++ b/src/client/components/player/PlayerInfo.tsx @@ -1,6 +1,7 @@ import React, {Fragment} from 'react'; import './trackInfo.scss'; import {SourcePlayerJson} from "../../../core/Atomic"; +import {isoToHuman} from "../../utils/index"; export interface PlayerInfoProps { data: SourcePlayerJson @@ -34,9 +35,9 @@ const PlayerInfo = (props: PlayerInfoProps) => {
Player ID: {data.platformId}
-
Player Updated: {data.playerLastUpdatedAt}
-
Track Seen: {data.playFirstSeenAt}
-
Track Updated: {data.playLastUpdatedAt}
+
Player Updated: {isoToHuman(data.playerLastUpdatedAt, {includeRelative: true})}
+
Track Seen: {isoToHuman(data.playFirstSeenAt, {includeRelative: true})}
+
Track Updated: {isoToHuman(data.playLastUpdatedAt, {includeRelative: true})}
Status: Calculated -> {calculated.toUpperCase()} | Reported -> {reported.toUpperCase()}
diff --git a/src/client/utils/index.tsx b/src/client/utils/index.tsx index ba8104d5..1d2c1167 100644 --- a/src/client/utils/index.tsx +++ b/src/client/utils/index.tsx @@ -1,13 +1,14 @@ import {TrackStringOptions} from "../../core/Atomic"; import React, {ReactElement, Fragment} from "react"; import {defaultBuildTrackStringTransformers} from "../../core/StringUtils"; +import dayjs, {Dayjs} from 'dayjs'; export const buildTrackStringReactOptions: TrackStringOptions = { transformers: { ...defaultBuildTrackStringTransformers, reducer: arr => { const allFrags = arr.map((x, index) => { - if(typeof x === 'string') { + if (typeof x === 'string') { return {x}; } else { return x; @@ -33,3 +34,41 @@ export const parseLogLine = (line: string) => { message: match[3] } } + +export interface DateFormatOptions { + includeRelative?: boolean + includeDate?: boolean +} + +export const DAYJS_TIMEZ_FORMAT = 'HH:mm:ssZ'; +export const DAYJS_TIME_FORMAT = 'HH:mm:ss'; +export const DAYJS_DATE_FORMAT = 'YYYY-MM-DD'; + +export const isoToHuman = (iso: string, opts?: DateFormatOptions) => { + const { + includeRelative = false, + includeDate + } = opts; + + let parts = []; + + const date = dayjs(iso); + let useDate = includeDate; + let now: Dayjs; + if(useDate === undefined) { + now = dayjs(); + if(now.isSame(date, 'day')) { + useDate = false; + } + } + if(useDate) { + parts.push(date.format(DAYJS_DATE_FORMAT)); + } + parts.push(date.format(DAYJS_TIME_FORMAT)); + + if(includeRelative) { + parts.push(`(${date.fromNow()})`); + } + + return parts.join(' '); +} diff --git a/src/index.tsx b/src/index.tsx index ed91c7dd..0b2d43d6 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -3,6 +3,11 @@ import ReactDOM from 'react-dom/client'; import './client/index.css'; import App from './client/App'; import reportWebVitals from './client/reportWebVitals'; +import dayjs from 'dayjs'; +import utc from 'dayjs/plugin/utc.js'; +import relativeTime from 'dayjs/plugin/relativeTime.js'; +dayjs.extend(utc) +dayjs.extend(relativeTime); const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement -- 2.54.0 From 0197e70a1a75cb9d2a786966f3dc31cb072eb8aa Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 12 Sep 2023 14:58:20 -0400 Subject: [PATCH 16/82] feat(ui): Remove unnecessary wording for track stats --- src/client/components/statusCard/ClientStatusCard.tsx | 2 +- src/client/components/statusCard/SourceStatusCard.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/client/components/statusCard/ClientStatusCard.tsx b/src/client/components/statusCard/ClientStatusCard.tsx index d7c4f920..01e1140d 100644 --- a/src/client/components/statusCard/ClientStatusCard.tsx +++ b/src/client/components/statusCard/ClientStatusCard.tsx @@ -34,7 +34,7 @@ const ClientStatusCard = (props: ClientStatusCardData) => { // TODO links body = ( -
Tracks Scrobbled (since app started): {data.tracksDiscovered}
+
Tracks Scrobbled: {data.tracksDiscovered}
{hasAuth ? (Re)authenticate or initialize : null}
); } diff --git a/src/client/components/statusCard/SourceStatusCard.tsx b/src/client/components/statusCard/SourceStatusCard.tsx index ea0b9596..523e1761 100644 --- a/src/client/components/statusCard/SourceStatusCard.tsx +++ b/src/client/components/statusCard/SourceStatusCard.tsx @@ -53,7 +53,7 @@ const SourceStatusCard = (props: SourceStatusCardData) => { // TODO links body = (
{platformIds.map(x => )} -
Tracks Discovered (since app started): {tracksDiscovered}
+
Tracks Discovered: {tracksDiscovered}
{canPoll && (!hasAuth || authed) ?
See recently played tracks returned by API
: null} {canPoll && hasAuthInteraction ? (Re)authenticate and (re)start polling : null} {canPoll && (!hasAuth || authed) ?
Restart Polling
: null} -- 2.54.0 From 3cbbc0837fcd50e2ae24d91997d4c7dfd406213b Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 12 Sep 2023 15:46:49 -0400 Subject: [PATCH 17/82] feat(ui): Expand displayed plays * Implement API for fetching client recently scrobbled * Reduce text noise by combining track stats and link for recent --- .../scrobblers/AbstractScrobbleClient.ts | 4 ++ src/backend/server/api.ts | 45 ++++++++++++++----- src/backend/server/middleware.ts | 32 ++++++------- src/client/App.tsx | 5 +++ .../statusCard/ClientStatusCard.tsx | 9 +++- .../statusCard/SourceStatusCard.tsx | 5 ++- src/client/recent/RecentPage.tsx | 15 ++++--- src/client/scrobbled/ScrobbledPage.tsx | 37 +++++++++++++++ src/client/scrobbled/scrobbledDucks.ts | 18 ++++++++ src/client/store.ts | 4 +- src/core/Atomic.ts | 3 ++ 11 files changed, 140 insertions(+), 37 deletions(-) create mode 100644 src/client/scrobbled/ScrobbledPage.tsx create mode 100644 src/client/scrobbled/scrobbledDucks.ts diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 63d3e228..58aa92f3 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -180,6 +180,10 @@ export default abstract class AbstractScrobbleClient { this.scrobbledPlayObjs = new FixedSizeList(this.MAX_STORED_SCROBBLES, this.scrobbledPlayObjs.data.filter(x => this.timeFrameIsValid(x.play)[0])) ; } + getScrobbledPlays = () => { + return this.scrobbledPlayObjs.data.map(x => x.scrobble); + } + cleanSourceSearchTitle = (playObj: PlayObject) => { const { data: { diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index fd6988f5..9fafc4ce 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -7,7 +7,7 @@ import { LogInfo, LogInfoJson, LogLevel, - LogOutputConfig, + LogOutputConfig, PlayObject, SourceStatusData, } from "../../core/Atomic"; import {Logger} from "@foxxmd/winston"; @@ -20,9 +20,11 @@ import {setupPlexRoutes} from "./plexRoutes"; import {setupJellyfinRoutes} from "./jellyfinRoutes"; import {setupDeezerRoutes} from "./deezerRoutes"; import {setupAuthRoutes} from "./auth"; -import { ExpressHandler } from "../common/infrastructure/Atomic"; +import {ExpressHandler, ScrobbledPlayObject} from "../common/infrastructure/Atomic"; import MemorySource from "../sources/MemorySource"; import {capitalize} from "../../core/StringUtils"; +import {source} from "common-tags"; +import AbstractScrobbleClient from "../scrobblers/AbstractScrobbleClient.js"; let output: LogInfo[] = [] @@ -65,8 +67,11 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput const scrobbleSources = root.get('sources'); const scrobbleClients = root.get('clients'); - const clientCheckMiddle = makeClientCheckMiddle(scrobbleClients); - const sourceCheckMiddle = makeSourceCheckMiddle(scrobbleSources); + const clientMiddleFunc = makeClientCheckMiddle(scrobbleClients); + const sourceMiddleFunc = makeSourceCheckMiddle(scrobbleSources); + + const clientRequiredMiddle = clientMiddleFunc(true); + const sourceRequiredMiddle = sourceMiddleFunc(true); const setLogWebLevel: ExpressHandler = async (req, res, next) => { // @ts-ignore @@ -116,7 +121,7 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput setupPlexRoutes(app, logger, scrobbleSources); setupJellyfinRoutes(app, logger, scrobbleSources); setupDeezerRoutes(app, logger, scrobbleSources); - setupAuthRoutes(app, logger, sourceCheckMiddle, clientCheckMiddle, scrobbleSources, scrobbleClients); + setupAuthRoutes(app, logger, sourceRequiredMiddle, clientRequiredMiddle, scrobbleSources, scrobbleClients); app.getAsync('/api/status', async (req, res, next) => { @@ -175,6 +180,9 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput tracksDiscovered: tracksScrobbled, name, hasAuth: requiresAuth, + hasAuthInteraction: requiresAuthInteraction, + authed, + initialized }; if (!initialized) { base.status = 'Not Initialized'; @@ -188,22 +196,35 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput return res.json({sources: sourceData, clients: clientData}); }); - app.getAsync('/api/recent', sourceCheckMiddle, async (req, res, next) => { + app.getAsync('/api/recent', sourceMiddleFunc(false), async (req, res, next) => { const { // @ts-expect-error TS(2339): Property 'scrobbleSource' does not exist on type '... Remove this comment to see the full error message scrobbleSource: source, } = req; - if (!source.canPoll) { - return res.status(400).send(`Specified source cannot retrieve recent plays (${source.type})`); + + let result: PlayObject[] = []; + if (source !== undefined) { + result = (source as AbstractSource).getFlatRecentlyDiscoveredPlays(); + } + + return res.json(result); + }); + + app.getAsync('/api/scrobbled', clientMiddleFunc(false), async (req, res, next) => { + const { + // @ts-ignore + scrobbleClient: client, + } = req; + + let result: PlayObject[] = []; + if (client !== undefined) { + result = (client as AbstractScrobbleClient).getScrobbledPlays(); } - const result = (source as AbstractSource).getFlatRecentlyDiscoveredPlays(); - //const artistTruncFunc = truncateStringToLength(Math.min(40, longestString(result.map((x: any) => x.data.artists.join(' / ')).flat()))); - //const trackLength = longestString(result.map((x: any) => x.data.track)) return res.json(result); }); - app.use('/api/poll', sourceCheckMiddle); + app.use('/api/poll', sourceRequiredMiddle); app.getAsync('/api/poll', async function (req, res) { // @ts-expect-error TS(2339): Property 'scrobbleSource' does not exist on type '... Remove this comment to see the full error message const source = req.scrobbleSource as AbstractSource; diff --git a/src/backend/server/middleware.ts b/src/backend/server/middleware.ts index 3eedaa62..cd39d08d 100644 --- a/src/backend/server/middleware.ts +++ b/src/backend/server/middleware.ts @@ -1,6 +1,6 @@ import { ExpressHandler } from "../common/infrastructure/Atomic"; -export const makeSourceCheckMiddle = (sources: any): ExpressHandler => (req: any, res: any, next: any) => { +export const makeSourceCheckMiddle = (sources: any) => (required: boolean ): ExpressHandler => (req: any, res: any, next: any) => { const { query: { // @ts-expect-error TS(2525): Initializer provides no value for this binding ele... Remove this comment to see the full error message @@ -10,22 +10,23 @@ export const makeSourceCheckMiddle = (sources: any): ExpressHandler => (req: any } = {} } = req; - if (name === undefined) { + if (required && name === undefined) { return res.status(404).send('Source name must be defined'); - } + } else if(name !== undefined) { + const source = sources.getByNameAndType(name, type); - const source = sources.getByNameAndType(name, type); + if (source === undefined) { + return res.status(404).send(`No source with the name [${name}] and type [${type}`); + } - if (source === undefined) { - return res.status(404).send(`No source with the name [${name}] and type [${type}`); + req.sourceName = name; + req.scrobbleSource = source; } - req.sourceName = name; - req.scrobbleSource = source; next(); } -export const makeClientCheckMiddle = (clients: any): ExpressHandler => (req: any, res: any, next: any) => { +export const makeClientCheckMiddle = (clients: any) => (required: boolean): ExpressHandler => (req: any, res: any, next: any) => { const { query: { // @ts-expect-error TS(2525): Initializer provides no value for this binding ele... Remove this comment to see the full error message @@ -33,16 +34,17 @@ export const makeClientCheckMiddle = (clients: any): ExpressHandler => (req: any } = {} } = req; - if (name === undefined) { + if (required && name === undefined) { return res.status(404).send('Client name must be defined'); - } + } else if (name !== undefined) { + const client = clients.getByName(name); - const client = clients.getByName(name); + if (client === undefined) { + return res.status(404).send(`No client with the name: ${name}`); + } - if (client === undefined) { - return res.status(404).send(`No client with the name: ${name}`); + req.scrobbleClient = client; } - req.scrobbleClient = client; next(); } diff --git a/src/client/App.tsx b/src/client/App.tsx index c7cdde0c..ff3546fe 100644 --- a/src/client/App.tsx +++ b/src/client/App.tsx @@ -10,6 +10,7 @@ import './App.css'; import {store} from './store'; import Dashboard from "./dashboard/dashboard"; import RecentPage from "./recent/RecentPage"; +import ScrobbledPage from "./scrobbled/ScrobbledPage"; function NoMatch() { let location = useLocation(); @@ -30,6 +31,10 @@ const router = createBrowserRouter([ path: "/recent", element: , }, + { + path: "/scrobbled", + element: , + }, { path: "*", element: diff --git a/src/client/components/statusCard/ClientStatusCard.tsx b/src/client/components/statusCard/ClientStatusCard.tsx index 01e1140d..f838b2ed 100644 --- a/src/client/components/statusCard/ClientStatusCard.tsx +++ b/src/client/components/statusCard/ClientStatusCard.tsx @@ -4,6 +4,7 @@ import SkeletonParagraph from "../skeleton/SkeletonParagraph"; import {clientAdapter} from "../../status/ducks"; import {RootState} from "../../store"; import {connect, ConnectedProps} from "react-redux"; +import {Link} from "react-router-dom"; export interface ClientStatusCardData extends StatusCardSkeletonData, PropsFromRedux { loading?: boolean @@ -27,14 +28,18 @@ const ClientStatusCard = (props: ClientStatusCardData) => { const { hasAuth, name, - type + type, + authed, + initialized } = data; if(type === 'lastfm' || type === 'listenbrainz') header = `${display} (Client)`; + const scrobbled = initialized && (!hasAuth || (hasAuth && authed)) ? Tracks Scrobbled : Tracks Scrobbled + // TODO links body = ( -
Tracks Scrobbled: {data.tracksDiscovered}
+
{scrobbled}: {data.tracksDiscovered}
{hasAuth ? (Re)authenticate or initialize : null}
); } diff --git a/src/client/components/statusCard/SourceStatusCard.tsx b/src/client/components/statusCard/SourceStatusCard.tsx index 523e1761..087d5d60 100644 --- a/src/client/components/statusCard/SourceStatusCard.tsx +++ b/src/client/components/statusCard/SourceStatusCard.tsx @@ -50,11 +50,12 @@ const SourceStatusCard = (props: SourceStatusCardData) => { const platformIds = Object.keys(players); + const discovered = (!hasAuth || authed) ? Tracks Discovered : Tracks Discovered; + // TODO links body = (
{platformIds.map(x => )} -
Tracks Discovered: {tracksDiscovered}
- {canPoll && (!hasAuth || authed) ?
See recently played tracks returned by API
: null} +
{discovered}: {tracksDiscovered}
{canPoll && hasAuthInteraction ? (Re)authenticate and (re)start polling : null} {canPoll && (!hasAuth || authed) ?
Restart Polling
: null}
); diff --git a/src/client/recent/RecentPage.tsx b/src/client/recent/RecentPage.tsx index f9b38605..82dd4d1f 100644 --- a/src/client/recent/RecentPage.tsx +++ b/src/client/recent/RecentPage.tsx @@ -11,16 +11,21 @@ const displayOpts = { const recent = () => { let [searchParams, setSearchParams] = useSearchParams(); - const { data = [], error, isLoading, isSuccess} = useGetRecentQuery({name: searchParams.get('name'), type: searchParams.get('type')}); + const { + data = [], + error, + isLoading, + isSuccess + } = useGetRecentQuery({name: searchParams.get('name'), type: searchParams.get('type')}); return ( -
-
-
+
+
+

Recently Played

-
+
{isSuccess && !isLoading && data.length === 0 ? 'No recently played tracks!' : null}
    {data.map(x =>
  • )}
diff --git a/src/client/scrobbled/ScrobbledPage.tsx b/src/client/scrobbled/ScrobbledPage.tsx new file mode 100644 index 00000000..56b301ed --- /dev/null +++ b/src/client/scrobbled/ScrobbledPage.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import PlayDisplay from "../components/PlayDisplay"; +import {recentIncludes} from "../../core/Atomic"; +import {useSearchParams} from "react-router-dom"; +import {useGetRecentQuery} from "./scrobbledDucks"; + +const displayOpts = { + include: recentIncludes, + includeWeb: true +} + +const scrobbled = () => { + let [searchParams, setSearchParams] = useSearchParams(); + const { + data = [], + error, + isLoading, + isSuccess + } = useGetRecentQuery({name: searchParams.get('name'), type: searchParams.get('type')}); + + return ( +
+
+
+

Recently Scrobbled +

+
+
+ {isSuccess && !isLoading && data.length === 0 ? 'No recently scrobbled tracks!' : null} +
    {data.map(x =>
  • )}
+
+
+
+ ); +} + +export default scrobbled; diff --git a/src/client/scrobbled/scrobbledDucks.ts b/src/client/scrobbled/scrobbledDucks.ts new file mode 100644 index 00000000..22213ba9 --- /dev/null +++ b/src/client/scrobbled/scrobbledDucks.ts @@ -0,0 +1,18 @@ +import {createApi, fetchBaseQuery} from "@reduxjs/toolkit/dist/query/react/index"; +import {JsonPlayObject} from "../../core/Atomic"; + +type ScrobbledResponse = (JsonPlayObject & { index: number })[]; +export const scrobbledApi = createApi({ + reducerPath: 'scrobbledApi', + baseQuery: fetchBaseQuery({ baseUrl: '/api/' }), + endpoints: (builder) => ({ + getRecent: builder.query({ + query: (params) => `scrobbled?name=${params.name}&type=${params.type}`, + transformResponse: (response: ScrobbledResponse, meta, arg) => { + return response.map((x, index) => ({...x, index: index + 1})) + } + }), + }), +}); + +export const { useGetRecentQuery } = scrobbledApi; diff --git a/src/client/store.ts b/src/client/store.ts index 0c7a3c93..32d88404 100644 --- a/src/client/store.ts +++ b/src/client/store.ts @@ -6,6 +6,7 @@ import {clientSlice, sourceSlice} from "./status/ducks"; import {logsReducer} from "./logs/logDucks"; import {logsApi} from "./logs/logsApi"; import {recentApi} from "./recent/recentDucks"; +import {scrobbledApi} from "./scrobbled/scrobbledDucks"; export const store = configureStore({ reducer: { @@ -13,6 +14,7 @@ export const store = configureStore({ [statusApi.reducerPath]: statusApi.reducer, [logsApi.reducerPath]: logsApi.reducer, [recentApi.reducerPath]: recentApi.reducer, + [scrobbledApi.reducerPath]: scrobbledApi.reducer, //parts: statusReducer clients: clientSlice.reducer, sources: sourceSlice.reducer, @@ -21,7 +23,7 @@ export const store = configureStore({ // Adding the api middleware enables caching, invalidation, polling, // and other useful features of `rtk-query`. middleware: (getDefaultMiddleware) => - getDefaultMiddleware().concat([statusApi.middleware, logsApi.middleware, recentApi.middleware]), + getDefaultMiddleware().concat([statusApi.middleware, logsApi.middleware, recentApi.middleware, scrobbledApi.middleware]), }) // optional, but required for refetchOnFocus/refetchOnReconnect behaviors diff --git a/src/core/Atomic.ts b/src/core/Atomic.ts index 71cfb61f..5163b89a 100644 --- a/src/core/Atomic.ts +++ b/src/core/Atomic.ts @@ -21,6 +21,9 @@ export interface ClientStatusData { tracksDiscovered: number; name: string; hasAuth: boolean; + hasAuthInteraction: boolean; + authed: boolean; + initialized: boolean; } export type PlayObjectIncludeTypes = 'time' | 'artist' | 'track' | 'timeFromNow' | 'trackId'; -- 2.54.0 From f7dae32f503b253e4890a317b711f526ca6547a1 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 12 Sep 2023 16:01:32 -0400 Subject: [PATCH 18/82] feat(maloja): Generate web links for scrobbled tracks --- src/backend/scrobblers/MalojaScrobbler.ts | 11 +++++++++-- src/backend/server/api.ts | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/backend/scrobblers/MalojaScrobbler.ts b/src/backend/scrobblers/MalojaScrobbler.ts index 6bfba90d..2c6e4dd4 100644 --- a/src/backend/scrobblers/MalojaScrobbler.ts +++ b/src/backend/scrobblers/MalojaScrobbler.ts @@ -23,6 +23,7 @@ import { import { PlayObject, TrackStringOptions } from "../../core/Atomic"; import {buildTrackString, capitalize} from "../../core/StringUtils"; import EventEmitter from "events"; +import normalizeUrl from "normalize-url"; const feat = ["ft.", "ft", "feat.", "feat", "featuring", "Ft.", "Ft", "Feat.", "Feat", "Featuring"]; @@ -31,6 +32,7 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { requiresAuth = true; serverIsHealthy = false; serverVersion: any; + webUrl: string; declare config: MalojaClientConfig @@ -43,6 +45,7 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { if (url === undefined) { throw new Error("Missing 'url' for Maloja config"); } + this.webUrl = normalizeUrl(url); } static formatPlayObj(obj: MalojaScrobbleData, options: FormatPlayObjectOptions = {}): PlayObject { @@ -52,7 +55,7 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { duration, time; - const {serverVersion} = options; + const {serverVersion, url} = options; if(serverVersion === undefined || compareVersions(serverVersion, '3.0.0') >= 0) { // scrobble data structure changed for v3 @@ -106,6 +109,7 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { const aStrings = aString.split(','); return [...acc, ...aStrings]; }, []); + const urlParams = new URLSearchParams([['artist', artists[0]], ['title', title]]); return { data: { artists: [...new Set(artistStrings)] as string[], @@ -116,11 +120,14 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { }, meta: { source: 'Maloja', + url: { + web: `${url}/track?${urlParams.toString()}` + } } } } - formatPlayObj = (obj: any, options: FormatPlayObjectOptions = {}) => MalojaScrobbler.formatPlayObj(obj, {serverVersion: this.serverVersion}); + formatPlayObj = (obj: any, options: FormatPlayObjectOptions = {}) => MalojaScrobbler.formatPlayObj(obj, {serverVersion: this.serverVersion, url: this.webUrl}); callApi = async (req: any, retries = 0) => { const { diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index 9fafc4ce..d7c80b16 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -25,6 +25,7 @@ import MemorySource from "../sources/MemorySource"; import {capitalize} from "../../core/StringUtils"; import {source} from "common-tags"; import AbstractScrobbleClient from "../scrobblers/AbstractScrobbleClient.js"; +import {sortByNewestPlayDate} from "../utils.js"; let output: LogInfo[] = [] @@ -218,7 +219,7 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput let result: PlayObject[] = []; if (client !== undefined) { - result = (client as AbstractScrobbleClient).getScrobbledPlays(); + result = [...(client as AbstractScrobbleClient).getScrobbledPlays()].sort(sortByNewestPlayDate); } return res.json(result); -- 2.54.0 From 590610022d32c6ba92bc9dd8a0ad06304bde9e2e Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 13 Sep 2023 10:49:54 -0400 Subject: [PATCH 19/82] feat!: Set default scrobble thresholds to standard values #73 https://github.com/krateng/maloja/blob/master/API.md#scrobbling-guideline https://www.last.fm/api/scrobbling The defaults are 50% of the track or 4 minutes. --- src/backend/common/infrastructure/Atomic.ts | 11 +++++++- .../infrastructure/config/source/index.ts | 25 ++++++++++++++----- src/backend/common/schema/aio-source.json | 12 ++++++--- src/backend/common/schema/aio.json | 12 ++++++--- src/backend/common/schema/source.json | 12 ++++++--- src/backend/utils.ts | 19 +++++++------- 6 files changed, 63 insertions(+), 28 deletions(-) diff --git a/src/backend/common/infrastructure/Atomic.ts b/src/backend/common/infrastructure/Atomic.ts index 4862905f..f00b2b44 100644 --- a/src/backend/common/infrastructure/Atomic.ts +++ b/src/backend/common/infrastructure/Atomic.ts @@ -147,7 +147,16 @@ export const asLogOptions = (obj: LogConfig = {}): obj is LogOptions => { // https://stackoverflow.com/questions/40510611/typescript-interface-require-one-of-two-properties-to-exist#comment116238286_49725198 export type RequireAtLeastOne = Omit & { [ P in R ] : Required> & Partial> }[R]; -export const DEFAULT_SCROBBLE_DURATION_THRESHOLD: number = 30; +/** + * https://www.last.fm/api/scrobbling (When is a scrobble a scrobble?) + * https://github.com/krateng/maloja/blob/master/API.md#scrobbling-guideline + * */ +export const DEFAULT_SCROBBLE_DURATION_THRESHOLD: number = 240; +/** + * https://www.last.fm/api/scrobbling (When is a scrobble a scrobble?) + * https://github.com/krateng/maloja/blob/master/API.md#scrobbling-guideline + * */ +export const DEFAULT_SCROBBLE_PERCENT_THRESHOLD: number = 50; export interface ScrobbleThresholdResult { passes: boolean diff --git a/src/backend/common/infrastructure/config/source/index.ts b/src/backend/common/infrastructure/config/source/index.ts index 9723a80f..d99eec66 100644 --- a/src/backend/common/infrastructure/config/source/index.ts +++ b/src/backend/common/infrastructure/config/source/index.ts @@ -12,18 +12,31 @@ export interface SourceRetryOptions extends RequestRetryOptions { export interface ScrobbleThresholds { /** - * The number of seconds before a track should be considered scrobbled. + * The number of seconds a track has been listened to before it should be considered scrobbled. * - * @default 30 - * @examples [30] + * Set to null to disable. + * + * @see https://www.last.fm/api/scrobbling (When is a scrobble a scrobble?) + * @seehttps://github.com/krateng/maloja/blob/master/API.md#scrobbling-guideline + * + * @default 240 + * @examples [240] * */ - duration?: number + duration?: number | null /** - * The percentage of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is. + * The percentage (as an integer) of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is. + * + * Set to null to disable. * * NOTE: This should be used with care when the Source is a "polling" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not "seen" the track for long enough from first discovery, even if you have been playing the track for longer. + * + * @see https://www.last.fm/api/scrobbling (When is a scrobble a scrobble?) + * @see https://github.com/krateng/maloja/blob/master/API.md#scrobbling-guideline + * + * @default 50 + * @examples [50] * */ - percent?: number + percent?: number | null } export interface CommonSourceOptions { diff --git a/src/backend/common/schema/aio-source.json b/src/backend/common/schema/aio-source.json index 823d10d0..fe5c6450 100644 --- a/src/backend/common/schema/aio-source.json +++ b/src/backend/common/schema/aio-source.json @@ -1270,16 +1270,20 @@ "ScrobbleThresholds": { "properties": { "duration": { - "default": 30, - "description": "The number of seconds before a track should be considered scrobbled.", + "default": 240, + "description": "The number of seconds a track has been listened to before it should be considered scrobbled.\n\nSet to null to disable.", "examples": [ - 30 + 240 ], "title": "duration", "type": "number" }, "percent": { - "description": "The percentage of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "default": 50, + "description": "The percentage (as an integer) of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nSet to null to disable.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "examples": [ + 50 + ], "title": "percent", "type": "number" } diff --git a/src/backend/common/schema/aio.json b/src/backend/common/schema/aio.json index adfe84be..75c16acb 100644 --- a/src/backend/common/schema/aio.json +++ b/src/backend/common/schema/aio.json @@ -1931,16 +1931,20 @@ "ScrobbleThresholds": { "properties": { "duration": { - "default": 30, - "description": "The number of seconds before a track should be considered scrobbled.", + "default": 240, + "description": "The number of seconds a track has been listened to before it should be considered scrobbled.\n\nSet to null to disable.", "examples": [ - 30 + 240 ], "title": "duration", "type": "number" }, "percent": { - "description": "The percentage of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "default": 50, + "description": "The percentage (as an integer) of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nSet to null to disable.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "examples": [ + 50 + ], "title": "percent", "type": "number" } diff --git a/src/backend/common/schema/source.json b/src/backend/common/schema/source.json index 87128bdc..6ddd54ab 100644 --- a/src/backend/common/schema/source.json +++ b/src/backend/common/schema/source.json @@ -1239,16 +1239,20 @@ "ScrobbleThresholds": { "properties": { "duration": { - "default": 30, - "description": "The number of seconds before a track should be considered scrobbled.", + "default": 240, + "description": "The number of seconds a track has been listened to before it should be considered scrobbled.\n\nSet to null to disable.", "examples": [ - 30 + 240 ], "title": "duration", "type": "number" }, "percent": { - "description": "The percentage of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "default": 50, + "description": "The percentage (as an integer) of a track that should have been seen played before it should be scrobbled. Only used if the Source provides information about how long the track is.\n\nSet to null to disable.\n\nNOTE: This should be used with care when the Source is a \"polling\" type (has an 'interval' property). If the track is short and the interval is too high MS may ignore the track if percentage is high because it had not \"seen\" the track for long enough from first discovery, even if you have been playing the track for longer.", + "examples": [ + 50 + ], "title": "percent", "type": "number" } diff --git a/src/backend/utils.ts b/src/backend/utils.ts index 38145bca..3db38a7f 100644 --- a/src/backend/utils.ts +++ b/src/backend/utils.ts @@ -7,7 +7,7 @@ import {TimeoutError, WebapiError} from "spotify-web-api-node/src/response-error import Ajv, {Schema} from 'ajv'; import { asPlayerStateData, - DEFAULT_SCROBBLE_DURATION_THRESHOLD, + DEFAULT_SCROBBLE_DURATION_THRESHOLD, DEFAULT_SCROBBLE_PERCENT_THRESHOLD, DELIMITERS, lowGranularitySources, NO_DEVICE, @@ -622,15 +622,16 @@ export const playPassesScrobbleThreshold = (play: PlayObject, thresholds: Scrobb export const timePassesScrobbleThreshold = (thresholds: ScrobbleThresholds, secondsTracked: number, playDuration?: number): ScrobbleThresholdResult => { let durationPasses = undefined, - durationThreshold = (thresholds.duration ?? DEFAULT_SCROBBLE_DURATION_THRESHOLD), + durationThreshold: number | null = thresholds.duration ?? DEFAULT_SCROBBLE_DURATION_THRESHOLD, percentPasses = undefined, - percent: number | undefined = undefined; + percentThreshold: number | null = thresholds.percent ?? DEFAULT_SCROBBLE_PERCENT_THRESHOLD, + percent: number | undefined; - if (thresholds.percent !== undefined && playDuration !== undefined) { - percent = (secondsTracked / playDuration) * 100; - percentPasses = percent >= thresholds.percent; + if (percentThreshold !== null && playDuration !== undefined && playDuration !== 0) { + percent = Math.round(((secondsTracked / playDuration) * 100)); + percentPasses = percent >= percentThreshold; } - if (thresholds.duration !== undefined || percentPasses === undefined) { + if (durationThreshold !== null || percentPasses === undefined) { durationPasses = secondsTracked >= durationThreshold; } @@ -644,7 +645,7 @@ export const timePassesScrobbleThreshold = (thresholds: ScrobbleThresholds, seco percent: { passes: percentPasses, value: percent, - threshold: thresholds.percent + threshold: percentThreshold } } } @@ -655,7 +656,7 @@ export const thresholdResultSummary = (result: ScrobbleThresholdResult) => { parts.push(`tracked time of ${result.duration.value}s (wanted ${result.duration.threshold}s)`); } if(result.percent.passes !== undefined) { - parts.push(`tracked percent of ${(result.percent.value).toFixed(2)}% (wanted ${result.percent.threshold})`) + parts.push(`tracked percent of ${(result.percent.value).toFixed(2)}% (wanted ${result.percent.threshold}%)`) } return `${result.passes ? 'met' : 'did not meet'} thresholds with ${parts.join(' and')}`; -- 2.54.0 From c40acdd7c7c2c395611d4bf3962abfc0c46d60c1 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 13 Sep 2023 11:36:22 -0400 Subject: [PATCH 20/82] feat!: Decrease default polling interval * Due to increased scrobbled thresholds in 590610022d32c6ba92bc9dd8a0ad06304bde9e2e we need to pol more frequently to make sure more of the track is accurately monitored * Decreased default from 30 to 10 seconds * Decreased max interval from 60 to 30 seconds --- src/backend/common/infrastructure/Atomic.ts | 3 ++ .../common/infrastructure/config/common.ts | 8 ++--- .../infrastructure/config/source/spotify.ts | 8 +++-- src/backend/common/schema/aio-source.json | 34 +++++++++---------- src/backend/common/schema/aio.json | 34 +++++++++---------- src/backend/common/schema/source.json | 34 +++++++++---------- src/backend/sources/AbstractSource.ts | 3 +- src/backend/sources/JRiverSource.ts | 4 +-- src/backend/sources/KodiSource.ts | 4 +-- src/backend/sources/MopidySource.ts | 4 +-- src/backend/sources/SpotifySource.ts | 7 ++-- src/backend/sources/SubsonicSource.ts | 4 +-- 12 files changed, 72 insertions(+), 75 deletions(-) diff --git a/src/backend/common/infrastructure/Atomic.ts b/src/backend/common/infrastructure/Atomic.ts index f00b2b44..00033577 100644 --- a/src/backend/common/infrastructure/Atomic.ts +++ b/src/backend/common/infrastructure/Atomic.ts @@ -158,6 +158,9 @@ export const DEFAULT_SCROBBLE_DURATION_THRESHOLD: number = 240; * */ export const DEFAULT_SCROBBLE_PERCENT_THRESHOLD: number = 50; +export const DEFAULT_POLLING_INTERVAL: number = 10; +export const DEFAULT_POLLING_MAX_INTERVAL = 30; + export interface ScrobbleThresholdResult { passes: boolean duration: { diff --git a/src/backend/common/infrastructure/config/common.ts b/src/backend/common/infrastructure/config/common.ts index 33ffa481..5ba98ca7 100644 --- a/src/backend/common/infrastructure/config/common.ts +++ b/src/backend/common/infrastructure/config/common.ts @@ -30,16 +30,16 @@ export interface PollingOptions { /** * How long to wait before polling the source API for new tracks (in seconds) * - * @default 30 - * @examples [30] + * @default 10 + * @examples [10] * */ interval?: number /** * When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds) * - * @default 60 - * @examples [60] + * @default 30 + * @examples [30] * */ maxInterval?: number } diff --git a/src/backend/common/infrastructure/config/source/spotify.ts b/src/backend/common/infrastructure/config/source/spotify.ts index 9c2948c4..3bdc7e5c 100644 --- a/src/backend/common/infrastructure/config/source/spotify.ts +++ b/src/backend/common/infrastructure/config/source/spotify.ts @@ -29,10 +29,12 @@ export interface SpotifySourceData extends CommonSourceData, PollingOptions { * Reading: * * https://developer.spotify.com/documentation/web-api/guides/rate-limits/ * * https://medium.com/mendix/limiting-your-amount-of-calls-in-mendix-most-of-the-time-rest-835dde55b10e - * * The rate limit is ~180 req/min + * * Rate limit may ~180 req/min + * * https://community.spotify.com/t5/Spotify-for-Developers/Web-API-ratelimit/m-p/5503150/highlight/true#M7930 + * * Informally indicated as 20 req/sec? Probably for burstiness * - * @default 30 - * @examples [30] + * @default 10 + * @examples [10] * */ interval?: number } diff --git a/src/backend/common/schema/aio-source.json b/src/backend/common/schema/aio-source.json index fe5c6450..0fc5aec4 100644 --- a/src/backend/common/schema/aio-source.json +++ b/src/backend/common/schema/aio-source.json @@ -166,19 +166,19 @@ "JRiverData": { "properties": { "interval": { - "default": 30, + "default": 10, "description": "How long to wait before polling the source API for new tracks (in seconds)", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" @@ -444,19 +444,19 @@ "KodiData": { "properties": { "interval": { - "default": 30, + "default": 10, "description": "How long to wait before polling the source API for new tracks (in seconds)", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" @@ -1431,19 +1431,19 @@ "type": "string" }, "interval": { - "default": 30, - "description": "How long to wait before polling the source API for new tracks (in seconds)\n\nIt is unlikely you should need to change this unless you scrobble many very short tracks often\n\nReading:\n* https://developer.spotify.com/documentation/web-api/guides/rate-limits/\n* https://medium.com/mendix/limiting-your-amount-of-calls-in-mendix-most-of-the-time-rest-835dde55b10e\n * The rate limit is ~180 req/min", + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)\n\nIt is unlikely you should need to change this unless you scrobble many very short tracks often\n\nReading:\n* https://developer.spotify.com/documentation/web-api/guides/rate-limits/\n* https://medium.com/mendix/limiting-your-amount-of-calls-in-mendix-most-of-the-time-rest-835dde55b10e\n * Rate limit may ~180 req/min\n* https://community.spotify.com/t5/Spotify-for-Developers/Web-API-ratelimit/m-p/5503150/highlight/true#M7930\n * Informally indicated as 20 req/sec? Probably for burstiness", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" @@ -1692,19 +1692,19 @@ "type": "string" }, "interval": { - "default": 30, + "default": 10, "description": "How long to wait before polling the source API for new tracks (in seconds)", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" diff --git a/src/backend/common/schema/aio.json b/src/backend/common/schema/aio.json index 75c16acb..7cbe5d05 100644 --- a/src/backend/common/schema/aio.json +++ b/src/backend/common/schema/aio.json @@ -288,19 +288,19 @@ "JRiverData": { "properties": { "interval": { - "default": 30, + "default": 10, "description": "How long to wait before polling the source API for new tracks (in seconds)", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" @@ -566,19 +566,19 @@ "KodiData": { "properties": { "interval": { - "default": 30, + "default": 10, "description": "How long to wait before polling the source API for new tracks (in seconds)", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" @@ -2101,19 +2101,19 @@ "type": "string" }, "interval": { - "default": 30, - "description": "How long to wait before polling the source API for new tracks (in seconds)\n\nIt is unlikely you should need to change this unless you scrobble many very short tracks often\n\nReading:\n* https://developer.spotify.com/documentation/web-api/guides/rate-limits/\n* https://medium.com/mendix/limiting-your-amount-of-calls-in-mendix-most-of-the-time-rest-835dde55b10e\n * The rate limit is ~180 req/min", + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)\n\nIt is unlikely you should need to change this unless you scrobble many very short tracks often\n\nReading:\n* https://developer.spotify.com/documentation/web-api/guides/rate-limits/\n* https://medium.com/mendix/limiting-your-amount-of-calls-in-mendix-most-of-the-time-rest-835dde55b10e\n * Rate limit may ~180 req/min\n* https://community.spotify.com/t5/Spotify-for-Developers/Web-API-ratelimit/m-p/5503150/highlight/true#M7930\n * Informally indicated as 20 req/sec? Probably for burstiness", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" @@ -2373,19 +2373,19 @@ "type": "string" }, "interval": { - "default": 30, + "default": 10, "description": "How long to wait before polling the source API for new tracks (in seconds)", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" diff --git a/src/backend/common/schema/source.json b/src/backend/common/schema/source.json index 6ddd54ab..ba054e3d 100644 --- a/src/backend/common/schema/source.json +++ b/src/backend/common/schema/source.json @@ -199,19 +199,19 @@ "JRiverData": { "properties": { "interval": { - "default": 30, + "default": 10, "description": "How long to wait before polling the source API for new tracks (in seconds)", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" @@ -461,19 +461,19 @@ "KodiData": { "properties": { "interval": { - "default": 30, + "default": 10, "description": "How long to wait before polling the source API for new tracks (in seconds)", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" @@ -1315,19 +1315,19 @@ "type": "string" }, "interval": { - "default": 30, - "description": "How long to wait before polling the source API for new tracks (in seconds)\n\nIt is unlikely you should need to change this unless you scrobble many very short tracks often\n\nReading:\n* https://developer.spotify.com/documentation/web-api/guides/rate-limits/\n* https://medium.com/mendix/limiting-your-amount-of-calls-in-mendix-most-of-the-time-rest-835dde55b10e\n * The rate limit is ~180 req/min", + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)\n\nIt is unlikely you should need to change this unless you scrobble many very short tracks often\n\nReading:\n* https://developer.spotify.com/documentation/web-api/guides/rate-limits/\n* https://medium.com/mendix/limiting-your-amount-of-calls-in-mendix-most-of-the-time-rest-835dde55b10e\n * Rate limit may ~180 req/min\n* https://community.spotify.com/t5/Spotify-for-Developers/Web-API-ratelimit/m-p/5503150/highlight/true#M7930\n * Informally indicated as 20 req/sec? Probably for burstiness", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" @@ -1560,19 +1560,19 @@ "type": "string" }, "interval": { - "default": 30, + "default": 10, "description": "How long to wait before polling the source API for new tracks (in seconds)", "examples": [ - 30 + 10 ], "title": "interval", "type": "number" }, "maxInterval": { - "default": 60, + "default": 30, "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", "examples": [ - 60 + 30 ], "title": "maxInterval", "type": "number" diff --git a/src/backend/sources/AbstractSource.ts b/src/backend/sources/AbstractSource.ts index e932c96d..719bcef4 100644 --- a/src/backend/sources/AbstractSource.ts +++ b/src/backend/sources/AbstractSource.ts @@ -11,6 +11,7 @@ import { sortByOldestPlayDate, } from "../utils"; import { + DEFAULT_POLLING_INTERVAL, DEFAULT_POLLING_MAX_INTERVAL, DeviceId, GroupedFixedPlays, GroupedPlays, @@ -307,7 +308,7 @@ export default abstract class AbstractSource { let checkCount = 0; let checksOverThreshold = 0; - const {interval = 30, checkActiveFor = 300, maxInterval = 60} = this.config.data; + const {interval = DEFAULT_POLLING_INTERVAL, checkActiveFor = 300, maxInterval = DEFAULT_POLLING_MAX_INTERVAL} = this.config.data; const maxBackoff = maxInterval - interval; let sleepTime = interval; diff --git a/src/backend/sources/JRiverSource.ts b/src/backend/sources/JRiverSource.ts index fcbd625c..788b802e 100644 --- a/src/backend/sources/JRiverSource.ts +++ b/src/backend/sources/JRiverSource.ts @@ -22,11 +22,9 @@ export class JRiverSource extends MemorySource { data, } = config; const { - interval = 10, - maxInterval = 30, ...rest } = data || {}; - super('jriver', name, {...config, data: {interval, maxInterval, ...rest}}, internal, emitter); + super('jriver', name, {...config, data: {...rest}}, internal, emitter); const { data: { diff --git a/src/backend/sources/KodiSource.ts b/src/backend/sources/KodiSource.ts index 9cb5d46a..007a0ea4 100644 --- a/src/backend/sources/KodiSource.ts +++ b/src/backend/sources/KodiSource.ts @@ -17,11 +17,9 @@ export class KodiSource extends MemorySource { data, } = config; const { - interval = 10, - maxInterval = 30, ...rest } = data || {}; - super('kodi', name, {...config, data: {interval, maxInterval, ...rest}}, internal, emitter); + super('kodi', name, {...config, data: {...rest}}, internal, emitter); this.requiresAuth = true; this.canPoll = true; diff --git a/src/backend/sources/MopidySource.ts b/src/backend/sources/MopidySource.ts index 1d1bce27..e5dffec5 100644 --- a/src/backend/sources/MopidySource.ts +++ b/src/backend/sources/MopidySource.ts @@ -39,11 +39,9 @@ export class MopidySource extends MemorySource { albumBlacklist = ['Soundcloud'], uriWhitelist = [], uriBlacklist = [], - interval = 10, - maxInterval = 30, ...rest } = data; - super('mopidy', name, {...config, data: {interval, maxInterval, ...rest}}, internal, emitter); + super('mopidy', name, {...config, data: {...rest}}, internal, emitter); this.albumBlacklist = albumBlacklist.map(x => x.toLocaleLowerCase()); this.uriWhitelist = uriWhitelist.map(x => x.toLocaleLowerCase()); diff --git a/src/backend/sources/SpotifySource.ts b/src/backend/sources/SpotifySource.ts index 15e09497..61e46756 100644 --- a/src/backend/sources/SpotifySource.ts +++ b/src/backend/sources/SpotifySource.ts @@ -11,6 +11,7 @@ import SpotifyWebApi from "spotify-web-api-node"; import AbstractSource, { RecentlyPlayedOptions } from "./AbstractSource"; import { SpotifySourceConfig } from "../common/infrastructure/config/source/spotify"; import { + DEFAULT_POLLING_INTERVAL, FormatPlayObjectOptions, InternalConfig, NO_USER, @@ -51,16 +52,14 @@ export default class SpotifySource extends MemorySource { super('spotify', name, config, internal, emitter); const { data: { - interval = 15, + interval = DEFAULT_POLLING_INTERVAL, } = {} } = config; if (interval < 5) { - this.logger.warn('Interval should be 5 seconds or above...😬 preferably 15'); + this.logger.warn('Interval should probably be 5 seconds or above! Spotify may return 429 response (too many requests)'); } - this.config.data.interval = interval; - this.workingCredsPath = `${this.configDir}/currentCreds-${name}.json`; this.canPoll = true; } diff --git a/src/backend/sources/SubsonicSource.ts b/src/backend/sources/SubsonicSource.ts index 027aba9b..c0fd900a 100644 --- a/src/backend/sources/SubsonicSource.ts +++ b/src/backend/sources/SubsonicSource.ts @@ -24,12 +24,10 @@ export class SubsonicSource extends MemorySource { // default to quick interval so we can get a decently accurate nowPlaying const { data: { - interval = 10, - maxInterval = 30, ...restData } = {} } = config; - const subsonicConfig = {...config, data: {...restData, internal, maxInterval}}; + const subsonicConfig = {...config, data: {...restData}}; super('subsonic', name, subsonicConfig, internal,emitter); const {data: {user, password, url} = {}} = this.config; -- 2.54.0 From d0fd225d99ad270a5a12e8ccf654aaf5af25fa50 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 13 Sep 2023 11:40:29 -0400 Subject: [PATCH 21/82] chore: Use constant for default retry multiplier --- src/backend/common/infrastructure/Atomic.ts | 2 ++ src/backend/common/vendor/JRiverApiClient.ts | 3 ++- src/backend/common/vendor/LastfmApiClient.ts | 4 ++-- src/backend/common/vendor/ListenbrainzApiClient.ts | 4 ++-- src/backend/scrobblers/MalojaScrobbler.ts | 4 ++-- src/backend/sources/AbstractSource.ts | 4 ++-- src/backend/sources/DeezerSource.ts | 4 ++-- src/backend/sources/SubsonicSource.ts | 4 ++-- 8 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/backend/common/infrastructure/Atomic.ts b/src/backend/common/infrastructure/Atomic.ts index 00033577..e551104e 100644 --- a/src/backend/common/infrastructure/Atomic.ts +++ b/src/backend/common/infrastructure/Atomic.ts @@ -161,6 +161,8 @@ export const DEFAULT_SCROBBLE_PERCENT_THRESHOLD: number = 50; export const DEFAULT_POLLING_INTERVAL: number = 10; export const DEFAULT_POLLING_MAX_INTERVAL = 30; +export const DEFAULT_RETRY_MULTIPLIER: number = 1.5; + export interface ScrobbleThresholdResult { passes: boolean duration: { diff --git a/src/backend/common/vendor/JRiverApiClient.ts b/src/backend/common/vendor/JRiverApiClient.ts index cfb22610..d050be50 100644 --- a/src/backend/common/vendor/JRiverApiClient.ts +++ b/src/backend/common/vendor/JRiverApiClient.ts @@ -3,6 +3,7 @@ import {JRiverData} from "../infrastructure/config/source/jriver"; import request, {Request, Response} from 'superagent'; import xml2js from 'xml2js'; import {ErrorWithCause} from "pony-cause"; +import {DEFAULT_RETRY_MULTIPLIER} from "../infrastructure/Atomic.js"; const parser = new xml2js.Parser({'async': true}); @@ -107,7 +108,7 @@ export class JRiverApiClient extends AbstractApiClient { callApi = async (req: Request, retries = 0): Promise => { const { maxRequestRetries = 2, - retryMultiplier = 1.5 + retryMultiplier = DEFAULT_RETRY_MULTIPLIER } = this.config; if (this.token !== undefined) { diff --git a/src/backend/common/vendor/LastfmApiClient.ts b/src/backend/common/vendor/LastfmApiClient.ts index ad00b40c..193c9400 100644 --- a/src/backend/common/vendor/LastfmApiClient.ts +++ b/src/backend/common/vendor/LastfmApiClient.ts @@ -2,7 +2,7 @@ import LastFm, {AuthGetSessionResponse, TrackObject, UserGetInfoResponse} from " import AbstractApiClient from "./AbstractApiClient"; import dayjs from "dayjs"; import { readJson, sleep, writeFile } from "../../utils"; -import { FormatPlayObjectOptions } from "../infrastructure/Atomic"; +import {DEFAULT_RETRY_MULTIPLIER, FormatPlayObjectOptions} from "../infrastructure/Atomic"; import { LastfmData } from "../infrastructure/config/client/lastfm"; import { PlayObject } from "../../../core/Atomic"; @@ -81,7 +81,7 @@ export default class LastfmApiClient extends AbstractApiClient { callApi = async (func: any, retries = 0): Promise => { const { maxRequestRetries = 2, - retryMultiplier = 1.5 + retryMultiplier = DEFAULT_RETRY_MULTIPLIER } = this.config; try { diff --git a/src/backend/common/vendor/ListenbrainzApiClient.ts b/src/backend/common/vendor/ListenbrainzApiClient.ts index fee7faba..b593f42e 100644 --- a/src/backend/common/vendor/ListenbrainzApiClient.ts +++ b/src/backend/common/vendor/ListenbrainzApiClient.ts @@ -1,7 +1,7 @@ import AbstractApiClient from "./AbstractApiClient"; import request, {Request} from 'superagent'; import { ListenBrainzClientData } from "../infrastructure/config/client/listenbrainz"; -import { DELIMITERS, FormatPlayObjectOptions } from "../infrastructure/Atomic"; +import {DEFAULT_RETRY_MULTIPLIER, DELIMITERS, FormatPlayObjectOptions} from "../infrastructure/Atomic"; import dayjs from "dayjs"; import { stringSameness } from '@foxxmd/string-sameness'; import { @@ -130,7 +130,7 @@ export class ListenbrainzApiClient extends AbstractApiClient { callApi = async (req: Request, retries = 0): Promise => { const { maxRequestRetries = 2, - retryMultiplier = 1.5 + retryMultiplier = DEFAULT_RETRY_MULTIPLIER } = this.config; try { diff --git a/src/backend/scrobblers/MalojaScrobbler.ts b/src/backend/scrobblers/MalojaScrobbler.ts index 2c6e4dd4..3f375658 100644 --- a/src/backend/scrobblers/MalojaScrobbler.ts +++ b/src/backend/scrobblers/MalojaScrobbler.ts @@ -10,7 +10,7 @@ import { parseRetryAfterSecsFromObj, isPlayTemporallyClose, } from "../utils"; -import { FormatPlayObjectOptions, INITIALIZING } from "../common/infrastructure/Atomic"; +import {DEFAULT_RETRY_MULTIPLIER, FormatPlayObjectOptions, INITIALIZING} from "../common/infrastructure/Atomic"; import { MalojaClientConfig } from "../common/infrastructure/config/client/maloja"; import { Notifiers } from "../notifier/Notifiers"; import {Logger} from '@foxxmd/winston'; @@ -132,7 +132,7 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { callApi = async (req: any, retries = 0) => { const { maxRequestRetries = 1, - retryMultiplier = 1.5 + retryMultiplier = DEFAULT_RETRY_MULTIPLIER } = this.config.data; try { diff --git a/src/backend/sources/AbstractSource.ts b/src/backend/sources/AbstractSource.ts index 719bcef4..53278547 100644 --- a/src/backend/sources/AbstractSource.ts +++ b/src/backend/sources/AbstractSource.ts @@ -11,7 +11,7 @@ import { sortByOldestPlayDate, } from "../utils"; import { - DEFAULT_POLLING_INTERVAL, DEFAULT_POLLING_MAX_INTERVAL, + DEFAULT_POLLING_INTERVAL, DEFAULT_POLLING_MAX_INTERVAL, DEFAULT_RETRY_MULTIPLIER, DeviceId, GroupedFixedPlays, GroupedPlays, @@ -237,7 +237,7 @@ export default abstract class AbstractSource { const { data: { maxPollRetries = 5, - retryMultiplier = 1, + retryMultiplier = DEFAULT_RETRY_MULTIPLIER, } = {}, } = this.config; diff --git a/src/backend/sources/DeezerSource.ts b/src/backend/sources/DeezerSource.ts index 55c74422..1271ee2a 100644 --- a/src/backend/sources/DeezerSource.ts +++ b/src/backend/sources/DeezerSource.ts @@ -10,7 +10,7 @@ import {Strategy as DeezerStrategy} from 'passport-deezer'; import AbstractSource, { RecentlyPlayedOptions } from "./AbstractSource"; import dayjs from "dayjs"; import { DeezerSourceConfig } from "../common/infrastructure/config/source/deezer"; -import { FormatPlayObjectOptions, InternalConfig } from "../common/infrastructure/Atomic"; +import {DEFAULT_RETRY_MULTIPLIER, FormatPlayObjectOptions, InternalConfig} from "../common/infrastructure/Atomic"; import EventEmitter from "events"; import { PlayObject } from "../../core/Atomic"; @@ -116,7 +116,7 @@ export default class DeezerSource extends AbstractSource { callApi = async (req: any, retries = 0) => { const { maxRequestRetries = 1, - retryMultiplier = 1.5 + retryMultiplier = DEFAULT_RETRY_MULTIPLIER } = this.config.data; req.query({ diff --git a/src/backend/sources/SubsonicSource.ts b/src/backend/sources/SubsonicSource.ts index c0fd900a..ccc81dea 100644 --- a/src/backend/sources/SubsonicSource.ts +++ b/src/backend/sources/SubsonicSource.ts @@ -5,7 +5,7 @@ import isSameOrAfter from "dayjs/plugin/isSameOrAfter.js"; import { parseRetryAfterSecsFromObj, removeDuplicates, sleep } from "../utils"; import MemorySource from "./MemorySource"; import { SubSonicSourceConfig } from "../common/infrastructure/config/source/subsonic"; -import { FormatPlayObjectOptions, InternalConfig } from "../common/infrastructure/Atomic"; +import {DEFAULT_RETRY_MULTIPLIER, FormatPlayObjectOptions, InternalConfig} from "../common/infrastructure/Atomic"; import { RecentlyPlayedOptions } from "./AbstractSource"; import EventEmitter from "events"; import { PlayObject } from "../../core/Atomic"; @@ -82,7 +82,7 @@ export class SubsonicSource extends MemorySource { user, password, maxRequestRetries = 1, - retryMultiplier = 1.5 + retryMultiplier = DEFAULT_RETRY_MULTIPLIER } = this.config.data; -- 2.54.0 From aa2c565afd46d853fb11f2d9b100c66e35e93d1f Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 13 Sep 2023 11:59:27 -0400 Subject: [PATCH 22/82] fix(ui): Log line parsing missing line terminator capture --- src/client/utils/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/utils/index.tsx b/src/client/utils/index.tsx index 1d2c1167..0f5c4a14 100644 --- a/src/client/utils/index.tsx +++ b/src/client/utils/index.tsx @@ -22,7 +22,7 @@ export const buildTrackStringReactOptions: TrackStringOptions = { } } -const LOG_LINE_REGEX = new RegExp(/(?\S+)\s+(?\w+)\s*:\s*(?.*)/); +const LOG_LINE_REGEX = new RegExp(/(?\S+)\s+(?\w+)\s*:\s*(?(?:.|\n)*)/, 'm'); export const parseLogLine = (line: string) => { const match = line.match(LOG_LINE_REGEX); if (match === null) { -- 2.54.0 From 6e8ea96f32543c3c1e92cb6fcfcb589dbce6d014 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 13 Sep 2023 12:19:58 -0400 Subject: [PATCH 23/82] fix: Fix js endings --- src/backend/common/vendor/JRiverApiClient.ts | 2 +- src/backend/ioc.ts | 1 - src/backend/server/api.ts | 4 ++-- src/client/components/PlayDisplay.tsx | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/backend/common/vendor/JRiverApiClient.ts b/src/backend/common/vendor/JRiverApiClient.ts index d050be50..ebdda124 100644 --- a/src/backend/common/vendor/JRiverApiClient.ts +++ b/src/backend/common/vendor/JRiverApiClient.ts @@ -3,7 +3,7 @@ import {JRiverData} from "../infrastructure/config/source/jriver"; import request, {Request, Response} from 'superagent'; import xml2js from 'xml2js'; import {ErrorWithCause} from "pony-cause"; -import {DEFAULT_RETRY_MULTIPLIER} from "../infrastructure/Atomic.js"; +import {DEFAULT_RETRY_MULTIPLIER} from "../infrastructure/Atomic"; const parser = new xml2js.Parser({'async': true}); diff --git a/src/backend/ioc.ts b/src/backend/ioc.ts index d33c9ccb..e9573885 100644 --- a/src/backend/ioc.ts +++ b/src/backend/ioc.ts @@ -8,7 +8,6 @@ import {EventEmitter} from "events"; import {logPath} from "./common/logging"; import {Container} from '@foxxmd/winston'; import { WildcardEmitter } from "./common/WildcardEmitter"; -//import ScrobbleClients from "./clients/ScrobbleClients.js"; const configDir = process.env.CONFIG_DIR || path.resolve(projectDir, `./config`); //const port = process.env.PORT ?? 9078; diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index d7c80b16..2bf673d3 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -24,8 +24,8 @@ import {ExpressHandler, ScrobbledPlayObject} from "../common/infrastructure/Atom import MemorySource from "../sources/MemorySource"; import {capitalize} from "../../core/StringUtils"; import {source} from "common-tags"; -import AbstractScrobbleClient from "../scrobblers/AbstractScrobbleClient.js"; -import {sortByNewestPlayDate} from "../utils.js"; +import AbstractScrobbleClient from "../scrobblers/AbstractScrobbleClient"; +import {sortByNewestPlayDate} from "../utils"; let output: LogInfo[] = [] diff --git a/src/client/components/PlayDisplay.tsx b/src/client/components/PlayDisplay.tsx index d2da5d1a..a97ef42c 100644 --- a/src/client/components/PlayDisplay.tsx +++ b/src/client/components/PlayDisplay.tsx @@ -1,6 +1,6 @@ import React, {Fragment, PropsWithChildren, ReactElement} from 'react'; -import {JsonPlayObject, TrackStringOptions} from "../../core/Atomic.js"; +import {JsonPlayObject, TrackStringOptions} from "../../core/Atomic"; import {buildTrackString} from "../../core/StringUtils"; import {buildTrackStringReactOptions} from "../utils/index"; -- 2.54.0 From bbb4555c0ebb3cf2038a8b102b11200ed08b800a Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 13 Sep 2023 13:21:44 -0400 Subject: [PATCH 24/82] chore(docker)!: Bump lsio base image version to 3.18 * Updates alpine 3.17 -> 3.18 * Main reason is to potentially fix DNS issues related to musl #88 * https://github.com/nodejs/node/issues/15780#issuecomment-334496907 and https://bell-sw.com/blog/how-to-deal-with-alpine-dns-issues/ * Resolved in musl 1.2.4 * https://gitlab.alpinelinux.org/alpine/tsc/-/issues/43 * https://www.openwall.com/lists/musl/2023/05/02/1 * Bumps npm 9.1.2 -> 9.6.6 New/changed ENVs used by LSIO may require removing "stored" ENVs if using portainer --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 071a8b3c..300693f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM lsiobase/alpine:3.17 as base +FROM lsiobase/alpine:3.18 as base ENV TZ=Etc/GMT -- 2.54.0 From d438c8b256bd2d876d417d1ba5ed3c93ed023ccb Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 13 Sep 2023 14:29:38 -0400 Subject: [PATCH 25/82] fix(docker): Normalize ownership of node_modules files files in node_module can have wierd ownership based on how a package owner published the package. If this occurs a rootless container build system could potentially have issues with subui/gid mapping for non-standard (high number) ids. During image build recursively chown all node_modules files to normalize ownership and avoid this problem. Fixes #96 --- Dockerfile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 300693f4..498d9e3f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,7 +24,8 @@ ENV CONFIG_DIR=$data_dir COPY docker/root/ / -RUN npm install -g patch-package +RUN npm install -g patch-package \ + && chown -R root:root /usr/local/lib/node_modules/patch-package WORKDIR /app @@ -39,7 +40,8 @@ COPY --chown=abc:abc package*.json tsconfig.json ./ COPY --chown=abc:abc patches ./patches -RUN npm install +RUN npm install \ + && chown -R root:root node_modules #RUN yarn install COPY --chown=abc:abc . /app @@ -72,7 +74,7 @@ ENV IS_DOCKER=true RUN npm install --omit=dev \ && npm cache clean --force \ - && chown abc:abc node_modules \ + && chown -R abc:abc node_modules \ && rm -rf node_modules/ts-node \ && rm -rf node_modules/typescript \ && rm -rf node_modules/@types -- 2.54.0 From ba161b7b9277377c62083b35cadbe24ec5aff371 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 14 Sep 2023 09:07:36 -0400 Subject: [PATCH 26/82] chore: Remove unused dashboard backend endpoint --- src/backend/server/api.ts | 79 --------------------------------------- 1 file changed, 79 deletions(-) diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index 2bf673d3..f985d6a4 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -267,83 +267,4 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput logger.debug(`Server received ${req.method} request from ${remote}${proxyRemote !== undefined ? ` (${proxyRemote})` : ''}${ua !== undefined ? ` (UA: ${ua})` : ''} to unknown route: ${req.url}`); return res.sendStatus(404); }); - - app.getAsync('/dashboard', async function (req, res) { - let slicedLog = output.filter(x => isLogLineMinLevel(x, logConfig.level)).slice(0, logConfig.limit + 1).map(x => formatLogToHtml(x[MESSAGE])); - if (logConfig.sort === 'ascending') { - slicedLog.reverse(); - } - // TODO links for re-trying auth and variables for signalling it (and API recently played) - const sourceData = scrobbleSources.sources.map((x) => { - const { - type, - tracksDiscovered = 0, - name, - canPoll = false, - polling = false, - initialized = false, - requiresAuth = false, - requiresAuthInteraction = false, - authed = false, - } = x; - const base = { - status: '', - type, - display: capitalize(type), - tracksDiscovered, - name, - canPoll, - hasAuth: requiresAuth, - hasAuthInteraction: requiresAuthInteraction, - authed, - }; - if(!initialized) { - base.status = 'Not Initialized'; - } else if(requiresAuth && !authed) { - base.status = requiresAuthInteraction ? 'Auth Interaction Required' : 'Authentication Failed Or Not Attempted' - } else if(canPoll) { - base.status = polling ? 'Running' : 'Idle'; - } else { - base.status = tracksDiscovered > 0 ? 'Received Data' : 'Awaiting Data' - } - return base; - }); - const clientData = scrobbleClients.clients.map((x) => { - const { - type, - tracksScrobbled = 0, - name, - initialized = false, - requiresAuth = false, - requiresAuthInteraction = false, - authed = false, - } = x; - const base = { - status: '', - type, - display: capitalize(type), - tracksDiscovered: tracksScrobbled, - name, - hasAuth: requiresAuth, - }; - if(!initialized) { - base.status = 'Not Initialized'; - } else if(requiresAuth && !authed) { - base.status = requiresAuthInteraction ? 'Auth Interaction Required' : 'Authentication Failed Or Not Attempted' - } else { - base.status = tracksScrobbled > 0 ? 'Received Data' : 'Awaiting Data'; - } - return base; - }) - res.render('status', { - sources: sourceData, - clients: clientData, - logs: { - output: slicedLog, - limit: [10, 20, 50, 100].map(x => `${x}`).join(' | '), - sort: ['ascending', 'descending'].map(x => `${x}`).join(' | '), - level: availableLevels.map(x => `${x}`).join(' | ') - } - }); - }) } -- 2.54.0 From 2d2319fa27634d91d9154c6850f07f8e6bba56eb Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 14 Sep 2023 09:08:01 -0400 Subject: [PATCH 27/82] fix(ui): Fix wrong route for client auth #97 --- src/client/components/statusCard/ClientStatusCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/components/statusCard/ClientStatusCard.tsx b/src/client/components/statusCard/ClientStatusCard.tsx index f838b2ed..e4719dac 100644 --- a/src/client/components/statusCard/ClientStatusCard.tsx +++ b/src/client/components/statusCard/ClientStatusCard.tsx @@ -40,7 +40,7 @@ const ClientStatusCard = (props: ClientStatusCardData) => { // TODO links body = (
{scrobbled}: {data.tracksDiscovered}
- {hasAuth ? (Re)authenticate or initialize : null} + {hasAuth ? (Re)authenticate or initialize : null}
); } return ( -- 2.54.0 From fa90a3b821c026e691912edf7d571623c375ec53 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 14 Sep 2023 10:05:24 -0400 Subject: [PATCH 28/82] fix: Load variables from .env for backend Was being used for frontend (cra) but not applied to backend --- package-lock.json | 6 +++--- package.json | 5 +++-- src/backend/index.ts | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8a4a14b6..e8ae97ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "multi-scrobbler", - "version": "0.5.1", + "version": "0.5.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "multi-scrobbler", - "version": "0.5.1", + "version": "0.5.2", "license": "MIT", "dependencies": { "@awaitjs/express": "^0.6.3", @@ -29,6 +29,7 @@ "concat-stream": "^2.0.0", "dayjs": "^1.10.4", "dbus-next": "0.10.2", + "dotenv": "^10.0.0", "es6-error": "^4.1.1", "express": "^4.17.1", "express-session": "^1.17.2", @@ -8855,7 +8856,6 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true, "engines": { "node": ">=10" } diff --git a/package.json b/package.json index 69e00b67..4163df2c 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "dev:server:webpack": "webpack --config webpack.config.server.js", "dev:server:nodemon": "rm -f build/server.js && wait-on -l build/server.js && nodemon build/server.js", "build": "npm run -s build:client && npm run -s build:server", - "build:client": "react-scripts build", - "build:server": "webpack --config webpack.config.server.js", + "build:client": "NODE_ENV=production react-scripts build", + "build:server": "NODE_ENV=production webpack --config webpack.config.server.js", "start": "node build/server.js", "fileEndings": "jscodeshift --transformFrom js --transformTo none --importTypes relative --extensions=ts --parser tsx --transform codeshift/transform.ts src/backend" }, @@ -66,6 +66,7 @@ "concat-stream": "^2.0.0", "dayjs": "^1.10.4", "dbus-next": "0.10.2", + "dotenv": "^10.0.0", "es6-error": "^4.1.1", "express": "^4.17.1", "express-session": "^1.17.2", diff --git a/src/backend/index.ts b/src/backend/index.ts index b6dcb672..5b01ea50 100644 --- a/src/backend/index.ts +++ b/src/backend/index.ts @@ -1,3 +1,4 @@ +import 'dotenv/config'; import {Logger} from '@foxxmd/winston'; import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc.js'; -- 2.54.0 From 8e36c27ec98e9453ad28a6df80cf160daac398d5 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 14 Sep 2023 10:06:42 -0400 Subject: [PATCH 29/82] fix(backend): Fix how port is determined and used for localUrl --- src/backend/ioc.ts | 34 ++++++++++++++++++---------------- src/backend/server/index.ts | 7 ++++--- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/backend/ioc.ts b/src/backend/ioc.ts index e9573885..6fb9e76c 100644 --- a/src/backend/ioc.ts +++ b/src/backend/ioc.ts @@ -1,15 +1,12 @@ import {createContainer} from "iti"; import path from "path"; -import {projectDir} from "./common/index"; +import {configDir, projectDir} from "./common/index"; import ScrobbleClients from "./scrobblers/ScrobbleClients"; import ScrobbleSources from "./sources/ScrobbleSources"; import {Notifiers} from "./notifier/Notifiers"; import {EventEmitter} from "events"; import {logPath} from "./common/logging"; -import {Container} from '@foxxmd/winston'; import { WildcardEmitter } from "./common/WildcardEmitter"; - -const configDir = process.env.CONFIG_DIR || path.resolve(projectDir, `./config`); //const port = process.env.PORT ?? 9078; /*let logPath = path.resolve(projectDir, `./logs`); @@ -20,28 +17,33 @@ if(typeof process.env.CONFIG_DIR === 'string') { let root: ReturnType; const createRoot = (port: number | string | undefined) => { + const configDir = process.env.CONFIG_DIR || path.resolve(projectDir, `./config`); + const envPort = process.env.PORT; return createContainer().add({ configDir: configDir, logDir: logPath, - localUrl: `http://localhost:${port}`, + //localUrl: `http://localhost:${port}`, isProd: process.env.NODE_ENV !== undefined && (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'prod'), configPort: port, apiPort: process.env.API_PORT ?? 9079, - mainPort: process.env.PORT ?? 3000, + mainPort: envPort ?? 3000, clientEmitter: () => new WildcardEmitter(), sourceEmitter: () => new WildcardEmitter(), notifierEmitter: () => new EventEmitter(), - }).add((items) => ({ - clients: () => new ScrobbleClients(items.clientEmitter, items.sourceEmitter, items.configDir), - sources: () => new ScrobbleSources(items.sourceEmitter, items.localUrl, items.configDir), - notifiers: () => new Notifiers(items.notifierEmitter, items.clientEmitter, items.sourceEmitter), - port: () => { - if(items.configPort !== undefined) { - return items.configPort; - } - return items.isProd ? items.mainPort : items.apiPort; + }).add((items) => { + let usedPort = items.configPort ?? envPort; + if (usedPort === undefined) { + usedPort = items.isProd ? items.mainPort : items.apiPort; + } + const localUrl = `http://localhost:${items.mainPort}`; + return { + port: usedPort, + clients: () => new ScrobbleClients(items.clientEmitter, items.sourceEmitter, localUrl, items.configDir), + sources: () => new ScrobbleSources(items.sourceEmitter, localUrl, items.configDir), + notifiers: () => new Notifiers(items.notifierEmitter, items.clientEmitter, items.sourceEmitter), + localUrl, } - })); + }); } export const getRoot = (port?: number | string) => { diff --git a/src/backend/server/index.ts b/src/backend/server/index.ts index 7b2dc799..c63906ba 100644 --- a/src/backend/server/index.ts +++ b/src/backend/server/index.ts @@ -52,7 +52,8 @@ export const initServer = async (parentLogger: Logger, initialOutput: LogInfo[] res.sendFile(path.join(buildDir, "index.html")); }); - app.listen(port); + const backendPort = isProd ? port : apiPort; + app.listen(backendPort); const addy = getAddress(); const addresses: string[] = []; @@ -71,10 +72,10 @@ export const initServer = async (parentLogger: Logger, initialOutput: LogInfo[] switch (k) { case 'host': case 'v4': - addresses.push(`---> ${k === 'host' ? 'Local'.padEnd(14, ' ') : 'Network'.padEnd(14, ' ')} http://${v}:${port}`); + addresses.push(`---> ${k === 'host' ? 'Local'.padEnd(14, ' ') : 'Network'.padEnd(14, ' ')} http://${v}:${backendPort}`); break; case 'v6': - addresses.push(`---> Network (IPv6) http://[${v}]:${port}`); + addresses.push(`---> Network (IPv6) http://[${v}]:${backendPort}`); } } } -- 2.54.0 From 3f2cb8ac0c256e0249c3be7e622ea58af49ff6f2 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 14 Sep 2023 10:07:12 -0400 Subject: [PATCH 30/82] fix: Pass localUrl to scrobble clients for use by lastfm --- src/backend/scrobblers/ScrobbleClients.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/backend/scrobblers/ScrobbleClients.ts b/src/backend/scrobblers/ScrobbleClients.ts index 800e3b7a..cf23a71c 100644 --- a/src/backend/scrobblers/ScrobbleClients.ts +++ b/src/backend/scrobblers/ScrobbleClients.ts @@ -19,7 +19,7 @@ import { LastfmClientConfig } from "../common/infrastructure/config/client/lastf import { Notifiers } from "../notifier/Notifiers"; import AbstractScrobbleClient from "./AbstractScrobbleClient"; import {EventEmitter} from "events"; -import winston from '@foxxmd/winston'; +import winston, {Logger} from '@foxxmd/winston'; import ListenbrainzScrobbler from "./ListenbrainzScrobbler"; import { ListenBrainzClientConfig } from "../common/infrastructure/config/client/listenbrainz"; import {ErrorWithCause} from "pony-cause"; @@ -35,17 +35,19 @@ export default class ScrobbleClients { /** @type AbstractScrobbleClient[] */ clients: (MalojaScrobbler | LastfmScrobbler)[] = []; - logger; - configDir; + logger: Logger; + configDir: string; + localUrl: string; emitter: WildcardEmitter; sourceEmitter: WildcardEmitter; - constructor(emitter: WildcardEmitter, sourceEmitter: WildcardEmitter, configDir: any) { + constructor(emitter: WildcardEmitter, sourceEmitter: WildcardEmitter, localUrl: string, configDir: string) { this.emitter = emitter; this.sourceEmitter = sourceEmitter; this.configDir = configDir; + this.localUrl = localUrl; this.logger = winston.loggers.get('app').child({labels: ['Scrobblers']}, mergeArr); this.sourceEmitter.on('discoveredToScrobble', async (payload: { data: (PlayObject | PlayObject[]), options: { forceRefresh?: boolean, checkTime?: Dayjs, scrobbleTo?: string[], scrobbleFrom?: string } }) => { @@ -161,7 +163,7 @@ export default class ScrobbleClients { mode: 'single', configureAs: 'client', // @ts-ignore - data: lfm + data: {...lfm, redirectUri: lfm.redirectUri ?? `${this.localUrl}/lastfm/callback`} }) } break; -- 2.54.0 From e9eb7d357fc78e1c9db4709fcae39c1229054462 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 14 Sep 2023 10:07:44 -0400 Subject: [PATCH 31/82] fix*(scrobblers): Test auth when client completes auth callback --- src/backend/server/auth.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/server/auth.ts b/src/backend/server/auth.ts index a1b0d960..8d593230 100644 --- a/src/backend/server/auth.ts +++ b/src/backend/server/auth.ts @@ -76,6 +76,7 @@ export const setupAuthRoutes = (app: ExpressWithAsync, logger: Logger, sourceMid try { await entity.api.authenticate(token); await entity.initialize(); + await entity.testAuth(); return res.send('OK'); } catch (e) { return res.send(e.message); -- 2.54.0 From b8ebd8ca7e2950c307a1e459f1825df5bdd206c3 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 14 Sep 2023 10:34:07 -0400 Subject: [PATCH 32/82] chore: Ensure production mode for webpack without relying on env --- package.json | 2 +- webpack.config.server.js | 70 +++++++++++++++++++++++----------------- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 4163df2c..43b14a9c 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "dev:server:nodemon": "rm -f build/server.js && wait-on -l build/server.js && nodemon build/server.js", "build": "npm run -s build:client && npm run -s build:server", "build:client": "NODE_ENV=production react-scripts build", - "build:server": "NODE_ENV=production webpack --config webpack.config.server.js", + "build:server": "webpack --env production --config webpack.config.server.js", "start": "node build/server.js", "fileEndings": "jscodeshift --transformFrom js --transformTo none --importTypes relative --extensions=ts --parser tsx --transform codeshift/transform.ts src/backend" }, diff --git a/webpack.config.server.js b/webpack.config.server.js index 61ec133a..9607a2ec 100644 --- a/webpack.config.server.js +++ b/webpack.config.server.js @@ -6,34 +6,46 @@ const nodeExternals = require("webpack-node-externals"); const entry = { server: "./src/backend/index.ts" }; -module.exports = { - mode: process.env.NODE_ENV !== undefined ? process.env.NODE_ENV : "development", - target: "node", - devtool: "source-map", - entry: entry, - output: { - path: path.resolve(__dirname, "build"), - filename: "[name].js", - }, - resolve: { - extensions: [".ts", ".tsx", ".js"], - }, - // don't compile node_modules - externals: [nodeExternals()], - module: { - rules: [ - { - test: /\.ts$/, - use: [ - { - loader: "ts-loader", - options: { - // use the tsconfig in the server directory - configFile: "src/backend/tsconfig.json", +module.exports = (env) => { + //console.log(`webpack env: ${env.production}`); + let mode = 'development'; + if(env.production) { + process.env.NODE_ENV = 'production'; + mode = 'production'; + } + if(process.env.NODE_ENV !== undefined) { + mode = process.env.NODE_ENV; + } + //console.log(`NODE_ENV: ${process.env.NODE_ENV}`); + return { + mode: mode, + target: "node", + devtool: "source-map", + entry: entry, + output: { + path: path.resolve(__dirname, "build"), + filename: "[name].js", + }, + resolve: { + extensions: [".ts", ".tsx", ".js"], + }, + // don't compile node_modules + externals: [nodeExternals()], + module: { + rules: [ + { + test: /\.ts$/, + use: [ + { + loader: "ts-loader", + options: { + // use the tsconfig in the server directory + configFile: "src/backend/tsconfig.json", + }, }, - }, - ], - }, - ], - }, + ], + }, + ], + }, + } }; -- 2.54.0 From 6dc40e50ad47f29ccf7872401fc3d92e797b6867 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 14 Sep 2023 12:38:20 -0400 Subject: [PATCH 33/82] feat: Implement Base URL * Allows users to define a base URL to be used for default redirect URI generation * Convenience mostly for docker users so they do not have to explicitly define redirect uri for each source/client * Use in UI start up logging hints --- docker-compose.yml | 4 +++ docsite/docs/configuration/configuration.md | 15 +++++++++ docsite/docs/installation/installation.md | 18 ++++++++++- docsite/static/configExample.json | 1 + .../common/infrastructure/config/aioConfig.ts | 14 +++++++++ src/backend/common/schema/aio.json | 11 +++++++ src/backend/common/vendor/LastfmApiClient.ts | 8 ++--- src/backend/index.ts | 3 +- src/backend/ioc.ts | 31 ++++++++++++------- src/backend/server/index.ts | 9 +++++- src/backend/sources/DeezerSource.ts | 7 ++++- src/backend/sources/LastfmSource.ts | 2 +- src/backend/sources/SpotifySource.ts | 9 ++++++ 13 files changed, 111 insertions(+), 21 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1936fc05..4e54a122 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,10 @@ services: #- MALOJA_API_KEY= #- PUID=1000 # required if running docker on linux host, see main README Docker setup instructions #- PGID=1000 # required if running docker on linux host, see main README Docker setup instructions + + # set if using a source/client with redirect URI that you have not explicitly set and MS is NOT running on the same machine that you will view the dashboard from + # EX: You will view MS dashboard at 'http://192.168.0.101:9078' -> set BASE_URL=http://192.168.0.101:9078 + #- BASE_URL=http://MyHostIP:9078 volumes: - /path_on_host/multi-scrobbler-config:/config #networks: diff --git a/docsite/docs/configuration/configuration.md b/docsite/docs/configuration/configuration.md index cce28c9c..45a69ae3 100644 --- a/docsite/docs/configuration/configuration.md +++ b/docsite/docs/configuration/configuration.md @@ -168,6 +168,21 @@ Example directory structure: See the [/config](https://github.com/FoxxMD/multi-scrobbler/blob/master/config) directory of this project for examples of each type of config file or reference specific files below. +# Application Options + +These options affect multi-scrobbler's behavior and are not specific to any source/client. + +#### Base URL + +Defines the URL that is used to generate default redirect URLs for authentication on [spotify](#spotify), [lastfm](#lastfm), and [deezer](#deezer) -- as well as some logging hints. + +* Default => `http://localhost` +* Set with [ENV](#env-based-configuration) `BASE_URL` or `baseUrl` [all-in-one configuration](#all-in-one-file-configuration) + +EX: Lastfm Redirect Url is `BASE_URL:PORT/lastfm/callback` -- Set `BASE_URL=http://192.168.0.101` => Redirect URL is `http://192.168.0.101:9078/lastfm/callback` (when no other redirectUri is specified for [lastfm configuration](#lastfm)) + +Useful when running with [docker](../installation/installation.md#docker) so that you do not need to specify redirect URLs for each configuration. + # Source Configurations ## [Spotify](https://www.spotify.com) diff --git a/docsite/docs/installation/installation.md b/docsite/docs/installation/installation.md index ee65be0d..765f25d0 100644 --- a/docsite/docs/installation/installation.md +++ b/docsite/docs/installation/installation.md @@ -84,7 +84,7 @@ Recommended configuration steps for docker or docker-compose usage: #### Storage -You **must** bind a host directory into the container for storing configurations and credentials. Otherwise these will be lost when the container is updated. +You **must** bind a host directory into the container for storing configurations and credentials. Otherwise, these will be lost when the container is updated. * [Using `-v` method for docker](https://docs.docker.com/storage/bind-mounts/#start-a-container-with-a-bind-mount): `-v /path/on/host/config:/config` * [Using docker-compose](https://docs.docker.com/compose/compose-file/compose-file-v3/#short-syntax-3): `- /path/on/host/config:/config` @@ -98,6 +98,20 @@ The default container port is `9078`. To map container to host port: * With [docker](https://docs.docker.com/engine/reference/commandline/run/#publish): `-p 9078:9078` (first port is the port on the host to use) * With [docker-compose](https://docs.docker.com/compose/compose-file/compose-file-v3/#short-syntax-1): `- "9078:9078"` +##### Base URL + +Optionally, when + +* using a [Source or Client](../configuration/configuration.md) that has a "Redirect URI" that you have not explicitly defined +* and + * using a bridge network or + * installing MS on a different machine than the one used to view the dashboard + +set the [Base URL](../configuration/configuration.md#base-url) as the IP of the host machine. (This is the IP you would use to view the dashboard in a browser) + +* With docker: `-e BASE_URL="http://hostMachineIP"` (first port is the port on the host to use) +* With docker-compose: [see comments in docker-compose.yml](../../../docker-compose.yml) + #### Other * (Optionally) set the [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) for the container using the environmental variable `TZ` ([docker](https://docs.docker.com/engine/reference/commandline/run/#env)) ([docker-compose](https://docs.docker.com/compose/compose-file/compose-file-v3/#environment)) @@ -120,6 +134,8 @@ To get the UID and GID for the current user run these commands from a terminal: ## Docker Usage Examples +If installing on a different machine make sure all redirect URIs are defined or that you have set a [Base URL](#base-url). + ### Using [env-based](../configuration/configuration.md#env-based-configuration) configuration ```bash diff --git a/docsite/static/configExample.json b/docsite/static/configExample.json index bd49c58f..b4b50f09 100644 --- a/docsite/static/configExample.json +++ b/docsite/static/configExample.json @@ -8,6 +8,7 @@ "maxRequestRetries": 1, "retryMultiplier": 1.5 }, + "baseUrl": "http://localhost", "sources": [ { "type": "spotify", diff --git a/src/backend/common/infrastructure/config/aioConfig.ts b/src/backend/common/infrastructure/config/aioConfig.ts index 7e468b55..9ff3c07b 100644 --- a/src/backend/common/infrastructure/config/aioConfig.ts +++ b/src/backend/common/infrastructure/config/aioConfig.ts @@ -28,6 +28,20 @@ export interface AIOConfig { * */ port?: number + /** + * Set the Base URL the application should assume the UI is served from. + * + * This will affect how default redirect URLs are generated (spotify, lastfm, deezer) and some logging messages. + * + * It will NOT set the actual interface/IP that the application is listening on. + * + * This can also be set using the BASE_URL environmental variable. + * + * @default "http://localhost" + * @examples ["http://localhost", "http://192.168.0.101", "https://ms.myDomain.tld"] + * */ + baseUrl?: string + logging?: LogOptions /** diff --git a/src/backend/common/schema/aio.json b/src/backend/common/schema/aio.json index 7cbe5d05..94ec3e58 100644 --- a/src/backend/common/schema/aio.json +++ b/src/backend/common/schema/aio.json @@ -2479,6 +2479,17 @@ } }, "properties": { + "baseUrl": { + "default": "http://localhost", + "description": "Set the Base URL the application should assume the UI is served from.\n\nThis will affect how default redirect URLs are generated (spotify, lastfm, deezer) and some logging messages.\n\nIt will NOT set the actual interface/IP that the application is listening on.\n\nThis can also be set using the BASE_URL environmental variable.", + "examples": [ + "http://localhost", + "http://192.168.0.101", + "https://ms.myDomain.tld" + ], + "title": "baseUrl", + "type": "string" + }, "clientDefaults": { "$ref": "#/definitions/RequestRetryOptions", "title": "clientDefaults" diff --git a/src/backend/common/vendor/LastfmApiClient.ts b/src/backend/common/vendor/LastfmApiClient.ts index 193c9400..f67305a4 100644 --- a/src/backend/common/vendor/LastfmApiClient.ts +++ b/src/backend/common/vendor/LastfmApiClient.ts @@ -25,10 +25,10 @@ export default class LastfmApiClient extends AbstractApiClient { user?: string; declare config: LastfmData; - constructor(name: any, config: Partial & {configDir: string}, options = {}) { + constructor(name: any, config: Partial & {configDir: string, localUrl: string}, options = {}) { super('lastfm', name, config, options); const {redirectUri, apiKey, secret, session, configDir} = config; - this.redirectUri = `${redirectUri}?state=${name}`; + this.redirectUri = `${redirectUri ?? `${config.localUrl}/lastfm/callback`}?state=${name}`; if (apiKey === undefined) { this.logger.warn("'apiKey' not found in config!"); } @@ -109,8 +109,7 @@ export default class LastfmApiClient extends AbstractApiClient { } getAuthUrl = () => { - const redir = `${this.config.redirectUri}?state=${this.name}`; - return `http://www.last.fm/api/auth/?api_key=${this.config.apiKey}&cb=${encodeURIComponent(redir)}` + return `http://www.last.fm/api/auth/?api_key=${this.config.apiKey}&cb=${encodeURIComponent(this.redirectUri)}` } authenticate = async (token: any) => { @@ -146,6 +145,7 @@ export default class LastfmApiClient extends AbstractApiClient { testAuth = async () => { if (this.client.sessionKey === undefined) { this.logger.info('No session key found. User interaction for authentication required.'); + this.logger.info(`Redirect URL that will be used on auth callback: '${this.redirectUri}'`); return false; } try { diff --git a/src/backend/index.ts b/src/backend/index.ts index 5b01ea50..7164eb45 100644 --- a/src/backend/index.ts +++ b/src/backend/index.ts @@ -58,7 +58,6 @@ const configDir = process.env.CONFIG_DIR || path.resolve(projectDir, `./config`) const { webhooks = [], - port, logging = {}, debugMode, } = (config || {}) as AIOConfig; @@ -72,7 +71,7 @@ const configDir = process.env.CONFIG_DIR || path.resolve(projectDir, `./config`) process.env.DEBUG_MODE = b.toString(); } - const root = getRoot(port); + const root = getRoot(config); logger = getLogger(logging, 'app'); diff --git a/src/backend/ioc.ts b/src/backend/ioc.ts index 6fb9e76c..7c7acdaa 100644 --- a/src/backend/ioc.ts +++ b/src/backend/ioc.ts @@ -7,22 +7,25 @@ import {Notifiers} from "./notifier/Notifiers"; import {EventEmitter} from "events"; import {logPath} from "./common/logging"; import { WildcardEmitter } from "./common/WildcardEmitter"; -//const port = process.env.PORT ?? 9078; - -/*let logPath = path.resolve(projectDir, `./logs`); -if(typeof process.env.CONFIG_DIR === 'string') { - logPath = path.resolve(process.env.CONFIG_DIR, './logs'); -}*/ +import normalizeUrl from 'normalize-url'; let root: ReturnType; -const createRoot = (port: number | string | undefined) => { +export interface RootOptions { + baseUrl?: string, + port?: string | number +} + +const createRoot = (options?: RootOptions) => { + const { + port, + baseUrl = process.env.BASE_URL, + } = options || {}; const configDir = process.env.CONFIG_DIR || path.resolve(projectDir, `./config`); const envPort = process.env.PORT; return createContainer().add({ configDir: configDir, logDir: logPath, - //localUrl: `http://localhost:${port}`, isProd: process.env.NODE_ENV !== undefined && (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'prod'), configPort: port, apiPort: process.env.API_PORT ?? 9079, @@ -35,20 +38,26 @@ const createRoot = (port: number | string | undefined) => { if (usedPort === undefined) { usedPort = items.isProd ? items.mainPort : items.apiPort; } - const localUrl = `http://localhost:${items.mainPort}`; + const base = normalizeUrl(baseUrl ?? 'http://localhost', {removeSingleSlash: true}); + const u = new URL(base); + let localUrl = u.toString(); + if(u.port === '' && u.pathname === '/') { + localUrl = `${u.origin}:${items.mainPort}`; + } return { port: usedPort, clients: () => new ScrobbleClients(items.clientEmitter, items.sourceEmitter, localUrl, items.configDir), sources: () => new ScrobbleSources(items.sourceEmitter, localUrl, items.configDir), notifiers: () => new Notifiers(items.notifierEmitter, items.clientEmitter, items.sourceEmitter), localUrl, + hasDefinedBaseUrl: baseUrl !== undefined } }); } -export const getRoot = (port?: number | string) => { +export const getRoot = (options?: RootOptions) => { if(root === undefined) { - root = createRoot(port); + root = createRoot(options); } return root; } diff --git a/src/backend/server/index.ts b/src/backend/server/index.ts index c63906ba..f13e3fdd 100644 --- a/src/backend/server/index.ts +++ b/src/backend/server/index.ts @@ -11,6 +11,7 @@ import { setupApi } from "./api"; import { getAddress, mergeArr, parseBool } from "../utils"; import {stripIndents} from "common-tags"; import {ErrorWithCause} from "pony-cause"; +import {or} from "ajv/dist/compile/codegen/index.js"; const buildDir = path.join(process.cwd() + "/build"); @@ -42,6 +43,8 @@ export const initServer = async (parentLogger: Logger, initialOutput: LogInfo[] const apiPort = root.get('apiPort'); const mainPort = root.get('mainPort'); const port = root.get('port'); + const local = root.get('localUrl'); + const localDefined = root.get('hasDefinedBaseUrl'); setupApi(app, logger, initialOutput); @@ -63,7 +66,7 @@ export const initServer = async (parentLogger: Logger, initialOutput: LogInfo[] --- HINT --- MS is likely being run in a container with BRIDGE networking which means the above addresses are not accessible from outside this container. To ensure the container is accessible make sure you have mapped the *container* port ${port} to a *host* port. https://foxxmd.github.io/multi-scrobbler/docs/installation#networking - The container will then be accessible at http://HOST_MACHINE_IP:HOST_PORT + The container will then be accessible at http://HOST_MACHINE_IP:HOST_PORT${localDefined ? ` (or ${local} since you defined this!)` : ''} --- HINT --- `; } @@ -84,6 +87,10 @@ export const initServer = async (parentLogger: Logger, initialOutput: LogInfo[] ${addresses.join('\n')}${dockerHint !== '' ? `\n${dockerHint}` : ''}` logger.info(start); + + if(localDefined) { + logger.info(`User-defined base URL for UI and redirect URLs (spotify, deezer, lastfm): ${local}`) + } } catch (e) { logger.error(new ErrorWithCause('Server crashed with uncaught exception', {cause: e})); } diff --git a/src/backend/sources/DeezerSource.ts b/src/backend/sources/DeezerSource.ts index 1271ee2a..df62931d 100644 --- a/src/backend/sources/DeezerSource.ts +++ b/src/backend/sources/DeezerSource.ts @@ -22,6 +22,7 @@ export default class DeezerSource extends AbstractSource { requiresAuthInteraction = true; baseUrl = 'https://api.deezer.com'; + redirectUri: string; declare config: DeezerSourceConfig; @@ -30,6 +31,7 @@ export default class DeezerSource extends AbstractSource { const { data: { interval = 60, + redirectUri, } = {}, } = config; @@ -38,6 +40,7 @@ export default class DeezerSource extends AbstractSource { } this.config.data.interval = interval; + this.redirectUri = redirectUri || `${this.localUrl}/deezer/callback`; this.workingCredsPath = `${this.configDir}/currentCreds-${name}.json`; this.canPoll = true; @@ -92,6 +95,8 @@ export default class DeezerSource extends AbstractSource { } else if(this.config.data.clientSecret === undefined) { throw new Error('clientSecret must be defined when accessToken is not present'); } + this.logger.info(`No access token is present. User interaction for authentication is required.`); + this.logger.info(`Redirect URL that will be used on auth callback: '${this.redirectUri}'`); } this.initialized = true; return this.initialized; @@ -185,7 +190,7 @@ export default class DeezerSource extends AbstractSource { return new DeezerStrategy({ clientID: this.config.data.clientId, clientSecret: this.config.data.clientSecret, - callbackURL: this.config.data.redirectUri || `${this.localUrl}/deezer/callback`, + callbackURL: this.redirectUri, scope: ['listening_history','offline_access'], }, (accessToken: any, refreshToken: any, profile: any, done: any) => { // return done(null, { diff --git a/src/backend/sources/LastfmSource.ts b/src/backend/sources/LastfmSource.ts index 225dd325..43034cf1 100644 --- a/src/backend/sources/LastfmSource.ts +++ b/src/backend/sources/LastfmSource.ts @@ -18,7 +18,7 @@ export default class LastfmSource extends AbstractSource { constructor(name: any, config: LastfmClientConfig, internal: InternalConfig, emitter: EventEmitter) { super('lastfm', name, config, internal, emitter); this.canPoll = true; - this.api = new LastfmApiClient(name, {...config.data, configDir: internal.configDir}); + this.api = new LastfmApiClient(name, {...config.data, configDir: internal.configDir, localUrl: internal.localUrl}); } static formatPlayObj(obj: any, options: FormatPlayObjectOptions = {}): PlayObject { diff --git a/src/backend/sources/SpotifySource.ts b/src/backend/sources/SpotifySource.ts index 61e46756..5fbfeb35 100644 --- a/src/backend/sources/SpotifySource.ts +++ b/src/backend/sources/SpotifySource.ts @@ -214,6 +214,11 @@ export default class SpotifySource extends MemorySource { throw new Error('Failed to initialize a Spotify source'); } + if(accessToken === undefined || refreshToken === undefined) { + this.logger.info(`No access or refresh token is present. User interaction for authentication is required.`); + this.logger.info(`Redirect URL that will be used on auth callback: '${rdUri}'`); + } + this.spotifyApi = new SpotifyWebApi(apiConfig); } @@ -227,6 +232,10 @@ export default class SpotifySource extends MemorySource { testAuth = async () => { try { + if(undefined === this.spotifyApi.getAccessToken()) { + this.authed = false; + return; + } await this.callApi>(((api: any) => api.getMe())); this.authed = true; } catch (e) { -- 2.54.0 From d5dfc33fce1ce4a7b9280fd8705cf5d564298fee Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 14 Sep 2023 12:51:16 -0400 Subject: [PATCH 34/82] fix(deezer): Fix deezer passport generation --- src/backend/server/deezerRoutes.ts | 9 +++++---- src/backend/sources/DeezerSource.ts | 2 ++ src/backend/sources/ScrobbleSources.ts | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/backend/server/deezerRoutes.ts b/src/backend/server/deezerRoutes.ts index beb78cf2..c60c7b9d 100644 --- a/src/backend/server/deezerRoutes.ts +++ b/src/backend/server/deezerRoutes.ts @@ -11,10 +11,10 @@ import passport from "passport"; export const setupDeezerRoutes = (app: ExpressWithAsync, logger: Logger, scrobbleSources: ScrobbleSources) => { // initialize deezer strategies - const deezerSources = scrobbleSources.getByType('deezer') as DeezerSource[]; - for(const d of deezerSources) { - passport.use(`deezer-${d.name}`, d.generatePassportStrategy()); - } + // const deezerSources = scrobbleSources.getByType('deezer') as DeezerSource[]; + // for(const d of deezerSources) { + // passport.use(`deezer-${d.name}`, d.generatePassportStrategy()); + // } // something about the deezer passport strategy makes express continue with the response even though it should wait for accesstoken callback and userprofile fetching // so to get around this add an additional middleware that loops/sleeps until we should have fetched everything ¯\_(ツ)_/¯ @@ -34,6 +34,7 @@ export const setupDeezerRoutes = (app: ExpressWithAsync, logger: Logger, scrobbl return res.send('Error with deezer credentials storage'); } else if(entity.config.data.accessToken !== undefined) { // start polling + await entity.testAuth(); entity.poll() return res.redirect('/'); } else { diff --git a/src/backend/sources/DeezerSource.ts b/src/backend/sources/DeezerSource.ts index df62931d..c02dc479 100644 --- a/src/backend/sources/DeezerSource.ts +++ b/src/backend/sources/DeezerSource.ts @@ -1,4 +1,5 @@ import request from 'superagent'; +import passport from "passport"; import { parseRetryAfterSecsFromObj, readJson, @@ -99,6 +100,7 @@ export default class DeezerSource extends AbstractSource { this.logger.info(`Redirect URL that will be used on auth callback: '${this.redirectUri}'`); } this.initialized = true; + passport.use(`deezer-${this.name}`, this.generatePassportStrategy()); return this.initialized; } diff --git a/src/backend/sources/ScrobbleSources.ts b/src/backend/sources/ScrobbleSources.ts index 0d85927a..0f630f8b 100644 --- a/src/backend/sources/ScrobbleSources.ts +++ b/src/backend/sources/ScrobbleSources.ts @@ -230,8 +230,8 @@ export default class ScrobbleSources { break; case 'deezer': const d = { - clientId: process.env.DEEZER_APP_ID, - clientSecret: process.env.DEEZER_SECRET_KEY, + clientId: process.env.DEEZER_CLIENT_ID, + clientSecret: process.env.DEEZER_CLIENT_SECRET, redirectUri: process.env.DEEZER_REDIRECT_URI, accessToken: process.env.DEEZER_ACCESS_TOKEN, }; -- 2.54.0 From 3fb5d6aae907b5e86207d74fc6069546fb4fc1fa Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 18 Sep 2023 14:40:22 -0400 Subject: [PATCH 35/82] fix(ui): Remove duration percent display when duration is zero --- src/client/components/player/Player.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/components/player/Player.tsx b/src/client/components/player/Player.tsx index 4c4f223d..59e2476e 100644 --- a/src/client/components/player/Player.tsx +++ b/src/client/components/player/Player.tsx @@ -45,7 +45,7 @@ const Player = (props: PlayerProps) => { } = data; let durPer = null; - if(duration !== undefined && duration !== null) { + if(duration !== undefined && duration !== null && duration !== 0) { if(listenedDuration === 0) { durPer = ' (0%)'; } else { -- 2.54.0 From 7dece447dfde155e1850f691ae5c9a677a411029 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 18 Sep 2023 14:56:23 -0400 Subject: [PATCH 36/82] feat(player): Add sourceOfTruth variable to control logging and future use Will not be used by listenbrainz source for actual scrobbling so make logs less noisy by suppressing what would normally be logging on newely added tracks from player --- src/backend/sources/MemorySource.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/backend/sources/MemorySource.ts b/src/backend/sources/MemorySource.ts index 32a33995..e203448c 100644 --- a/src/backend/sources/MemorySource.ts +++ b/src/backend/sources/MemorySource.ts @@ -34,6 +34,9 @@ import {EventEmitter} from "events"; import objectHash from 'object-hash'; export default class MemorySource extends AbstractSource { + + playerSourceOfTruth: boolean = true; + /* * MemorySource uses its own state to maintain a list of recently played tracks and determine if a track is valid. * This is necessary for any source that @@ -159,7 +162,9 @@ export default class MemorySource extends AbstractSource { const matchingRecent = this.existingDiscovered(candidate); //sRecentlyPlayed.find(x => playObjDataMatch(x, candidate)); let stPrefix = `${buildTrackString(candidate, {include: ['trackId', 'artist', 'track']})}`; if (matchingRecent === undefined) { - player.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)} and not matching any prior plays`); + if(this.playerSourceOfTruth) { + player.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)} and not matching any prior plays`); + } newStatefulPlays.push(candidate); } else { const {data: {playDate, duration}} = candidate; @@ -167,14 +172,18 @@ export default class MemorySource extends AbstractSource { if (!playDate.isSame(rplayDate)) { if (duration !== undefined) { if (playDate.isAfter(rplayDate.add(duration, 's'))) { - player.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)} and having a different timestamp than a prior play`); + if(this.playerSourceOfTruth) { + player.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)} and having a different timestamp than a prior play`); + } newStatefulPlays.push(candidate); } } else { const discoveredPlays = this.getRecentlyDiscoveredPlaysByPlatform(genGroupId(candidate)); if (discoveredPlays.length === 0 || !playObjDataMatch(discoveredPlays[0], candidate)) { // if most recent stateful play is not this track we'll add it - player.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)}. Matched other recent play but could not determine time frame due to missing duration. Allowed due to not being last played track.`); + if(this.playerSourceOfTruth) { + player.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)}. Matched other recent play but could not determine time frame due to missing duration. Allowed due to not being last played track.`); + } newStatefulPlays.push(candidate); } } -- 2.54.0 From 735264cb2b01b26c74a62f088f67ea054fd7c533 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 18 Sep 2023 14:58:18 -0400 Subject: [PATCH 37/82] feat(listenbrainz): Add player support #74 * Use listenbrainz 'playing-now' endpoint for MS player implementation * Do not use MS player as source of truth -- continue to use LZ listen history --- .../config/source/listenbrainz.ts | 3 +- src/backend/common/schema/aio-source.json | 18 ++++++++++++ src/backend/common/schema/aio.json | 18 ++++++++++++ src/backend/common/schema/source.json | 18 ++++++++++++ .../common/vendor/ListenbrainzApiClient.ts | 29 ++++++++++++++++++- src/backend/sources/ListenbrainzSource.ts | 15 ++++++++-- src/backend/sources/SubsonicSource.ts | 1 - 7 files changed, 97 insertions(+), 5 deletions(-) diff --git a/src/backend/common/infrastructure/config/source/listenbrainz.ts b/src/backend/common/infrastructure/config/source/listenbrainz.ts index b8bdd3a7..1e7ffff5 100644 --- a/src/backend/common/infrastructure/config/source/listenbrainz.ts +++ b/src/backend/common/infrastructure/config/source/listenbrainz.ts @@ -1,7 +1,8 @@ import { CommonSourceConfig, CommonSourceData } from "./index"; import { ListenBrainzData } from "../client/listenbrainz"; +import {PollingOptions} from "../common.js"; -export interface ListenBrainzSourceData extends ListenBrainzData, CommonSourceData { +export interface ListenBrainzSourceData extends ListenBrainzData, CommonSourceData, PollingOptions { } export interface ListenBrainzSourceConfig extends CommonSourceConfig { diff --git a/src/backend/common/schema/aio-source.json b/src/backend/common/schema/aio-source.json index 0fc5aec4..3bc52375 100644 --- a/src/backend/common/schema/aio-source.json +++ b/src/backend/common/schema/aio-source.json @@ -759,6 +759,24 @@ }, "ListenBrainzSourceData": { "properties": { + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, "maxPollRetries": { "default": 5, "description": "default # of automatic polling restarts on error", diff --git a/src/backend/common/schema/aio.json b/src/backend/common/schema/aio.json index 94ec3e58..29ccb45a 100644 --- a/src/backend/common/schema/aio.json +++ b/src/backend/common/schema/aio.json @@ -1119,6 +1119,24 @@ }, "ListenBrainzSourceData": { "properties": { + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, "maxPollRetries": { "default": 5, "description": "default # of automatic polling restarts on error", diff --git a/src/backend/common/schema/source.json b/src/backend/common/schema/source.json index ba054e3d..25b45d72 100644 --- a/src/backend/common/schema/source.json +++ b/src/backend/common/schema/source.json @@ -752,6 +752,24 @@ }, "ListenBrainzSourceData": { "properties": { + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, "maxPollRetries": { "default": 5, "description": "default # of automatic polling restarts on error", diff --git a/src/backend/common/vendor/ListenbrainzApiClient.ts b/src/backend/common/vendor/ListenbrainzApiClient.ts index b593f42e..173621ca 100644 --- a/src/backend/common/vendor/ListenbrainzApiClient.ts +++ b/src/backend/common/vendor/ListenbrainzApiClient.ts @@ -5,6 +5,7 @@ import {DEFAULT_RETRY_MULTIPLIER, DELIMITERS, FormatPlayObjectOptions} from "../ import dayjs from "dayjs"; import { stringSameness } from '@foxxmd/string-sameness'; import { + combinePartsToString, containsDelimiters, findDelimiters, normalizeStr, @@ -185,9 +186,30 @@ export class ListenbrainzApiClient extends AbstractApiClient { } } + getPlayingNow = async (user?: string): Promise => { + try { + + const resp = await this.callApi(request + .get(`${this.url}1/user/${user ?? this.config.username}/playing-now`) + // this endpoint can take forever, sometimes, and we want to make sure we timeout in a reasonable amount of time for polling sources to continue trying to scrobble + .timeout({ + response: 15000, // wait 15 seconds before timeout if server doesn't response at all + deadline: 30000 // wait 30 seconds overall for request to complete + })); + const {body: {payload}} = resp as any; + // const data = payload as ListensResponse; + // if(data.listens.length > 0) {} + // return data.listens[0]; + return payload as ListensResponse; + } catch (e) { + throw e; + } + } + getRecentlyPlayed = async (maxTracks: number, user?: string): Promise => { try { const resp = await this.getUserListens(maxTracks, user); + const now = await this.getPlayingNow(user); return resp.listens.map(x => ListenbrainzApiClient.listenResponseToPlay(x)); } catch (e) { this.logger.error(`Error encountered while getting User listens | Error => ${e.message}`); @@ -464,6 +486,10 @@ export class ListenbrainzApiClient extends AbstractApiClient { recording_mbid: aRecordingMbid, duration: aDuration, duration_ms: aDurationMs, + music_service_name, + music_service, + submission_client, + submission_client_version } = {}, mbid_mapping: { recording_mbid: mRecordingMbid @@ -509,7 +535,8 @@ export class ListenbrainzApiClient extends AbstractApiClient { meta: { source: 'listenbrainz', trackId, - playId + playId, + deviceId: combinePartsToString([music_service_name ?? music_service, submission_client, submission_client_version]) } } } diff --git a/src/backend/sources/ListenbrainzSource.ts b/src/backend/sources/ListenbrainzSource.ts index fd928936..e2c6e586 100644 --- a/src/backend/sources/ListenbrainzSource.ts +++ b/src/backend/sources/ListenbrainzSource.ts @@ -3,8 +3,9 @@ import { FormatPlayObjectOptions, INITIALIZING, InternalConfig } from "../common import EventEmitter from "events"; import { ListenBrainzSourceConfig } from "../common/infrastructure/config/source/listenbrainz"; import { ListenbrainzApiClient } from "../common/vendor/ListenbrainzApiClient"; +import MemorySource from "./MemorySource.js"; -export default class ListenbrainzSource extends AbstractSource { +export default class ListenbrainzSource extends MemorySource { api: ListenbrainzApiClient; requiresAuth = true; @@ -13,9 +14,17 @@ export default class ListenbrainzSource extends AbstractSource { declare config: ListenBrainzSourceConfig; constructor(name: any, config: ListenBrainzSourceConfig, internal: InternalConfig, emitter: EventEmitter) { - super('listenbrainz', name, config, internal, emitter); + const { + data: { + interval = 15, + maxInterval = 60, + ...restData + } = {} + } = config; + super('listenbrainz', name, {...config, data: {interval, maxInterval, ...restData}}, internal, emitter); this.canPoll = true; this.api = new ListenbrainzApiClient(name, config.data); + this.playerSourceOfTruth = false; } static formatPlayObj = (obj: any, options: FormatPlayObjectOptions = {}) => ListenbrainzApiClient.formatPlayObj(obj, options); @@ -52,6 +61,8 @@ export default class ListenbrainzSource extends AbstractSource { getRecentlyPlayed = async(options: RecentlyPlayedOptions = {}) => { const {limit = 20} = options; + const now = await this.api.getPlayingNow(); + this.processRecentPlays(now.listens.map(x => ListenbrainzSource.formatPlayObj(x))); return await this.api.getRecentlyPlayed(limit); } } diff --git a/src/backend/sources/SubsonicSource.ts b/src/backend/sources/SubsonicSource.ts index ccc81dea..1eb16c1e 100644 --- a/src/backend/sources/SubsonicSource.ts +++ b/src/backend/sources/SubsonicSource.ts @@ -21,7 +21,6 @@ export class SubsonicSource extends MemorySource { declare config: SubSonicSourceConfig; constructor(name: any, config: SubSonicSourceConfig, internal: InternalConfig, emitter: EventEmitter) { - // default to quick interval so we can get a decently accurate nowPlaying const { data: { ...restData -- 2.54.0 From a48610274731e128d66c953730b32e9b1af9b5d7 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 18 Sep 2023 15:19:12 -0400 Subject: [PATCH 38/82] feat(lastfm): Add player support * Use lastfm 'nowPlaying' property in user listens for MS player implementation * Do not use MS player as source of truth -- continue to use lfm listen history --- .../infrastructure/config/source/lastfm.ts | 3 +- .../config/source/listenbrainz.ts | 2 +- src/backend/common/schema/aio-source.json | 18 +++++++ src/backend/common/schema/aio.json | 18 +++++++ src/backend/common/schema/source.json | 18 +++++++ src/backend/server/index.ts | 1 - src/backend/sources/LastfmSource.ts | 47 ++++++++++++------- src/backend/sources/ListenbrainzSource.ts | 2 +- src/backend/sources/ScrobbleSources.ts | 2 +- src/core/Atomic.ts | 2 + 10 files changed, 92 insertions(+), 21 deletions(-) diff --git a/src/backend/common/infrastructure/config/source/lastfm.ts b/src/backend/common/infrastructure/config/source/lastfm.ts index 1c09a8dd..98fad3fc 100644 --- a/src/backend/common/infrastructure/config/source/lastfm.ts +++ b/src/backend/common/infrastructure/config/source/lastfm.ts @@ -1,7 +1,8 @@ import { LastfmData } from "../client/lastfm"; import { CommonSourceConfig, CommonSourceData } from "./index"; +import {PollingOptions} from "../common"; -export interface LastFmSourceData extends CommonSourceData, LastfmData{} +export interface LastFmSourceData extends CommonSourceData, PollingOptions, LastfmData{} export interface LastfmSourceConfig extends CommonSourceConfig { /** diff --git a/src/backend/common/infrastructure/config/source/listenbrainz.ts b/src/backend/common/infrastructure/config/source/listenbrainz.ts index 1e7ffff5..5f793ff0 100644 --- a/src/backend/common/infrastructure/config/source/listenbrainz.ts +++ b/src/backend/common/infrastructure/config/source/listenbrainz.ts @@ -1,6 +1,6 @@ import { CommonSourceConfig, CommonSourceData } from "./index"; import { ListenBrainzData } from "../client/listenbrainz"; -import {PollingOptions} from "../common.js"; +import {PollingOptions} from "../common"; export interface ListenBrainzSourceData extends ListenBrainzData, CommonSourceData, PollingOptions { } diff --git a/src/backend/common/schema/aio-source.json b/src/backend/common/schema/aio-source.json index 3bc52375..42163f25 100644 --- a/src/backend/common/schema/aio-source.json +++ b/src/backend/common/schema/aio-source.json @@ -635,6 +635,24 @@ "title": "apiKey", "type": "string" }, + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, "maxPollRetries": { "default": 5, "description": "default # of automatic polling restarts on error", diff --git a/src/backend/common/schema/aio.json b/src/backend/common/schema/aio.json index 29ccb45a..6570e563 100644 --- a/src/backend/common/schema/aio.json +++ b/src/backend/common/schema/aio.json @@ -757,6 +757,24 @@ "title": "apiKey", "type": "string" }, + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, "maxPollRetries": { "default": 5, "description": "default # of automatic polling restarts on error", diff --git a/src/backend/common/schema/source.json b/src/backend/common/schema/source.json index 25b45d72..0f8d9647 100644 --- a/src/backend/common/schema/source.json +++ b/src/backend/common/schema/source.json @@ -588,6 +588,24 @@ "title": "apiKey", "type": "string" }, + "interval": { + "default": 10, + "description": "How long to wait before polling the source API for new tracks (in seconds)", + "examples": [ + 10 + ], + "title": "interval", + "type": "number" + }, + "maxInterval": { + "default": 30, + "description": "When there has been no new activity from the Source API multi-scrobbler will gradually increase the wait time between polling up to this value (in seconds)", + "examples": [ + 30 + ], + "title": "maxInterval", + "type": "number" + }, "maxPollRetries": { "default": 5, "description": "default # of automatic polling restarts on error", diff --git a/src/backend/server/index.ts b/src/backend/server/index.ts index f13e3fdd..f3177438 100644 --- a/src/backend/server/index.ts +++ b/src/backend/server/index.ts @@ -11,7 +11,6 @@ import { setupApi } from "./api"; import { getAddress, mergeArr, parseBool } from "../utils"; import {stripIndents} from "common-tags"; import {ErrorWithCause} from "pony-cause"; -import {or} from "ajv/dist/compile/codegen/index.js"; const buildDir = path.join(process.cwd() + "/build"); diff --git a/src/backend/sources/LastfmSource.ts b/src/backend/sources/LastfmSource.ts index 43034cf1..868c05f6 100644 --- a/src/backend/sources/LastfmSource.ts +++ b/src/backend/sources/LastfmSource.ts @@ -1,24 +1,34 @@ -import AbstractSource, { RecentlyPlayedOptions } from "./AbstractSource"; +import { RecentlyPlayedOptions } from "./AbstractSource"; import LastfmApiClient from "../common/vendor/LastfmApiClient"; import { sortByOldestPlayDate } from "../utils"; -import { LastfmClientConfig } from "../common/infrastructure/config/client/lastfm"; import { FormatPlayObjectOptions, InternalConfig } from "../common/infrastructure/Atomic"; -import {UserGetRecentTracksResponse} from "lastfm-node-client"; +import {TrackObject, UserGetRecentTracksResponse} from "lastfm-node-client"; import EventEmitter from "events"; import { PlayObject } from "../../core/Atomic"; +import MemorySource from "./MemorySource"; +import {LastfmSourceConfig} from "../common/infrastructure/config/source/lastfm"; +import dayjs from "dayjs"; -export default class LastfmSource extends AbstractSource { +export default class LastfmSource extends MemorySource { api: LastfmApiClient; requiresAuth = true; requiresAuthInteraction = true; - declare config: LastfmClientConfig; + declare config: LastfmSourceConfig; - constructor(name: any, config: LastfmClientConfig, internal: InternalConfig, emitter: EventEmitter) { - super('lastfm', name, config, internal, emitter); + constructor(name: any, config: LastfmSourceConfig, internal: InternalConfig, emitter: EventEmitter) { + const { + data: { + interval = 15, + maxInterval = 60, + ...restData + } = {} + } = config; + super('lastfm', name, {...config, data: {interval, maxInterval, ...restData}}, internal, emitter); this.canPoll = true; this.api = new LastfmApiClient(name, {...config.data, configDir: internal.configDir, localUrl: internal.localUrl}); + this.playerSourceOfTruth = false; } static formatPlayObj(obj: any, options: FormatPlayObjectOptions = {}): PlayObject { @@ -42,7 +52,7 @@ export default class LastfmSource extends AbstractSource { } - getRecentlyPlayed = async(options: RecentlyPlayedOptions = {}) => { + getRecentlyPlayed = async(options: RecentlyPlayedOptions = {}): Promise => { const {limit = 20} = options; const resp = await this.api.callApi((client: any) => client.userGetRecentTracks({user: this.api.user, limit, extended: true})); const { @@ -51,7 +61,7 @@ export default class LastfmSource extends AbstractSource { } } = resp; - return list.reduce((acc: any, x: any) => { + const plays = list.reduce((acc: PlayObject[], x: TrackObject) => { try { const formatted = LastfmApiClient.formatPlayObj(x); const { @@ -64,13 +74,11 @@ export default class LastfmSource extends AbstractSource { nowPlaying, } } = formatted; - if(nowPlaying === true) { - // if the track is "now playing" it doesn't get a timestamp so we can't determine when it started playing - // and don't want to accidentally count the same track at different timestamps by artificially assigning it 'now' as a timestamp - // so we'll just ignore it in the context of recent tracks since really we only want "tracks that have already finished being played" anyway - this.logger.debug("Ignoring 'now playing' track returned from Last.fm client", {track, mbid}); - return acc; - } else if(playDate === undefined) { + if(playDate === undefined) { + if(nowPlaying === true) { + formatted.data.playDate = dayjs(); + return acc.concat(formatted); + } this.logger.warn(`Last.fm recently scrobbled track did not contain a timestamp, omitting from time frame check`, {track, mbid}); return acc; } @@ -82,5 +90,12 @@ export default class LastfmSource extends AbstractSource { return acc; } }, []).sort(sortByOldestPlayDate); + // if the track is "now playing" it doesn't get a timestamp so we can't determine when it started playing + // and don't want to accidentally count the same track at different timestamps by artificially assigning it 'now' as a timestamp + // so we'll just ignore it in the context of recent tracks since really we only want "tracks that have already finished being played" anyway + const history = plays.filter(x => x.meta.nowPlaying !== true); + const now = plays.filter(x => x.meta.nowPlaying === true); + this.processRecentPlays(now); + return history; } } diff --git a/src/backend/sources/ListenbrainzSource.ts b/src/backend/sources/ListenbrainzSource.ts index e2c6e586..994b9e72 100644 --- a/src/backend/sources/ListenbrainzSource.ts +++ b/src/backend/sources/ListenbrainzSource.ts @@ -3,7 +3,7 @@ import { FormatPlayObjectOptions, INITIALIZING, InternalConfig } from "../common import EventEmitter from "events"; import { ListenBrainzSourceConfig } from "../common/infrastructure/config/source/listenbrainz"; import { ListenbrainzApiClient } from "../common/vendor/ListenbrainzApiClient"; -import MemorySource from "./MemorySource.js"; +import MemorySource from "./MemorySource"; export default class ListenbrainzSource extends MemorySource { diff --git a/src/backend/sources/ScrobbleSources.ts b/src/backend/sources/ScrobbleSources.ts index 0f630f8b..2fca2a25 100644 --- a/src/backend/sources/ScrobbleSources.ts +++ b/src/backend/sources/ScrobbleSources.ts @@ -448,7 +448,7 @@ export default class ScrobbleSources { newSource = await new JellyfinSource(name, compositeConfig as JellySourceConfig, internal, this.emitter); break; case 'lastfm': - newSource = await new LastfmSource(name, compositeConfig as LastfmClientConfig, internal, this.emitter); + newSource = await new LastfmSource(name, compositeConfig as LastfmSourceConfig, internal, this.emitter); break; case 'deezer': newSource = await new DeezerSource(name, compositeConfig as DeezerSourceConfig, internal, this.emitter); diff --git a/src/core/Atomic.ts b/src/core/Atomic.ts index 5163b89a..1ebf8b8d 100644 --- a/src/core/Atomic.ts +++ b/src/core/Atomic.ts @@ -112,6 +112,8 @@ export interface PlayMeta { * */ deviceId?: string + nowPlaying?: boolean + [key: string]: any } -- 2.54.0 From 860d2d953f130c49a71b1ab5940c261c8fb69f95 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 19 Sep 2023 09:22:22 -0400 Subject: [PATCH 39/82] fix(youtube): Use updated yt music library #98 --- package-lock.json | 20 ++++++++++---------- package.json | 4 ++-- src/backend/sources/YTMusicSource.ts | 7 +++---- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index e8ae97ef..214a4ce3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,6 @@ "@fortawesome/react-fontawesome": "^0.2.0", "@foxxmd/string-sameness": "^0.1.3", "@foxxmd/winston": "3.3.31", - "@foxxmd/youtube-music-ts-api": "1.5.1", "@kenyip/backoff-strategies": "^1.0.4", "@react-nano/use-event-source": "^0.13.0", "@reduxjs/toolkit": "^1.9.5", @@ -65,7 +64,8 @@ "winston-duplex": "0.1.3", "winston-null": "^2.0.0", "winston-transport": "^4.4.0", - "xml2js": "^0.4.23" + "xml2js": "^0.4.23", + "youtube-music-ts-api": "^1.7.0" }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", @@ -2768,14 +2768,6 @@ "node": ">= 6.4.0" } }, - "node_modules/@foxxmd/youtube-music-ts-api": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@foxxmd/youtube-music-ts-api/-/youtube-music-ts-api-1.5.1.tgz", - "integrity": "sha512-0VvYM42I6sDaHtUNAinxdhFW+GqmTRUJLy08jshdgZZhGwZTmU0p/RYTubMZXstVVlA+VGSU3ceseA4K+SytmQ==", - "dependencies": { - "sha1": "^1.1.1" - } - }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -24906,6 +24898,14 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/youtube-music-ts-api": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/youtube-music-ts-api/-/youtube-music-ts-api-1.7.0.tgz", + "integrity": "sha512-IaH14moHLbXTs3e8cM/Zpld+Jf4pQeYslCGmm6karfQSJ5OQ6h1dZ01qblpzKgqZrcbRF3tg7ASAYNDpB0RaFw==", + "dependencies": { + "sha1": "^1.1.1" + } } } } diff --git a/package.json b/package.json index 43b14a9c..8d8ebe32 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,6 @@ "@fortawesome/react-fontawesome": "^0.2.0", "@foxxmd/string-sameness": "^0.1.3", "@foxxmd/winston": "3.3.31", - "@foxxmd/youtube-music-ts-api": "1.5.1", "@kenyip/backoff-strategies": "^1.0.4", "@react-nano/use-event-source": "^0.13.0", "@reduxjs/toolkit": "^1.9.5", @@ -102,7 +101,8 @@ "winston-duplex": "0.1.3", "winston-null": "^2.0.0", "winston-transport": "^4.4.0", - "xml2js": "^0.4.23" + "xml2js": "^0.4.23", + "youtube-music-ts-api": "^1.7.0" }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", diff --git a/src/backend/sources/YTMusicSource.ts b/src/backend/sources/YTMusicSource.ts index 49e4cccf..3907c47b 100644 --- a/src/backend/sources/YTMusicSource.ts +++ b/src/backend/sources/YTMusicSource.ts @@ -1,14 +1,13 @@ -// @ts-ignore -import YouTubeMusic from "@foxxmd/youtube-music-ts-api"; +import YouTubeMusic from "youtube-music-ts-api"; import AbstractSource, { RecentlyPlayedOptions } from "./AbstractSource"; import { FormatPlayObjectOptions, InternalConfig } from "../common/infrastructure/Atomic"; // @ts-ignore -import {IYouTubeMusicAuthenticated} from "@foxxmd/youtube-music-ts-api/interfaces-primary"; +import {IYouTubeMusicAuthenticated} from "youtube-music-ts-api/interfaces-primary"; import dayjs from "dayjs"; import { parseDurationFromTimestamp, playObjDataMatch } from "../utils"; // @ts-ignore -import {IPlaylistDetail, ITrackDetail} from "@foxxmd/youtube-music-ts-api/interfaces-supplementary"; +import {IPlaylistDetail, ITrackDetail} from "youtube-music-ts-api/interfaces-supplementary"; import { YTMusicSourceConfig } from "../common/infrastructure/config/source/ytmusic"; import EventEmitter from "events"; import { PlayObject } from "../../core/Atomic"; -- 2.54.0 From ac2d453aa24b7d9e77609820437f3cec3cf79c76 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 20 Sep 2023 11:31:15 -0400 Subject: [PATCH 40/82] feat(config): Implement property to control whether a source/client is used * QoL improvement -- Instead of needing to rename a config file so it is not read by MS a user can now use the 'enable' property in all source/client configs to enable or disable loading the config * Added property to all config examples --- config/config.json.example | 2 + config/deezer.json.example | 1 + config/jellyfin.json.example | 1 + config/jriver.json.example | 1 + config/kodi.json.example | 1 + config/lastfm.json.example | 1 + config/listenbrainz.json.example | 1 + config/maloja.json.example | 1 + config/mopidy.json.example | 1 + config/mpris.json.example | 1 + config/plex.json.example | 1 + config/spotify.json.example | 1 + config/subsonic.json.example | 1 + config/tautulli.json.example | 1 + config/ytmusic.json.example | 1 + .../common/infrastructure/config/common.ts | 7 + src/backend/common/schema/aio-client.json | 27 ++++ src/backend/common/schema/aio-source.json | 117 ++++++++++++++ src/backend/common/schema/aio.json | 144 ++++++++++++++++++ src/backend/common/schema/client.json | 27 ++++ src/backend/common/schema/source.json | 117 ++++++++++++++ src/backend/scrobblers/ScrobbleClients.ts | 8 +- src/backend/sources/ScrobbleSources.ts | 9 +- 23 files changed, 469 insertions(+), 3 deletions(-) diff --git a/config/config.json.example b/config/config.json.example index c141f26e..bc12c14d 100644 --- a/config/config.json.example +++ b/config/config.json.example @@ -21,6 +21,7 @@ "sources": [ { "type": "spotify", + "enable": true, "clients": ["myConfig"], "name": "mySpotifySource", "data": { @@ -33,6 +34,7 @@ "clients": [ { "type": "maloja", + "enable": true, "name": "myConfig", "data": { "url": "http://localhost:42010", diff --git a/config/deezer.json.example b/config/deezer.json.example index 2a8ec885..6d2664a8 100644 --- a/config/deezer.json.example +++ b/config/deezer.json.example @@ -1,6 +1,7 @@ [ { "name": "FoxxMDeezer", + "enable": true, "clients": [], "data": { "clientId": "a89cba1569901a0671d5a9875fed4be1", diff --git a/config/jellyfin.json.example b/config/jellyfin.json.example index 16eeb487..a9fe8b64 100644 --- a/config/jellyfin.json.example +++ b/config/jellyfin.json.example @@ -1,6 +1,7 @@ [ { "name": "MyJellyfin", + "enable": true, "clients": [], "data": { "users": ["FoxxMD"], diff --git a/config/jriver.json.example b/config/jriver.json.example index 6f6ab3f3..891f2496 100644 --- a/config/jriver.json.example +++ b/config/jriver.json.example @@ -1,6 +1,7 @@ [ { "name": "MyJriver", + "enable": true, "data": { "url": "0.0.0.0", "username": "auser", diff --git a/config/kodi.json.example b/config/kodi.json.example index 3167eef6..5b7ebf34 100644 --- a/config/kodi.json.example +++ b/config/kodi.json.example @@ -1,6 +1,7 @@ [ { "name": "MyKodi", + "enable": true, "data": { "url": "http://localhost:8080/jsonrpc", "username": "myUser", diff --git a/config/lastfm.json.example b/config/lastfm.json.example index a63fa977..7bfdcf57 100644 --- a/config/lastfm.json.example +++ b/config/lastfm.json.example @@ -1,6 +1,7 @@ [ { "name": "myLastFm", + "enable": true, "configureAs": "client", "data": { "apiKey": "a89cba1569901a0671d5a9875fed4be1", diff --git a/config/listenbrainz.json.example b/config/listenbrainz.json.example index 9e0e6781..5bdf8dda 100644 --- a/config/listenbrainz.json.example +++ b/config/listenbrainz.json.example @@ -1,6 +1,7 @@ [ { "name": "brainz", + "enable": true, "configureAs": "client", "data": { "token": "029b081ba-9156-4pe7-88e5-3be671f5ea2b", diff --git a/config/maloja.json.example b/config/maloja.json.example index 7c7e2a73..62f64295 100644 --- a/config/maloja.json.example +++ b/config/maloja.json.example @@ -1,6 +1,7 @@ [ { "name": "myMaloja", + "enable": true, "data": { "url": "http://localhost:42010", "apiKey": "myMalojaKey" diff --git a/config/mopidy.json.example b/config/mopidy.json.example index 58c6ff03..b4f9286e 100644 --- a/config/mopidy.json.example +++ b/config/mopidy.json.example @@ -1,6 +1,7 @@ [ { "name": "MyMopidy", + "enable": true, "data": { "url": "localhost", "uriBlacklist": [], diff --git a/config/mpris.json.example b/config/mpris.json.example index 3026f10c..32d589ff 100644 --- a/config/mpris.json.example +++ b/config/mpris.json.example @@ -1,6 +1,7 @@ [ { "name": "ubuntu", + "enable": true, "data": { "whitelist": ["vlc", "mpd"], "blacklist": ["spotify"] diff --git a/config/plex.json.example b/config/plex.json.example index 0410a3d1..c8350cc0 100644 --- a/config/plex.json.example +++ b/config/plex.json.example @@ -1,6 +1,7 @@ [ { "name": "MyPlex", + "enable": true, "clients": [], "data": { "user": ["username@gmail.com","anotherUser@gmail.com"], diff --git a/config/spotify.json.example b/config/spotify.json.example index 4a2594fe..19dea779 100644 --- a/config/spotify.json.example +++ b/config/spotify.json.example @@ -1,6 +1,7 @@ [ { "name": "MySpotify", + "enable": true, "clients": [], "data": { "clientId": "a89cba1569901a0671d5a9875fed4be1", diff --git a/config/subsonic.json.example b/config/subsonic.json.example index e306478f..4a01fe1d 100644 --- a/config/subsonic.json.example +++ b/config/subsonic.json.example @@ -1,6 +1,7 @@ [ { "name": "MySubsonic", + "enable": true, "data": { "url": "http://localhost:4040/airsonic", "user": "yourUser", diff --git a/config/tautulli.json.example b/config/tautulli.json.example index eaa6c822..ebb8b233 100644 --- a/config/tautulli.json.example +++ b/config/tautulli.json.example @@ -1,6 +1,7 @@ [ { "name": "MyTautuilli", + "enable": true, "clients": [], "data": { "user": ["username@gmail.com","anotherUser@gmail.com"], diff --git a/config/ytmusic.json.example b/config/ytmusic.json.example index 4cd545ab..f052449a 100644 --- a/config/ytmusic.json.example +++ b/config/ytmusic.json.example @@ -1,6 +1,7 @@ [ { "name": "MyYTMusic", + "enable": true, "clients": [], "data": { "cookie": "VISITOR_INFO1_LIVE=jMDXz2_L8rY; __Secure-3PAPISID=3AxsXpSXGqOInSDn1jEKn; DEVICE_INFO=ChxOekU0TmTBpjek5EWZ0G; YSC=7gZdl3Zdl3; SID=TwhNsaZRXYTAtXxzGyu6rZdpg2HvGROeW8J4Ym_FhkhoZMUYEQ.; __Secure-1PSID=TwhNOsaZRXYTyRBe4rxAtXRIKsIEtk_Qot2VLBNfHQrQ.; __Secure-3PSID=ZRXYTAtXRIKsIEtk_Qot2yRBerZdpg2HvvZRXYTAtXRIKsIEtk_Qot2yRBerkuZICFQ.; HSID=A1UMmELW79; SSID=AKhomOs; APISID=IlHHmuzkPdQzZZDhHn3; SAPISID=3AxsXpy0u75Qb/n1jEKn; __Secure-1PAPISID=3AxsXpQb/AkSDn1jEKn; LOGIN_INFO=AFmP6vFpyVCZZAIgDwbkhWMBBhluaIWAPP:QUQ314UW5NWMjNmd2ZUJnYnJsakdIMjZoaE5zVVMjNmd2ZZUiHRlb3ZlV3ZIcUVyRVIMjNmdjNmd2ZZUivYlNqX2ZNZUiHdUNFNFdaYmJIW1NkJRX3hqdlU2YnFESkFuSS1uTldnZVRmLXNjWFc5OUJuR3dTd3JsZGZYa2EtZFQ2a0k2Ry1KQQ==; PREF=volume=26; SIDCC=AFvI_94PxXwls-ndqpGfPgFX3FWj80y_94PxXwls-ndqfSh15sP; __Secure-1PSIDCC=AFvIBnUbRr96I96UCIp2U4T8HRVk2B0HfKzhzxwsiP; __Secure-3PSIDCC=AFvIB3bINuUN0ETDR9gO91wpwWIVmpGki3BxT3bINuUN0ETDR9gO91wCH", diff --git a/src/backend/common/infrastructure/config/common.ts b/src/backend/common/infrastructure/config/common.ts index 5ba98ca7..fe4de683 100644 --- a/src/backend/common/infrastructure/config/common.ts +++ b/src/backend/common/infrastructure/config/common.ts @@ -1,6 +1,13 @@ export interface CommonConfig { name?: string data?: CommonData + /** + * Should MS use this client/source? Defaults to true + * + * @default true + * @examples [true] + * */ + enable?: boolean } export interface CommonData { diff --git a/src/backend/common/schema/aio-client.json b/src/backend/common/schema/aio-client.json index 0cabfea1..c33f967e 100644 --- a/src/backend/common/schema/aio-client.json +++ b/src/backend/common/schema/aio-client.json @@ -101,6 +101,15 @@ "description": "Specific data required to configure this client", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ @@ -203,6 +212,15 @@ "description": "Specific data required to configure this client", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ @@ -319,6 +337,15 @@ "description": "Specific data required to configure this client", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ diff --git a/src/backend/common/schema/aio-source.json b/src/backend/common/schema/aio-source.json index 42163f25..a86c8818 100644 --- a/src/backend/common/schema/aio-source.json +++ b/src/backend/common/schema/aio-source.json @@ -139,6 +139,15 @@ "$ref": "#/definitions/DeezerData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -265,6 +274,15 @@ "$ref": "#/definitions/JRiverData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -417,6 +435,15 @@ "$ref": "#/definitions/JellyData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -545,6 +572,15 @@ "$ref": "#/definitions/KodiData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -601,6 +637,15 @@ "$ref": "#/definitions/LastFmSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -751,6 +796,15 @@ "$ref": "#/definitions/ListenBrainzSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -965,6 +1019,15 @@ "$ref": "#/definitions/MPRISData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1111,6 +1174,15 @@ "$ref": "#/definitions/MopidyData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1155,6 +1227,15 @@ "$ref": "#/definitions/PlexSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1424,6 +1505,15 @@ "$ref": "#/definitions/SpotifySourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1644,6 +1734,15 @@ "$ref": "#/definitions/SubsonicData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1688,6 +1787,15 @@ "$ref": "#/definitions/PlexSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1808,6 +1916,15 @@ "$ref": "#/definitions/YTMusicData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", diff --git a/src/backend/common/schema/aio.json b/src/backend/common/schema/aio.json index 6570e563..c70cf9ec 100644 --- a/src/backend/common/schema/aio.json +++ b/src/backend/common/schema/aio.json @@ -212,6 +212,15 @@ "$ref": "#/definitions/DeezerData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -387,6 +396,15 @@ "$ref": "#/definitions/JRiverData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -539,6 +557,15 @@ "$ref": "#/definitions/JellyData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -667,6 +694,15 @@ "$ref": "#/definitions/KodiData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -723,6 +759,15 @@ "$ref": "#/definitions/LastFmSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -868,6 +913,15 @@ "description": "Specific data required to configure this client", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ @@ -970,6 +1024,15 @@ "description": "Specific data required to configure this client", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ @@ -1111,6 +1174,15 @@ "$ref": "#/definitions/ListenBrainzSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1370,6 +1442,15 @@ "$ref": "#/definitions/MPRISData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1401,6 +1482,15 @@ "description": "Specific data required to configure this client", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ @@ -1660,6 +1750,15 @@ "$ref": "#/definitions/MopidyData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1760,6 +1859,15 @@ "$ref": "#/definitions/PlexSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -2094,6 +2202,15 @@ "$ref": "#/definitions/SpotifySourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -2314,6 +2431,15 @@ "$ref": "#/definitions/SubsonicData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -2358,6 +2484,15 @@ "$ref": "#/definitions/PlexSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -2489,6 +2624,15 @@ "$ref": "#/definitions/YTMusicData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", diff --git a/src/backend/common/schema/client.json b/src/backend/common/schema/client.json index 53e3f097..29127046 100644 --- a/src/backend/common/schema/client.json +++ b/src/backend/common/schema/client.json @@ -98,6 +98,15 @@ "description": "Specific data required to configure this client", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ @@ -192,6 +201,15 @@ "description": "Specific data required to configure this client", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ @@ -300,6 +318,15 @@ "description": "Specific data required to configure this client", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this client. Used with sources to restrict where scrobbles are sent.", "examples": [ diff --git a/src/backend/common/schema/source.json b/src/backend/common/schema/source.json index 0f8d9647..9bd8b494 100644 --- a/src/backend/common/schema/source.json +++ b/src/backend/common/schema/source.json @@ -180,6 +180,15 @@ "$ref": "#/definitions/DeezerData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -298,6 +307,15 @@ "$ref": "#/definitions/JRiverData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -442,6 +460,15 @@ "$ref": "#/definitions/JellyData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -562,6 +589,15 @@ "$ref": "#/definitions/KodiData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -704,6 +740,15 @@ "$ref": "#/definitions/LastFmSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -752,6 +797,15 @@ "$ref": "#/definitions/ListenBrainzSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -958,6 +1012,15 @@ "$ref": "#/definitions/MPRISData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1096,6 +1159,15 @@ "$ref": "#/definitions/MopidyData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1132,6 +1204,15 @@ "$ref": "#/definitions/PlexSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1316,6 +1397,15 @@ "$ref": "#/definitions/SpotifySourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1442,6 +1532,15 @@ "$ref": "#/definitions/SubsonicData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1564,6 +1663,15 @@ "$ref": "#/definitions/PlexSourceData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", @@ -1676,6 +1784,15 @@ "$ref": "#/definitions/YTMusicData", "title": "data" }, + "enable": { + "default": true, + "description": "Should MS use this client/source? Defaults to true", + "examples": [ + true + ], + "title": "enable", + "type": "boolean" + }, "name": { "description": "Unique identifier for this source.", "title": "name", diff --git a/src/backend/scrobblers/ScrobbleClients.ts b/src/backend/scrobblers/ScrobbleClients.ts index cf23a71c..274fa80c 100644 --- a/src/backend/scrobblers/ScrobbleClients.ts +++ b/src/backend/scrobblers/ScrobbleClients.ts @@ -296,7 +296,13 @@ ${sources.join('\n')}`); if (isValidConfig !== true) { throw new Error(`Config object from ${clientConfig.source || 'unknown'} with name [${clientConfig.name || 'unnamed'}] of type [${clientConfig.type || 'unknown'}] has errors: ${isValidConfig.join(' | ')}`) }*/ - const {type, name, data: d = {}} = clientConfig; + const {type, name, enable = true, data: d = {}} = clientConfig; + + if(enable === false) { + this.logger.warn(`${type} (${name}) client was disabled by config`); + return; + } + // add defaults const data = {...defaults, ...d}; let newClient; diff --git a/src/backend/sources/ScrobbleSources.ts b/src/backend/sources/ScrobbleSources.ts index 2fca2a25..25d2fd5a 100644 --- a/src/backend/sources/ScrobbleSources.ts +++ b/src/backend/sources/ScrobbleSources.ts @@ -410,7 +410,7 @@ export default class ScrobbleSources { } } - addSource = async (clientConfig: any, defaults: SourceDefaults = {}) => { + addSource = async (clientConfig: ParsedConfig, defaults: SourceDefaults = {}) => { // const isValidConfig = isValidConfigStructure(clientConfig, {name: true, data: true, type: true}); // if (isValidConfig !== true) { // throw new Error(`Config object from ${clientConfig.source || 'unknown'} with name [${clientConfig.name || 'unnamed'}] of type [${clientConfig.type || 'unknown'}] has errors: ${isValidConfig.join(' | ')}`) @@ -422,7 +422,12 @@ export default class ScrobbleSources { logger: this.logger }; - const {type, name, data: d = {}, options: clientOptions = {}} = clientConfig; + const {type, name, data: d = {}, enable = true, options: clientOptions = {}} = clientConfig; + + if(enable === false) { + this.logger.warn(`${type} (${name}) source was disabled by config`); + return; + } // add defaults const {options: defaultOptions = {}, ...restDefaults} = defaults; -- 2.54.0 From bdbbce4cb07b5b551bd8826db9e07b747d6499d6 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 26 Sep 2023 11:39:34 -0400 Subject: [PATCH 41/82] feat(jellyfin): Initial testing suite --- src/backend/tests/jellyfin.test.ts | 41 ++++++++++++ .../jellyfin/playbackProgressSample.json | 64 +++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 src/backend/tests/jellyfin.test.ts create mode 100644 src/backend/tests/jellyfin/playbackProgressSample.json diff --git a/src/backend/tests/jellyfin.test.ts b/src/backend/tests/jellyfin.test.ts new file mode 100644 index 00000000..2485e205 --- /dev/null +++ b/src/backend/tests/jellyfin.test.ts @@ -0,0 +1,41 @@ +import {describe, it} from 'mocha'; +import {assert} from 'chai'; +import samplePayload from './jellyfin/playbackProgressSample.json'; + +import JellyfinSource from "../sources/JellyfinSource"; +import EventEmitter from "events"; +import {getLogger} from "../common/logging"; +import {JsonPlayObject, PlayObject} from "../../core/Atomic"; + +const dataAsFixture = (data: any): TestFixture => { + return data as TestFixture; +} + +interface TestFixture { + data: any + expected: JsonPlayObject +} + +describe('Jellyfin Payload Parsing', function () { + + it('Should parse PlayProgress payload as PlayObject', async function () { + const fixture = dataAsFixture(samplePayload[0]); + const play = JellyfinSource.formatPlayObj(fixture.data); + + assert.equal(play.data.track, fixture.expected.data.track); + assert.equal(play.meta.mediaType, 'Audio'); + }); + + describe('Correctly detects events as valid/invalid', function () { + + const jfSource = new JellyfinSource('Test', {data: {}}, {localUrl: 'test', configDir: 'test', logger: getLogger({}, 'Test')}, new EventEmitter()); + + it('Should parse PlayProgress with Audio ItemType as valid event', async function () { + const fixture = dataAsFixture(samplePayload[0]); + const play = JellyfinSource.formatPlayObj(fixture.data); + + assert.isTrue(jfSource.isValidEvent(play)) + }); + + }); +}); diff --git a/src/backend/tests/jellyfin/playbackProgressSample.json b/src/backend/tests/jellyfin/playbackProgressSample.json new file mode 100644 index 00000000..3cc5e850 --- /dev/null +++ b/src/backend/tests/jellyfin/playbackProgressSample.json @@ -0,0 +1,64 @@ +[ + { + "data": { + "ServerId": "6c41d884a9c1490f8fd0863e04d75a69", + "ServerName": "maine", + "ServerVersion": "10.8.10", + "ServerUrl": "", + "NotificationType": "PlaybackProgress", + "Timestamp": "2023-09-26T11:18:17.8399513-03:00", + "UtcTimestamp": "2023-09-26T14:18:17.8399533Z", + "Name": "Brother Madonna", + "Overview": "", + "Tagline": "", + "ItemId": "514941104216969e74a8d87fc7893ad5", + "ItemType": "Audio", + "RunTimeTicks": 926533312, + "RunTime": "00:01:32", + "Year": 2008, + "Album": "I Kind of Really Want to Make Love to You", + "Artist": "Kitsune\u00B2", + "Provider_musicbrainzalbumartist": "6e659357-5963-4daf-a634-a3596893f3d7", + "Provider_musicbrainzartist": "6e659357-5963-4daf-a634-a3596893f3d7", + "Provider_musicbrainzalbum": "7c10f8a5-669f-4ff6-bb88-de59846c0e0c", + "Provider_musicbrainzreleasegroup": "85c9ae8b-13e4-4fbf-9f09-5e405039772c", + "Provider_musicbrainztrack": "3c2c1f40-b22e-360e-a29a-1b1610190a8c", + "Audio_0_Title": "FLAC - Stereo", + "Audio_0_Type": "Audio", + "Audio_0_Language": null, + "Audio_0_Codec": "flac", + "Audio_0_Channels": 2, + "Audio_0_Bitrate": 917349, + "Audio_0_SampleRate": 44100, + "Audio_0_Default": false, + "PlaybackPositionTicks": 640000000, + "PlaybackPosition": "00:01:04", + "MediaSourceId": "514941104216969e74a8d87fc7893ad5", + "IsPaused": false, + "IsAutomated": true, + "DeviceId": "BC9311B570ABE4BD71EEEC0856A448AD", + "DeviceName": "samsung SM-S901E", + "ClientName": "Android", + "NotificationUsername": "Tabitha", + "UserId": "6d23c30c5e9d4ec6a66db6b05b63e516" + }, + "expected": { + "data": { + "track": "Brother Madonna", + "artists": ["Kitsune²"], + "album": "I Kind of Really Want to Make Love to You", + "duration": 92 + }, + "meta": { + "source": "Jellyfin", + "event": "PlaybackProgress", + "mediaType": "Audio", + "trackId": "514941104216969e74a8d87fc7893ad5", + "user": "Tabitha", + "sourceVersion": "10.8.10", + "deviceId": "BC9311B570-samsung SM-S901E", + "trackProgressPosition": 64 + } + } + } +] -- 2.54.0 From ce5f8d5fca0856c273b473a36418ba59afd39a09 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 26 Sep 2023 14:03:03 -0400 Subject: [PATCH 42/82] fix(jellyfin): Enable parsing requests with more content-types and add logging on invalid types * Add text/* wildcard so any text-prefixed content-type is valid (Jellyfin should always be sending json anyway) * Add logging WARN when body is empty Fixes #101 --- src/backend/server/jellyfinRoutes.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/backend/server/jellyfinRoutes.ts b/src/backend/server/jellyfinRoutes.ts index 6a580b05..a6728a4e 100644 --- a/src/backend/server/jellyfinRoutes.ts +++ b/src/backend/server/jellyfinRoutes.ts @@ -5,11 +5,12 @@ import ScrobbleSources from "../sources/ScrobbleSources"; import bodyParser from "body-parser"; import { JellyfinNotifier } from "../sources/ingressNotifiers/JellyfinNotifier"; import JellyfinSource from "../sources/JellyfinSource"; +import {ExpressRequest} from "../common/infrastructure/Atomic.js"; export const setupJellyfinRoutes = (app: ExpressWithAsync, logger: Logger, scrobbleSources: ScrobbleSources) => { // webhook plugin sends json with context type text/utf-8 so we need to parse it differently - const jellyfinJsonParser = bodyParser.json({type: 'text/*'}); + const jellyfinJsonParser = bodyParser.json({type: ['text/*', 'application/json']}); const jellyIngress = new JellyfinNotifier(); app.postAsync('/jellyfin', async function(req, res) { res.redirect(307, '/api/jellyfin/ingress'); @@ -26,6 +27,22 @@ export const setupJellyfinRoutes = (app: ExpressWithAsync, logger: Logger, scrob res.send('OK'); + const bodyEmpty = req.body === undefined || req.body === null || (typeof req.body === 'object' && Object.keys(req.body).length === 0); + if(bodyEmpty) { + const length = req.header('content-length') !== undefined ? Number.parseInt(req.header('content-length')) : undefined; + // can't think of a way a user would send an empty body for a webhook payload but if they meant to do it don't spam them with errors... + if(length === 0) { + return; + } + if(length === undefined) { + logger.warn(`Jellyfin is not sending a well-formatted request. It does not have valid headers (application/json - text/*) OR it is missing content-length header: Content-Type => ${req.header('content-type')} | Length => ${length}`); + } else { + logger.warn(`Jellyfin is not sending a request with valid headers. Content-Type must be either application/json or a text/* wildcard (like text/plain) -- given: Content-Type => ${req.header('content-type')}`); + } + res.status(400).send('Invalid Content-Type. Must be either application/json or a text wildcard (like text/plain)'); + return; + } + const parts = remoteHostIdentifiers(req); const connectionId = `${parts.host}-${parts.proxy ?? ''}`; -- 2.54.0 From a46389e74535e2446fa7662efb206900302e4e47 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 26 Sep 2023 14:08:02 -0400 Subject: [PATCH 43/82] Remove unused import --- src/backend/server/jellyfinRoutes.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/server/jellyfinRoutes.ts b/src/backend/server/jellyfinRoutes.ts index a6728a4e..4f4201ad 100644 --- a/src/backend/server/jellyfinRoutes.ts +++ b/src/backend/server/jellyfinRoutes.ts @@ -5,7 +5,6 @@ import ScrobbleSources from "../sources/ScrobbleSources"; import bodyParser from "body-parser"; import { JellyfinNotifier } from "../sources/ingressNotifiers/JellyfinNotifier"; import JellyfinSource from "../sources/JellyfinSource"; -import {ExpressRequest} from "../common/infrastructure/Atomic.js"; export const setupJellyfinRoutes = (app: ExpressWithAsync, logger: Logger, scrobbleSources: ScrobbleSources) => { -- 2.54.0 From 6e1e2c3534b194b30659be8bdd9737c3008493e2 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 26 Sep 2023 15:36:17 -0400 Subject: [PATCH 44/82] Add verify example for body parser --- src/backend/server/jellyfinRoutes.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/backend/server/jellyfinRoutes.ts b/src/backend/server/jellyfinRoutes.ts index 4f4201ad..dedce837 100644 --- a/src/backend/server/jellyfinRoutes.ts +++ b/src/backend/server/jellyfinRoutes.ts @@ -9,7 +9,14 @@ import JellyfinSource from "../sources/JellyfinSource"; export const setupJellyfinRoutes = (app: ExpressWithAsync, logger: Logger, scrobbleSources: ScrobbleSources) => { // webhook plugin sends json with context type text/utf-8 so we need to parse it differently - const jellyfinJsonParser = bodyParser.json({type: ['text/*', 'application/json']}); + const jellyfinJsonParser = bodyParser.json({ + type: ['text/*', 'application/json'], + // verify: function(req, res, buf, encoding) { + // // get rawBody + // // @ts-ignore + // req.rawBody = buf.toString(); + // } + }); const jellyIngress = new JellyfinNotifier(); app.postAsync('/jellyfin', async function(req, res) { res.redirect(307, '/api/jellyfin/ingress'); @@ -34,9 +41,9 @@ export const setupJellyfinRoutes = (app: ExpressWithAsync, logger: Logger, scrob return; } if(length === undefined) { - logger.warn(`Jellyfin is not sending a well-formatted request. It does not have valid headers (application/json - text/*) OR it is missing content-length header: Content-Type => ${req.header('content-type')} | Length => ${length}`); + logger.warn(`Jellyfin is not sending a well-formatted request. It does not have valid headers (application/json - text/*) OR it is missing content-length header: Content-Type => '${req.header('content-type')}' | Length => ${length}`); } else { - logger.warn(`Jellyfin is not sending a request with valid headers. Content-Type must be either application/json or a text/* wildcard (like text/plain) -- given: Content-Type => ${req.header('content-type')}`); + logger.warn(`Jellyfin is not sending a request with valid headers. Content-Type must be either application/json or a text/* wildcard (like text/plain) -- given: Content-Type => '${req.header('content-type')}'`); } res.status(400).send('Invalid Content-Type. Must be either application/json or a text wildcard (like text/plain)'); return; -- 2.54.0 From 43cbadcd2de876bd498e863740736acd377d6b5f Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 27 Sep 2023 13:18:20 -0400 Subject: [PATCH 45/82] refactor(scrobble): Clean up base design a little * Make alreadyScrobbled abstract function * Make sorting recentScrobbles automatic by refactoring into a getter/setter --- .../scrobblers/AbstractScrobbleClient.ts | 20 ++++++++++++------- src/backend/scrobblers/LastfmScrobbler.ts | 2 +- .../scrobblers/ListenbrainzScrobbler.ts | 2 +- src/backend/scrobblers/MalojaScrobbler.ts | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 58aa92f3..77532831 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -3,7 +3,7 @@ import { isPlayTemporallyClose, mergeArr, playObjDataMatch, - setIntersection, + setIntersection, sortByOldestPlayDate, } from "../utils"; import { ClientType, @@ -36,7 +36,7 @@ export default abstract class AbstractScrobbleClient { requiresAuthInteraction: boolean = false; authed: boolean = false; - recentScrobbles: PlayObject[] = []; + #recentScrobblesList: PlayObject[] = []; scrobbledPlayObjs: FixedSizeList; newestScrobbleTime?: Dayjs oldestScrobbleTime?: Dayjs @@ -97,6 +97,16 @@ export default abstract class AbstractScrobbleClient { }; } + set recentScrobbles(scrobbles: PlayObject[]) { + const sorted = [...scrobbles]; + sorted.sort(sortByOldestPlayDate); + this.#recentScrobblesList = sorted; + } + + get recentScrobbles() { + return this.#recentScrobblesList; + } + get initialized() { return this.#initState === INITIALIZED; } @@ -136,11 +146,7 @@ export default abstract class AbstractScrobbleClient { this.logger.debug('Scrobbler does not have refresh function implemented!'); } - alreadyScrobbled = async (playObj: PlayObject, log = false) => { - this.logger.debug('Scrobbler does not have alreadyScrobbled check implemented!'); - return false; - } - + public abstract alreadyScrobbled(playObj: PlayObject, log?: boolean): Promise; scrobblesLastCheckedAt = () => { return this.lastScrobbleCheck; } diff --git a/src/backend/scrobblers/LastfmScrobbler.ts b/src/backend/scrobblers/LastfmScrobbler.ts index c623bc2e..69ea0e52 100644 --- a/src/backend/scrobblers/LastfmScrobbler.ts +++ b/src/backend/scrobblers/LastfmScrobbler.ts @@ -91,7 +91,7 @@ export default class LastfmScrobbler extends AbstractScrobbleClient { this.logger.debug(x); return acc; } - }, []).sort(sortByOldestPlayDate); + }, []); this.logger.debug(`Found ${this.recentScrobbles.length} recent scrobbles`); if (this.recentScrobbles.length > 0) { const [{data: {playDate: newestScrobbleTime = dayjs()} = {}} = {}] = this.recentScrobbles.slice(-1); diff --git a/src/backend/scrobblers/ListenbrainzScrobbler.ts b/src/backend/scrobblers/ListenbrainzScrobbler.ts index 46ccf2bd..75f9cdf6 100644 --- a/src/backend/scrobblers/ListenbrainzScrobbler.ts +++ b/src/backend/scrobblers/ListenbrainzScrobbler.ts @@ -68,7 +68,7 @@ export default class ListenbrainzScrobbler extends AbstractScrobbleClient { this.logger.debug('Refreshing recent scrobbles'); const resp = await this.api.getRecentlyPlayed(this.MAX_STORED_SCROBBLES); this.logger.debug(`Found ${resp.length} recent scrobbles`); - this.recentScrobbles = resp.sort(sortByOldestPlayDate); + this.recentScrobbles = resp; if (this.recentScrobbles.length > 0) { const [{data: {playDate: newestScrobbleTime = dayjs()} = {}} = {}] = this.recentScrobbles.slice(-1); const [{data: {playDate: oldestScrobbleTime = dayjs()} = {}} = {}] = this.recentScrobbles.slice(0, 1); diff --git a/src/backend/scrobblers/MalojaScrobbler.ts b/src/backend/scrobblers/MalojaScrobbler.ts index 3f375658..35e43d32 100644 --- a/src/backend/scrobblers/MalojaScrobbler.ts +++ b/src/backend/scrobblers/MalojaScrobbler.ts @@ -324,7 +324,7 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { } = {}, } = resp; this.logger.debug(`Found ${list.length} recent scrobbles`); - this.recentScrobbles = list.map((x: any) => this.formatPlayObj(x)).sort(sortByOldestPlayDate); + this.recentScrobbles = list.map((x: any) => this.formatPlayObj(x)); if (this.recentScrobbles.length > 0) { const [{data: {playDate: newestScrobbleTime = dayjs()} = {}} = {}] = this.recentScrobbles.slice(-1); const [{data: {playDate: oldestScrobbleTime = dayjs()} = {}} = {}] = this.recentScrobbles.slice(0, 1); -- 2.54.0 From 8371ec3a0135583ae80500f5bff84b181a9c55b9 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 27 Sep 2023 13:18:58 -0400 Subject: [PATCH 46/82] fix(scrobble): Fix config destructing default value --- src/backend/scrobblers/AbstractScrobbleClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 77532831..b6e01d1e 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -70,7 +70,7 @@ export default abstract class AbstractScrobbleClient { checkExistingScrobbles = true, verbose = {}, } = {}, - }, + } = {}, } = config; this.config = config; this.refreshEnabled = refreshEnabled; -- 2.54.0 From 7885c4ca9c5b6567fc41443784705e7b28f45459 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 27 Sep 2023 13:19:25 -0400 Subject: [PATCH 47/82] fix(scrobble): Fix wrong artists used for comparison --- src/backend/scrobblers/AbstractScrobbleClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index b6e01d1e..ad577941 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -271,7 +271,7 @@ export default abstract class AbstractScrobbleClient { data: { artists: sourceArtists = [], } = {}, - } = candidate; + } = existing; const { data: { artists = [], -- 2.54.0 From ec4ab8c078bafec2057c40e1217dff9628bff844 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 27 Sep 2023 13:20:03 -0400 Subject: [PATCH 48/82] test(scrobble): Implement basic scrobble tests --- package-lock.json | 34 ++++++ package.json | 3 + src/backend/tests/plays/mixedDuration.json | 70 +++++++++++ src/backend/tests/plays/withDuration.json | 70 +++++++++++ src/backend/tests/scrobbler/TestScrobbler.ts | 23 ++++ .../tests/scrobbler/scrobblers.test.ts | 113 ++++++++++++++++++ src/backend/tests/utils/PlayTestUtils.ts | 95 +++++++++++++++ 7 files changed, 408 insertions(+) create mode 100644 src/backend/tests/plays/mixedDuration.json create mode 100644 src/backend/tests/plays/withDuration.json create mode 100644 src/backend/tests/scrobbler/TestScrobbler.ts create mode 100644 src/backend/tests/scrobbler/scrobblers.test.ts create mode 100644 src/backend/tests/utils/PlayTestUtils.ts diff --git a/package-lock.json b/package-lock.json index 214a4ce3..97f14740 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,6 +69,7 @@ }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@faker-js/faker": "^8.1.0", "@istanbuljs/nyc-config-typescript": "^1.0.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", @@ -76,6 +77,7 @@ "@tsconfig/node18": "^1.0.1", "@types/chai": "^4.3.0", "@types/chai-as-promised": "^7.1.5", + "@types/clone": "^2.1.2", "@types/common-tags": "^1.8.1", "@types/concat-stream": "^2.0.0", "@types/express": "^4.17.13", @@ -96,6 +98,7 @@ "@types/xml2js": "^0.4.11", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", + "clone": "^2.1.2", "concurrently": "^8.2.0", "jscodeshift": "^0.15.0", "mocha": "^9.2.1", @@ -2690,6 +2693,22 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@faker-js/faker": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.1.0.tgz", + "integrity": "sha512-38DT60rumHfBYynif3lmtxMqMqmsOQIxQgEuPZxCk2yUYN0eqWpTACgxi0VpidvsJB8CRxCpvP7B3anK85FjtQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0", + "npm": ">=6.14.13" + } + }, "node_modules/@fortawesome/fontawesome-common-types": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", @@ -4630,6 +4649,12 @@ "@types/chai": "*" } }, + "node_modules/@types/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-fKXTsQvII/8K7xSxQF2OEuN6Pt4/PDasws60s/qeqoIOaBX7Aoevy5CmaQ4fANbvOo04MN3kx3xUIc6ZNXsmaQ==", + "dev": true + }, "node_modules/@types/common-tags": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@types/common-tags/-/common-tags-1.8.1.tgz", @@ -7356,6 +7381,15 @@ "node": ">=8" } }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", diff --git a/package.json b/package.json index 8d8ebe32..050075a7 100644 --- a/package.json +++ b/package.json @@ -106,6 +106,7 @@ }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@faker-js/faker": "^8.1.0", "@istanbuljs/nyc-config-typescript": "^1.0.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", @@ -113,6 +114,7 @@ "@tsconfig/node18": "^1.0.1", "@types/chai": "^4.3.0", "@types/chai-as-promised": "^7.1.5", + "@types/clone": "^2.1.2", "@types/common-tags": "^1.8.1", "@types/concat-stream": "^2.0.0", "@types/express": "^4.17.13", @@ -133,6 +135,7 @@ "@types/xml2js": "^0.4.11", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", + "clone": "^2.1.2", "concurrently": "^8.2.0", "jscodeshift": "^0.15.0", "mocha": "^9.2.1", diff --git a/src/backend/tests/plays/mixedDuration.json b/src/backend/tests/plays/mixedDuration.json new file mode 100644 index 00000000..7cfaadf5 --- /dev/null +++ b/src/backend/tests/plays/mixedDuration.json @@ -0,0 +1,70 @@ +[ + { + "data": { + "artists": [ + "Menagerie" + ], + "track": "Danieda's Dance", + "duration": null, + "playDate": "2023-09-18T19:00:25.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "Dan Tenor City", + "Ricoh", + "Tom Funk" + ], + "track": "Close To The Source", + "duration": null, + "playDate": "2023-09-18T20:17:58.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "medline" + ], + "track": "Run For Cover", + "duration": 300, + "playDate": "2023-09-20T14:02:05.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "King Owusu", + "Zeitgeist Freedom Energy Exchange" + ], + "track": "Obana", + "duration": null, + "playDate": "2023-09-20T14:07:02.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "Noro Morales" + ], + "track": "Mississippi Mambo", + "duration": 159, + "playDate": "2023-09-20T17:49:26.000Z" + }, + "meta": { + "source": "Maloja" + } + } +] diff --git a/src/backend/tests/plays/withDuration.json b/src/backend/tests/plays/withDuration.json new file mode 100644 index 00000000..a9a1724f --- /dev/null +++ b/src/backend/tests/plays/withDuration.json @@ -0,0 +1,70 @@ +[ + { + "data": { + "artists": [ + "Kaidi Tatham" + ], + "track": "Fricassee", + "duration": 305, + "playDate": "2023-09-20T14:32:39.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "Kuna Maze" + ], + "track": "Jimbo", + "duration": 255, + "playDate": "2023-09-20T14:46:00.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "Norman Person", + "Shamek Farrah" + ], + "track": "Aisha", + "duration": 559, + "playDate": "2023-09-20T15:10:09.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "Cheo Feliciano" + ], + "track": "Aprieta (Oye Cómo Va)", + "duration": 195, + "playDate": "2023-09-20T15:38:12.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "A Collection of Boogie", + "Jazz Funk", + "Disco with Mehdi El" + ], + "track": "Aquil", + "duration": 3072, + "playDate": "2023-09-20T17:55:05.000Z" + }, + "meta": { + "source": "Maloja" + } + } +] diff --git a/src/backend/tests/scrobbler/TestScrobbler.ts b/src/backend/tests/scrobbler/TestScrobbler.ts new file mode 100644 index 00000000..d8f7d410 --- /dev/null +++ b/src/backend/tests/scrobbler/TestScrobbler.ts @@ -0,0 +1,23 @@ +import AbstractScrobbleClient from "../../scrobblers/AbstractScrobbleClient"; +import {PlayObject} from "../../../core/Atomic"; +import {getLogger} from "../../common/logging"; +import {Notifiers} from "../../notifier/Notifiers"; +import EventEmitter from "events"; + +export class TestScrobbler extends AbstractScrobbleClient { + + constructor() { + const logger = getLogger({}); + const notifier = new Notifiers(new EventEmitter(), new EventEmitter(), new EventEmitter()); + super('test', 'Test', {name: 'test'}, notifier, new EventEmitter(), logger); + } + + scrobble(playObj: PlayObject): Promise { + return Promise.resolve(true); + } + + alreadyScrobbled = async (playObj: PlayObject, log?: boolean): Promise => { + return (await this.existingScrobble(playObj)) !== undefined; + } + +} diff --git a/src/backend/tests/scrobbler/scrobblers.test.ts b/src/backend/tests/scrobbler/scrobblers.test.ts new file mode 100644 index 00000000..f017ba58 --- /dev/null +++ b/src/backend/tests/scrobbler/scrobblers.test.ts @@ -0,0 +1,113 @@ +import {describe, it} from 'mocha'; +import {assert} from 'chai'; +import clone from 'clone'; + +import withDuration from '../plays/withDuration.json'; +import mixedDuration from '../plays/mixedDuration.json'; + +import {TestScrobbler} from "./TestScrobbler"; +import {asPlays, generatePlay, normalizePlays} from "../utils/PlayTestUtils"; +import dayjs from "dayjs"; + +const firstPlayDate = dayjs().subtract(1, 'hour'); + +const withDurPlays = asPlays(withDuration); +const mixedDurPlays = asPlays(mixedDuration); +const normalizedWithDur = normalizePlays(withDurPlays, {initialDate: firstPlayDate}); +const normalizedWithMixedDur = normalizePlays(mixedDurPlays, {initialDate: firstPlayDate}); + +const testScrobbler = new TestScrobbler(); +testScrobbler.lastScrobbleCheck = dayjs().subtract(60, 'seconds'); + +describe('When scrobble is unique', function () { + + it('It is not detected as duplicate when play date is newer than most recent', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; + + const newScrobble = generatePlay({ + playDate: normalizedWithDur[normalizedWithDur.length - 1].data.playDate.add(70, 'seconds') + }); + + assert.isFalse(await testScrobbler.alreadyScrobbled(newScrobble)); + }); + + it('It is not detected as duplicate when play date is close to an existing scrobble', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; + + const newScrobble = generatePlay({ + playDate: normalizedWithDur[normalizedWithDur.length - 2].data.playDate.add(3, 'seconds') + }); + + assert.isFalse(await testScrobbler.alreadyScrobbled(newScrobble)); + }); +}); + +describe('When scrobble track/artist/album matches existing but is a new scrobble', function () { + + + it('Is not detected as duplicate when play date is different by more than 10 seconds (high granularity source)', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; + + const timeOffPos = clone(normalizedWithDur[normalizedWithDur.length - 1]); + timeOffPos.data.playDate = timeOffPos.data.playDate.add(11, 's'); + + const timeOffNeg = clone(normalizedWithDur[normalizedWithDur.length - 1]); + timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(11, 's'); + + assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffPos)); + assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffNeg)); + }); + + it('Is not detected as duplicate when play date is different by more than 60 seconds (low granularity source)', async function () { + + testScrobbler.recentScrobbles = normalizePlays(withDurPlays, {initialDate: firstPlayDate, defaultMeta: {source: 'subsonic'}}); + + const timeOffPos = clone(normalizedWithDur[normalizedWithDur.length - 1]); + timeOffPos.data.playDate = timeOffPos.data.playDate.add(61, 's'); + + const timeOffNeg = clone(normalizedWithDur[normalizedWithDur.length - 1]); + timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(61, 's'); + + assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffPos)); + assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffNeg)); + }); +}); + +describe('When scrobble is a duplicate', function () { + + it('Is detected as duplicate when an exact match', async function () { + testScrobbler.recentScrobbles = normalizedWithDur; + assert.isTrue(await testScrobbler.alreadyScrobbled(normalizedWithDur[normalizedWithDur.length - 1])); + }); + + it('Is detected as duplicate when play date is off by less than 10 seconds (high granularity source)', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; + + const timeOffPos = clone(normalizedWithDur[normalizedWithDur.length - 1]); + timeOffPos.data.playDate = timeOffPos.data.playDate.add(10, 's'); + + const timeOffNeg = clone(normalizedWithDur[normalizedWithDur.length - 1]); + timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(10, 's'); + + assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffPos)); + assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffNeg)); + }); + + it('Is detected as duplicate when play date is off by less than 60 seconds (low granularity source)', async function () { + + testScrobbler.recentScrobbles = normalizePlays(withDurPlays, {initialDate: firstPlayDate, defaultMeta: {source: 'subsonic'}}); + + const timeOffPos = clone(normalizedWithDur[normalizedWithDur.length - 1]); + timeOffPos.data.playDate = timeOffPos.data.playDate.add(59, 's'); + + const timeOffNeg = clone(normalizedWithDur[normalizedWithDur.length - 1]); + timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(59, 's'); + + assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffPos)); + assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffNeg)); + }); +}); diff --git a/src/backend/tests/utils/PlayTestUtils.ts b/src/backend/tests/utils/PlayTestUtils.ts new file mode 100644 index 00000000..e4bf1cc7 --- /dev/null +++ b/src/backend/tests/utils/PlayTestUtils.ts @@ -0,0 +1,95 @@ +import {JsonPlayObject, ObjectPlayData, PlayData, PlayMeta, PlayObject} from "../../../core/Atomic"; +import dayjs, {Dayjs} from "dayjs"; +import utc from "dayjs/plugin/utc.js"; +import isBetween from "dayjs/plugin/isBetween.js"; +import relativeTime from "dayjs/plugin/relativeTime.js"; +import duration from "dayjs/plugin/duration.js"; +import timezone from "dayjs/plugin/timezone.js"; +import {faker} from '@faker-js/faker'; + +dayjs.extend(utc) +dayjs.extend(isBetween); +dayjs.extend(relativeTime); +dayjs.extend(duration); +dayjs.extend(timezone); + +export const asPlays = (data: object[]): PlayObject[] => { + return data.map(x => { + const y = x as JsonPlayObject; + return { + ...y, + data: { + ...y.data, + playDate: dayjs(y.data.playDate) + } + } + }); +} + +export const normalizePlays = (plays: PlayObject[], + options?: { + initialDate?: Dayjs, + defaultDuration?: number, + defaultData?: ObjectPlayData, + defaultMeta?: PlayMeta + } +): PlayObject[] => { + const { + initialDate, + defaultDuration = 180, + defaultData = {}, + defaultMeta = {} + } = options || {}; + let date = initialDate; + if (date === undefined) { + const firstDatedPlay = plays.find(x => x.data.playDate !== undefined); + if (firstDatedPlay !== undefined) { + date = firstDatedPlay.data.playDate; + } else { + throw new Error('No initial date specified and no play had a defined date'); + } + } + let lastTrackEndsAt: Dayjs | undefined = undefined; + const normalizedPlays: PlayObject[] = []; + + for (const play of plays) { + + const cleanPlay = {...play}; + + if (lastTrackEndsAt === undefined) { + // first track + cleanPlay.data.playDate = date; + } else { + cleanPlay.data.playDate = lastTrackEndsAt.add(1, 'second'); + } + cleanPlay.data = { + ...cleanPlay.data, + ...defaultData + } + cleanPlay.meta = { + ...cleanPlay.meta, + ...defaultMeta + } + lastTrackEndsAt = cleanPlay.data.playDate.add(cleanPlay.data.duration ?? defaultDuration, 'seconds'); + normalizedPlays.push(cleanPlay); + } + + return normalizedPlays; +} + +export const generatePlay = (data: ObjectPlayData = {}, meta: PlayMeta = {}): PlayObject => { + return { + data: { + track: faker.music.songName(), + artists: faker.helpers.multiple(faker.person.fullName, {count: {min: 1, max: 2}}), + duration: faker.number.int({min: 30, max: 300}), + playDate: dayjs().subtract(faker.number.int({min: 1, max: 800})), + album: faker.music.songName(), + ...data + }, + meta: { + source: faker.word.noun(), + ...meta, + } + } +} -- 2.54.0 From 2bbe2e6ba0c7bb7c2c4764976cc7fa3818847447 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 27 Sep 2023 14:14:34 -0400 Subject: [PATCH 49/82] refactor(scrobble): Print score breakdown in different statement Is more readable --- src/backend/scrobblers/AbstractScrobbleClient.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index ad577941..ced42e87 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -298,7 +298,7 @@ export default abstract class AbstractScrobbleClient { } let existingScrobble; - let closestMatch: {score: number, breakdowns: string[], scrobble?: PlayObject} = {score: 0, breakdowns: ['None']}; + let closestMatch: {score: number, breakdowns: string[], confidence: string, scrobble?: PlayObject} = {score: 0, breakdowns: [], confidence: 'None'}; // then check if we have already recorded this const [existingExactSubmitted, existingDataSubmitted = []] = this.findExistingSubmittedPlayObj(playObj); @@ -309,7 +309,8 @@ export default abstract class AbstractScrobbleClient { closestMatch = { score: 1, - breakdowns: ['Exact Match found in previously successfully scrobbled'] + breakdowns: [], + confidence: 'Exact Match found in previously successfully scrobbled' } } // if not though then we need to check recent scrobbles from scrobble api. @@ -363,7 +364,8 @@ export default abstract class AbstractScrobbleClient { const scoreInfo = { score, scrobble: x, - breakdowns: this.verboseOptions.match.confidenceBreakdown ? scoreBreakdowns : [confidence] + confidence, + breakdowns: scoreBreakdowns } if (closestMatch.score <= score && score > 0) { @@ -375,8 +377,12 @@ export default abstract class AbstractScrobbleClient { } if ((existingScrobble !== undefined && this.verboseOptions.match.onMatch) || (existingScrobble === undefined && this.verboseOptions.match.onNoMatch)) { - const closestScrobble = closestMatch.scrobble === undefined ? closestMatch.breakdowns.join(' | ') : `Closest Scrobble: ${buildTrackString(closestMatch.scrobble, scoreTrackOpts)} => ${closestMatch.breakdowns.join(' | ')}`; + const closestScrobble = `Closest Scrobble: ${buildTrackString(closestMatch.scrobble, scoreTrackOpts)} => ${closestMatch.confidence}`; this.logger.debug(`(Existing Check) Source: ${buildTrackString(playObj, scoreTrackOpts)} => ${closestScrobble}`); + if (this.verboseOptions.match.confidenceBreakdown === true) { + this.logger.debug(`Breakdown: +${closestMatch.breakdowns.join('\n')}`); + } } return existingScrobble; } -- 2.54.0 From a953f83d07eebb94003568d8ff40f2fa69ed9218 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 27 Sep 2023 14:14:49 -0400 Subject: [PATCH 50/82] test(scrobble): Add more tests --- src/backend/tests/plays/withDuration.json | 2 +- .../tests/scrobbler/scrobblers.test.ts | 78 ++++++++++++++++++- 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/src/backend/tests/plays/withDuration.json b/src/backend/tests/plays/withDuration.json index a9a1724f..3ceb0541 100644 --- a/src/backend/tests/plays/withDuration.json +++ b/src/backend/tests/plays/withDuration.json @@ -17,7 +17,7 @@ "artists": [ "Kuna Maze" ], - "track": "Jimbo", + "track": "Jimbó", "duration": 255, "playDate": "2023-09-20T14:46:00.000Z" }, diff --git a/src/backend/tests/scrobbler/scrobblers.test.ts b/src/backend/tests/scrobbler/scrobblers.test.ts index f017ba58..bf05853c 100644 --- a/src/backend/tests/scrobbler/scrobblers.test.ts +++ b/src/backend/tests/scrobbler/scrobblers.test.ts @@ -17,6 +17,12 @@ const normalizedWithDur = normalizePlays(withDurPlays, {initialDate: firstPlayDa const normalizedWithMixedDur = normalizePlays(mixedDurPlays, {initialDate: firstPlayDate}); const testScrobbler = new TestScrobbler(); +testScrobbler.verboseOptions = { + match: { + onMatch: true, + onNoMatch: true, + confidenceBreakdown: true + }}; testScrobbler.lastScrobbleCheck = dayjs().subtract(60, 'seconds'); describe('When scrobble is unique', function () { @@ -46,6 +52,28 @@ describe('When scrobble is unique', function () { describe('When scrobble track/artist/album matches existing but is a new scrobble', function () { + it('Is not detected as duplicate when artist is same but track is different (similar time)', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; + + const diffPlay = clone(normalizedWithDur[1]); + diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); + diffPlay.data.track = 'A Totally Different Track' + + assert.isFalse(await testScrobbler.alreadyScrobbled(diffPlay)); + }); + + it('Is not detected as duplicate when track is same but artist is different (similar time)', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; + + const diffPlay = clone(normalizedWithDur[1]); + diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); + diffPlay.data.artists = ['A Different Artist']; + + assert.isFalse(await testScrobbler.alreadyScrobbled(diffPlay)); + }); + it('Is not detected as duplicate when play date is different by more than 10 seconds (high granularity source)', async function () { @@ -76,13 +104,47 @@ describe('When scrobble track/artist/album matches existing but is a new scrobbl }); }); -describe('When scrobble is a duplicate', function () { +describe('When scrobble is a duplicate (title/artists/album)', function () { it('Is detected as duplicate when an exact match', async function () { testScrobbler.recentScrobbles = normalizedWithDur; assert.isTrue(await testScrobbler.alreadyScrobbled(normalizedWithDur[normalizedWithDur.length - 1])); }); + it('Is detected as duplicate when artist/title differences are whitespace or case', async function () { + testScrobbler.recentScrobbles = normalizedWithDur; + const ref = normalizedWithDur[3]; + + const diffPlay = clone(ref); + diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); + + + diffPlay.data.track = ref.data.track.toUpperCase(); + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + + diffPlay.data.track = ` ${ref.data.track} `; + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + + diffPlay.data.track = ref.data.track.replaceAll(' ', ' '); + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + + diffPlay.data.artists = ref.data.artists.map(x => x.toUpperCase()); + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + + diffPlay.data.artists = ref.data.artists.map(x => x.replaceAll(' ', ' ')); + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + }); + + it('Is detected as duplicate when artist/title differences are from unicode normalization', async function () { + testScrobbler.recentScrobbles = normalizedWithDur; + const ref = normalizedWithDur[1]; + + const diffPlay = clone(ref); + diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); + diffPlay.data.track = 'Jimbo'; + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + }); + it('Is detected as duplicate when play date is off by less than 10 seconds (high granularity source)', async function () { testScrobbler.recentScrobbles = normalizedWithDur; @@ -110,4 +172,18 @@ describe('When scrobble is a duplicate', function () { assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffPos)); assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffNeg)); }); + + describe('When existing has duration', function () { + + it('Is detected as duplicate when play date is close to the end of an existing scrobble', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; + + const timeEnd = clone(normalizedWithDur[normalizedWithDur.length - 1]); + timeEnd.data.playDate = timeEnd.data.playDate.add(timeEnd.data.duration, 's'); + + assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); + }); + + }); }); -- 2.54.0 From 9758568ded422ffb902d8c7577f905c4f1d2eef7 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 27 Sep 2023 15:43:44 -0400 Subject: [PATCH 51/82] feat: Implement new string comparison logic --- .../common/vendor/ListenbrainzApiClient.ts | 17 +- src/backend/tests/strings.test.ts | 65 ++++++ src/backend/utils.ts | 132 +----------- src/backend/utils/StringUtils.ts | 196 ++++++++++++++++++ 4 files changed, 271 insertions(+), 139 deletions(-) create mode 100644 src/backend/tests/strings.test.ts create mode 100644 src/backend/utils/StringUtils.ts diff --git a/src/backend/common/vendor/ListenbrainzApiClient.ts b/src/backend/common/vendor/ListenbrainzApiClient.ts index 173621ca..9e8aa99f 100644 --- a/src/backend/common/vendor/ListenbrainzApiClient.ts +++ b/src/backend/common/vendor/ListenbrainzApiClient.ts @@ -1,23 +1,20 @@ import AbstractApiClient from "./AbstractApiClient"; import request, {Request} from 'superagent'; import { ListenBrainzClientData } from "../infrastructure/config/client/listenbrainz"; -import {DEFAULT_RETRY_MULTIPLIER, DELIMITERS, FormatPlayObjectOptions} from "../infrastructure/Atomic"; +import {DEFAULT_RETRY_MULTIPLIER, FormatPlayObjectOptions} from "../infrastructure/Atomic"; import dayjs from "dayjs"; import { stringSameness } from '@foxxmd/string-sameness'; import { combinePartsToString, - containsDelimiters, - findDelimiters, - normalizeStr, - parseArtistCredits, - parseCredits, - parseStringList, - parseTrackCredits, - unique, - uniqueNormalizedStrArr, } from "../../utils"; import { PlayObject } from "../../../core/Atomic"; import { slice } from "../../../core/StringUtils"; +import { + findDelimiters, + normalizeStr, parseArtistCredits, parseCredits, + parseTrackCredits, + uniqueNormalizedStrArr +} from "../../utils/StringUtils"; export interface ArtistMBIDMapping { diff --git a/src/backend/tests/strings.test.ts b/src/backend/tests/strings.test.ts new file mode 100644 index 00000000..75a44e41 --- /dev/null +++ b/src/backend/tests/strings.test.ts @@ -0,0 +1,65 @@ +import {describe, it} from 'mocha'; +import {assert} from 'chai'; +import {compareNormalizedStrings} from "../utils/StringUtils"; + + +describe('String Comparisons', function () { + + it('should ignore punctuation', async function () { + const result = compareNormalizedStrings('this string! is the. same', 'this string is the same'); + assert.isAtLeast(result.highScore, 100); + }); + + it('should ignore whitespace', async function () { + const result = compareNormalizedStrings('this string is the same ', 'this string is the same'); + assert.isAtLeast(result.highScore, 100); + }); + + it('should ignore case', async function () { + const result = compareNormalizedStrings('ThIs STRING iS THe SAMe', 'this string is the same'); + assert.isAtLeast( result.highScore, 100); + }); + + it('should normalize unicode', async function () { + const tests = [ + ['Enamorate Bailando','Enamórate Bailando'], + ['Dina Ogon', 'Dina Ögon'], + ['Nana', 'Nanã'], + ['Nana', 'Nanä'] + ] + + for(const test of tests) { + const result = compareNormalizedStrings(test[0], test[1]); + assert.equal(100, result.highScore); + } + }); + + it('should score small changes correctly', async function () { + const tests = [ + ['there is change', 'therr is change'], + ['laser cannon', 'lazer cannon'], + ['Monster', 'Manster'], + ['What are you doing', 'hwat are you doing'] + ] + + for(const test of tests) { + const result = compareNormalizedStrings(test[0], test[1]); + assert.isAtLeast( result.highScoreWeighted, 80, `Comparing: '${test[0]}' | '${test[1]}'`); + } + }); + + it('should score word bags correctly', async function () { + const tests = [ + ['there change is', 'there is change'], + ['laser cannon', 'cannon laser'], + ['One two three four', 'One four two threee'], + ['you, doin hwat are', 'hwat are you doing'], + ['My Track (feat. Tourist1, Artist2)', 'My Track (feat. Artist2, Tourist1)'] + ] + + for(const test of tests) { + const result = compareNormalizedStrings(test[0], test[1]); + assert.isAtLeast( result.highScoreWeighted, 80, `Comparing: '${test[0]}' | '${test[1]}'`); + } + }); +}); diff --git a/src/backend/utils.ts b/src/backend/utils.ts index b3ce4e95..b54c952b 100644 --- a/src/backend/utils.ts +++ b/src/backend/utils.ts @@ -7,8 +7,8 @@ import {TimeoutError, WebapiError} from "spotify-web-api-node/src/response-error import Ajv, {Schema} from 'ajv'; import { asPlayerStateData, - DEFAULT_SCROBBLE_DURATION_THRESHOLD, DEFAULT_SCROBBLE_PERCENT_THRESHOLD, - DELIMITERS, + DEFAULT_SCROBBLE_DURATION_THRESHOLD, + DEFAULT_SCROBBLE_PERCENT_THRESHOLD, lowGranularitySources, NO_DEVICE, NO_USER, @@ -24,7 +24,7 @@ import {Request} from "express"; import pathUtil from "path"; import {ErrorWithCause} from "pony-cause"; import backoffStrategies from '@kenyip/backoff-strategies'; -import {ScrobbleThresholds} from "./common/infrastructure/config/source/index"; +import {ScrobbleThresholds} from "./common/infrastructure/config/source"; import {replaceResultTransformer, stripIndentTransformer, TemplateTag, trimResultTransformer} from 'common-tags'; import {Duration} from "dayjs/plugin/duration.js"; import {ListenRange, PlayObject} from "../core/Atomic"; @@ -149,22 +149,6 @@ export const unique = (arr: T[]): T[] => { return Array.from(new Set(arr)) } -export const PUNCTUATION_WHITESPACE_REGEX = new RegExp(/[^\w\d]/g); -export const uniqueNormalizedStrArr = (arr: string[]): string[] => { - return arr.reduce((acc: string[], curr) => { - const normalizedCurr = normalizeStr(curr) - if (!acc.some(x => normalizeStr(x) === normalizedCurr)) { - return acc.concat(curr); - } - return acc; - }, []); -} - -// https://stackoverflow.com/a/37511463/1469797 -export const normalizeStr = (str: string): string => { - return str.normalize('NFD').replace(/[\u0300-\u036f]/g, "").replace(PUNCTUATION_WHITESPACE_REGEX, '').toLocaleLowerCase(); -} - export const returnDuplicateStrings = (arr: any) => { const alreadySeen: any = []; const dupes: any = []; @@ -744,99 +728,6 @@ export const pollingBackoff = (attempt: number, scaleFactor: number = 1): number return Math.round(backoffStrat(attempt + 1) / 1000); } -export interface PlayCredits { - primary: string - secondary?: string[] -} -/** - * For matching the most common track/artist pattern that has a joiner - * - * Primary ft. 2nd Artist, 3rd Artist - * Primary (2nd Artist) - * Primary [featuring 2nd Artist] - * - * ____ - * - * => Primary may or may not exist - * => Primary must not have an opening character ( [ - * => Secondaries may or may not have an opening character ( [ - * => MUST begin with joiner ft. feat. featuring with vs. - * => May have closing character ) ] - * */ -export const SECONDARY_ARTISTS_SECTION_REGEX = new RegExp(/^(?[^(\[]*)?(?[(\[]?(?\Wft\.?|\Wfeat\.?|featuring|\Wvs\.?) (?[^)\]]*)(?:[)\]]|\s*)$)/i); -// export const SECONDARY_ARTISTS_REGEX = new RegExp(//ig); -export const parseCredits = (str: string, delimiters?: boolean | string[]): PlayCredits => { - if(str.trim() === '') { - return undefined; - } - let primary: string | undefined; - let secondary: string[] = []; - const results = parseRegexSingleOrFail(SECONDARY_ARTISTS_SECTION_REGEX, str); - if(results !== undefined) { - primary = results.named.primary !== undefined ? results.named.primary.trim() : undefined; - let delims: string[] | undefined; - if(Array.isArray(delimiters)) { - delims = delimiters; - } else if(delimiters === false) { - delims = []; - } - secondary = parseStringList(results.named.secondaryArtists as string, delims) - return { - primary, - secondary - }; - } - return undefined; -} - -export const parseArtistCredits = (str: string, delimiters?: boolean | string[]): PlayCredits | undefined => { - if(str.trim() === '') { - return undefined; - } - let delims: string[] | undefined; - if(Array.isArray(delimiters)) { - delims = delimiters; - } else if(delimiters === false) { - delims = []; - } - const withJoiner = parseCredits(str, delimiters); - if(withJoiner !== undefined) { - // all this does is make sure and "ft" or parenthesis/brackets are separated -- - // it doesn't also separate primary artists so do that now - const primaries = parseStringList(withJoiner.primary, delims); - if(primaries.length > 1) { - return { - primary: primaries[0], - secondary: primaries.slice(1).concat(withJoiner.secondary) - } - } - return withJoiner; - } - // likely this is a plain string with just delims - const artists = parseStringList(str, delims); - if(artists.length > 1) { - return { - primary: artists[0], - secondary: artists.slice(1) - } - } - return { - primary: artists[0] - } -} - -export const parseTrackCredits = (str: string, delimiters?: boolean | string[]): PlayCredits | undefined => parseCredits(str, delimiters); - -export const parseStringList = (str: string, delimiters: string[] = [',', '&', '/', '\\']): string[] => { - if(delimiters.length === 0) { - return [str]; - } - return delimiters.reduce((acc: string[], curr: string) => { - const explodedStrings = acc.map(x => x.split(curr)); - return explodedStrings.flat(1); - }, [str]).map(x => x.trim()); -} - export const parseRegex = (reg: RegExp, val: string): RegExResult[] | undefined => { if (reg.global) { @@ -877,23 +768,6 @@ export const parseRegexSingleOrFail = (reg: RegExp, val: string): RegExResult | return undefined; } -export const containsDelimiters = (str: string) => { - return null !== str.match(/[,&\/\\]+/i); -} - -export const findDelimiters = (str: string) => { - const found: string[] = []; - for(const d of DELIMITERS) { - if(str.indexOf(d) !== -1) { - found.push(d); - } - } - if(found.length === 0) { - return undefined; - } - return found; -} - export const intersect = (a: Array, b: Array) => { const setA = new Set(a); const setB = new Set(b); diff --git a/src/backend/utils/StringUtils.ts b/src/backend/utils/StringUtils.ts new file mode 100644 index 00000000..6ca9cf66 --- /dev/null +++ b/src/backend/utils/StringUtils.ts @@ -0,0 +1,196 @@ +import {DELIMITERS} from "../common/infrastructure/Atomic"; +import {parseRegexSingleOrFail} from "../utils"; +import {PlayObject} from "../../core/Atomic"; +import {stringSameness, StringSamenessResult} from "@foxxmd/string-sameness"; +// @ts-ignore +import {levenStrategy} from "@foxxmd/string-sameness/strategies/leven" +// @ts-ignore +import {diceStrategy} from "@foxxmd/string-sameness/strategies/deice"; + +export const PUNCTUATION_WHITESPACE_REGEX = new RegExp(/[^\w\d]/g); +export const PUNCTUATION_REGEX = new RegExp(/[^\w\d\s]/g); + +export const MULTI_WHITESPACE_REGEX = new RegExp(/\s{2,}/g); +export const uniqueNormalizedStrArr = (arr: string[]): string[] => { + return arr.reduce((acc: string[], curr) => { + const normalizedCurr = normalizeStr(curr) + if (!acc.some(x => normalizeStr(x) === normalizedCurr)) { + return acc.concat(curr); + } + return acc; + }, []); +} +// https://stackoverflow.com/a/37511463/1469797 +export const normalizeStr = (str: string, options?: {keepSingleWhitespace?: boolean}): string => { + const {keepSingleWhitespace = false} = options; + const normal = str.normalize('NFD').replace(/[\u0300-\u036f]/g, ""); + if(!keepSingleWhitespace) { + return normal.replace(PUNCTUATION_WHITESPACE_REGEX, '').toLocaleLowerCase(); + } + return normal.replace(PUNCTUATION_REGEX, '').replace(MULTI_WHITESPACE_REGEX, ' ').toLocaleLowerCase().trim(); +} + +export interface PlayCredits { + primary: string + secondary?: string[] +} + +/** + * For matching the most common track/artist pattern that has a joiner + * + * Primary ft. 2nd Artist, 3rd Artist + * Primary (2nd Artist) + * Primary [featuring 2nd Artist] + * + * ____ + * + * => Primary may or may not exist + * => Primary must not have an opening character ( [ + * => Secondaries may or may not have an opening character ( [ + * => MUST begin with joiner ft. feat. featuring with vs. + * => May have closing character ) ] + * */ +export const SECONDARY_ARTISTS_SECTION_REGEX = new RegExp(/^(?[^(\[]*)?(?[(\[]?(?\Wft\.?|\Wfeat\.?|featuring|\Wvs\.?) (?[^)\]]*)(?:[)\]]|\s*)$)/i); +// export const SECONDARY_ARTISTS_REGEX = new RegExp(//ig); +export const parseCredits = (str: string, delimiters?: boolean | string[]): PlayCredits => { + if (str.trim() === '') { + return undefined; + } + let primary: string | undefined; + let secondary: string[] = []; + const results = parseRegexSingleOrFail(SECONDARY_ARTISTS_SECTION_REGEX, str); + if (results !== undefined) { + primary = results.named.primary !== undefined ? results.named.primary.trim() : undefined; + let delims: string[] | undefined; + if (Array.isArray(delimiters)) { + delims = delimiters; + } else if (delimiters === false) { + delims = []; + } + secondary = parseStringList(results.named.secondaryArtists as string, delims) + return { + primary, + secondary + }; + } + return undefined; +} +export const parseArtistCredits = (str: string, delimiters?: boolean | string[]): PlayCredits | undefined => { + if (str.trim() === '') { + return undefined; + } + let delims: string[] | undefined; + if (Array.isArray(delimiters)) { + delims = delimiters; + } else if (delimiters === false) { + delims = []; + } + const withJoiner = parseCredits(str, delimiters); + if (withJoiner !== undefined) { + // all this does is make sure and "ft" or parenthesis/brackets are separated -- + // it doesn't also separate primary artists so do that now + const primaries = parseStringList(withJoiner.primary, delims); + if (primaries.length > 1) { + return { + primary: primaries[0], + secondary: primaries.slice(1).concat(withJoiner.secondary) + } + } + return withJoiner; + } + // likely this is a plain string with just delims + const artists = parseStringList(str, delims); + if (artists.length > 1) { + return { + primary: artists[0], + secondary: artists.slice(1) + } + } + return { + primary: artists[0] + } +} +export const parseTrackCredits = (str: string, delimiters?: boolean | string[]): PlayCredits | undefined => parseCredits(str, delimiters); +export const parseStringList = (str: string, delimiters: string[] = [',', '&', '/', '\\']): string[] => { + if (delimiters.length === 0) { + return [str]; + } + return delimiters.reduce((acc: string[], curr: string) => { + const explodedStrings = acc.map(x => x.split(curr)); + return explodedStrings.flat(1); + }, [str]).map(x => x.trim()); +} +export const containsDelimiters = (str: string) => { + return null !== str.match(/[,&\/\\]+/i); +} +export const findDelimiters = (str: string) => { + const found: string[] = []; + for (const d of DELIMITERS) { + if (str.indexOf(d) !== -1) { + found.push(d); + } + } + if (found.length === 0) { + return undefined; + } + return found; +} + +export const compareScrobbleTracks = (existing: PlayObject, candidate: PlayObject): number => { + const { + data: { + track: existingTrack, + } = {}, + } = existing; + + const { + data: { + track: candidateTrack + } + } = candidate; + + return compareNormalizedStrings(existingTrack, candidateTrack).highScoreWeighted; +} + +export const compareNormalizedStrings = (existing: string, candidate: string): StringSamenessResult => { + + const normalExisting = normalizeStr(existing, {keepSingleWhitespace: true}); + const normalCandidate = normalizeStr(candidate, {keepSingleWhitespace: true}); + + // there may be scenarios where a track differs in *ordering* of ancillary information between sources + // EX My Track (feat. Art1, Art2) -- My Track (feat. Art2 Art1) + // so instead of naively comparing the entire track string against the candidate we + // * first try to match up all white-space separated tokens + // * recombine with closest tokens in order + // * then check sameness + const eTokens = normalExisting.split(' '); + const cTokens = normalCandidate.split(' '); + + const orderedCandidateTokens = eTokens.reduce((acc: { ordered: string[], remaining: string[] }, curr) => { + let highScore = 0; + let highIndex = undefined; + let index = 0; + for (const token of acc.remaining) { + const result = stringSameness(curr, token); + if (result.highScoreWeighted > highScore) { + highScore = result.highScoreWeighted; + highIndex = index; + } + index++; + } + + const splicedRemaining = [...acc.remaining]; + splicedRemaining.splice(highIndex, 1); + + return {ordered: acc.ordered.concat(acc.remaining[highIndex]), remaining: splicedRemaining}; + }, {ordered: [], remaining: cTokens}); + + const allOrderedCandidateTokens = orderedCandidateTokens.ordered.concat(orderedCandidateTokens.remaining); + const orderedCandidateString = allOrderedCandidateTokens.join(' '); + + // since we have already "matched" up words by order we don't want to use cosine strat + // bc it only does comparisons between whole words in a sentence (instead of all letters in a string) + // which makes it inaccurate for small-n sentences and typos + + return stringSameness(normalExisting, orderedCandidateString, {transforms: [], strategies: [levenStrategy, diceStrategy]}); +} -- 2.54.0 From 159901f79e250d2567f24517416b134c3f630fd5 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 27 Sep 2023 15:44:22 -0400 Subject: [PATCH 52/82] refactor(tests): Move jellyfin/listenbrainz test into own folders --- .../tests/{ => jellyfin}/jellyfin.test.ts | 8 ++++---- .../{ => listenbrainz}/listenbrainz.test.ts | 20 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) rename src/backend/tests/{ => jellyfin}/jellyfin.test.ts (83%) rename src/backend/tests/{ => listenbrainz}/listenbrainz.test.ts (81%) diff --git a/src/backend/tests/jellyfin.test.ts b/src/backend/tests/jellyfin/jellyfin.test.ts similarity index 83% rename from src/backend/tests/jellyfin.test.ts rename to src/backend/tests/jellyfin/jellyfin.test.ts index 2485e205..71894025 100644 --- a/src/backend/tests/jellyfin.test.ts +++ b/src/backend/tests/jellyfin/jellyfin.test.ts @@ -1,11 +1,11 @@ import {describe, it} from 'mocha'; import {assert} from 'chai'; -import samplePayload from './jellyfin/playbackProgressSample.json'; +import samplePayload from './playbackProgressSample.json'; -import JellyfinSource from "../sources/JellyfinSource"; +import JellyfinSource from "../../sources/JellyfinSource"; import EventEmitter from "events"; -import {getLogger} from "../common/logging"; -import {JsonPlayObject, PlayObject} from "../../core/Atomic"; +import {getLogger} from "../../common/logging"; +import {JsonPlayObject, PlayObject} from "../../../core/Atomic"; const dataAsFixture = (data: any): TestFixture => { return data as TestFixture; diff --git a/src/backend/tests/listenbrainz.test.ts b/src/backend/tests/listenbrainz/listenbrainz.test.ts similarity index 81% rename from src/backend/tests/listenbrainz.test.ts rename to src/backend/tests/listenbrainz/listenbrainz.test.ts index 35fb54e0..99479e06 100644 --- a/src/backend/tests/listenbrainz.test.ts +++ b/src/backend/tests/listenbrainz/listenbrainz.test.ts @@ -1,19 +1,19 @@ import {describe, it} from 'mocha'; import {assert} from 'chai'; // correct mappings -import multiArtistInArtistName from './listenbrainz/correctlyMapped/multiArtistInArtistName.json'; -import multiArtistsInTrackName from './listenbrainz/correctlyMapped/multiArtistInTrackName.json'; -import noArtistMapping from './listenbrainz/correctlyMapped/noArtistMapping.json'; -import multiMappedArtistsWithSingleUserArtist from './listenbrainz/correctlyMapped/multiArtistMappingWithSingleRecordedArtist.json'; -import artistWithProperJoiner from './listenbrainz/correctlyMapped/artistProperHasJoinerInName.json'; -import normalizedValues from './listenbrainz/correctlyMapped/normalizedName.json'; -import slightlyDifferentNames from './listenbrainz/correctlyMapped/trackNameSlightlyDifferent.json'; +import multiArtistInArtistName from './correctlyMapped/multiArtistInArtistName.json'; +import multiArtistsInTrackName from './correctlyMapped/multiArtistInTrackName.json'; +import noArtistMapping from './correctlyMapped/noArtistMapping.json'; +import multiMappedArtistsWithSingleUserArtist from './correctlyMapped/multiArtistMappingWithSingleRecordedArtist.json'; +import artistWithProperJoiner from './correctlyMapped/artistProperHasJoinerInName.json'; +import normalizedValues from './correctlyMapped/normalizedName.json'; +import slightlyDifferentNames from './correctlyMapped/trackNameSlightlyDifferent.json'; // incorrect mappings -import incorrectMultiArtistsTrackName from './listenbrainz/incorrectlyMapped/multiArtistsInTrackName.json'; -import veryWrong from './listenbrainz/incorrectlyMapped/veryWrong.json'; +import incorrectMultiArtistsTrackName from './incorrectlyMapped/multiArtistsInTrackName.json'; +import veryWrong from './incorrectlyMapped/veryWrong.json'; -import {ListenbrainzApiClient, ListenResponse} from "../common/vendor/ListenbrainzApiClient"; +import {ListenbrainzApiClient, ListenResponse} from "../../common/vendor/ListenbrainzApiClient"; interface ExpectedResults { artists: string[] -- 2.54.0 From 9512ca7e84771288dad914d0d49de1b83cca4027 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 27 Sep 2023 16:01:09 -0400 Subject: [PATCH 53/82] feat(scrobble): Use new string approach for track And move weights to constants --- src/backend/common/infrastructure/Atomic.ts | 6 +++ .../scrobblers/AbstractScrobbleClient.ts | 49 +++++++------------ 2 files changed, 23 insertions(+), 32 deletions(-) diff --git a/src/backend/common/infrastructure/Atomic.ts b/src/backend/common/infrastructure/Atomic.ts index e551104e..048744f4 100644 --- a/src/backend/common/infrastructure/Atomic.ts +++ b/src/backend/common/infrastructure/Atomic.ts @@ -206,3 +206,9 @@ export interface numberFormatOptions { } export const DELIMITERS = [',','&','\/','\\']; + +export const DUP_SCORE_THRESHOLD = 0.7; +export const ARTIST_WEIGHT = 0.2; +export const TITLE_WEIGHT = 0.3; +export const TIME_WEIGHT = 0.5; +export const REFERENCE_WEIGHT = 0.5; diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index ced42e87..ffb97ebe 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -6,13 +6,14 @@ import { setIntersection, sortByOldestPlayDate, } from "../utils"; import { - ClientType, + ARTIST_WEIGHT, + ClientType, DUP_SCORE_THRESHOLD, FormatPlayObjectOptions, INITIALIZED, INITIALIZING, InitState, - NOT_INITIALIZED, - ScrobbledPlayObject, + NOT_INITIALIZED, REFERENCE_WEIGHT, + ScrobbledPlayObject, TIME_WEIGHT, TITLE_WEIGHT, } from "../common/infrastructure/Atomic"; import winston, {Logger} from '@foxxmd/winston'; import { CommonClientConfig } from "../common/infrastructure/config/client/index"; @@ -22,6 +23,7 @@ import {FixedSizeList} from 'fixed-size-list'; import { PlayObject, TrackStringOptions } from "../../core/Atomic"; import {buildTrackString, capitalize, truncateStringToLength} from "../../core/StringUtils"; import EventEmitter from "events"; +import {compareScrobbleTracks} from "../utils/StringUtils"; export default abstract class AbstractScrobbleClient { @@ -246,24 +248,7 @@ export default abstract class AbstractScrobbleClient { return [closeTime, fuzzyTime]; } protected compareExistingScrobbleTitle = (existing: PlayObject, candidate: PlayObject): number => { - - const { - data: { - track: scrobbleTitle, - } = {}, - } = existing; - - let cleanSourceTitle = this.cleanSourceSearchTitle(candidate); - - let titleMatch; - const lowerScrobbleTitle = scrobbleTitle.toLocaleLowerCase().trim(); - // because of all this replacing we need a more position-agnostic way of comparing titles so use intersection on title split by spaces - // and compare against length of scrobble title - const sourceTitleTerms = new Set(cleanSourceTitle.split(' ').filter((x: any) => x !== '')); - const commonTerms = setIntersection(new Set(lowerScrobbleTitle.split(' ')), sourceTitleTerms); - - titleMatch = commonTerms.size / sourceTitleTerms.size; - return titleMatch; + return Math.min(compareScrobbleTracks(existing, candidate)/100, 1); } protected compareExistingScrobbleArtist = (existing: PlayObject, candidate: PlayObject): number => { @@ -345,21 +330,21 @@ export default abstract class AbstractScrobbleClient { const artistMatch = this.compareExistingScrobbleArtist(x, playObj); - const artistScore = .2 * artistMatch; - const titleScore = .3 * titleMatch; - const timeScore = .5 * (closeTime ? 1 : (fuzzyTime ? 0.5 : 0)); - const referenceScore = .5 * (referenceMatch ? 1 : 0); + const artistScore = ARTIST_WEIGHT * artistMatch; + const titleScore = TITLE_WEIGHT * titleMatch; + const timeScore = TIME_WEIGHT * (closeTime ? 1 : (fuzzyTime ? 0.5 : 0)); + const referenceScore = REFERENCE_WEIGHT * (referenceMatch ? 1 : 0); const score = artistScore + titleScore + timeScore; let scoreBreakdowns = [ - `Reference: ${(referenceMatch ? 1 : 0)} * .5 = ${referenceScore.toFixed(2)}`, - `Artist ${artistMatch.toFixed(2)} * .2 = ${artistScore.toFixed(2)}`, - `Title: ${titleMatch.toFixed(2)} * .3 = ${titleScore.toFixed(2)}`, - `Time: ${closeTime ? 1 : 0} * .5 = ${timeScore.toFixed(2)}`, - `Score ${score.toFixed(2)} => ${score >= .7 ? 'Matched!' : 'No Match'}` + `Reference: ${(referenceMatch ? 1 : 0)} * ${REFERENCE_WEIGHT} = ${referenceScore.toFixed(2)}`, + `Artist ${artistMatch.toFixed(2)} * ${ARTIST_WEIGHT} = ${artistScore.toFixed(2)}`, + `Title: ${titleMatch.toFixed(2)} * ${TITLE_WEIGHT} = ${titleScore.toFixed(2)}`, + `Time: ${closeTime ? 1 : (fuzzyTime ? 0.5 : 0)} * ${TIME_WEIGHT} = ${timeScore.toFixed(2)}`, + `Score ${score.toFixed(2)} => ${score >= DUP_SCORE_THRESHOLD ? 'Matched!' : 'No Match'}` ]; - const confidence = `Score ${score.toFixed(2)} => ${score >= .7 ? 'Matched!' : 'No Match'}` + const confidence = `Score ${score.toFixed(2)} => ${score >= DUP_SCORE_THRESHOLD ? 'Matched!' : 'No Match'}` const scoreInfo = { score, @@ -372,7 +357,7 @@ export default abstract class AbstractScrobbleClient { closestMatch = scoreInfo } - return score >= .7; + return score >= DUP_SCORE_THRESHOLD; }); } -- 2.54.0 From 521130562d97b758760eff148e016050b06a9325 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 09:55:09 -0400 Subject: [PATCH 54/82] feat(scrobble): Use new string approach for artists --- .../scrobblers/AbstractScrobbleClient.ts | 19 ++----------------- src/backend/utils/StringUtils.ts | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index ffb97ebe..ff288530 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -23,7 +23,7 @@ import {FixedSizeList} from 'fixed-size-list'; import { PlayObject, TrackStringOptions } from "../../core/Atomic"; import {buildTrackString, capitalize, truncateStringToLength} from "../../core/StringUtils"; import EventEmitter from "events"; -import {compareScrobbleTracks} from "../utils/StringUtils"; +import {compareScrobbleArtists, compareScrobbleTracks} from "../utils/StringUtils"; export default abstract class AbstractScrobbleClient { @@ -252,22 +252,7 @@ export default abstract class AbstractScrobbleClient { } protected compareExistingScrobbleArtist = (existing: PlayObject, candidate: PlayObject): number => { - const { - data: { - artists: sourceArtists = [], - } = {}, - } = existing; - const { - data: { - artists = [], - } = {}, - } = candidate; - let artistMatch; - const lowerSourceArtists = sourceArtists.map((x: any) => x.toLocaleLowerCase()); - const lowerScrobbleArtists = artists.map(x => x.toLocaleLowerCase()); - artistMatch = setIntersection(new Set(lowerScrobbleArtists), new Set(lowerSourceArtists)).size / artists.length; - - return artistMatch; + return Math.min(compareScrobbleArtists(existing, candidate)/100, 1) } existingScrobble = async (playObj: PlayObject) => { diff --git a/src/backend/utils/StringUtils.ts b/src/backend/utils/StringUtils.ts index 6ca9cf66..5937fdb4 100644 --- a/src/backend/utils/StringUtils.ts +++ b/src/backend/utils/StringUtils.ts @@ -152,6 +152,22 @@ export const compareScrobbleTracks = (existing: PlayObject, candidate: PlayObjec return compareNormalizedStrings(existingTrack, candidateTrack).highScoreWeighted; } +export const compareScrobbleArtists = (existing: PlayObject, candidate: PlayObject): number => { + const { + data: { + artists: existingArtists = [], + } = {}, + } = existing; + + const { + data: { + artists: candidateArtists = [], + } + } = candidate; + + return compareNormalizedStrings(existingArtists.reduce((acc, curr) => `${acc} ${curr}`, ''), candidateArtists.reduce((acc, curr) => `${acc} ${curr}`, '')).highScoreWeighted; +} + export const compareNormalizedStrings = (existing: string, candidate: string): StringSamenessResult => { const normalExisting = normalizeStr(existing, {keepSingleWhitespace: true}); -- 2.54.0 From 77c9977d2706aa2aeb972bd25f212b1cbe2ce124 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 10:29:34 -0400 Subject: [PATCH 55/82] Use string highScore instead of weighted since cosine isn't messing things up anymore --- src/backend/utils/StringUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/utils/StringUtils.ts b/src/backend/utils/StringUtils.ts index 5937fdb4..9bb09bf3 100644 --- a/src/backend/utils/StringUtils.ts +++ b/src/backend/utils/StringUtils.ts @@ -149,7 +149,7 @@ export const compareScrobbleTracks = (existing: PlayObject, candidate: PlayObjec } } = candidate; - return compareNormalizedStrings(existingTrack, candidateTrack).highScoreWeighted; + return compareNormalizedStrings(existingTrack, candidateTrack).highScore; } export const compareScrobbleArtists = (existing: PlayObject, candidate: PlayObject): number => { @@ -165,7 +165,7 @@ export const compareScrobbleArtists = (existing: PlayObject, candidate: PlayObje } } = candidate; - return compareNormalizedStrings(existingArtists.reduce((acc, curr) => `${acc} ${curr}`, ''), candidateArtists.reduce((acc, curr) => `${acc} ${curr}`, '')).highScoreWeighted; + return compareNormalizedStrings(existingArtists.reduce((acc, curr) => `${acc} ${curr}`, ''), candidateArtists.reduce((acc, curr) => `${acc} ${curr}`, '')).highScore; } export const compareNormalizedStrings = (existing: string, candidate: string): StringSamenessResult => { -- 2.54.0 From 1ca7834feb0c5cd55e7fe709b9d3d1bd4394c20a Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 10:31:06 -0400 Subject: [PATCH 56/82] test(scrobble): Add more tests for similar-but-unique scrobble detection --- src/backend/tests/plays/withDuration.json | 54 +++++++++++++++++++ .../tests/scrobbler/scrobblers.test.ts | 31 +++++++++-- 2 files changed, 82 insertions(+), 3 deletions(-) diff --git a/src/backend/tests/plays/withDuration.json b/src/backend/tests/plays/withDuration.json index 3ceb0541..65a4b085 100644 --- a/src/backend/tests/plays/withDuration.json +++ b/src/backend/tests/plays/withDuration.json @@ -39,6 +39,20 @@ "source": "Maloja" } }, + { + "data": { + "artists": [ + "Frédéric Chopin", + "Krystian Zimerman" + ], + "track": "Ballade No. 4 in F Minor, Op. 52", + "duration": 575, + "playDate": "2023-09-20T15:17:12.000Z" + }, + "meta": { + "source": "Maloja" + } + }, { "data": { "artists": [ @@ -52,6 +66,33 @@ "source": "Maloja" } }, + { + "data": { + "artists": [ + "Pink Floyd" + ], + "track": "Another Brick in the Wall, Pt. 1", + "duration": 192, + "playDate": "2023-09-20T15:39:12.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "Frédéric Chopin", + "Krystian Zimerman" + ], + "track": "Ballade No. 1 in G Minor, Op. 23", + "duration": 575, + "playDate": "2023-09-20T15:41:12.000Z" + }, + "meta": { + "source": "Maloja" + } + }, { "data": { "artists": [ @@ -66,5 +107,18 @@ "meta": { "source": "Maloja" } + }, + { + "data": { + "artists": [ + "Outkast" + ], + "track": "Da Art of Storytellin' (Pt. 1)", + "duration": 422, + "playDate": "2023-09-20T15:39:12.000Z" + }, + "meta": { + "source": "Maloja" + } } ] diff --git a/src/backend/tests/scrobbler/scrobblers.test.ts b/src/backend/tests/scrobbler/scrobblers.test.ts index bf05853c..ffc61a70 100644 --- a/src/backend/tests/scrobbler/scrobblers.test.ts +++ b/src/backend/tests/scrobbler/scrobblers.test.ts @@ -43,7 +43,7 @@ describe('When scrobble is unique', function () { testScrobbler.recentScrobbles = normalizedWithDur; const newScrobble = generatePlay({ - playDate: normalizedWithDur[normalizedWithDur.length - 2].data.playDate.add(3, 'seconds') + playDate: normalizedWithDur[normalizedWithDur.length - 3].data.playDate.add(3, 'seconds') }); assert.isFalse(await testScrobbler.alreadyScrobbled(newScrobble)); @@ -52,7 +52,7 @@ describe('When scrobble is unique', function () { describe('When scrobble track/artist/album matches existing but is a new scrobble', function () { - it('Is not detected as duplicate when artist is same but track is different (similar time)', async function () { + it('Is not detected as duplicate when artist is same, time is similar, but track is different', async function () { testScrobbler.recentScrobbles = normalizedWithDur; @@ -63,7 +63,7 @@ describe('When scrobble track/artist/album matches existing but is a new scrobbl assert.isFalse(await testScrobbler.alreadyScrobbled(diffPlay)); }); - it('Is not detected as duplicate when track is same but artist is different (similar time)', async function () { + it('Is not detected as duplicate when track is same, time is similar, but artist is different', async function () { testScrobbler.recentScrobbles = normalizedWithDur; @@ -102,6 +102,31 @@ describe('When scrobble track/artist/album matches existing but is a new scrobbl assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffPos)); assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffNeg)); }); + + it('A track with continuity to the previous track is not detected as a duplicate', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; + + const brickPt1 = normalizedWithDur.find(x => x.data.track.includes('Another Brick')); + const brickPt2 = clone(brickPt1); + brickPt2.data.track = 'Another Brick in the Wall, Pt. 2'; + brickPt2.data.playDate = brickPt1.data.playDate.add(brickPt1.data.duration + 1, 'seconds'); + assert.isFalse(await testScrobbler.alreadyScrobbled(brickPt2)); + + const story1 = normalizedWithDur.find(x => x.data.track.includes('Da Art of')); + const story2 = clone(story1); + story2.data.track = `Da Art of Storytellin' (Pt. 2)`; + story2.data.playDate = story2.data.playDate.add(story1.data.duration + 1, 'seconds'); + + assert.isFalse(await testScrobbler.alreadyScrobbled(story2)); + + const ballad1 = normalizedWithDur.find(x => x.data.track.includes('Ballade No. 1')); + const ballad2 = clone(ballad1); + ballad2.data.track = `Ballade No. 2 in G Minor, Op. 27`; + ballad2.data.playDate = ballad2.data.playDate.add(ballad1.data.duration + 1, 'seconds'); + + assert.isFalse(await testScrobbler.alreadyScrobbled(ballad2)); + }); }); describe('When scrobble is a duplicate (title/artists/album)', function () { -- 2.54.0 From c6d38e40d0ce780427c0a92570ca2d1531ac4d80 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 10:31:45 -0400 Subject: [PATCH 57/82] refactor(scrobble): Adjust dup score weights --- src/backend/common/infrastructure/Atomic.ts | 6 +++--- src/backend/scrobblers/AbstractScrobbleClient.ts | 2 +- src/backend/tests/strings.test.ts | 15 +++++++++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/backend/common/infrastructure/Atomic.ts b/src/backend/common/infrastructure/Atomic.ts index 048744f4..01448ffc 100644 --- a/src/backend/common/infrastructure/Atomic.ts +++ b/src/backend/common/infrastructure/Atomic.ts @@ -207,8 +207,8 @@ export interface numberFormatOptions { export const DELIMITERS = [',','&','\/','\\']; -export const DUP_SCORE_THRESHOLD = 0.7; -export const ARTIST_WEIGHT = 0.2; -export const TITLE_WEIGHT = 0.3; +export const ARTIST_WEIGHT = 0.3; +export const TITLE_WEIGHT = 0.4; export const TIME_WEIGHT = 0.5; export const REFERENCE_WEIGHT = 0.5; +export const DUP_SCORE_THRESHOLD = 1; diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index ff288530..1e3f5053 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -317,7 +317,7 @@ export default abstract class AbstractScrobbleClient { const artistScore = ARTIST_WEIGHT * artistMatch; const titleScore = TITLE_WEIGHT * titleMatch; - const timeScore = TIME_WEIGHT * (closeTime ? 1 : (fuzzyTime ? 0.5 : 0)); + const timeScore = TIME_WEIGHT * (closeTime ? 1 : (fuzzyTime ? 0.6 : 0)); const referenceScore = REFERENCE_WEIGHT * (referenceMatch ? 1 : 0); const score = artistScore + titleScore + timeScore; diff --git a/src/backend/tests/strings.test.ts b/src/backend/tests/strings.test.ts index 75a44e41..b4ceb9cc 100644 --- a/src/backend/tests/strings.test.ts +++ b/src/backend/tests/strings.test.ts @@ -44,7 +44,7 @@ describe('String Comparisons', function () { for(const test of tests) { const result = compareNormalizedStrings(test[0], test[1]); - assert.isAtLeast( result.highScoreWeighted, 80, `Comparing: '${test[0]}' | '${test[1]}'`); + assert.isAtLeast( result.highScore, 75, `Comparing: '${test[0]}' | '${test[1]}'`); } }); @@ -59,7 +59,18 @@ describe('String Comparisons', function () { for(const test of tests) { const result = compareNormalizedStrings(test[0], test[1]); - assert.isAtLeast( result.highScoreWeighted, 80, `Comparing: '${test[0]}' | '${test[1]}'`); + assert.isAtLeast( result.highScore, 80, `Comparing: '${test[0]}' | '${test[1]}'`); + } + }); + + it('should not score very similar as identical', async function () { + const tests = [ + ['Another Brick in the Wall, Pt. 1', 'Another Brick in the Wall, Pt. 2'], + ] + + for(const test of tests) { + const result = compareNormalizedStrings(test[0], test[1]); + assert.isAtMost( result.highScore, 99, `Comparing: '${test[0]}' | '${test[1]}'`); } }); }); -- 2.54.0 From 3b624205add569c2562f80a452a329c874c23dcf Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 10:35:38 -0400 Subject: [PATCH 58/82] fix: Fix missing destructure default value --- src/backend/utils/StringUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/utils/StringUtils.ts b/src/backend/utils/StringUtils.ts index 9bb09bf3..77dc6169 100644 --- a/src/backend/utils/StringUtils.ts +++ b/src/backend/utils/StringUtils.ts @@ -22,7 +22,7 @@ export const uniqueNormalizedStrArr = (arr: string[]): string[] => { } // https://stackoverflow.com/a/37511463/1469797 export const normalizeStr = (str: string, options?: {keepSingleWhitespace?: boolean}): string => { - const {keepSingleWhitespace = false} = options; + const {keepSingleWhitespace = false} = options || {}; const normal = str.normalize('NFD').replace(/[\u0300-\u036f]/g, ""); if(!keepSingleWhitespace) { return normal.replace(PUNCTUATION_WHITESPACE_REGEX, '').toLocaleLowerCase(); -- 2.54.0 From a82aafa6b80757b908dec1b1acb1b896f8d4973e Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 10:47:07 -0400 Subject: [PATCH 59/82] test(scrobble): Add test for duplicate when exact title/time --- .../tests/scrobbler/scrobblers.test.ts | 52 ++++++++++++------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/src/backend/tests/scrobbler/scrobblers.test.ts b/src/backend/tests/scrobbler/scrobblers.test.ts index ffc61a70..c4eb2cc0 100644 --- a/src/backend/tests/scrobbler/scrobblers.test.ts +++ b/src/backend/tests/scrobbler/scrobblers.test.ts @@ -103,30 +103,33 @@ describe('When scrobble track/artist/album matches existing but is a new scrobbl assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffNeg)); }); - it('A track with continuity to the previous track is not detected as a duplicate', async function () { + describe('When existing has duration', function () { + it('A track with continuity to the previous track is not detected as a duplicate', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; + testScrobbler.recentScrobbles = normalizedWithDur; - const brickPt1 = normalizedWithDur.find(x => x.data.track.includes('Another Brick')); - const brickPt2 = clone(brickPt1); - brickPt2.data.track = 'Another Brick in the Wall, Pt. 2'; - brickPt2.data.playDate = brickPt1.data.playDate.add(brickPt1.data.duration + 1, 'seconds'); - assert.isFalse(await testScrobbler.alreadyScrobbled(brickPt2)); + const brickPt1 = normalizedWithDur.find(x => x.data.track.includes('Another Brick')); + const brickPt2 = clone(brickPt1); + brickPt2.data.track = 'Another Brick in the Wall, Pt. 2'; + brickPt2.data.playDate = brickPt1.data.playDate.add(brickPt1.data.duration + 1, 'seconds'); + assert.isFalse(await testScrobbler.alreadyScrobbled(brickPt2)); - const story1 = normalizedWithDur.find(x => x.data.track.includes('Da Art of')); - const story2 = clone(story1); - story2.data.track = `Da Art of Storytellin' (Pt. 2)`; - story2.data.playDate = story2.data.playDate.add(story1.data.duration + 1, 'seconds'); + const story1 = normalizedWithDur.find(x => x.data.track.includes('Da Art of')); + const story2 = clone(story1); + story2.data.track = `Da Art of Storytellin' (Pt. 2)`; + story2.data.playDate = story2.data.playDate.add(story1.data.duration + 1, 'seconds'); - assert.isFalse(await testScrobbler.alreadyScrobbled(story2)); + assert.isFalse(await testScrobbler.alreadyScrobbled(story2)); - const ballad1 = normalizedWithDur.find(x => x.data.track.includes('Ballade No. 1')); - const ballad2 = clone(ballad1); - ballad2.data.track = `Ballade No. 2 in G Minor, Op. 27`; - ballad2.data.playDate = ballad2.data.playDate.add(ballad1.data.duration + 1, 'seconds'); + const ballad1 = normalizedWithDur.find(x => x.data.track.includes('Ballade No. 1')); + const ballad2 = clone(ballad1); + ballad2.data.track = `Ballade No. 2 in G Minor, Op. 27`; + ballad2.data.playDate = ballad2.data.playDate.add(ballad1.data.duration + 1, 'seconds'); - assert.isFalse(await testScrobbler.alreadyScrobbled(ballad2)); + assert.isFalse(await testScrobbler.alreadyScrobbled(ballad2)); + }); }); + }); describe('When scrobble is a duplicate (title/artists/album)', function () { @@ -162,7 +165,7 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { it('Is detected as duplicate when artist/title differences are from unicode normalization', async function () { testScrobbler.recentScrobbles = normalizedWithDur; - const ref = normalizedWithDur[1]; + const ref = normalizedWithDur.find(x => x.data.track === 'Jimbó'); const diffPlay = clone(ref); diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); @@ -198,6 +201,19 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffNeg)); }); + it('Is detected as duplicate when title is exact, artist is similar, and time is similar', async function () { + testScrobbler.recentScrobbles = normalizedWithDur; + const ref = normalizedWithDur[3]; + + const diffPlay = clone(ref); + diffPlay.data.playDate = diffPlay.data.playDate.add(3, 's'); + diffPlay.data.artists = [diffPlay.data.artists[0]] + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + + diffPlay.data.artists = [ref.data.artists[1]] + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + }); + describe('When existing has duration', function () { it('Is detected as duplicate when play date is close to the end of an existing scrobble', async function () { -- 2.54.0 From f0cee72f43df81732c462c1a661e83966afbf279 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 10:55:17 -0400 Subject: [PATCH 60/82] test(scrobble): Improve test durability by using mixed duration sources --- .../scrobblers/AbstractScrobbleClient.ts | 2 +- src/backend/tests/plays/mixedDuration.json | 96 ++++++++++++++----- .../tests/scrobbler/scrobblers.test.ts | 58 +++++------ 3 files changed, 103 insertions(+), 53 deletions(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 1e3f5053..5010bdad 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -257,7 +257,7 @@ export default abstract class AbstractScrobbleClient { existingScrobble = async (playObj: PlayObject) => { const tr = truncateStringToLength(27); - const scoreTrackOpts: TrackStringOptions = {include: ['track', 'time'], transformers: {track: (t: any) => tr(t).padEnd(30)}}; + const scoreTrackOpts: TrackStringOptions = {include: ['track', 'artist', 'time'], transformers: {track: (t: any, data, existing) => `${existing ? '- ': ''}${tr(t)}`}}; // return early if we don't care about checking existing if (false === this.checkExistingScrobbles) { diff --git a/src/backend/tests/plays/mixedDuration.json b/src/backend/tests/plays/mixedDuration.json index 7cfaadf5..00f40cde 100644 --- a/src/backend/tests/plays/mixedDuration.json +++ b/src/backend/tests/plays/mixedDuration.json @@ -2,11 +2,11 @@ { "data": { "artists": [ - "Menagerie" + "Kaidi Tatham" ], - "track": "Danieda's Dance", - "duration": null, - "playDate": "2023-09-18T19:00:25.000Z" + "track": "Fricassee", + "duration": 305, + "playDate": "2023-09-20T14:32:39.000Z" }, "meta": { "source": "Maloja" @@ -15,13 +15,10 @@ { "data": { "artists": [ - "Dan Tenor City", - "Ricoh", - "Tom Funk" + "Kuna Maze" ], - "track": "Close To The Source", - "duration": null, - "playDate": "2023-09-18T20:17:58.000Z" + "track": "Jimbó", + "playDate": "2023-09-20T14:46:00.000Z" }, "meta": { "source": "Maloja" @@ -30,11 +27,12 @@ { "data": { "artists": [ - "medline" + "Norman Person", + "Shamek Farrah" ], - "track": "Run For Cover", - "duration": 300, - "playDate": "2023-09-20T14:02:05.000Z" + "track": "Aisha", + "duration": 559, + "playDate": "2023-09-20T15:10:09.000Z" }, "meta": { "source": "Maloja" @@ -43,12 +41,12 @@ { "data": { "artists": [ - "King Owusu", - "Zeitgeist Freedom Energy Exchange" + "Frédéric Chopin", + "Krystian Zimerman" ], - "track": "Obana", - "duration": null, - "playDate": "2023-09-20T14:07:02.000Z" + "track": "Ballade No. 4 in F Minor, Op. 52", + "duration": 575, + "playDate": "2023-09-20T15:17:12.000Z" }, "meta": { "source": "Maloja" @@ -57,11 +55,63 @@ { "data": { "artists": [ - "Noro Morales" + "Cheo Feliciano" ], - "track": "Mississippi Mambo", - "duration": 159, - "playDate": "2023-09-20T17:49:26.000Z" + "track": "Aprieta (Oye Cómo Va)", + "playDate": "2023-09-20T15:38:12.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "Pink Floyd" + ], + "track": "Another Brick in the Wall, Pt. 1", + "playDate": "2023-09-20T15:39:12.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "Frédéric Chopin", + "Krystian Zimerman" + ], + "track": "Ballade No. 1 in G Minor, Op. 23", + "duration": 575, + "playDate": "2023-09-20T15:41:12.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "A Collection of Boogie", + "Jazz Funk", + "Disco with Mehdi El" + ], + "track": "Aquil", + "playDate": "2023-09-20T17:55:05.000Z" + }, + "meta": { + "source": "Maloja" + } + }, + { + "data": { + "artists": [ + "Outkast" + ], + "track": "Da Art of Storytellin' (Pt. 1)", + "duration": 422, + "playDate": "2023-09-20T15:39:12.000Z" }, "meta": { "source": "Maloja" diff --git a/src/backend/tests/scrobbler/scrobblers.test.ts b/src/backend/tests/scrobbler/scrobblers.test.ts index c4eb2cc0..a79edf64 100644 --- a/src/backend/tests/scrobbler/scrobblers.test.ts +++ b/src/backend/tests/scrobbler/scrobblers.test.ts @@ -29,10 +29,10 @@ describe('When scrobble is unique', function () { it('It is not detected as duplicate when play date is newer than most recent', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; + testScrobbler.recentScrobbles = normalizedWithMixedDur; const newScrobble = generatePlay({ - playDate: normalizedWithDur[normalizedWithDur.length - 1].data.playDate.add(70, 'seconds') + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 1].data.playDate.add(70, 'seconds') }); assert.isFalse(await testScrobbler.alreadyScrobbled(newScrobble)); @@ -40,10 +40,10 @@ describe('When scrobble is unique', function () { it('It is not detected as duplicate when play date is close to an existing scrobble', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; + testScrobbler.recentScrobbles = normalizedWithMixedDur; const newScrobble = generatePlay({ - playDate: normalizedWithDur[normalizedWithDur.length - 3].data.playDate.add(3, 'seconds') + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') }); assert.isFalse(await testScrobbler.alreadyScrobbled(newScrobble)); @@ -54,9 +54,9 @@ describe('When scrobble track/artist/album matches existing but is a new scrobbl it('Is not detected as duplicate when artist is same, time is similar, but track is different', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; + testScrobbler.recentScrobbles = normalizedWithMixedDur; - const diffPlay = clone(normalizedWithDur[1]); + const diffPlay = clone(normalizedWithMixedDur[1]); diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); diffPlay.data.track = 'A Totally Different Track' @@ -65,9 +65,9 @@ describe('When scrobble track/artist/album matches existing but is a new scrobbl it('Is not detected as duplicate when track is same, time is similar, but artist is different', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; + testScrobbler.recentScrobbles = normalizedWithMixedDur; - const diffPlay = clone(normalizedWithDur[1]); + const diffPlay = clone(normalizedWithMixedDur[1]); diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); diffPlay.data.artists = ['A Different Artist']; @@ -77,12 +77,12 @@ describe('When scrobble track/artist/album matches existing but is a new scrobbl it('Is not detected as duplicate when play date is different by more than 10 seconds (high granularity source)', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; + testScrobbler.recentScrobbles = normalizedWithMixedDur; - const timeOffPos = clone(normalizedWithDur[normalizedWithDur.length - 1]); + const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); timeOffPos.data.playDate = timeOffPos.data.playDate.add(11, 's'); - const timeOffNeg = clone(normalizedWithDur[normalizedWithDur.length - 1]); + const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(11, 's'); assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffPos)); @@ -91,12 +91,12 @@ describe('When scrobble track/artist/album matches existing but is a new scrobbl it('Is not detected as duplicate when play date is different by more than 60 seconds (low granularity source)', async function () { - testScrobbler.recentScrobbles = normalizePlays(withDurPlays, {initialDate: firstPlayDate, defaultMeta: {source: 'subsonic'}}); + testScrobbler.recentScrobbles = normalizePlays(mixedDurPlays, {initialDate: firstPlayDate, defaultMeta: {source: 'subsonic'}}); - const timeOffPos = clone(normalizedWithDur[normalizedWithDur.length - 1]); + const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); timeOffPos.data.playDate = timeOffPos.data.playDate.add(61, 's'); - const timeOffNeg = clone(normalizedWithDur[normalizedWithDur.length - 1]); + const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(61, 's'); assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffPos)); @@ -135,13 +135,13 @@ describe('When scrobble track/artist/album matches existing but is a new scrobbl describe('When scrobble is a duplicate (title/artists/album)', function () { it('Is detected as duplicate when an exact match', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; - assert.isTrue(await testScrobbler.alreadyScrobbled(normalizedWithDur[normalizedWithDur.length - 1])); + testScrobbler.recentScrobbles = normalizedWithMixedDur; + assert.isTrue(await testScrobbler.alreadyScrobbled(normalizedWithMixedDur[normalizedWithMixedDur.length - 1])); }); it('Is detected as duplicate when artist/title differences are whitespace or case', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; - const ref = normalizedWithDur[3]; + testScrobbler.recentScrobbles = normalizedWithMixedDur; + const ref = normalizedWithMixedDur[3]; const diffPlay = clone(ref); diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); @@ -164,8 +164,8 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { }); it('Is detected as duplicate when artist/title differences are from unicode normalization', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; - const ref = normalizedWithDur.find(x => x.data.track === 'Jimbó'); + testScrobbler.recentScrobbles = normalizedWithMixedDur; + const ref = normalizedWithMixedDur.find(x => x.data.track === 'Jimbó'); const diffPlay = clone(ref); diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); @@ -175,12 +175,12 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { it('Is detected as duplicate when play date is off by less than 10 seconds (high granularity source)', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; + testScrobbler.recentScrobbles = normalizedWithMixedDur; - const timeOffPos = clone(normalizedWithDur[normalizedWithDur.length - 1]); + const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); timeOffPos.data.playDate = timeOffPos.data.playDate.add(10, 's'); - const timeOffNeg = clone(normalizedWithDur[normalizedWithDur.length - 1]); + const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(10, 's'); assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffPos)); @@ -189,12 +189,12 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { it('Is detected as duplicate when play date is off by less than 60 seconds (low granularity source)', async function () { - testScrobbler.recentScrobbles = normalizePlays(withDurPlays, {initialDate: firstPlayDate, defaultMeta: {source: 'subsonic'}}); + testScrobbler.recentScrobbles = normalizePlays(mixedDurPlays, {initialDate: firstPlayDate, defaultMeta: {source: 'subsonic'}}); - const timeOffPos = clone(normalizedWithDur[normalizedWithDur.length - 1]); + const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); timeOffPos.data.playDate = timeOffPos.data.playDate.add(59, 's'); - const timeOffNeg = clone(normalizedWithDur[normalizedWithDur.length - 1]); + const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(59, 's'); assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffPos)); @@ -202,8 +202,8 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { }); it('Is detected as duplicate when title is exact, artist is similar, and time is similar', async function () { - testScrobbler.recentScrobbles = normalizedWithDur; - const ref = normalizedWithDur[3]; + testScrobbler.recentScrobbles = normalizedWithMixedDur; + const ref = normalizedWithMixedDur[3]; const diffPlay = clone(ref); diffPlay.data.playDate = diffPlay.data.playDate.add(3, 's'); @@ -220,7 +220,7 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { testScrobbler.recentScrobbles = normalizedWithDur; - const timeEnd = clone(normalizedWithDur[normalizedWithDur.length - 1]); + const timeEnd = clone(normalizedWithDur[normalizedWithMixedDur.length - 1]); timeEnd.data.playDate = timeEnd.data.playDate.add(timeEnd.data.duration, 's'); assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); -- 2.54.0 From 0ec8d8814d39f46072bb50031ab304f07d62e229 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 11:25:33 -0400 Subject: [PATCH 61/82] fix(scrobble): Fix not using reference duration for fuzzy comparison --- src/backend/tests/scrobbler/scrobblers.test.ts | 12 +++++++++++- src/backend/utils.ts | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/backend/tests/scrobbler/scrobblers.test.ts b/src/backend/tests/scrobbler/scrobblers.test.ts index a79edf64..de757c1c 100644 --- a/src/backend/tests/scrobbler/scrobblers.test.ts +++ b/src/backend/tests/scrobbler/scrobblers.test.ts @@ -214,7 +214,7 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); }); - describe('When existing has duration', function () { + describe('When at least one play has duration', function () { it('Is detected as duplicate when play date is close to the end of an existing scrobble', async function () { @@ -224,6 +224,16 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { timeEnd.data.playDate = timeEnd.data.playDate.add(timeEnd.data.duration, 's'); assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); + + // only one has duration + timeEnd.data.duration = undefined; + + assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); + + // only one has duration + timeEnd.data.duration = undefined; + + assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); }); }); diff --git a/src/backend/utils.ts b/src/backend/utils.ts index b54c952b..ad025e69 100644 --- a/src/backend/utils.ts +++ b/src/backend/utils.ts @@ -535,7 +535,7 @@ export const comparePlayTemporally = (existingPlay: PlayObject, candidatePlay: P // if the source has a duration its possible one play was scrobbled at the beginning of the track and the other at the end // so check if the duration matches the diff between the two play dates if (result.close === false && referenceDuration !== undefined && fuzzyDuration) { - const fuzzyDiff = Math.abs(scrobblePlayDiff - newDuration); + const fuzzyDiff = Math.abs(scrobblePlayDiff - referenceDuration); result.date.fuzzyDiff = fuzzyDiff; if(fuzzyDiff < 10) { // TODO use finer comparison for this? result.close = true; -- 2.54.0 From 249a606bf563e0272d3b9f84e5cb9fe9a321f2a0 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 12:19:11 -0400 Subject: [PATCH 62/82] feat(scrobble): Implement artist dup bonus scoring heuristic When looking for dups and finding a fuzzy timestamp match, close title, and mismatch (but some matched) multiple artist -- we give a bonus to artist score since its likely a dup. --- .../scrobblers/AbstractScrobbleClient.ts | 70 ++++++++++++++----- src/backend/tests/plays/mixedDuration.json | 14 ++++ src/backend/tests/plays/withDuration.json | 14 ++++ .../tests/scrobbler/scrobblers.test.ts | 8 +++ src/backend/utils.ts | 15 ++++ 5 files changed, 105 insertions(+), 16 deletions(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 5010bdad..3f26f0f0 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -1,5 +1,6 @@ import dayjs, {Dayjs} from "dayjs"; import { + comparingMultipleArtists, isPlayTemporallyClose, mergeArr, playObjDataMatch, @@ -23,7 +24,7 @@ import {FixedSizeList} from 'fixed-size-list'; import { PlayObject, TrackStringOptions } from "../../core/Atomic"; import {buildTrackString, capitalize, truncateStringToLength} from "../../core/StringUtils"; import EventEmitter from "events"; -import {compareScrobbleArtists, compareScrobbleTracks} from "../utils/StringUtils"; +import {compareScrobbleArtists, compareScrobbleTracks, normalizeStr} from "../utils/StringUtils"; export default abstract class AbstractScrobbleClient { @@ -251,8 +252,22 @@ export default abstract class AbstractScrobbleClient { return Math.min(compareScrobbleTracks(existing, candidate)/100, 1); } - protected compareExistingScrobbleArtist = (existing: PlayObject, candidate: PlayObject): number => { - return Math.min(compareScrobbleArtists(existing, candidate)/100, 1) + protected compareExistingScrobbleArtist = (existing: PlayObject, candidate: PlayObject): [number, number] => { + const { + data: { + artists: existingArtists = [], + } = {} + } = existing; + const { + data: { + artists: candidateArtists = [], + } = {} + } = candidate; + const normExisting = existingArtists.map(x => normalizeStr(x, {keepSingleWhitespace: true})); + const candidateExisting = candidateArtists.map(x => normalizeStr(x, {keepSingleWhitespace: true})); + + const wholeMatches = setIntersection(new Set(normExisting), new Set(candidateExisting)).size; + return [Math.min(compareScrobbleArtists(existing, candidate)/100, 1), wholeMatches] } existingScrobble = async (playObj: PlayObject) => { @@ -297,35 +312,58 @@ export default abstract class AbstractScrobbleClient { return undefined; } - // we have have found an existing submission but without an exact date + // we have found an existing submission but without an exact date // in which case we can check the scrobble api response against recent scrobbles (also from api) for a more accurate comparison const referenceApiScrobbleResponse = existingDataSubmitted.length > 0 ? existingDataSubmitted[0].scrobble : undefined; - // clean source title so it matches title from the scrobble api response as closely as we can get it - let cleanSourceTitle = this.cleanSourceSearchTitle(playObj); - existingScrobble = this.recentScrobbles.find((x) => { - const referenceMatch = referenceApiScrobbleResponse !== undefined && playObjDataMatch(x, referenceApiScrobbleResponse); + //const referenceMatch = referenceApiScrobbleResponse !== undefined && playObjDataMatch(x, referenceApiScrobbleResponse); const [closeTime, fuzzyTime = false] = this.compareExistingScrobbleTime(x, playObj); + const timeMatch = (closeTime ? 1 : (fuzzyTime ? 0.6 : 0)); const titleMatch = this.compareExistingScrobbleTitle(x, playObj); - const artistMatch = this.compareExistingScrobbleArtist(x, playObj); + const [artistMatch, wholeMatches] = this.compareExistingScrobbleArtist(x, playObj); - const artistScore = ARTIST_WEIGHT * artistMatch; + let artistScore = ARTIST_WEIGHT * artistMatch; const titleScore = TITLE_WEIGHT * titleMatch; - const timeScore = TIME_WEIGHT * (closeTime ? 1 : (fuzzyTime ? 0.6 : 0)); - const referenceScore = REFERENCE_WEIGHT * (referenceMatch ? 1 : 0); - const score = artistScore + titleScore + timeScore; + const timeScore = TIME_WEIGHT * timeMatch; + //const referenceScore = REFERENCE_WEIGHT * (referenceMatch ? 1 : 0); + let score = artistScore + titleScore + timeScore; + + let artistWholeMatchBonus = 0; + let artistBreakdown = `Artist: ${artistMatch.toFixed(2)} * ${ARTIST_WEIGHT} = ${artistScore.toFixed(2)}`; + + if(score < 1 && timeMatch > 0 && titleMatch > 0.98 && artistMatch > 0.1 && wholeMatches > 0 && comparingMultipleArtists(x, playObj)) { + // address scenario where: + // * title is very close + // * time falls within plausible dup range + // * artist is not totally different + // * AND score is still not high enough for a dup + // + // if we detect the plays have multiple artists and we have at least one whole match (stricter comparison than regular score) + // then bump artist score a little to see if it gets it over the fence + // + // EX: Source: The Bongo Hop - Sonora @ 2023-09-28T10:54:06-04:00 => Closest Scrobble: Nidia Gongora / The Bongo Hop - Sonora @ 2023-09-28T10:59:34-04:00 => Score 0.83 => No Match + // one play is only returning primary artist, and timestamp is at beginning instead of end of play + + const scoreBonus = artistMatch * 0.5; + const scoreGapBonus = (1 - artistMatch) * 0.75; + // use the smallest bump or 0.1 + artistWholeMatchBonus = Math.max(scoreBonus, scoreGapBonus, 0.1); + artistScore = (ARTIST_WEIGHT + 0.05) * (artistMatch + artistWholeMatchBonus); + score = artistScore + titleScore + timeScore; + artistBreakdown = `Artist: (${artistMatch.toFixed(2)} + Whole Match Bonus ${artistWholeMatchBonus.toFixed(2)}) * (${ARTIST_WEIGHT} + Whole Match Bonus 0.05) = ${artistScore.toFixed(2)}`; + } let scoreBreakdowns = [ - `Reference: ${(referenceMatch ? 1 : 0)} * ${REFERENCE_WEIGHT} = ${referenceScore.toFixed(2)}`, - `Artist ${artistMatch.toFixed(2)} * ${ARTIST_WEIGHT} = ${artistScore.toFixed(2)}`, + //`Reference: ${(referenceMatch ? 1 : 0)} * ${REFERENCE_WEIGHT} = ${referenceScore.toFixed(2)}`, + artistBreakdown, `Title: ${titleMatch.toFixed(2)} * ${TITLE_WEIGHT} = ${titleScore.toFixed(2)}`, - `Time: ${closeTime ? 1 : (fuzzyTime ? 0.5 : 0)} * ${TIME_WEIGHT} = ${timeScore.toFixed(2)}`, + `Time: ${timeMatch} * ${TIME_WEIGHT} = ${timeScore.toFixed(2)}`, `Score ${score.toFixed(2)} => ${score >= DUP_SCORE_THRESHOLD ? 'Matched!' : 'No Match'}` ]; diff --git a/src/backend/tests/plays/mixedDuration.json b/src/backend/tests/plays/mixedDuration.json index 00f40cde..e0e553e2 100644 --- a/src/backend/tests/plays/mixedDuration.json +++ b/src/backend/tests/plays/mixedDuration.json @@ -52,6 +52,20 @@ "source": "Maloja" } }, + { + "data": { + "artists": [ + "Nidia Gongora", + "The Bongo Hop" + ], + "track": "Sonora", + "duration": 327, + "playDate": "2023-09-27T20:02:17.000Z" + }, + "meta": { + "source": "Maloja" + } + }, { "data": { "artists": [ diff --git a/src/backend/tests/plays/withDuration.json b/src/backend/tests/plays/withDuration.json index 65a4b085..0ff0c912 100644 --- a/src/backend/tests/plays/withDuration.json +++ b/src/backend/tests/plays/withDuration.json @@ -53,6 +53,20 @@ "source": "Maloja" } }, + { + "data": { + "artists": [ + "Nidia Gongora", + "The Bongo Hop" + ], + "track": "Sonora", + "duration": 327, + "playDate": "2023-09-27T20:02:17.000Z" + }, + "meta": { + "source": "Maloja" + } + }, { "data": { "artists": [ diff --git a/src/backend/tests/scrobbler/scrobblers.test.ts b/src/backend/tests/scrobbler/scrobblers.test.ts index de757c1c..53c448b2 100644 --- a/src/backend/tests/scrobbler/scrobblers.test.ts +++ b/src/backend/tests/scrobbler/scrobblers.test.ts @@ -212,6 +212,14 @@ describe('When scrobble is a duplicate (title/artists/album)', function () { diffPlay.data.artists = [ref.data.artists[1]] assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + + + const son = normalizedWithMixedDur.find(x => x.data.track === 'Sonora') + + const sonDiffPlay = clone(son); + sonDiffPlay.data.playDate = sonDiffPlay.data.playDate.subtract(son.data.duration + 1, 's'); + sonDiffPlay.data.artists = [sonDiffPlay.data.artists[1]] + assert.isTrue(await testScrobbler.alreadyScrobbled(sonDiffPlay)); }); describe('When at least one play has duration', function () { diff --git a/src/backend/utils.ts b/src/backend/utils.ts index ad025e69..f455c5fa 100644 --- a/src/backend/utils.ts +++ b/src/backend/utils.ts @@ -900,3 +900,18 @@ export const getAddress = (host = '0.0.0.0', logger?: Logger): { v4?: string, v6 v6 }; } + +export const comparingMultipleArtists = (existing: PlayObject, candidate: PlayObject): boolean => { + const { + data: { + artists: eArtists = [], + } = {} + } = existing; + const { + data: { + artists: cArtists = [], + } = {} + } = candidate; + + return eArtists.length > 1 || cArtists.length > 1; +} -- 2.54.0 From a663e9af14a2ed4ed262c32825c3b25a0519ddfd Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 15:22:22 -0400 Subject: [PATCH 63/82] feat(player): Defer play discovery so listenedFor is accurate Wait until player gets a new play or becomes stale before trying to discover the (previous) play so that we store a more accurate amount of time the user actually listened to that play --- src/backend/sources/MemorySource.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/backend/sources/MemorySource.ts b/src/backend/sources/MemorySource.ts index e203448c..f2a5154d 100644 --- a/src/backend/sources/MemorySource.ts +++ b/src/backend/sources/MemorySource.ts @@ -154,8 +154,11 @@ export default class MemorySource extends AbstractSource { const [currPlay, prevPlay] = asPlayerStateData(incomingData) ? player.setState(incomingData.status, incomingData.play) : player.setState(undefined, incomingData); const candidate = prevPlay !== undefined ? prevPlay : currPlay; + const playChanged = prevPlay !== undefined; - if (candidate !== undefined) { + // wait to discover play until it is stale or current play has changed + // so that our discovered track has an accurate "listenedFor" count + if (candidate !== undefined && (playChanged || player.isUpdateStale())) { const thresholdResults = timePassesScrobbleThreshold(scrobbleThresholds, candidate.data.listenedFor, candidate.data.duration); if (thresholdResults.passes) { -- 2.54.0 From 983b4c7417ba4609bc502aed0c583e40f61a7c0c Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Sep 2023 15:23:14 -0400 Subject: [PATCH 64/82] feat(maloja): Add listened duration to scrobble payload --- src/backend/common/vendor/maloja/interfaces.ts | 17 +++++++++++++++-- src/backend/scrobblers/MalojaScrobbler.ts | 6 +++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/backend/common/vendor/maloja/interfaces.ts b/src/backend/common/vendor/maloja/interfaces.ts index ba6644ee..0dd30062 100644 --- a/src/backend/common/vendor/maloja/interfaces.ts +++ b/src/backend/common/vendor/maloja/interfaces.ts @@ -41,19 +41,32 @@ export interface MalojaV3ScrobbleData { export type MalojaScrobbleData = MalojaV2ScrobbleData | MalojaV3ScrobbleData; export interface MalojaScrobbleRequestData { + /** The auth key used to scrobble */ key: string + /** name of the track */ title: string - album: string + /** name of the album */ + album?: string + /** unix timestamp of when the track was scrobbled*/ time: number - length: number + /** length of the track in seconds */ + length?: number + /** number of seconds the track was listened to */ + duration?: number } export interface MalojaScrobbleV2RequestData extends MalojaScrobbleRequestData { + /** comma-separated list of artists for this track */ artist: string } export interface MalojaScrobbleV3RequestData extends MalojaScrobbleRequestData { + /** a list of artists for this track */ artists: string[] + /** a list of artists for the album the track is on */ + albumartists: string[] + /** skip server-side metadata parsing */ + nofix?: boolean } interface MalojaScrobbleWarning { diff --git a/src/backend/scrobblers/MalojaScrobbler.ts b/src/backend/scrobblers/MalojaScrobbler.ts index 35e43d32..1666bd48 100644 --- a/src/backend/scrobblers/MalojaScrobbler.ts +++ b/src/backend/scrobblers/MalojaScrobbler.ts @@ -373,7 +373,8 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { album, track, duration, - playDate + playDate, + listenedFor } = {}, meta: { source, @@ -391,6 +392,9 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { // https://github.com/FoxxMD/multi-scrobbler/issues/42#issuecomment-1100184135 length: duration, }; + if(listenedFor !== undefined && listenedFor > 0) { + scrobbleData.duration = listenedFor; + } let responseBody: MalojaScrobbleV3ResponseData; -- 2.54.0 From 8717fad08ae92dad4d7d983ca9b2c6d2bf60c219 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 29 Sep 2023 11:28:32 -0400 Subject: [PATCH 65/82] feat(source): Control backlogging via config #100 --- .../infrastructure/config/source/index.ts | 13 +++++ src/backend/common/schema/aio-source.json | 10 ++++ src/backend/common/schema/aio.json | 10 ++++ src/backend/common/schema/source.json | 10 ++++ src/backend/sources/AbstractSource.ts | 50 ++++++++++++++++--- src/backend/sources/DeezerSource.ts | 5 ++ src/backend/sources/JellyfinSource.ts | 3 +- src/backend/sources/LastfmSource.ts | 5 ++ src/backend/sources/ListenbrainzSource.ts | 5 ++ src/backend/sources/PlexSource.ts | 3 +- src/backend/sources/SpotifySource.ts | 10 ++-- 11 files changed, 111 insertions(+), 13 deletions(-) diff --git a/src/backend/common/infrastructure/config/source/index.ts b/src/backend/common/infrastructure/config/source/index.ts index d99eec66..45bd1b8c 100644 --- a/src/backend/common/infrastructure/config/source/index.ts +++ b/src/backend/common/infrastructure/config/source/index.ts @@ -70,6 +70,19 @@ export interface CommonSourceOptions { * @examples [false] * */ logPlayerState?: boolean + + /** + * If this source + * + * * supports fetching a listen history + * * and this option is enabled + * + * then on startup MS will attempt to scrobble the recent listens from that history + * + * @default true + * @examples [true, false] + * */ + scrobbleBacklog?: boolean } export interface CommonSourceData extends CommonData, SourceRetryOptions { diff --git a/src/backend/common/schema/aio-source.json b/src/backend/common/schema/aio-source.json index a86c8818..3ea6e293 100644 --- a/src/backend/common/schema/aio-source.json +++ b/src/backend/common/schema/aio-source.json @@ -33,6 +33,16 @@ ], "title": "logPlayerState", "type": "boolean" + }, + "scrobbleBacklog": { + "default": true, + "description": "If this source\n\n* supports fetching a listen history\n* and this option is enabled\n\nthen on startup MS will attempt to scrobble the recent listens from that history", + "examples": [ + true, + false + ], + "title": "scrobbleBacklog", + "type": "boolean" } }, "title": "CommonSourceOptions", diff --git a/src/backend/common/schema/aio.json b/src/backend/common/schema/aio.json index c70cf9ec..c2525220 100644 --- a/src/backend/common/schema/aio.json +++ b/src/backend/common/schema/aio.json @@ -106,6 +106,16 @@ ], "title": "logPlayerState", "type": "boolean" + }, + "scrobbleBacklog": { + "default": true, + "description": "If this source\n\n* supports fetching a listen history\n* and this option is enabled\n\nthen on startup MS will attempt to scrobble the recent listens from that history", + "examples": [ + true, + false + ], + "title": "scrobbleBacklog", + "type": "boolean" } }, "title": "CommonSourceOptions", diff --git a/src/backend/common/schema/source.json b/src/backend/common/schema/source.json index 9bd8b494..770e69b4 100644 --- a/src/backend/common/schema/source.json +++ b/src/backend/common/schema/source.json @@ -74,6 +74,16 @@ ], "title": "logPlayerState", "type": "boolean" + }, + "scrobbleBacklog": { + "default": true, + "description": "If this source\n\n* supports fetching a listen history\n* and this option is enabled\n\nthen on startup MS will attempt to scrobble the recent listens from that history", + "examples": [ + true, + false + ], + "title": "scrobbleBacklog", + "type": "boolean" } }, "title": "CommonSourceOptions", diff --git a/src/backend/sources/AbstractSource.ts b/src/backend/sources/AbstractSource.ts index 53278547..f79f678b 100644 --- a/src/backend/sources/AbstractSource.ts +++ b/src/backend/sources/AbstractSource.ts @@ -63,6 +63,7 @@ export default abstract class AbstractSource { canPoll: boolean = false; polling: boolean = false; + canBacklog: boolean = false; userPollingStopSignal: undefined | any; pollRetries: number = 0; tracksDiscovered: number = 0; @@ -169,9 +170,7 @@ export default abstract class AbstractSource { return existing !== undefined; } - - protected scrobble = (plays: PlayObject[], options: { forceRefresh?: boolean, checkAll?: boolean } = {}) => { - + discover = (plays: PlayObject[], options: { checkAll?: boolean, [key: string]: any } = {}): PlayObject[] => { const newDiscoveredPlays: PlayObject[] = []; for(const play of plays) { @@ -181,9 +180,16 @@ export default abstract class AbstractSource { } } + newDiscoveredPlays.sort(sortByOldestPlayDate); + + return newDiscoveredPlays; + } + + + protected scrobble = (newDiscoveredPlays: PlayObject[], options: { forceRefresh?: boolean, [key: string]: any } = {}) => { + if(newDiscoveredPlays.length > 0) { newDiscoveredPlays.sort(sortByOldestPlayDate); - this.emitter.emit('discoveredToScrobble', { data: newDiscoveredPlays, options: { @@ -194,8 +200,37 @@ export default abstract class AbstractSource { } }); } + } - return newDiscoveredPlays; + protected processBacklog = async () => { + if (this.canBacklog) { + this.logger.info('Discovering backlogged tracks from recently played API...'); + const backlogPlays = await this.getBackloggedPlays(); + const discovered = this.discover(backlogPlays); + + const { + options: { + scrobbleBacklog = true + } = {} + } = this.config; + + if (scrobbleBacklog) { + if (discovered.length > 0) { + this.logger.info('Scrobbling backlogged tracks...'); + this.scrobble(discovered); + this.logger.info('Backlog scrobbling complete.'); + } else { + this.logger.info('All tracks already discovered!'); + } + } else { + this.logger.info('Backlog scrobbling is disabled by config, skipping...'); + } + } + } + + protected getBackloggedPlays = async (): Promise => { + this.logger.debug('Backlogging not implemented'); + return []; } protected notify = (payload) => { @@ -227,6 +262,8 @@ export default abstract class AbstractSource { if(!(await this.onPollPostAuthCheck())) { return; } + await this.processBacklog(); + await this.startPolling(); } @@ -330,7 +367,8 @@ export default abstract class AbstractSource { this.logger.info('Potential plays were discovered close to polling interval! Delaying scrobble clients refresh by 10 seconds so other clients have time to scrobble first'); await sleep(10 * 1000); } - newDiscovered = this.scrobble(playObjs, + newDiscovered = this.discover(playObjs); + this.scrobble(newDiscovered, { forceRefresh: closeToInterval }); diff --git a/src/backend/sources/DeezerSource.ts b/src/backend/sources/DeezerSource.ts index c02dc479..f8658ceb 100644 --- a/src/backend/sources/DeezerSource.ts +++ b/src/backend/sources/DeezerSource.ts @@ -45,6 +45,7 @@ export default class DeezerSource extends AbstractSource { this.workingCredsPath = `${this.configDir}/currentCreds-${name}.json`; this.canPoll = true; + this.canBacklog = true; } static formatPlayObj(obj: any, options: FormatPlayObjectOptions = {}): PlayObject { @@ -231,4 +232,8 @@ export default class DeezerSource extends AbstractSource { return error; } } + + protected getBackloggedPlays = async () => { + return await this.getRecentlyPlayed({formatted: true}); + } } diff --git a/src/backend/sources/JellyfinSource.ts b/src/backend/sources/JellyfinSource.ts index 3fd41b6a..698e40c1 100644 --- a/src/backend/sources/JellyfinSource.ts +++ b/src/backend/sources/JellyfinSource.ts @@ -355,7 +355,8 @@ export default class JellyfinSource extends MemorySource { if(newPlays.length > 0) { try { - this.scrobble(newPlays, scrobbleOpts); + const discovered = this.discover(newPlays, scrobbleOpts); + this.scrobble(discovered); } catch (e) { this.logger.error('Encountered error while scrobbling') this.logger.error(e) diff --git a/src/backend/sources/LastfmSource.ts b/src/backend/sources/LastfmSource.ts index 868c05f6..80222ec9 100644 --- a/src/backend/sources/LastfmSource.ts +++ b/src/backend/sources/LastfmSource.ts @@ -27,6 +27,7 @@ export default class LastfmSource extends MemorySource { } = config; super('lastfm', name, {...config, data: {interval, maxInterval, ...restData}}, internal, emitter); this.canPoll = true; + this.canBacklog = true; this.api = new LastfmApiClient(name, {...config.data, configDir: internal.configDir, localUrl: internal.localUrl}); this.playerSourceOfTruth = false; } @@ -98,4 +99,8 @@ export default class LastfmSource extends MemorySource { this.processRecentPlays(now); return history; } + + protected getBackloggedPlays = async () => { + return await this.getRecentlyPlayed({formatted: true}); + } } diff --git a/src/backend/sources/ListenbrainzSource.ts b/src/backend/sources/ListenbrainzSource.ts index 994b9e72..ad3892a3 100644 --- a/src/backend/sources/ListenbrainzSource.ts +++ b/src/backend/sources/ListenbrainzSource.ts @@ -23,6 +23,7 @@ export default class ListenbrainzSource extends MemorySource { } = config; super('listenbrainz', name, {...config, data: {interval, maxInterval, ...restData}}, internal, emitter); this.canPoll = true; + this.canBacklog = true; this.api = new ListenbrainzApiClient(name, config.data); this.playerSourceOfTruth = false; } @@ -65,4 +66,8 @@ export default class ListenbrainzSource extends MemorySource { this.processRecentPlays(now.listens.map(x => ListenbrainzSource.formatPlayObj(x))); return await this.api.getRecentlyPlayed(limit); } + + protected getBackloggedPlays = async () => { + return await this.getRecentlyPlayed({formatted: true}); + } } diff --git a/src/backend/sources/PlexSource.ts b/src/backend/sources/PlexSource.ts index 7b5a03b6..942ae0f9 100644 --- a/src/backend/sources/PlexSource.ts +++ b/src/backend/sources/PlexSource.ts @@ -210,7 +210,8 @@ export default class PlexSource extends AbstractSource { } try { - this.scrobble([playObj]); + const discovered = this.discover([playObj]); + this.scrobble(discovered); } catch (e) { this.logger.error('Encountered error while scrobbling') this.logger.error(e) diff --git a/src/backend/sources/SpotifySource.ts b/src/backend/sources/SpotifySource.ts index 5fbfeb35..ea552228 100644 --- a/src/backend/sources/SpotifySource.ts +++ b/src/backend/sources/SpotifySource.ts @@ -62,6 +62,7 @@ export default class SpotifySource extends MemorySource { this.workingCredsPath = `${this.configDir}/currentCreds-${name}.json`; this.canPoll = true; + this.canBacklog = true; } static formatPlayObj(obj: object, options: FormatPlayObjectOptions = {}): PlayObject { @@ -436,13 +437,12 @@ export default class SpotifySource extends MemorySource { this.logger.warn('multi-scrobbler does not have sufficient permissions to access Spotify API "Get Playback State". MS will continue to work but accuracy for determining if/when a track played from a Spotify Connect device (smart device controlled through Spotify app) may be degraded. To fix this re-authenticate MS with Spotify and restart polling.'); } - // and record backlogged tracks - this.logger.info('Checking recently played API for tracks to backlog...'); - const backlogPlays = await this.getPlayHistory({formatted: true}); - this.scrobble(backlogPlays); - this.logger.info('Backlog complete.'); return true; } + + protected getBackloggedPlays = async () => { + return await this.getPlayHistory({formatted: true}); + } } const asPlayHistoryObject = (obj: object): obj is PlayHistoryObject => { -- 2.54.0 From 9309f7d8cf0df2ba3196cfff3655e6e42314cc03 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 29 Sep 2023 14:15:32 -0400 Subject: [PATCH 66/82] feat(scrobble): Initial scrobble queue implementation * Move scrobble checking into client (out of client manager) for single responsibility * Implement scrobble queue/deadletter * Less chance of duplicate processing since sources can't scrobble concurrently * Better throttling since multiple sources can't scrobble concurrently * When scrobbling fails we can retry on delay just like polling and *keep* the failed scrobbles for later retry rather than dropping them * Deadletter (to be fully implemented) for scrobbles that fail multiple times or are signalled as not upstream api issues by client --- package-lock.json | 2 +- package.json | 1 + src/backend/common/errors/UpstreamError.ts | 12 ++ src/backend/common/infrastructure/Atomic.ts | 5 + src/backend/index.ts | 5 + .../scrobblers/AbstractScrobbleClient.ts | 204 +++++++++++++++++- src/backend/scrobblers/LastfmScrobbler.ts | 16 +- .../scrobblers/ListenbrainzScrobbler.ts | 11 +- src/backend/scrobblers/MalojaScrobbler.ts | 7 +- src/backend/scrobblers/ScrobbleClients.ts | 66 +----- 10 files changed, 240 insertions(+), 89 deletions(-) create mode 100644 src/backend/common/errors/UpstreamError.ts diff --git a/package-lock.json b/package-lock.json index 97f14740..4f5055ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,6 +40,7 @@ "kodi-api": "^0.2.1", "lastfm-node-client": "^2.2.0", "mopidy": "^1.3.0", + "nanoid": "^3.3.1", "normalize-url": "^6.1.0", "ntfy": "1.0.5", "object-hash": "^3.0.0", @@ -16549,7 +16550,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, diff --git a/package.json b/package.json index 050075a7..10f952dd 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "kodi-api": "^0.2.1", "lastfm-node-client": "^2.2.0", "mopidy": "^1.3.0", + "nanoid": "^3.3.1", "normalize-url": "^6.1.0", "ntfy": "1.0.5", "object-hash": "^3.0.0", diff --git a/src/backend/common/errors/UpstreamError.ts b/src/backend/common/errors/UpstreamError.ts new file mode 100644 index 00000000..b6ba42a6 --- /dev/null +++ b/src/backend/common/errors/UpstreamError.ts @@ -0,0 +1,12 @@ +import {ErrorWithCause} from "pony-cause"; + +export class UpstreamError extends ErrorWithCause { + + showStopper: boolean = false; + + constructor(message: string, options?: { cause?: T, showStopper?: boolean } | undefined) { + super(message, options); + const {showStopper = false} = options; + this.showStopper = showStopper; + } +} diff --git a/src/backend/common/infrastructure/Atomic.ts b/src/backend/common/infrastructure/Atomic.ts index 01448ffc..032900c1 100644 --- a/src/backend/common/infrastructure/Atomic.ts +++ b/src/backend/common/infrastructure/Atomic.ts @@ -212,3 +212,8 @@ export const TITLE_WEIGHT = 0.4; export const TIME_WEIGHT = 0.5; export const REFERENCE_WEIGHT = 0.5; export const DUP_SCORE_THRESHOLD = 1; + +export interface SourceScrobble { + source: string + play: PlayObject +} diff --git a/src/backend/index.ts b/src/backend/index.ts index 7164eb45..359f9eb2 100644 --- a/src/backend/index.ts +++ b/src/backend/index.ts @@ -135,6 +135,11 @@ const configDir = process.env.CONFIG_DIR || path.resolve(projectDir, `./config`) } } } + for(const client of scrobbleClients.clients) { + if((await client.isReady())) { + client.initScrobbleMonitoring(); + } + } if (anyNotReady) { logger.info(`Some sources are not ready, open the dashboard to continue`); } diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 3f26f0f0..60158452 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -3,18 +3,18 @@ import { comparingMultipleArtists, isPlayTemporallyClose, mergeArr, - playObjDataMatch, - setIntersection, sortByOldestPlayDate, + playObjDataMatch, pollingBackoff, + setIntersection, sleep, sortByOldestPlayDate, } from "../utils"; import { ARTIST_WEIGHT, - ClientType, DUP_SCORE_THRESHOLD, + ClientType, DEFAULT_RETRY_MULTIPLIER, DUP_SCORE_THRESHOLD, FormatPlayObjectOptions, INITIALIZED, INITIALIZING, InitState, NOT_INITIALIZED, REFERENCE_WEIGHT, - ScrobbledPlayObject, TIME_WEIGHT, TITLE_WEIGHT, + ScrobbledPlayObject, SourceScrobble, TIME_WEIGHT, TITLE_WEIGHT, } from "../common/infrastructure/Atomic"; import winston, {Logger} from '@foxxmd/winston'; import { CommonClientConfig } from "../common/infrastructure/config/client/index"; @@ -25,11 +25,15 @@ import { PlayObject, TrackStringOptions } from "../../core/Atomic"; import {buildTrackString, capitalize, truncateStringToLength} from "../../core/StringUtils"; import EventEmitter from "events"; import {compareScrobbleArtists, compareScrobbleTracks, normalizeStr} from "../utils/StringUtils"; +import {UpstreamError} from "../common/errors/UpstreamError"; +import {nanoid} from "nanoid"; +import {ErrorWithCause} from "pony-cause"; export default abstract class AbstractScrobbleClient { name: string; type: ClientType; + identifier: string; #initState: InitState = NOT_INITIALIZED; @@ -50,6 +54,12 @@ export default abstract class AbstractScrobbleClient { checkExistingScrobbles: boolean; verboseOptions; + scrobbleRetries: number = 0; + scrobbling: boolean = false; + userScrobblingStopSignal: undefined | any; + queuedScrobbles: (SourceScrobble & {id: string})[] = []; + deadLetterScrobbles: (SourceScrobble & {id: string, retries: number})[] = []; + config: CommonClientConfig; logger: Logger; @@ -59,8 +69,8 @@ export default abstract class AbstractScrobbleClient { constructor(type: any, name: any, config: CommonClientConfig, notifier: Notifiers, emitter: EventEmitter, logger: Logger) { this.type = type; this.name = name; - const identifier = `${capitalize(this.type)} - ${name}`; - this.logger = logger.child({labels: [identifier]}, mergeArr); + this.identifier = `${capitalize(this.type)} - ${name}`; + this.logger = logger.child({labels: [this.identifier]}, mergeArr); this.notifier = notifier; this.emitter = emitter; @@ -183,6 +193,7 @@ export default abstract class AbstractScrobbleClient { addScrobbledTrack = (playObj: PlayObject, scrobbledPlay: PlayObject) => { this.scrobbledPlayObjs.add({play: playObj, scrobble: scrobbledPlay}); + this.tracksScrobbled++; } filterScrobbledTracks = () => { @@ -395,7 +406,186 @@ ${closestMatch.breakdowns.join('\n')}`); return existingScrobble; } - public abstract scrobble(playObj: PlayObject): Promise + public abstract scrobble(playObj: PlayObject): Promise + + initScrobbleMonitoring = async () => { + if(!this.initialized) { + if(this.initializing) { + this.logger.warn(`Cannot start scrobble processing because client is still initializing`); + return; + } + if(!(await this.initialize())) { + this.logger.warn(`Cannot start scrobble processing because client could not be initialized`); + return; + } + } + + if(this.requiresAuth && !this.authed) { + if (this.requiresAuthInteraction) { + this.logger.warn(`Cannot start scrobble processing because user interaction is required for authentication`); + return; + } else if (!(await this.testAuth())) { + this.logger.warn(`Cannot start scrobble processing because auth test failed`); + return; + } + } + + if(!(await this.isReady())) { + this.logger.warn(`Cannot start scrobble processing because client is not ready`); + return; + } + + await this.startScrobbling(); + } + + startScrobbling = async () => { + // reset poll attempts if already previously run + this.scrobbleRetries = 0; + + const { + data: { + maxPollRetries = 5, + retryMultiplier = DEFAULT_RETRY_MULTIPLIER, + } = {}, + } = this.config; + + // can't have negative retries! + const maxRetries = Math.max(0, maxPollRetries); + + if(this.scrobbling === true) { + this.logger.warn(`Already scrobble processing! Processing needs to be stopped before it can be started`); + return; + } + + let pollRes: boolean | undefined = undefined; + while (pollRes === undefined && this.scrobbleRetries <= maxRetries) { + try { + pollRes = await this.doProcessing(); + if(pollRes === true) { + break; + } + } catch (e) { + if(!this.initialized) { + this.logger.warn('Stopping scrobble processing due to client no longer being initialized.'); + await this.notifier.notify({title: `Client - ${this.identifier} - Processing Error`, message: `Encountered error while scrobble processing and client is no longer initialized, stopping processing!. | Error: ${e.message}`, priority: 'error'}); + break; + } else if (this.requiresAuth && !this.authed) { + this.logger.warn('Stopping scrobble processing due to client no longer being authenticated.'); + await this.notifier.notify({title: `Client - ${this.identifier} - Processing Error`, message: `Encountered error while scrobble processing and client is no longer authenticated, stopping processing!. | Error: ${e.message}`, priority: 'error'}); + break; + } else if (this.scrobbleRetries < maxRetries) { + const delayFor = pollingBackoff(this.scrobbleRetries + 1, retryMultiplier); + this.logger.info(`Scrobble processing retries (${this.scrobbleRetries}) less than max processing retries (${maxRetries}), restarting processing after ${delayFor} second delay...`); + await this.notifier.notify({title: `Client - ${this.name} - Processing Retry`, message: `Encountered error while polling but retries (${this.scrobbleRetries}) are less than max poll retries (${maxRetries}), restarting processing after ${delayFor} second delay. | Error: ${e.message}`, priority: 'warn'}); + await sleep((delayFor) * 1000); + } else { + this.logger.warn(`Scrobble processing retries (${this.scrobbleRetries}) equal to max processing retries (${maxRetries}), stopping processing!`); + await this.notifier.notify({title: `Client - ${this.identifier} - Processing Error`, message: `Encountered error while scrobble processing and retries (${this.scrobbleRetries}) are equal to max processing retries (${maxRetries}), stopping processing!. | Error: ${e.message}`, priority: 'error'}); + } + this.scrobbleRetries++; + } + } + } + + tryStopScrobbling = async () => { + if(this.scrobbling === false) { + this.logger.warn(`Polling is already stopped!`); + return; + } + this.userScrobblingStopSignal = true; + let secsPassed = 0; + while(this.userScrobblingStopSignal !== undefined && secsPassed < 10) { + await sleep(2000); + secsPassed += 2; + this.logger.verbose(`Waiting for scrobble processing stop signal to be acknowledged (waited ${secsPassed}s)`); + } + if(this.userScrobblingStopSignal !== undefined) { + this.logger.warn('Could not stop scrobble processing! Or signal was lost :('); + return false; + } + return true; + } + + protected doStopScrobbling = (reason: string = 'system') => { + this.scrobbling = false; + this.userScrobblingStopSignal = undefined; + this.logger.info(`Stopped scrobble processing due to: ${reason}`); + } + + protected shouldStopScrobbleProcessing = () => this.scrobbling === false || this.userScrobblingStopSignal !== undefined; + + protected doProcessing = async (): Promise => { + if (this.scrobbling === true) { + return true; + } + this.logger.info('Scrobble processing started'); + + try { + this.scrobbling = true; + while (!this.shouldStopScrobbleProcessing()) { + while (this.queuedScrobbles.length > 0) { + if (this.lastScrobbleCheck.unix() < this.getLatestQueuePlayDate().unix()) { + await this.refreshScrobbles(); + } + const currQueuedPlay = this.queuedScrobbles[0]; + const [timeFrameValid, timeFrameValidLog] = this.timeFrameIsValid(currQueuedPlay.play); + if (timeFrameValid && !(await this.alreadyScrobbled(currQueuedPlay.play))) { + try { + const scrobbledPlay = await this.scrobble(currQueuedPlay.play); + this.emitEvent('scrobble', {play: currQueuedPlay.play}); + this.addScrobbledTrack(currQueuedPlay.play, scrobbledPlay); + } catch (e) { + if (e instanceof UpstreamError && e.showStopper === false) { + this.addDeadLetterScrobble(currQueuedPlay); + this.logger.warn(`Could not scrobble ${buildTrackString(currQueuedPlay.play)} from Source '${currQueuedPlay.source}' but error was not show stopping. Adding scrobble to Dead Letter Queue and will retry on next heartbeat.`); + } else { + const processError = new ErrorWithCause('Error occurred while trying to scrobble', {cause: e}); + //this.logger.error(processError); + throw processError; + } + } finally { + await sleep(1000); + } + } else if (!timeFrameValid) { + this.logger.debug(`Will not scrobble ${buildTrackString(currQueuedPlay.play)} from Source '${currQueuedPlay.source}' because it ${timeFrameValidLog}`); + } + // processing play may have changed index while we were scrobbling + const pIndex = this.queuedScrobbles.findIndex(x => x.id === currQueuedPlay.id); + if (pIndex !== -1) { + this.queuedScrobbles.splice(pIndex, 1); + } + } + await sleep(2000); + } + if (this.shouldStopScrobbleProcessing()) { + this.doStopScrobbling(this.userScrobblingStopSignal !== undefined ? 'user input' : undefined); + return true; + } + } catch (e) { + this.logger.error('Scrobble processing interrupted'); + this.logger.error(e); + this.scrobbling = false; + throw e; + } + } + + protected getLatestQueuePlayDate = () => { + if (this.queuedScrobbles.length === 0) { + return undefined; + } + return this.queuedScrobbles[this.queuedScrobbles.length - 1].play.data.playDate; + } + + queueScrobble = (play: PlayObject, source: string) => { + this.queuedScrobbles.push({id: nanoid(), source, play}); + this.queuedScrobbles.sort((a, b) => sortByOldestPlayDate(a.play, b.play)); + } + + protected addDeadLetterScrobble = (data: SourceScrobble & { id?: string, retries?: number }) => { + this.deadLetterScrobbles.push({id: nanoid(), retries: 0, ...data}); + this.deadLetterScrobbles.sort((a, b) => sortByOldestPlayDate(a.play, b.play)); + } + public emitEvent = (eventName: string, payload: object) => { this.emitter.emit(eventName, { diff --git a/src/backend/scrobblers/LastfmScrobbler.ts b/src/backend/scrobblers/LastfmScrobbler.ts index 69ea0e52..3a07cc83 100644 --- a/src/backend/scrobblers/LastfmScrobbler.ts +++ b/src/backend/scrobblers/LastfmScrobbler.ts @@ -17,6 +17,7 @@ import {Logger} from '@foxxmd/winston'; import { PlayObject, TrackStringOptions } from "../../core/Atomic"; import {buildTrackString, capitalize} from "../../core/StringUtils"; import EventEmitter from "events"; +import {UpstreamError} from "../common/errors/UpstreamError"; export default class LastfmScrobbler extends AbstractScrobbleClient { @@ -185,9 +186,8 @@ export default class LastfmScrobbler extends AbstractScrobbleClient { } = response; if(code === 5) { this.initialized = false; - throw new Error('Service reported daily scrobble limit exceeded! 😬 Disabling client'); + throw new UpstreamError('LastFM API reported daily scrobble limit exceeded! 😬 Disabling client', {showStopper: true}); } - this.addScrobbledTrack(playObj, this.formatPlayObj({...rest, date: { uts: timestamp}, name: trackName})); if (newFromSource) { this.logger.info(`Scrobbled (New) => (${source}) ${buildTrackString(playObj)}`); } else { @@ -196,18 +196,22 @@ export default class LastfmScrobbler extends AbstractScrobbleClient { if(ignored > 0) { await this.notifier.notify({title: `Client - ${capitalize(this.type)} - ${this.name} - Scrobble Error`, message: `Failed to scrobble => ${buildTrackString(playObj)} | Error: Service ignored this scrobble 😬 => (Code ${ignoreCode}) ${(ignoreMsg === '' ? '(No error message returned)' : ignoreMsg)}`, priority: 'warn'}); this.logger.warn(`Service ignored this scrobble 😬 => (Code ${ignoreCode}) ${(ignoreMsg === '' ? '(No error message returned)' : ignoreMsg)} -- See https://www.last.fm/api/errorcodes for more information`, {payload: scrobblePayload}); + throw new UpstreamError('LastFM ignored scrobble', {showStopper: false}); } + return this.formatPlayObj({...rest, date: { uts: timestamp}, name: trackName}); // last fm has rate limits but i can't find a specific example of what that limit is. going to default to 1 scrobble/sec to be safe - await sleep(1000); + //await sleep(1000); } catch (e) { await this.notifier.notify({title: `Client - ${capitalize(this.type)} - ${this.name} - Scrobble Error`, message: `Failed to scrobble => ${buildTrackString(playObj)} | Error: ${e.message}`, priority: 'error'}); this.logger.error(`Scrobble Error (${sType})`, {playInfo: buildTrackString(playObj), payload: scrobblePayload}); - throw e; + if(!(e instanceof UpstreamError)) { + throw new UpstreamError('Error received from LastFM API', {cause: e, showStopper: true}); + } else { + throw e; + } } finally { this.logger.debug('Raw Payload: ', rawPayload); } - - return true; } } diff --git a/src/backend/scrobblers/ListenbrainzScrobbler.ts b/src/backend/scrobblers/ListenbrainzScrobbler.ts index 75f9cdf6..f587d926 100644 --- a/src/backend/scrobblers/ListenbrainzScrobbler.ts +++ b/src/backend/scrobblers/ListenbrainzScrobbler.ts @@ -17,6 +17,7 @@ import { ListenbrainzApiClient } from "../common/vendor/ListenbrainzApiClient"; import { PlayObject, TrackStringOptions } from "../../core/Atomic"; import {buildTrackString, capitalize} from "../../core/StringUtils"; import EventEmitter from "events"; +import {UpstreamError} from "../common/errors/UpstreamError"; export default class ListenbrainzScrobbler extends AbstractScrobbleClient { @@ -98,15 +99,15 @@ export default class ListenbrainzScrobbler extends AbstractScrobbleClient { try { const resp = await this.api.submitListen(playObj); rawPayload = resp; - this.addScrobbledTrack(playObj, playObj); + if (newFromSource) { this.logger.info(`Scrobbled (New) => (${source}) ${buildTrackString(playObj)}`); } else { this.logger.info(`Scrobbled (Backlog) => (${source}) ${buildTrackString(playObj)}`); } - // last fm has rate limits but i can't find a specific example of what that limit is. going to default to 1 scrobble/sec to be safe - await sleep(1000); + //await sleep(1000); + return playObj; } catch (e) { let message = e.message; if(e.response !== undefined) { @@ -118,11 +119,9 @@ export default class ListenbrainzScrobbler extends AbstractScrobbleClient { } await this.notifier.notify({title: `Client - ${capitalize(this.type)} - ${this.name} - Scrobble Error`, message: `Failed to scrobble => ${buildTrackString(playObj)} | Error: ${message}`, priority: 'error'}); this.logger.error(`Failed to scrobble => ${message}`, {payload: rawPayload}); - throw e; + throw new UpstreamError(`Error received from Listenbrainz API: ${message}`, {cause: e, showStopper: true}); } finally { this.logger.debug(`Raw Payload:`, {rawPayload}); } - - return true; } } diff --git a/src/backend/scrobblers/MalojaScrobbler.ts b/src/backend/scrobblers/MalojaScrobbler.ts index 1666bd48..401332c1 100644 --- a/src/backend/scrobblers/MalojaScrobbler.ts +++ b/src/backend/scrobblers/MalojaScrobbler.ts @@ -24,6 +24,7 @@ import { PlayObject, TrackStringOptions } from "../../core/Atomic"; import {buildTrackString, capitalize} from "../../core/StringUtils"; import EventEmitter from "events"; import normalizeUrl from "normalize-url"; +import {UpstreamError} from "../common/errors/UpstreamError"; const feat = ["ft.", "ft", "feat.", "feat", "featuring", "Ft.", "Ft", "Feat.", "Feat", "Featuring"]; @@ -447,7 +448,7 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { } } } else { - throw new Error(buildErrorString(response)); + throw new UpstreamError(buildErrorString(response), {showStopper: true}); } } else { const { @@ -469,7 +470,6 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { } else { scrobbledPlay = this.formatPlayObj(scrobbleResponse) } - this.addScrobbledTrack(playObj, scrobbledPlay); const scrobbleInfo = `Scrobbled (${newFromSource ? 'New' : 'Backlog'}) => (${source}) ${buildTrackString(playObj)}`; if(warning !== '') { this.logger.warn(`${scrobbleInfo} | ${warning}`); @@ -477,6 +477,7 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { } else { this.logger.info(scrobbleInfo); } + return scrobbledPlay; } catch (e) { await this.notifier.notify({title: `Client - ${capitalize(this.type)} - ${this.name} - Scrobble Error`, message: `Failed to scrobble => ${buildTrackString(playObj)} | Error: ${e.message}`, priority: 'error'}); this.logger.error(`Scrobble Error (${sType})`, {playInfo: buildTrackString(playObj), payload: scrobbleData}); @@ -487,8 +488,6 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { } finally { this.logger.debug('Raw Payload:', scrobbleData); } - - return true; } } diff --git a/src/backend/scrobblers/ScrobbleClients.ts b/src/backend/scrobblers/ScrobbleClients.ts index 274fa80c..f48ab39e 100644 --- a/src/backend/scrobblers/ScrobbleClients.ts +++ b/src/backend/scrobblers/ScrobbleClients.ts @@ -364,8 +364,6 @@ ${sources.join('\n')}`); scrobbleFrom = 'source', } = options; - const tracksScrobbled: any = []; - if (this.clients.length === 0) { this.logger.warn('Cannot scrobble! No clients are configured.'); } @@ -375,71 +373,9 @@ ${sources.join('\n')}`); client.logger.debug(`Client was filtered out by Source '${scrobbleFrom}'`); continue; } - if(!client.initialized) { - if(client.initializing) { - client.logger.warn(`Cannot scrobble because it is still initializing`); - continue; - } - if(!(await client.initialize())) { - client.logger.warn(`Cannot scrobble because it could not be initialized`); - continue; - } - } - - if(client.requiresAuth && !client.authed) { - if (client.requiresAuthInteraction) { - client.logger.warn(`Cannot scrobble because user interaction is required for authentication`); - continue; - } else if (!(await client.testAuth())) { - client.logger.warn(`Cannot scrobble because auth test failed`); - continue; - } - } - - if(!(await client.isReady())) { - client.logger.warn(`Cannot scrobble because it is not ready`); - continue; - } - - if (forceRefresh || client.scrobblesLastCheckedAt().unix() < checkTime.unix()) { - try { - await client.refreshScrobbles(); - } catch(e) { - client.logger.error(`Encountered error while refreshing scrobbles`); - this.logger.error(e); - } - } for (const playObj of playObjs) { - try { - const { - meta: { - newFromSource = false, - } = {} - } = playObj; - const [timeFrameValid, timeFrameValidLog] = client.timeFrameIsValid(playObj); - if (timeFrameValid && !(await client.alreadyScrobbled(playObj))) { - client.emitEvent('scrobble', {play: playObj}); - await client.scrobble(playObj) - client.tracksScrobbled++; - // since this is what we return to the source only add to tracksScrobbled if not already in array - // (source should only know that a track was scrobbled (binary) -- doesn't care if it was scrobbled more than once - if(!tracksScrobbled.some(x => playObjDataMatch(x, playObj) && x.data.playDate === playObj.data.playDate)) { - tracksScrobbled.push(playObj); - } - } else { - if(!timeFrameValid) { - client.logger.debug(`Will not scrobble ${buildTrackString(playObj)} from Source '${scrobbleFrom}' because it ${timeFrameValidLog}`); - } - } - } catch(e) { - client.logger.error(new ErrorWithCause(`Encountered error while in scrobble loop`, {cause: e})); - // for now just stop scrobbling plays for this client and move on. the client should deal with logging the issue - if(e.continueScrobbling !== true) { - break; - } - } + client.queueScrobble(playObj, scrobbleFrom); } } - return tracksScrobbled; } } -- 2.54.0 From 1c54ae64656ed23ea06b1c7403f4f7e12d88ff2d Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 29 Sep 2023 15:07:08 -0400 Subject: [PATCH 67/82] feat(scrobble): Implement dead letter queue processing * Implemented logic for processing and removing scrobbles from dead letter queue * Only retry scrobbles under X retries based on config or argument * Add removal-only function (for later use with UI) --- .../infrastructure/config/client/index.ts | 8 ++ src/backend/common/schema/aio-client.json | 27 ++++++ src/backend/common/schema/aio.json | 27 ++++++ src/backend/common/schema/client.json | 27 ++++++ .../scrobblers/AbstractScrobbleClient.ts | 86 ++++++++++++++++--- 5 files changed, 165 insertions(+), 10 deletions(-) diff --git a/src/backend/common/infrastructure/config/client/index.ts b/src/backend/common/infrastructure/config/client/index.ts index 667f897c..a04af080 100644 --- a/src/backend/common/infrastructure/config/client/index.ts +++ b/src/backend/common/infrastructure/config/client/index.ts @@ -63,6 +63,14 @@ export interface CommonClientData extends CommonData { match?: MatchLoggingOptions } + + /** + * Number of times MS should automatically retry scrobbles in dead letter queue + * + * @default 1 + * @examples [1] + * */ + deadLetterRetries?: boolean } } diff --git a/src/backend/common/schema/aio-client.json b/src/backend/common/schema/aio-client.json index c33f967e..ef66c4fd 100644 --- a/src/backend/common/schema/aio-client.json +++ b/src/backend/common/schema/aio-client.json @@ -37,6 +37,15 @@ "title": "checkExistingScrobbles", "type": "boolean" }, + "deadLetterRetries": { + "default": 1, + "description": "Number of times MS should automatically retry scrobbles in dead letter queue", + "examples": [ + 1 + ], + "title": "deadLetterRetries", + "type": "boolean" + }, "refreshEnabled": { "default": true, "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", @@ -267,6 +276,15 @@ "title": "checkExistingScrobbles", "type": "boolean" }, + "deadLetterRetries": { + "default": 1, + "description": "Number of times MS should automatically retry scrobbles in dead letter queue", + "examples": [ + 1 + ], + "title": "deadLetterRetries", + "type": "boolean" + }, "refreshEnabled": { "default": true, "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", @@ -400,6 +418,15 @@ "title": "checkExistingScrobbles", "type": "boolean" }, + "deadLetterRetries": { + "default": 1, + "description": "Number of times MS should automatically retry scrobbles in dead letter queue", + "examples": [ + 1 + ], + "title": "deadLetterRetries", + "type": "boolean" + }, "refreshEnabled": { "default": true, "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", diff --git a/src/backend/common/schema/aio.json b/src/backend/common/schema/aio.json index c2525220..f38bed05 100644 --- a/src/backend/common/schema/aio.json +++ b/src/backend/common/schema/aio.json @@ -37,6 +37,15 @@ "title": "checkExistingScrobbles", "type": "boolean" }, + "deadLetterRetries": { + "default": 1, + "description": "Number of times MS should automatically retry scrobbles in dead letter queue", + "examples": [ + 1 + ], + "title": "deadLetterRetries", + "type": "boolean" + }, "refreshEnabled": { "default": true, "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", @@ -1089,6 +1098,15 @@ "title": "checkExistingScrobbles", "type": "boolean" }, + "deadLetterRetries": { + "default": 1, + "description": "Number of times MS should automatically retry scrobbles in dead letter queue", + "examples": [ + 1 + ], + "title": "deadLetterRetries", + "type": "boolean" + }, "refreshEnabled": { "default": true, "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", @@ -1555,6 +1573,15 @@ "title": "checkExistingScrobbles", "type": "boolean" }, + "deadLetterRetries": { + "default": 1, + "description": "Number of times MS should automatically retry scrobbles in dead letter queue", + "examples": [ + 1 + ], + "title": "deadLetterRetries", + "type": "boolean" + }, "refreshEnabled": { "default": true, "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", diff --git a/src/backend/common/schema/client.json b/src/backend/common/schema/client.json index 29127046..1178af0a 100644 --- a/src/backend/common/schema/client.json +++ b/src/backend/common/schema/client.json @@ -34,6 +34,15 @@ "title": "checkExistingScrobbles", "type": "boolean" }, + "deadLetterRetries": { + "default": 1, + "description": "Number of times MS should automatically retry scrobbles in dead letter queue", + "examples": [ + 1 + ], + "title": "deadLetterRetries", + "type": "boolean" + }, "refreshEnabled": { "default": true, "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", @@ -248,6 +257,15 @@ "title": "checkExistingScrobbles", "type": "boolean" }, + "deadLetterRetries": { + "default": 1, + "description": "Number of times MS should automatically retry scrobbles in dead letter queue", + "examples": [ + 1 + ], + "title": "deadLetterRetries", + "type": "boolean" + }, "refreshEnabled": { "default": true, "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", @@ -373,6 +391,15 @@ "title": "checkExistingScrobbles", "type": "boolean" }, + "deadLetterRetries": { + "default": 1, + "description": "Number of times MS should automatically retry scrobbles in dead letter queue", + "examples": [ + 1 + ], + "title": "deadLetterRetries", + "type": "boolean" + }, "refreshEnabled": { "default": true, "description": "Try to get fresh scrobble history from client when tracks to be scrobbled are newer than the last scrobble found in client history", diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 60158452..27614df2 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -28,6 +28,7 @@ import {compareScrobbleArtists, compareScrobbleTracks, normalizeStr} from "../ut import {UpstreamError} from "../common/errors/UpstreamError"; import {nanoid} from "nanoid"; import {ErrorWithCause} from "pony-cause"; +import {de} from "@faker-js/faker"; export default abstract class AbstractScrobbleClient { @@ -204,16 +205,6 @@ export default abstract class AbstractScrobbleClient { return this.scrobbledPlayObjs.data.map(x => x.scrobble); } - cleanSourceSearchTitle = (playObj: PlayObject) => { - const { - data: { - track, - } = {}, - } = playObj; - - return track.toLocaleLowerCase().trim(); - }; - findExistingSubmittedPlayObj = (playObj: PlayObject): ([undefined, undefined] | [ScrobbledPlayObject, ScrobbledPlayObject[]]) => { const { data: { @@ -569,6 +560,81 @@ ${closestMatch.breakdowns.join('\n')}`); } } + processDeadLetterQueue = async (attemptWithRetries?: number) => { + + if (this.deadLetterScrobbles.length === 0) { + return; + } + + const { + options: { + deadLetterRetries = 1 + } = {} + } = this.config.data; + + const retries = attemptWithRetries ?? deadLetterRetries; + + const processable = this.deadLetterScrobbles.filter(x => x.retries < retries); + this.logger.info(`${processable.length} of ${this.deadLetterScrobbles.length} dead scrobbles have less than ${retries} retries, ${processable.length === 0 ? 'will skip processing.': 'processing now...'}`, {leaf: 'Dead Letter'}); + if (processable.length === 0) { + return; + } + + const idsToRemove = []; + for (const deadScrobble of this.deadLetterScrobbles) { + if (deadScrobble.retries < retries) { + const scrobbled = await this.processDeadLetterScrobble(deadScrobble.id); + if (scrobbled) { + idsToRemove.push(deadScrobble.id); + } + } + } + if (idsToRemove.length > 0) { + this.deadLetterScrobbles = this.deadLetterScrobbles.filter(x => !idsToRemove.includes(x.id)); + this.logger.info(`Removed ${idsToRemove.length} scrobbles from dead letter queue`, {leaf: 'Dead Letter'}); + } + } + + processDeadLetterScrobble = async (id: string) => { + if (!(await this.isReady())) { + this.logger.warn('Cannot process dead letter scrobble because client is not ready.', {leaf: 'Dead Letter'}); + return; + } + const deadScrobbleIndex = this.deadLetterScrobbles.findIndex(x => x.id === id); + const deadScrobble = this.deadLetterScrobbles[deadScrobbleIndex]; + if (this.lastScrobbleCheck.unix() < this.getLatestQueuePlayDate().unix()) { + await this.refreshScrobbles(); + } + const [timeFrameValid, timeFrameValidLog] = this.timeFrameIsValid(deadScrobble.play); + if (timeFrameValid && !(await this.alreadyScrobbled(deadScrobble.play))) { + try { + const scrobbledPlay = await this.scrobble(deadScrobble.play); + this.emitEvent('scrobble', {play: deadScrobble.play}); + this.addScrobbledTrack(deadScrobble.play, scrobbledPlay); + } catch (e) { + deadScrobble.retries++; + this.logger.error(`Could not scrobble ${buildTrackString(deadScrobble.play)} from Source '${deadScrobble.source}' due to error`, {leaf: 'Dead Letter'}); + this.logger.error(e); + this.deadLetterScrobbles[deadScrobbleIndex] = deadScrobble; + return false; + } finally { + await sleep(1000); + } + } else if (!timeFrameValid) { + this.logger.debug(`Will not scrobble ${buildTrackString(deadScrobble.play)} from Source '${deadScrobble.source}' because it ${timeFrameValidLog}`, {leaf: 'Dead Letter'}); + } + return true; + } + + removeDeadLetterScrobble = (id: string) => { + const index = this.deadLetterScrobbles.findIndex(x => x.id === id); + if (index === -1) { + this.logger.warn(`No scrobble found with ID ${id}`, {leaf: 'Dead Letter'}); + } + this.logger.debug(`Removed scrobble ${buildTrackString(this.deadLetterScrobbles[index].play)} from queue`, {leaf: 'Dead Letter'}); + this.deadLetterScrobbles.splice(index, 1); + } + protected getLatestQueuePlayDate = () => { if (this.queuedScrobbles.length === 0) { return undefined; -- 2.54.0 From adfb166320a4e04fdc910e5a57166250c48cf1c3 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 29 Sep 2023 15:07:44 -0400 Subject: [PATCH 68/82] feat(scrobble): Implement heartbeat task for scrobblers Task does scrobble processing restart and dead letter queue processing --- src/backend/index.ts | 9 +++- src/backend/tasks/heartbeatClients.ts | 44 +++++++++++++++++++ .../{heartbeat.ts => heartbeatSources.ts} | 4 +- 3 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 src/backend/tasks/heartbeatClients.ts rename src/backend/tasks/{heartbeat.ts => heartbeatSources.ts} (89%) diff --git a/src/backend/index.ts b/src/backend/index.ts index 359f9eb2..95b77e83 100644 --- a/src/backend/index.ts +++ b/src/backend/index.ts @@ -20,7 +20,8 @@ import {getLogger} from "./common/logging"; import {LogInfo} from "../core/Atomic"; import {initServer} from "./server/index"; import {SimpleIntervalJob, ToadScheduler} from "toad-scheduler"; -import {createHeartbeatTask} from "./tasks/heartbeat"; +import {createHeartbeatSourcesTask} from "./tasks/heartbeatSources"; +import {createHeartbeatClientsTask} from "./tasks/heartbeatClients"; dayjs.extend(utc) @@ -147,7 +148,11 @@ const configDir = process.env.CONFIG_DIR || path.resolve(projectDir, `./config`) scheduler.addSimpleIntervalJob(new SimpleIntervalJob({ minutes: 20, runImmediately: false - }, createHeartbeatTask(scrobbleSources, logger))); + }, createHeartbeatSourcesTask(scrobbleSources, logger))); + scheduler.addSimpleIntervalJob(new SimpleIntervalJob({ + minutes: 20, + runImmediately: false + }, createHeartbeatClientsTask(scrobbleClients, logger))); logger.info('Scheduler started.'); } catch (e) { diff --git a/src/backend/tasks/heartbeatClients.ts b/src/backend/tasks/heartbeatClients.ts new file mode 100644 index 00000000..90619d0c --- /dev/null +++ b/src/backend/tasks/heartbeatClients.ts @@ -0,0 +1,44 @@ +import {config, Logger} from "@foxxmd/winston"; +import {mergeArr} from "../utils"; +import {AsyncTask} from "toad-scheduler"; +import {PromisePool} from "@supercharge/promise-pool"; +import ScrobbleClients from "../scrobblers/ScrobbleClients"; + +export const createHeartbeatClientsTask = (clients: ScrobbleClients, parentLogger: Logger) => { + const logger = parentLogger.child({labels: ['Heartbeat', 'Clients']}, mergeArr); + + return new AsyncTask( + 'Heartbeat', + (): Promise => { + return PromisePool + .withConcurrency(1) + .for(clients.clients) + .process(async (client) => { + if(await client.isReady()) { + await client.processDeadLetterQueue(); + if(!client.scrobbling) { + client.logger.info('Should be processing scrobbles! Attempting to restart scrobbling...', {leaf: 'Heartbeat'}); + client.initScrobbleMonitoring(); + return 1; + } + return 0; + } + }).then(({results, errors}) => { + logger.info(`Checked Dead letter queue for ${clients.clients.length} clients.`); + const restarted = results.reduce((acc, curr) => acc += curr, 0); + if (restarted > 0) { + logger.info(`Attempted to restart ${restarted} clients that were not processing scrobbles.`); + } + if (errors.length > 0) { + logger.error(`Encountered errors!`); + for (const err of errors) { + logger.error(err); + } + } + }); + }, + (err: Error) => { + logger.error(err); + } + ); +} diff --git a/src/backend/tasks/heartbeat.ts b/src/backend/tasks/heartbeatSources.ts similarity index 89% rename from src/backend/tasks/heartbeat.ts rename to src/backend/tasks/heartbeatSources.ts index 6093ea2e..07eb4d1c 100644 --- a/src/backend/tasks/heartbeat.ts +++ b/src/backend/tasks/heartbeatSources.ts @@ -4,8 +4,8 @@ import {AsyncTask} from "toad-scheduler"; import {PromisePool} from "@supercharge/promise-pool"; import ScrobbleSources from "../sources/ScrobbleSources"; -export const createHeartbeatTask = (sources: ScrobbleSources, parentLogger: Logger) => { - const logger = parentLogger.child({labels: ['Heartbeat']}, mergeArr); +export const createHeartbeatSourcesTask = (sources: ScrobbleSources, parentLogger: Logger) => { + const logger = parentLogger.child({labels: ['Heartbeat', 'Sources']}, mergeArr); return new AsyncTask( 'Heartbeat', -- 2.54.0 From 43ebdcb10c7b33c12e7ddb191f54452f22afb7b3 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 2 Oct 2023 13:38:08 -0400 Subject: [PATCH 69/82] refactor(scrobble): Refactor scrobble delay and scrobble processing sleep behavior * Delay scrobble based on last scrobble attempt TS * rename abstract scrobble func to doScrobble * Implement scrobble() in abstract client and track last scrobble attempt time, delay based on arg or client property * This way first scrobble isn't delayed and we only delay if subsequent scrobble attempts are close in time * Make scrobble processing sleep time on empty queue configurable --- .../scrobblers/AbstractScrobbleClient.ts | 35 +++++++++++++++---- src/backend/scrobblers/LastfmScrobbler.ts | 2 +- .../scrobblers/ListenbrainzScrobbler.ts | 2 +- src/backend/scrobblers/MalojaScrobbler.ts | 2 +- src/backend/tests/scrobbler/TestScrobbler.ts | 4 +-- 5 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 27614df2..09a7f619 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -29,6 +29,7 @@ import {UpstreamError} from "../common/errors/UpstreamError"; import {nanoid} from "nanoid"; import {ErrorWithCause} from "pony-cause"; import {de} from "@faker-js/faker"; +import {del} from "superagent"; export default abstract class AbstractScrobbleClient { @@ -51,10 +52,13 @@ export default abstract class AbstractScrobbleClient { tracksScrobbled: number = 0; lastScrobbleCheck: Dayjs = dayjs(0) + lastScrobbleAttempt: Dayjs = dayjs(0) refreshEnabled: boolean; checkExistingScrobbles: boolean; verboseOptions; + scrobbleDelay: number = 1000; + scrobbleSleep: number = 2000; scrobbleRetries: number = 0; scrobbling: boolean = false; userScrobblingStopSignal: undefined | any; @@ -397,7 +401,25 @@ ${closestMatch.breakdowns.join('\n')}`); return existingScrobble; } - public abstract scrobble(playObj: PlayObject): Promise + public scrobble = async (playObj: PlayObject, opts?: { delay?: number | false }): Promise => { + const {delay} = opts || {}; + const scrobbleDelay = delay === undefined ? this.scrobbleDelay : (delay === false ? 0 : delay); + if (scrobbleDelay !== 0) { + const lastScrobbleDiff = dayjs().diff(this.lastScrobbleAttempt, 'ms'); + const remainingDelay = scrobbleDelay - lastScrobbleDiff; + if (remainingDelay > 0) { + this.logger.debug(`Waiting ${remainingDelay}ms to scrobble so time passed since previous scrobble is at least ${scrobbleDelay}ms`); + await sleep(scrobbleDelay); + } + } + try { + return this.doScrobble(playObj); + } finally { + this.lastScrobbleAttempt = dayjs(); + } + } + + protected abstract doScrobble(playObj: PlayObject): Promise initScrobbleMonitoring = async () => { if(!this.initialized) { @@ -534,8 +556,6 @@ ${closestMatch.breakdowns.join('\n')}`); //this.logger.error(processError); throw processError; } - } finally { - await sleep(1000); } } else if (!timeFrameValid) { this.logger.debug(`Will not scrobble ${buildTrackString(currQueuedPlay.play)} from Source '${currQueuedPlay.source}' because it ${timeFrameValidLog}`); @@ -546,7 +566,7 @@ ${closestMatch.breakdowns.join('\n')}`); this.queuedScrobbles.splice(pIndex, 1); } } - await sleep(2000); + await sleep(this.scrobbleSleep); } if (this.shouldStopScrobbleProcessing()) { this.doStopScrobbling(this.userScrobblingStopSignal !== undefined ? 'user input' : undefined); @@ -642,8 +662,11 @@ ${closestMatch.breakdowns.join('\n')}`); return this.queuedScrobbles[this.queuedScrobbles.length - 1].play.data.playDate; } - queueScrobble = (play: PlayObject, source: string) => { - this.queuedScrobbles.push({id: nanoid(), source, play}); + queueScrobble = (data: PlayObject | PlayObject[], source: string) => { + const plays = Array.isArray(data) ? data : [data]; + for(const p of plays) { + this.queuedScrobbles.push({id: nanoid(), source, play: p}); + } this.queuedScrobbles.sort((a, b) => sortByOldestPlayDate(a.play, b.play)); } diff --git a/src/backend/scrobblers/LastfmScrobbler.ts b/src/backend/scrobblers/LastfmScrobbler.ts index 3a07cc83..65bc6151 100644 --- a/src/backend/scrobblers/LastfmScrobbler.ts +++ b/src/backend/scrobblers/LastfmScrobbler.ts @@ -119,7 +119,7 @@ export default class LastfmScrobbler extends AbstractScrobbleClient { return (await this.existingScrobble(playObj)) !== undefined; } - scrobble = async (playObj: PlayObject) => { + doScrobble = async (playObj: PlayObject) => { const { data: { artists, diff --git a/src/backend/scrobblers/ListenbrainzScrobbler.ts b/src/backend/scrobblers/ListenbrainzScrobbler.ts index f587d926..fbe8dec9 100644 --- a/src/backend/scrobblers/ListenbrainzScrobbler.ts +++ b/src/backend/scrobblers/ListenbrainzScrobbler.ts @@ -86,7 +86,7 @@ export default class ListenbrainzScrobbler extends AbstractScrobbleClient { return (await this.existingScrobble(playObj)) !== undefined; } - scrobble = async (playObj: PlayObject) => { + doScrobble = async (playObj: PlayObject) => { const { meta: { source, diff --git a/src/backend/scrobblers/MalojaScrobbler.ts b/src/backend/scrobblers/MalojaScrobbler.ts index 401332c1..9cff926c 100644 --- a/src/backend/scrobblers/MalojaScrobbler.ts +++ b/src/backend/scrobblers/MalojaScrobbler.ts @@ -365,7 +365,7 @@ export default class MalojaScrobbler extends AbstractScrobbleClient { return (await this.existingScrobble(playObj)) !== undefined; } - scrobble = async (playObj: PlayObject) => { + doScrobble = async (playObj: PlayObject) => { const {url, apiKey} = this.config.data; const { diff --git a/src/backend/tests/scrobbler/TestScrobbler.ts b/src/backend/tests/scrobbler/TestScrobbler.ts index d8f7d410..9d3858fb 100644 --- a/src/backend/tests/scrobbler/TestScrobbler.ts +++ b/src/backend/tests/scrobbler/TestScrobbler.ts @@ -12,8 +12,8 @@ export class TestScrobbler extends AbstractScrobbleClient { super('test', 'Test', {name: 'test'}, notifier, new EventEmitter(), logger); } - scrobble(playObj: PlayObject): Promise { - return Promise.resolve(true); + doScrobble(playObj: PlayObject): Promise { + return Promise.resolve(playObj); } alreadyScrobbled = async (playObj: PlayObject, log?: boolean): Promise => { -- 2.54.0 From fefc82c521c96c8b83d2b8f7bade6479a396e9fd Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 2 Oct 2023 13:39:14 -0400 Subject: [PATCH 70/82] feat(scrobble): Improve existing scrobble comparison logic * Use existing time comparison function with "close" matching * Fix wording and return value --- .../scrobblers/AbstractScrobbleClient.ts | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 09a7f619..8a82d54f 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -222,25 +222,12 @@ export default abstract class AbstractScrobbleClient { const dtInvariantMatches = this.scrobbledPlayObjs.data.filter(x => playObjDataMatch(playObj, x.play)); if (dtInvariantMatches.length === 0) { - return [undefined, undefined]; + return [undefined, []]; } const matchPlayDate = dtInvariantMatches.find((x: ScrobbledPlayObject) => { - const { - play: { - data: { - playDate: sPlayDate - } = {}, - meta: { - source: playSource - } = {}, - } = {}, - } = x; - // need to account for inaccurate DT from subsonic - if(source === 'Subsonic' && playSource === 'Subsonic') { - return playDate.isSame(sPlayDate) || playDate.diff(sPlayDate, 'minute') <= 1; - } - return playDate.isSame(sPlayDate); + const [closeTime, fuzzyTime = false] = this.compareExistingScrobbleTime(x.play, playObj); + return closeTime; }); return [matchPlayDate, dtInvariantMatches]; @@ -300,8 +287,9 @@ export default abstract class AbstractScrobbleClient { closestMatch = { score: 1, + scrobble: existingScrobble, breakdowns: [], - confidence: 'Exact Match found in previously successfully scrobbled' + confidence: 'Exact Match found in previously successfully scrobbled plays' } } // if not though then we need to check recent scrobbles from scrobble api. -- 2.54.0 From 9aae57f96627acce6e9a966a7b19a4b5cc030913 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 2 Oct 2023 13:39:33 -0400 Subject: [PATCH 71/82] test(scrobble): Add tests for scrobble processing queue and existing comparisons --- .../tests/scrobbler/scrobblers.test.ts | 418 ++++++++++++------ 1 file changed, 281 insertions(+), 137 deletions(-) diff --git a/src/backend/tests/scrobbler/scrobblers.test.ts b/src/backend/tests/scrobbler/scrobblers.test.ts index 53c448b2..24207d9c 100644 --- a/src/backend/tests/scrobbler/scrobblers.test.ts +++ b/src/backend/tests/scrobbler/scrobblers.test.ts @@ -1,6 +1,7 @@ import {describe, it} from 'mocha'; import {assert} from 'chai'; import clone from 'clone'; +import pEvent from 'p-event'; import withDuration from '../plays/withDuration.json'; import mixedDuration from '../plays/mixedDuration.json'; @@ -8,6 +9,7 @@ import mixedDuration from '../plays/mixedDuration.json'; import {TestScrobbler} from "./TestScrobbler"; import {asPlays, generatePlay, normalizePlays} from "../utils/PlayTestUtils"; import dayjs from "dayjs"; +import {sleep} from "../../utils"; const firstPlayDate = dayjs().subtract(1, 'hour'); @@ -22,227 +24,369 @@ testScrobbler.verboseOptions = { onMatch: true, onNoMatch: true, confidenceBreakdown: true - }}; + } +}; testScrobbler.lastScrobbleCheck = dayjs().subtract(60, 'seconds'); -describe('When scrobble is unique', function () { +describe('Detects duplicate and unique scrobbles from client recent history', function () { - it('It is not detected as duplicate when play date is newer than most recent', async function () { + describe('When scrobble is unique', function () { - testScrobbler.recentScrobbles = normalizedWithMixedDur; + it('It is not detected as duplicate when play date is newer than most recent', async function () { - const newScrobble = generatePlay({ - playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 1].data.playDate.add(70, 'seconds') + testScrobbler.recentScrobbles = normalizedWithMixedDur; + + const newScrobble = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 1].data.playDate.add(70, 'seconds') + }); + + assert.isFalse(await testScrobbler.alreadyScrobbled(newScrobble)); }); - assert.isFalse(await testScrobbler.alreadyScrobbled(newScrobble)); + it('It is not detected as duplicate when play date is close to an existing scrobble', async function () { + + testScrobbler.recentScrobbles = normalizedWithMixedDur; + + const newScrobble = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') + }); + + assert.isFalse(await testScrobbler.alreadyScrobbled(newScrobble)); + }); }); - it('It is not detected as duplicate when play date is close to an existing scrobble', async function () { + describe('When scrobble track/artist/album matches existing but is a new scrobble', function () { - testScrobbler.recentScrobbles = normalizedWithMixedDur; + it('Is not detected as duplicate when artist is same, time is similar, but track is different', async function () { - const newScrobble = generatePlay({ - playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') + testScrobbler.recentScrobbles = normalizedWithMixedDur; + + const diffPlay = clone(normalizedWithMixedDur[1]); + diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); + diffPlay.data.track = 'A Totally Different Track' + + assert.isFalse(await testScrobbler.alreadyScrobbled(diffPlay)); }); - assert.isFalse(await testScrobbler.alreadyScrobbled(newScrobble)); - }); -}); + it('Is not detected as duplicate when track is same, time is similar, but artist is different', async function () { -describe('When scrobble track/artist/album matches existing but is a new scrobble', function () { + testScrobbler.recentScrobbles = normalizedWithMixedDur; - it('Is not detected as duplicate when artist is same, time is similar, but track is different', async function () { + const diffPlay = clone(normalizedWithMixedDur[1]); + diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); + diffPlay.data.artists = ['A Different Artist']; - testScrobbler.recentScrobbles = normalizedWithMixedDur; + assert.isFalse(await testScrobbler.alreadyScrobbled(diffPlay)); + }); - const diffPlay = clone(normalizedWithMixedDur[1]); - diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); - diffPlay.data.track = 'A Totally Different Track' - assert.isFalse(await testScrobbler.alreadyScrobbled(diffPlay)); - }); + it('Is not detected as duplicate when play date is different by more than 10 seconds (high granularity source)', async function () { - it('Is not detected as duplicate when track is same, time is similar, but artist is different', async function () { + testScrobbler.recentScrobbles = normalizedWithMixedDur; - testScrobbler.recentScrobbles = normalizedWithMixedDur; + const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); + timeOffPos.data.playDate = timeOffPos.data.playDate.add(11, 's'); - const diffPlay = clone(normalizedWithMixedDur[1]); - diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); - diffPlay.data.artists = ['A Different Artist']; + const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); + timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(11, 's'); - assert.isFalse(await testScrobbler.alreadyScrobbled(diffPlay)); - }); + assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffPos)); + assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffNeg)); + }); + it('Is not detected as duplicate when play date is different by more than 60 seconds (low granularity source)', async function () { - it('Is not detected as duplicate when play date is different by more than 10 seconds (high granularity source)', async function () { + testScrobbler.recentScrobbles = normalizePlays(mixedDurPlays, { + initialDate: firstPlayDate, + defaultMeta: {source: 'subsonic'} + }); - testScrobbler.recentScrobbles = normalizedWithMixedDur; + const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); + timeOffPos.data.playDate = timeOffPos.data.playDate.add(61, 's'); - const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); - timeOffPos.data.playDate = timeOffPos.data.playDate.add(11, 's'); + const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); + timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(61, 's'); - const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); - timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(11, 's'); + assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffPos)); + assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffNeg)); + }); - assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffPos)); - assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffNeg)); - }); + describe('When existing has duration', function () { + it('A track with continuity to the previous track is not detected as a duplicate', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; - it('Is not detected as duplicate when play date is different by more than 60 seconds (low granularity source)', async function () { + const brickPt1 = normalizedWithDur.find(x => x.data.track.includes('Another Brick')); + const brickPt2 = clone(brickPt1); + brickPt2.data.track = 'Another Brick in the Wall, Pt. 2'; + brickPt2.data.playDate = brickPt1.data.playDate.add(brickPt1.data.duration + 1, 'seconds'); + assert.isFalse(await testScrobbler.alreadyScrobbled(brickPt2)); - testScrobbler.recentScrobbles = normalizePlays(mixedDurPlays, {initialDate: firstPlayDate, defaultMeta: {source: 'subsonic'}}); + const story1 = normalizedWithDur.find(x => x.data.track.includes('Da Art of')); + const story2 = clone(story1); + story2.data.track = `Da Art of Storytellin' (Pt. 2)`; + story2.data.playDate = story2.data.playDate.add(story1.data.duration + 1, 'seconds'); - const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); - timeOffPos.data.playDate = timeOffPos.data.playDate.add(61, 's'); + assert.isFalse(await testScrobbler.alreadyScrobbled(story2)); - const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); - timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(61, 's'); + const ballad1 = normalizedWithDur.find(x => x.data.track.includes('Ballade No. 1')); + const ballad2 = clone(ballad1); + ballad2.data.track = `Ballade No. 2 in G Minor, Op. 27`; + ballad2.data.playDate = ballad2.data.playDate.add(ballad1.data.duration + 1, 'seconds'); + + assert.isFalse(await testScrobbler.alreadyScrobbled(ballad2)); + }); + }); - assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffPos)); - assert.isFalse(await testScrobbler.alreadyScrobbled(timeOffNeg)); }); - describe('When existing has duration', function () { - it('A track with continuity to the previous track is not detected as a duplicate', async function () { + describe('When scrobble is a duplicate (title/artists/album)', function () { - testScrobbler.recentScrobbles = normalizedWithDur; + it('Is detected as duplicate when an exact match', async function () { + testScrobbler.recentScrobbles = normalizedWithMixedDur; + assert.isTrue(await testScrobbler.alreadyScrobbled(normalizedWithMixedDur[normalizedWithMixedDur.length - 1])); + }); + + it('Is detected as duplicate when artist/title differences are whitespace or case', async function () { + testScrobbler.recentScrobbles = normalizedWithMixedDur; + const ref = normalizedWithMixedDur[3]; + + const diffPlay = clone(ref); + diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); - const brickPt1 = normalizedWithDur.find(x => x.data.track.includes('Another Brick')); - const brickPt2 = clone(brickPt1); - brickPt2.data.track = 'Another Brick in the Wall, Pt. 2'; - brickPt2.data.playDate = brickPt1.data.playDate.add(brickPt1.data.duration + 1, 'seconds'); - assert.isFalse(await testScrobbler.alreadyScrobbled(brickPt2)); - const story1 = normalizedWithDur.find(x => x.data.track.includes('Da Art of')); - const story2 = clone(story1); - story2.data.track = `Da Art of Storytellin' (Pt. 2)`; - story2.data.playDate = story2.data.playDate.add(story1.data.duration + 1, 'seconds'); + diffPlay.data.track = ref.data.track.toUpperCase(); + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); - assert.isFalse(await testScrobbler.alreadyScrobbled(story2)); + diffPlay.data.track = ` ${ref.data.track} `; + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); - const ballad1 = normalizedWithDur.find(x => x.data.track.includes('Ballade No. 1')); - const ballad2 = clone(ballad1); - ballad2.data.track = `Ballade No. 2 in G Minor, Op. 27`; - ballad2.data.playDate = ballad2.data.playDate.add(ballad1.data.duration + 1, 'seconds'); + diffPlay.data.track = ref.data.track.replaceAll(' ', ' '); + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); - assert.isFalse(await testScrobbler.alreadyScrobbled(ballad2)); + diffPlay.data.artists = ref.data.artists.map(x => x.toUpperCase()); + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + + diffPlay.data.artists = ref.data.artists.map(x => x.replaceAll(' ', ' ')); + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); }); - }); -}); + it('Is detected as duplicate when artist/title differences are from unicode normalization', async function () { + testScrobbler.recentScrobbles = normalizedWithMixedDur; + const ref = normalizedWithMixedDur.find(x => x.data.track === 'Jimbó'); -describe('When scrobble is a duplicate (title/artists/album)', function () { + const diffPlay = clone(ref); + diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); + diffPlay.data.track = 'Jimbo'; + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + }); - it('Is detected as duplicate when an exact match', async function () { - testScrobbler.recentScrobbles = normalizedWithMixedDur; - assert.isTrue(await testScrobbler.alreadyScrobbled(normalizedWithMixedDur[normalizedWithMixedDur.length - 1])); - }); + it('Is detected as duplicate when play date is off by less than 10 seconds (high granularity source)', async function () { - it('Is detected as duplicate when artist/title differences are whitespace or case', async function () { - testScrobbler.recentScrobbles = normalizedWithMixedDur; - const ref = normalizedWithMixedDur[3]; + testScrobbler.recentScrobbles = normalizedWithMixedDur; - const diffPlay = clone(ref); - diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); + const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); + timeOffPos.data.playDate = timeOffPos.data.playDate.add(10, 's'); + const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); + timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(10, 's'); - diffPlay.data.track = ref.data.track.toUpperCase(); - assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffPos)); + assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffNeg)); + }); - diffPlay.data.track = ` ${ref.data.track} `; - assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + it('Is detected as duplicate when play date is off by less than 60 seconds (low granularity source)', async function () { - diffPlay.data.track = ref.data.track.replaceAll(' ', ' '); - assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + testScrobbler.recentScrobbles = normalizePlays(mixedDurPlays, { + initialDate: firstPlayDate, + defaultMeta: {source: 'subsonic'} + }); - diffPlay.data.artists = ref.data.artists.map(x => x.toUpperCase()); - assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); + timeOffPos.data.playDate = timeOffPos.data.playDate.add(59, 's'); - diffPlay.data.artists = ref.data.artists.map(x => x.replaceAll(' ', ' ')); - assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); - }); + const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); + timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(59, 's'); - it('Is detected as duplicate when artist/title differences are from unicode normalization', async function () { - testScrobbler.recentScrobbles = normalizedWithMixedDur; - const ref = normalizedWithMixedDur.find(x => x.data.track === 'Jimbó'); + assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffPos)); + assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffNeg)); + }); - const diffPlay = clone(ref); - diffPlay.data.playDate = diffPlay.data.playDate.add(9, 's'); - diffPlay.data.track = 'Jimbo'; - assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); - }); + it('Is detected as duplicate when title is exact, artist is similar, and time is similar', async function () { + testScrobbler.recentScrobbles = normalizedWithMixedDur; + const ref = normalizedWithMixedDur[3]; + + const diffPlay = clone(ref); + diffPlay.data.playDate = diffPlay.data.playDate.add(3, 's'); + diffPlay.data.artists = [diffPlay.data.artists[0]] + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + + diffPlay.data.artists = [ref.data.artists[1]] + assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + + + const son = normalizedWithMixedDur.find(x => x.data.track === 'Sonora') + + const sonDiffPlay = clone(son); + sonDiffPlay.data.playDate = sonDiffPlay.data.playDate.subtract(son.data.duration + 1, 's'); + sonDiffPlay.data.artists = [sonDiffPlay.data.artists[1]] + assert.isTrue(await testScrobbler.alreadyScrobbled(sonDiffPlay)); + }); + + describe('When at least one play has duration', function () { + + it('Is detected as duplicate when play date is close to the end of an existing scrobble', async function () { + + testScrobbler.recentScrobbles = normalizedWithDur; - it('Is detected as duplicate when play date is off by less than 10 seconds (high granularity source)', async function () { + const timeEnd = clone(normalizedWithDur[normalizedWithMixedDur.length - 1]); + timeEnd.data.playDate = timeEnd.data.playDate.add(timeEnd.data.duration, 's'); - testScrobbler.recentScrobbles = normalizedWithMixedDur; + assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); - const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); - timeOffPos.data.playDate = timeOffPos.data.playDate.add(10, 's'); + // only one has duration + timeEnd.data.duration = undefined; - const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); - timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(10, 's'); + assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); - assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffPos)); - assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffNeg)); + // only one has duration + timeEnd.data.duration = undefined; + + assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); + }); + + }); }); +}); - it('Is detected as duplicate when play date is off by less than 60 seconds (low granularity source)', async function () { +describe('Detects duplicate and unique scrobbles using actively tracked scrobbles', function() { + testScrobbler.recentScrobbles = normalizedWithMixedDur; + testScrobbler.lastScrobbleCheck = dayjs().subtract(60, 'seconds'); - testScrobbler.recentScrobbles = normalizePlays(mixedDurPlays, {initialDate: firstPlayDate, defaultMeta: {source: 'subsonic'}}); + it('Detects a unique play', async function() { + const newScrobble = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') + }); - const timeOffPos = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); - timeOffPos.data.playDate = timeOffPos.data.playDate.add(59, 's'); + const [matchedPlay, matchedData] = testScrobbler.findExistingSubmittedPlayObj(newScrobble); - const timeOffNeg = clone(normalizedWithMixedDur[normalizedWithMixedDur.length - 1]); - timeOffNeg.data.playDate = timeOffNeg.data.playDate.subtract(59, 's'); + assert.isUndefined(matchedPlay); + assert.isEmpty(matchedData); + }); - assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffPos)); - assert.isTrue(await testScrobbler.alreadyScrobbled(timeOffNeg)); + it('Detects an exact duplicate', async function() { + const newScrobble = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') + }); + testScrobbler.addScrobbledTrack(newScrobble, newScrobble); + + const [matchedPlay, matchedData] = testScrobbler.findExistingSubmittedPlayObj(newScrobble); + + assert.isDefined(matchedPlay); + assert.isNotEmpty(matchedData); }); - it('Is detected as duplicate when title is exact, artist is similar, and time is similar', async function () { - testScrobbler.recentScrobbles = normalizedWithMixedDur; - const ref = normalizedWithMixedDur[3]; + it('Detects a duplicate with close time', async function() { + const newScrobble = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') + }); + testScrobbler.addScrobbledTrack(newScrobble, newScrobble); + + const dupScrobble = clone(newScrobble); + dupScrobble.data.playDate = newScrobble.data.playDate.add(2, 'seconds'); - const diffPlay = clone(ref); - diffPlay.data.playDate = diffPlay.data.playDate.add(3, 's'); - diffPlay.data.artists = [diffPlay.data.artists[0]] - assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + const [matchedPlay, matchedData] = testScrobbler.findExistingSubmittedPlayObj(dupScrobble); - diffPlay.data.artists = [ref.data.artists[1]] - assert.isTrue(await testScrobbler.alreadyScrobbled(diffPlay)); + assert.isDefined(matchedPlay); + assert.isNotEmpty(matchedData); + }); +}); +describe('Manages scrobble queue', function() { - const son = normalizedWithMixedDur.find(x => x.data.track === 'Sonora') + testScrobbler.recentScrobbles = normalizedWithMixedDur; + testScrobbler.scrobbleSleep = 500; + testScrobbler.scrobbleDelay = 0; + testScrobbler.lastScrobbleCheck = dayjs().subtract(60, 'seconds'); + testScrobbler.initScrobbleMonitoring(); + + it('Scrobbles a uniquely queued play', async function() { + const newScrobble = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') + }); + testScrobbler.queueScrobble(newScrobble, 'test'); + const res = await Promise.race([pEvent(testScrobbler.emitter, 'scrobble'), sleep(3000)]); - const sonDiffPlay = clone(son); - sonDiffPlay.data.playDate = sonDiffPlay.data.playDate.subtract(son.data.duration + 1, 's'); - sonDiffPlay.data.artists = [sonDiffPlay.data.artists[1]] - assert.isTrue(await testScrobbler.alreadyScrobbled(sonDiffPlay)); + assert.isDefined(res); + assert.isDefined(res.data); }); - describe('When at least one play has duration', function () { + it('Does not Scrobble a duplicate play queued after original is scrobbled', async function() { + this.timeout(3500); - it('Is detected as duplicate when play date is close to the end of an existing scrobble', async function () { + const newScrobble = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') + }); + const dupScrobble = clone(newScrobble); + dupScrobble.data.playDate = newScrobble.data.playDate.add(2, 'seconds'); - testScrobbler.recentScrobbles = normalizedWithDur; + testScrobbler.queueScrobble(newScrobble, 'test'); + const res = await Promise.race([pEvent(testScrobbler.emitter, 'scrobble'), sleep(1500)]); - const timeEnd = clone(normalizedWithDur[normalizedWithMixedDur.length - 1]); - timeEnd.data.playDate = timeEnd.data.playDate.add(timeEnd.data.duration, 's'); + assert.isDefined(res); + assert.isDefined(res.data); - assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); + testScrobbler.queueScrobble(dupScrobble, 'test'); + const resDup = await Promise.race([pEvent(testScrobbler.emitter, 'scrobble'), sleep(1100)]); - // only one has duration - timeEnd.data.duration = undefined; + assert.isUndefined(resDup); + }); + + it('Does not Scrobble a duplicate play queued before original is scrobbled', async function() { + this.timeout(3500); + + const newScrobble = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') + }); + const dupScrobble = clone(newScrobble); + dupScrobble.data.playDate = newScrobble.data.playDate.add(2, 'seconds'); - assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); + testScrobbler.queueScrobble(newScrobble, 'test'); + testScrobbler.queueScrobble(dupScrobble, 'test'); + const res = await Promise.race([pEvent(testScrobbler.emitter, 'scrobble'), sleep(1500)]); - // only one has duration - timeEnd.data.duration = undefined; + assert.isDefined(res); + assert.isDefined(res.data); - assert.isTrue(await testScrobbler.alreadyScrobbled(timeEnd)); + const resDup = await Promise.race([pEvent(testScrobbler.emitter, 'scrobble'), sleep(1100)]); + + assert.isUndefined(resDup); + }); + + it('Delays scrobbles when many are queued', async function () { + this.timeout(3500); + + const newScrobble1 = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(3, 'seconds') }); + const newScrobble2 = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(80, 'seconds') + }); + const newScrobble3 = generatePlay({ + playDate: normalizedWithMixedDur[normalizedWithMixedDur.length - 3].data.playDate.add(160, 'seconds') + }); + + testScrobbler.scrobbleDelay = 600; + + testScrobbler.queueScrobble([newScrobble1, newScrobble2, newScrobble3], 'test'); + await pEvent(testScrobbler.emitter, 'scrobble'); + const initial = dayjs(); + await pEvent(testScrobbler.emitter, 'scrobble'); + await pEvent(testScrobbler.emitter, 'scrobble'); + + const end = dayjs(); + // roughly... + assert.closeTo(end.diff(initial, 'ms'), 1200, 200); }); }); -- 2.54.0 From fb5d9fb7b0bda11281be68aacb6a8c9d9f30ecaf Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 2 Oct 2023 13:54:55 -0400 Subject: [PATCH 72/82] feat(player): Log when play fails discovery on player change --- src/backend/sources/MemorySource.ts | 4 +++- src/backend/utils.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backend/sources/MemorySource.ts b/src/backend/sources/MemorySource.ts index f2a5154d..5ee8d839 100644 --- a/src/backend/sources/MemorySource.ts +++ b/src/backend/sources/MemorySource.ts @@ -159,11 +159,11 @@ export default class MemorySource extends AbstractSource { // wait to discover play until it is stale or current play has changed // so that our discovered track has an accurate "listenedFor" count if (candidate !== undefined && (playChanged || player.isUpdateStale())) { + let stPrefix = `${buildTrackString(candidate, {include: ['trackId', 'artist', 'track']})}`; const thresholdResults = timePassesScrobbleThreshold(scrobbleThresholds, candidate.data.listenedFor, candidate.data.duration); if (thresholdResults.passes) { const matchingRecent = this.existingDiscovered(candidate); //sRecentlyPlayed.find(x => playObjDataMatch(x, candidate)); - let stPrefix = `${buildTrackString(candidate, {include: ['trackId', 'artist', 'track']})}`; if (matchingRecent === undefined) { if(this.playerSourceOfTruth) { player.logger.debug(`${stPrefix} added after ${thresholdResultSummary(thresholdResults)} and not matching any prior plays`); @@ -192,6 +192,8 @@ export default class MemorySource extends AbstractSource { } } } + } else if(playChanged) { + player.logger.verbose(`${stPrefix} not added because ${thresholdResultSummary(thresholdResults)}.`); } } diff --git a/src/backend/utils.ts b/src/backend/utils.ts index f455c5fa..f12020e1 100644 --- a/src/backend/utils.ts +++ b/src/backend/utils.ts @@ -643,7 +643,7 @@ export const thresholdResultSummary = (result: ScrobbleThresholdResult) => { parts.push(`tracked percent of ${(result.percent.value).toFixed(2)}% (wanted ${result.percent.threshold}%)`) } - return `${result.passes ? 'met' : 'did not meet'} thresholds with ${parts.join(' and')}`; + return `${result.passes ? 'met' : 'did not meet'} thresholds with ${parts.join(' and ')}`; } export function parseBool(value: any, prev: any = false): boolean { -- 2.54.0 From 1ab12355f3049beb19c5fff2466a98df08124732 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Mon, 2 Oct 2023 17:22:59 -0400 Subject: [PATCH 73/82] feat(player): Implement seek and repeat detection * Start new listening ranges if player has seeked forward/backwards * Treat track repeats as new plays --- .../PlayerState/AbstractPlayerState.ts | 102 +++++++++++++++++- src/backend/utils.ts | 2 +- 2 files changed, 102 insertions(+), 2 deletions(-) diff --git a/src/backend/sources/PlayerState/AbstractPlayerState.ts b/src/backend/sources/PlayerState/AbstractPlayerState.ts index 8c270772..452e3ea0 100644 --- a/src/backend/sources/PlayerState/AbstractPlayerState.ts +++ b/src/backend/sources/PlayerState/AbstractPlayerState.ts @@ -133,7 +133,20 @@ export abstract class AbstractPlayerState { } else if (status !== undefined && !AbstractPlayerState.isProgressStatus(status)) { this.currentListenSessionEnd(); this.calculatedStatus = this.reportedStatus; + } else if (this.isSessionRepeat(play.meta.trackProgressPosition)) { + // if we detect the track has been restarted end listen session and treat as a new play + this.currentListenSessionEnd(); + const played = this.getPlayedObject(); + this.currentPlay.data.playDate = dayjs(); + this.currentListenSessionContinue(play.meta.trackProgressPosition); + return [this.getPlayedObject(), played]; } else { + const seekedPos = this.isPositionSeeked(play.meta.trackProgressPosition); + if (seekedPos !== false) { + this.logger.debug(`Detected player was seeked ${seekedPos.toFixed(2)}s, starting new listen range`); + // if player has been seeked start a new listen range so our numbers don't get all screwy + this.currentListenSessionEnd(); + } this.currentListenSessionContinue(play.meta.trackProgressPosition); } } else { @@ -181,7 +194,7 @@ export abstract class AbstractPlayerState { return undefined; } - getListenDuration() { + getListenDuration(){ let listenDur: number = 0; let ranges = [...this.listenRanges]; if (this.currentListenRange !== undefined) { @@ -232,6 +245,93 @@ export abstract class AbstractPlayerState { this.currentListenRange = undefined; } + isCurrentRangeInitial() { + if(this.currentListenRange === undefined) { + return true; + } + if(this.currentListenRange[0].position !== undefined && this.currentListenRange[1].position !== undefined) { + return this.currentListenRange[0].position === this.currentListenRange[1].position; + } + return this.currentListenRange[0].timestamp.isSame(this.currentListenRange[1].timestamp); + } + + isCurrentRangePositional() { + if(this.currentListenRange === undefined) { + return false; + } + return this.currentListenRange[0].position !== undefined && this.currentListenRange[1].position !== undefined; + } + + isPositionSeeked(position?: number) { + if (position === undefined || this.isCurrentRangeInitial() || !this.isCurrentRangePositional()) { + return false; + } + // if (new) position is earlier than last stored position then the user has seeked backwards on the player + if (position < this.currentListenRange[1].position) { + return position - this.currentListenRange[1].position; + } + // if (new) position is more than a reasonable number of ms ahead of real time than they have seeked forwards on the player + const realTimeDiff = dayjs().diff(this.currentListenRange[1].timestamp, 'ms'); + const positionDiff = (position - this.currentListenRange[1].position) * 1000; + // if user is more than 2.5 seconds ahead of real time + if (positionDiff - realTimeDiff > 2500) { + return position - this.currentListenRange[1].position; + } + + return false; + } + + isSessionRepeat(position?: number) { + const seekPos = this.isPositionSeeked(position); + if (seekPos === false || seekPos > 0) { + return false; + } + let repeatHint = `New Position (${position})`; + const trackDur = this.currentPlay.data.duration; + // user is within 10 seconds or 10% of start of track + const closeStartNum = position <= 12; + if(closeStartNum) { + repeatHint = `${repeatHint} is within 12 seconds of track start`; + } + const closeStartPer = (trackDur !== undefined && ((position / trackDur) <= 0.15)); + if(!closeStartNum && closeStartPer) { + repeatHint = `${repeatHint} is within 15% of track start (${formatNumber((position/trackDur)*100)}%).`; + } + if (closeStartNum || closeStartPer) { + // user has played at least 2 minutes or 50% of track + const playerDur = this.getListenDuration(); + const closeDurNum = playerDur >= 120; + if(closeDurNum) { + repeatHint = `${repeatHint} and listened to more than 120s (${playerDur}s)` + } + const closeDurPer = (trackDur !== undefined && (playerDur / trackDur) >= 0.5); + if(!closeDurNum && closeDurPer) { + repeatHint = `${repeatHint} and listened to more than 50% (${formatNumber((playerDur/trackDur)*100)}%).` + } + if (closeDurNum || closeDurPer) { + this.logger.debug(repeatHint); + return true; + } + if (trackDur !== undefined) { + const lastPos = this.currentListenRange[1].position; + // or last position is within 10 seconds (or 10%) of end of track + const nearEndNum = (trackDur - lastPos < 12); + if(nearEndNum) { + repeatHint = `${repeatHint} and previous position was within 12 seconds of track end.`; + } + const nearEndPos = ((lastPos / trackDur) < 0.15); + if(!nearEndNum && nearEndPos) { + repeatHint = `${repeatHint} and previous position was within 15% of track end (${formatNumber((lastPos/trackDur)*100)}%)`; + } + if(nearEndNum || nearEndPos) { + this.logger.debug(repeatHint); + return true; + } + } + } + return false; + } + setCurrentPlay(play: PlayObject, status?: ReportedPlayerStatus) { this.currentPlay = play; this.playFirstSeenAt = dayjs(); diff --git a/src/backend/utils.ts b/src/backend/utils.ts index f12020e1..6b6f6a6a 100644 --- a/src/backend/utils.ts +++ b/src/backend/utils.ts @@ -637,7 +637,7 @@ export const timePassesScrobbleThreshold = (thresholds: ScrobbleThresholds, seco export const thresholdResultSummary = (result: ScrobbleThresholdResult) => { const parts: string[] = []; if(result.duration.passes !== undefined) { - parts.push(`tracked time of ${result.duration.value}s (wanted ${result.duration.threshold}s)`); + parts.push(`tracked time of ${result.duration.value.toFixed(2)}s (wanted ${result.duration.threshold}s)`); } if(result.percent.passes !== undefined) { parts.push(`tracked percent of ${(result.percent.value).toFixed(2)}% (wanted ${result.percent.threshold}%)`) -- 2.54.0 From d04bc038d49efd68f71920ed8aeec4bfd447070e Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 3 Oct 2023 10:13:45 -0400 Subject: [PATCH 74/82] feat(ui): Implement status indicator --- src/client/components/StatusIndicator.tsx | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/client/components/StatusIndicator.tsx diff --git a/src/client/components/StatusIndicator.tsx b/src/client/components/StatusIndicator.tsx new file mode 100644 index 00000000..af638fb3 --- /dev/null +++ b/src/client/components/StatusIndicator.tsx @@ -0,0 +1,26 @@ +import React, {PropsWithChildren} from 'react'; + +export type StatusType = 'active' | 'warn' | 'error' | 'inactive' | string; + +// must use full class names for tailwind to avoid purging +// https://github.com/tailwindlabs/tailwindcss/discussions/7745#discussioncomment-3304940 +const statusToColor = (status: StatusType) => { + switch (status) { + case 'active': + return 'bg-green-500'; + case 'warn': + return 'bg-yellow-500'; + case 'error': + return 'bg-red-500'; + case 'inactive': + default: + return 'bg-gray-500'; + } +} + +const StatusIndicator = (props: PropsWithChildren<{ type: StatusType }>) => { + const cn = `flex w-3 h-3 ${statusToColor(props.type)} rounded-full ml-1.5` + return {props.children}; +} + +export default StatusIndicator; -- 2.54.0 From 336970c1f76747b42809d464fda4f165d2d3d813 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 3 Oct 2023 10:15:18 -0400 Subject: [PATCH 75/82] feat(ui): Improve status display * Use running/idle for scrobble client to indicate processing status * Change polling sources status to polling/idle to better reflect behavior * Add status indicator color to statuses --- src/backend/server/api.ts | 5 +++-- .../components/statusCard/ClientStatusCard.tsx | 13 ++++++++++++- .../components/statusCard/SourceStatusCard.tsx | 13 ++++++++++++- .../components/statusCard/StatusCardSkeleton.tsx | 5 ++++- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index f985d6a4..dfe53be5 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -157,7 +157,7 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput } else if (requiresAuth && !authed) { base.status = requiresAuthInteraction ? 'Auth Interaction Required' : 'Authentication Failed Or Not Attempted' } else if (canPoll) { - base.status = polling ? 'Running' : 'Idle'; + base.status = polling ? 'Polling' : 'Idle'; } else { base.status = tracksDiscovered > 0 ? 'Received Data' : 'Awaiting Data' } @@ -173,6 +173,7 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput requiresAuth = false, requiresAuthInteraction = false, authed = false, + scrobbling = false, } = x; const base: ClientStatusData = { status: '', @@ -190,7 +191,7 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput } else if (requiresAuth && !authed) { base.status = requiresAuthInteraction ? 'Auth Interaction Required' : 'Authentication Failed Or Not Attempted' } else { - base.status = tracksScrobbled > 0 ? 'Received Data' : 'Awaiting Data'; + base.status = scrobbling ? 'Running' : 'Idle'; } return base; }); diff --git a/src/client/components/statusCard/ClientStatusCard.tsx b/src/client/components/statusCard/ClientStatusCard.tsx index e4719dac..d2c45594 100644 --- a/src/client/components/statusCard/ClientStatusCard.tsx +++ b/src/client/components/statusCard/ClientStatusCard.tsx @@ -11,6 +11,17 @@ export interface ClientStatusCardData extends StatusCardSkeletonData, PropsFromR key: any } +const statusToStatusType = (status: string) => { + const lower = status.toLowerCase(); + if(lower.includes('running') || lower.includes('data')) { + return 'active'; + } + if(lower.includes('idle')) { + return 'warn'; + } + return 'error'; +} + const ClientStatusCard = (props: ClientStatusCardData) => { const { loading = false, @@ -44,7 +55,7 @@ const ClientStatusCard = (props: ClientStatusCardData) => { ); } return ( - + {body} ); diff --git a/src/client/components/statusCard/SourceStatusCard.tsx b/src/client/components/statusCard/SourceStatusCard.tsx index 087d5d60..5afb7124 100644 --- a/src/client/components/statusCard/SourceStatusCard.tsx +++ b/src/client/components/statusCard/SourceStatusCard.tsx @@ -12,6 +12,17 @@ export interface SourceStatusCardData extends StatusCardSkeletonData, PropsFromR loading?: boolean } +const statusToStatusType = (status: string) => { + const lower = status.toLowerCase(); + if(lower.includes('running') || lower.includes('polling') || lower.includes('data')) { + return 'active'; + } + if(lower.includes('idle')) { + return 'warn'; + } + return 'error'; +} + const SourceStatusCard = (props: SourceStatusCardData) => { const { loading = false, @@ -61,7 +72,7 @@ const SourceStatusCard = (props: SourceStatusCardData) => {
); } return ( - + {body} ); diff --git a/src/client/components/statusCard/StatusCardSkeleton.tsx b/src/client/components/statusCard/StatusCardSkeleton.tsx index b0df1b46..0e95b259 100644 --- a/src/client/components/statusCard/StatusCardSkeleton.tsx +++ b/src/client/components/statusCard/StatusCardSkeleton.tsx @@ -1,6 +1,7 @@ import React, {PropsWithChildren} from 'react'; import SkeletonTitle from "../skeleton/SkeletonTitle"; import SkeletonParagraph from "../skeleton/SkeletonParagraph"; +import StatusIndicator, {StatusType} from "../StatusIndicator"; export interface StatusCardSkeletonData { loading?: boolean @@ -8,6 +9,7 @@ export interface StatusCardSkeletonData { title?: string subtitle?: string status?: string + statusType?: StatusType } const StatusCardSkeleton = (props: PropsWithChildren) => { @@ -15,6 +17,7 @@ const StatusCardSkeleton = (props: PropsWithChildren) => loading, header, status = null, + statusType, title, subtitle, children @@ -31,7 +34,7 @@ const StatusCardSkeleton = (props: PropsWithChildren) => {title ?
{title}
: null} {subtitle ?
{subtitle}
: null}
-
{status}
+
{status}
-- 2.54.0 From f2a171c596d083f4fadb4d1a116244e113ade586 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 3 Oct 2023 11:06:44 -0400 Subject: [PATCH 76/82] refactor(player): Move listen progress/range functionality into own class (SRP) --- .../PlayerState/AbstractPlayerState.ts | 88 +++++++------------ .../sources/PlayerState/ListenProgress.ts | 23 +++-- .../sources/PlayerState/ListenRange.ts | 74 ++++++++++++++++ src/backend/utils.ts | 6 +- src/core/Atomic.ts | 8 +- 5 files changed, 130 insertions(+), 69 deletions(-) create mode 100644 src/backend/sources/PlayerState/ListenRange.ts diff --git a/src/backend/sources/PlayerState/AbstractPlayerState.ts b/src/backend/sources/PlayerState/AbstractPlayerState.ts index 452e3ea0..94d8f75d 100644 --- a/src/backend/sources/PlayerState/AbstractPlayerState.ts +++ b/src/backend/sources/PlayerState/AbstractPlayerState.ts @@ -9,8 +9,10 @@ import dayjs, {Dayjs} from "dayjs"; import { formatNumber, genGroupIdStr, playObjDataMatch, progressBar } from "../../utils"; import {Logger} from "@foxxmd/winston"; import { ListenProgress } from "./ListenProgress"; -import {ListenRange, PlayData, PlayObject, SourcePlayerObj} from "../../../core/Atomic"; +import {PlayObject, SourcePlayerObj} from "../../../core/Atomic"; import { buildTrackString } from "../../../core/StringUtils"; +import {ListenRange} from "./ListenRange"; +import {start} from "repl"; export interface PlayerStateIntervals { staleInterval?: number @@ -29,8 +31,8 @@ export abstract class AbstractPlayerState { currentPlay?: PlayObject playFirstSeenAt?: Dayjs playLastUpdatedAt?: Dayjs - currentListenRange?: [ListenProgress, ListenProgress] - listenRanges: [ListenProgress, ListenProgress][] = []; + currentListenRange?: ListenRange + listenRanges: ListenRange[] createdAt: Dayjs = dayjs(); stateLastUpdatedAt: Dayjs = dayjs(); @@ -141,12 +143,15 @@ export abstract class AbstractPlayerState { this.currentListenSessionContinue(play.meta.trackProgressPosition); return [this.getPlayedObject(), played]; } else { - const seekedPos = this.isPositionSeeked(play.meta.trackProgressPosition); - if (seekedPos !== false) { - this.logger.debug(`Detected player was seeked ${seekedPos.toFixed(2)}s, starting new listen range`); - // if player has been seeked start a new listen range so our numbers don't get all screwy - this.currentListenSessionEnd(); + if(this.currentListenRange !== undefined) { + const [isSeeked, seekedPos] = this.currentListenRange.seeked(play.meta.trackProgressPosition); + if (isSeeked !== false) { + this.logger.debug(`Detected player was seeked ${seekedPos.toFixed(2)}s, starting new listen range`); + // if player has been seeked start a new listen range so our numbers don't get all screwy + this.currentListenSessionEnd(); + } } + this.currentListenSessionContinue(play.meta.trackProgressPosition); } } else { @@ -200,8 +205,8 @@ export abstract class AbstractPlayerState { if (this.currentListenRange !== undefined) { ranges.push(this.currentListenRange); } - for (const [start, end] of ranges) { - listenDur += start.getDuration(end); + for (const range of ranges) { + listenDur += range.getDuration(); } return listenDur; } @@ -210,11 +215,11 @@ export abstract class AbstractPlayerState { const now = dayjs(); if (this.currentListenRange === undefined) { this.logger.debug('Started new Player listen range.'); - this.currentListenRange = [new ListenProgress(now, position), new ListenProgress(now, position)]; + this.currentListenRange = new ListenRange(new ListenProgress(undefined, position)); } else { - const newEndProgress = new ListenProgress(now, position); - if (position !== undefined && this.currentListenRange[1].position !== undefined) { - const oldEndProgress = this.currentListenRange[1]; + const oldEndProgress = this.currentListenRange.end; + const newEndProgress = new ListenProgress(undefined, position); + if (position !== undefined && oldEndProgress !== undefined) { if (position === oldEndProgress.position && !['paused', 'stopped'].includes(this.calculatedStatus)) { this.calculatedStatus = this.reportedStatus === 'stopped' ? CALCULATED_PLAYER_STATUSES.stopped : CALCULATED_PLAYER_STATUSES.paused; if (this.reportedStatus !== this.calculatedStatus) { @@ -233,57 +238,24 @@ export abstract class AbstractPlayerState { } else { this.calculatedStatus = CALCULATED_PLAYER_STATUSES.playing; } - this.currentListenRange = [this.currentListenRange[0], newEndProgress]; + this.currentListenRange.setRangeEnd(newEndProgress); } } currentListenSessionEnd() { - if (this.currentListenRange !== undefined && this.currentListenRange[0].getDuration(this.currentListenRange[1]) !== 0) { + if (this.currentListenRange !== undefined && this.currentListenRange.getDuration() !== 0) { this.logger.debug('Ended current Player listen range.') this.listenRanges.push(this.currentListenRange); } this.currentListenRange = undefined; } - isCurrentRangeInitial() { - if(this.currentListenRange === undefined) { - return true; - } - if(this.currentListenRange[0].position !== undefined && this.currentListenRange[1].position !== undefined) { - return this.currentListenRange[0].position === this.currentListenRange[1].position; - } - return this.currentListenRange[0].timestamp.isSame(this.currentListenRange[1].timestamp); - } - - isCurrentRangePositional() { + isSessionRepeat(position?: number) { if(this.currentListenRange === undefined) { return false; } - return this.currentListenRange[0].position !== undefined && this.currentListenRange[1].position !== undefined; - } - - isPositionSeeked(position?: number) { - if (position === undefined || this.isCurrentRangeInitial() || !this.isCurrentRangePositional()) { - return false; - } - // if (new) position is earlier than last stored position then the user has seeked backwards on the player - if (position < this.currentListenRange[1].position) { - return position - this.currentListenRange[1].position; - } - // if (new) position is more than a reasonable number of ms ahead of real time than they have seeked forwards on the player - const realTimeDiff = dayjs().diff(this.currentListenRange[1].timestamp, 'ms'); - const positionDiff = (position - this.currentListenRange[1].position) * 1000; - // if user is more than 2.5 seconds ahead of real time - if (positionDiff - realTimeDiff > 2500) { - return position - this.currentListenRange[1].position; - } - - return false; - } - - isSessionRepeat(position?: number) { - const seekPos = this.isPositionSeeked(position); - if (seekPos === false || seekPos > 0) { + const [isSeeked, seekPos] = this.currentListenRange.seeked(position); + if (isSeeked === false || seekPos > 0) { return false; } let repeatHint = `New Position (${position})`; @@ -313,7 +285,7 @@ export abstract class AbstractPlayerState { return true; } if (trackDur !== undefined) { - const lastPos = this.currentListenRange[1].position; + const lastPos = this.currentListenRange.end.position; // or last position is within 10 seconds (or 10%) of end of track const nearEndNum = (trackDur - lastPos < 12); if(nearEndNum) { @@ -357,8 +329,8 @@ export abstract class AbstractPlayerState { } parts.push(`Reported: ${this.reportedStatus.toUpperCase()} | Calculated: ${this.calculatedStatus.toUpperCase()} | Stale: ${this.isUpdateStale() ? 'Yes' : 'No'} | Orphaned: ${this.isOrphaned() ? 'Yes' : 'No'} | Last Update: ${this.stateLastUpdatedAt.toISOString()}`); let progress = ''; - if (this.currentListenRange !== undefined && this.currentListenRange[1].position !== undefined && this.currentPlay.data.duration !== undefined) { - progress = `${progressBar(this.currentListenRange[1].position / this.currentPlay.data.duration, 1, 15)} ${formatNumber(this.currentListenRange[1].position, {toFixed: 0})}/${formatNumber(this.currentPlay.data.duration, {toFixed: 0})}s | `; + if (this.currentListenRange !== undefined && this.currentListenRange.end.position !== undefined && this.currentPlay.data.duration !== undefined) { + progress = `${progressBar(this.currentListenRange.end.position / this.currentPlay.data.duration, 1, 15)} ${formatNumber(this.currentListenRange.end.position, {toFixed: 0})}/${formatNumber(this.currentPlay.data.duration, {toFixed: 0})}s | `; } let listenedPercent = ''; if (this.currentPlay !== undefined && this.currentPlay.data.duration !== undefined) { @@ -379,16 +351,16 @@ export abstract class AbstractPlayerState { if(this.calculatedStatus === 'stopped') { return undefined; } - let lastRange: [ListenProgress, ListenProgress] | undefined; + let lastRange: ListenRange | undefined; if(this.currentListenRange !== undefined) { lastRange = this.currentListenRange; } else if(this.listenRanges.length > 0) { lastRange = this.listenRanges[this.listenRanges.length - 1]; } - if(lastRange === undefined || lastRange[1] === undefined || lastRange[1].position === undefined) { + if(lastRange === undefined || lastRange.end === undefined || lastRange.end.position === undefined) { return undefined; } - return lastRange[1].position; + return lastRange.end.position; } getApiState(): SourcePlayerObj { diff --git a/src/backend/sources/PlayerState/ListenProgress.ts b/src/backend/sources/PlayerState/ListenProgress.ts index 00b96f66..6675e73c 100644 --- a/src/backend/sources/PlayerState/ListenProgress.ts +++ b/src/backend/sources/PlayerState/ListenProgress.ts @@ -1,14 +1,17 @@ import dayjs, {Dayjs} from "dayjs"; -import { PlayProgress } from "../../../core/Atomic"; +import {PlayProgress} from "../../../core/Atomic"; export class ListenProgress implements PlayProgress { - constructor( - public timestamp: Dayjs = dayjs(), - public position?: number, - public positionPercent?: number - ) { + public timestamp: Dayjs; + public position?: number; + public positionPercent?: number; + + constructor(timestamp?: Dayjs, position?: number, positionPercent?: number) { + this.timestamp = timestamp ?? dayjs(); + this.position = position; + this.positionPercent = positionPercent; } getDuration(end: ListenProgress) { @@ -18,4 +21,12 @@ export class ListenProgress implements PlayProgress { return end.timestamp.diff(this.timestamp, 'seconds'); } } + + toJSON() { + return { + timestamp: this.timestamp.toISOString(), + position: this.position, + positionPercent: this.positionPercent + } + } } diff --git a/src/backend/sources/PlayerState/ListenRange.ts b/src/backend/sources/PlayerState/ListenRange.ts new file mode 100644 index 00000000..8335939a --- /dev/null +++ b/src/backend/sources/PlayerState/ListenRange.ts @@ -0,0 +1,74 @@ +import {ListenProgress} from "./ListenProgress"; +import dayjs, {Dayjs} from "dayjs"; +import {ListenRangeData} from "../../../core/Atomic"; + +export class ListenRange implements ListenRangeData { + + public start: ListenProgress; + public end: ListenProgress; + + constructor(start?: ListenProgress, end?: ListenProgress) { + const s = start ?? new ListenProgress(); + const e = end ?? s; + + this.start = s; + this.end = e; + } + + isPositional() { + return this.start.position !== undefined && this.end.position !== undefined; + } + + isInitial() { + if (this.isPositional()) { + return this.start.position === this.end.position; + } + return this.start.timestamp.isSame(this.end.timestamp); + } + + seeked(position?: number): [boolean, number?] { + if (position === undefined || this.isInitial() || !this.isPositional()) { + return [false]; + } + // if (new) position is earlier than last stored position then the user has seeked backwards on the player + if (position < this.end.position) { + return [true, position - this.end.position]; + } + + // if (new) position is more than a reasonable number of ms ahead of real time than they have seeked forwards on the player + const realTimeDiff = dayjs().diff(this.end.timestamp, 'ms'); + const positionDiff = (position - this.end.position) * 1000; + // if user is more than 2.5 seconds ahead of real time + if (positionDiff - realTimeDiff > 2500) { + return [true, position - this.end.position]; + } + + return [false]; + } + + setRangeStart(data: ListenProgress | { position?: number, timestamp?: Dayjs, positionPercent?: number }) { + if (data instanceof ListenProgress) { + this.start = data; + } else { + const d = data || {}; + this.start = new ListenProgress(d.timestamp, d.position, d.positionPercent) + } + } + + setRangeEnd(data: ListenProgress | { position?: number, timestamp?: Dayjs, positionPercent?: number }) { + if (data instanceof ListenProgress) { + this.end = data; + } else { + const d = data || {}; + this.end = new ListenProgress(d.timestamp, d.position, d.positionPercent) + } + } + + getDuration() { + return this.start.getDuration(this.end); + } + + toJSON() { + return [this.start, this.end]; + } +} diff --git a/src/backend/utils.ts b/src/backend/utils.ts index 6b6f6a6a..61320ea4 100644 --- a/src/backend/utils.ts +++ b/src/backend/utils.ts @@ -27,7 +27,7 @@ import backoffStrategies from '@kenyip/backoff-strategies'; import {ScrobbleThresholds} from "./common/infrastructure/config/source"; import {replaceResultTransformer, stripIndentTransformer, TemplateTag, trimResultTransformer} from 'common-tags'; import {Duration} from "dayjs/plugin/duration.js"; -import {ListenRange, PlayObject} from "../core/Atomic"; +import {ListenRangeData, PlayObject} from "../core/Atomic"; import address from "address"; dayjs.extend(utc); @@ -434,7 +434,7 @@ export interface TemporalPlayComparison { diff: number fuzzyDiff?: number } - range?: false | ListenRange + range?: false | ListenRangeData } export const temporalPlayComparisonSummary = (data: TemporalPlayComparison, existingPlay?: PlayObject, candidatePlay?: PlayObject) => { @@ -521,7 +521,7 @@ export const comparePlayTemporally = (existingPlay: PlayObject, candidatePlay: P // we can check if the new track play date took place while the existing one was being listened to // which would indicate (assuming same source) the new track is a duplicate for(const range of existingRanges) { - if(newPlayDate.isBetween(range[0].timestamp, range[1].timestamp)) { + if(newPlayDate.isBetween(range.start.timestamp, range.end.timestamp)) { result.range = range; result.close = true; break; diff --git a/src/core/Atomic.ts b/src/core/Atomic.ts index 1ebf8b8d..b6f44a0d 100644 --- a/src/core/Atomic.ts +++ b/src/core/Atomic.ts @@ -1,5 +1,6 @@ import {Dayjs} from "dayjs"; import {MESSAGE} from "triple-beam"; +import {ListenProgress} from "../backend/sources/PlayerState/ListenProgress"; export interface SourceStatusData { status: string; @@ -46,7 +47,10 @@ export interface PlayProgress { positionPercent?: number } -export type ListenRange = [PlayProgress, PlayProgress] +export interface ListenRangeData { + start: ListenProgress + end: ListenProgress +} export interface TrackData { artists?: string[] @@ -75,7 +79,7 @@ export interface PlayData extends TrackData { playDate?: Dayjs | string /** Number of seconds the track was listened to */ listenedFor?: number - listenRanges?: ListenRange[] + listenRanges?: ListenRangeData[] } export interface PlayMeta { -- 2.54.0 From 5dff617ed672864bf8181ea41d6b21dc1c6de1b2 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 3 Oct 2023 12:35:48 -0400 Subject: [PATCH 77/82] fix(player): Fix some bugs and add param for easier testing * Fix repeat end position percent test (should be 85% not 15%) * Fix current play/range not being reset correctly on repeat * Add reportedTS param to facilitate testing --- .../PlayerState/AbstractPlayerState.ts | 42 +++++++++---------- .../sources/PlayerState/ListenRange.ts | 4 +- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/backend/sources/PlayerState/AbstractPlayerState.ts b/src/backend/sources/PlayerState/AbstractPlayerState.ts index 94d8f75d..3f8c58b9 100644 --- a/src/backend/sources/PlayerState/AbstractPlayerState.ts +++ b/src/backend/sources/PlayerState/AbstractPlayerState.ts @@ -98,10 +98,10 @@ export abstract class AbstractPlayerState { return status !== 'paused' && status !== 'stopped'; } - setState(status?: ReportedPlayerStatus, play?: PlayObject) { + setState(status?: ReportedPlayerStatus, play?: PlayObject, reportedTS?: Dayjs) { this.stateLastUpdatedAt = dayjs(); if (play !== undefined) { - return this.setPlay(play, status); + return this.setPlay(play, status, reportedTS); } else if (status !== undefined) { if (status === 'stopped' && this.reportedStatus !== 'stopped' && this.currentPlay !== undefined) { this.stopPlayer(); @@ -116,7 +116,7 @@ export abstract class AbstractPlayerState { return []; } - setPlay(play: PlayObject, status?: ReportedPlayerStatus): [PlayObject, PlayObject?] { + protected setPlay(play: PlayObject, status?: ReportedPlayerStatus, reportedTS?: Dayjs): [PlayObject, PlayObject?] { this.playLastUpdatedAt = dayjs(); if (status !== undefined) { this.reportedStatus = status; @@ -127,7 +127,7 @@ export abstract class AbstractPlayerState { this.logger.debug(`Incoming play state (${buildTrackString(play, {include: ['trackId', 'artist', 'track']})}) does not match existing state, removing existing: ${buildTrackString(this.currentPlay, {include: ['trackId', 'artist', 'track']})}`) this.currentListenSessionEnd(); const played = this.getPlayedObject(); - this.setCurrentPlay(play); + this.setCurrentPlay(play, undefined, reportedTS); if (this.calculatedStatus !== CALCULATED_PLAYER_STATUSES.playing) { this.calculatedStatus = CALCULATED_PLAYER_STATUSES.unknown; } @@ -135,16 +135,16 @@ export abstract class AbstractPlayerState { } else if (status !== undefined && !AbstractPlayerState.isProgressStatus(status)) { this.currentListenSessionEnd(); this.calculatedStatus = this.reportedStatus; - } else if (this.isSessionRepeat(play.meta.trackProgressPosition)) { + } else if (this.isSessionRepeat(play.meta.trackProgressPosition, reportedTS)) { // if we detect the track has been restarted end listen session and treat as a new play this.currentListenSessionEnd(); const played = this.getPlayedObject(); - this.currentPlay.data.playDate = dayjs(); - this.currentListenSessionContinue(play.meta.trackProgressPosition); + play.data.playDate = dayjs(); + this.setCurrentPlay(play, undefined, reportedTS); return [this.getPlayedObject(), played]; } else { if(this.currentListenRange !== undefined) { - const [isSeeked, seekedPos] = this.currentListenRange.seeked(play.meta.trackProgressPosition); + const [isSeeked, seekedPos] = this.currentListenRange.seeked(play.meta.trackProgressPosition, reportedTS); if (isSeeked !== false) { this.logger.debug(`Detected player was seeked ${seekedPos.toFixed(2)}s, starting new listen range`); // if player has been seeked start a new listen range so our numbers don't get all screwy @@ -152,7 +152,7 @@ export abstract class AbstractPlayerState { } } - this.currentListenSessionContinue(play.meta.trackProgressPosition); + this.currentListenSessionContinue(play.meta.trackProgressPosition, reportedTS); } } else { this.setCurrentPlay(play); @@ -166,7 +166,7 @@ export abstract class AbstractPlayerState { return [this.getPlayedObject(), undefined]; } - clearPlayer() { + protected clearPlayer() { this.currentPlay = undefined; this.playLastUpdatedAt = undefined; this.playFirstSeenAt = undefined; @@ -174,7 +174,7 @@ export abstract class AbstractPlayerState { this.currentListenRange = undefined; } - stopPlayer() { + protected stopPlayer() { this.reportedStatus = 'stopped'; this.playLastUpdatedAt = dayjs(); this.currentListenSessionEnd(); @@ -211,14 +211,14 @@ export abstract class AbstractPlayerState { return listenDur; } - currentListenSessionContinue(position?: number) { + protected currentListenSessionContinue(position?: number, timestamp?: Dayjs) { const now = dayjs(); if (this.currentListenRange === undefined) { this.logger.debug('Started new Player listen range.'); - this.currentListenRange = new ListenRange(new ListenProgress(undefined, position)); + this.currentListenRange = new ListenRange(new ListenProgress(timestamp, position)); } else { const oldEndProgress = this.currentListenRange.end; - const newEndProgress = new ListenProgress(undefined, position); + const newEndProgress = new ListenProgress(timestamp, position); if (position !== undefined && oldEndProgress !== undefined) { if (position === oldEndProgress.position && !['paused', 'stopped'].includes(this.calculatedStatus)) { this.calculatedStatus = this.reportedStatus === 'stopped' ? CALCULATED_PLAYER_STATUSES.stopped : CALCULATED_PLAYER_STATUSES.paused; @@ -242,7 +242,7 @@ export abstract class AbstractPlayerState { } } - currentListenSessionEnd() { + protected currentListenSessionEnd() { if (this.currentListenRange !== undefined && this.currentListenRange.getDuration() !== 0) { this.logger.debug('Ended current Player listen range.') this.listenRanges.push(this.currentListenRange); @@ -250,11 +250,11 @@ export abstract class AbstractPlayerState { this.currentListenRange = undefined; } - isSessionRepeat(position?: number) { + protected isSessionRepeat(position?: number, reportedTS?: Dayjs) { if(this.currentListenRange === undefined) { return false; } - const [isSeeked, seekPos] = this.currentListenRange.seeked(position); + const [isSeeked, seekPos] = this.currentListenRange.seeked(position, reportedTS); if (isSeeked === false || seekPos > 0) { return false; } @@ -291,7 +291,7 @@ export abstract class AbstractPlayerState { if(nearEndNum) { repeatHint = `${repeatHint} and previous position was within 12 seconds of track end.`; } - const nearEndPos = ((lastPos / trackDur) < 0.15); + const nearEndPos = ((lastPos / trackDur) > 0.85); if(!nearEndNum && nearEndPos) { repeatHint = `${repeatHint} and previous position was within 15% of track end (${formatNumber((lastPos/trackDur)*100)}%)`; } @@ -304,7 +304,7 @@ export abstract class AbstractPlayerState { return false; } - setCurrentPlay(play: PlayObject, status?: ReportedPlayerStatus) { + protected setCurrentPlay(play: PlayObject, status?: ReportedPlayerStatus, reportedTS?: Dayjs) { this.currentPlay = play; this.playFirstSeenAt = dayjs(); this.listenRanges = []; @@ -317,7 +317,7 @@ export abstract class AbstractPlayerState { } if (!['stopped'].includes(this.reportedStatus)) { - this.currentListenSessionContinue(play.meta.trackProgressPosition); + this.currentListenSessionContinue(play.meta.trackProgressPosition, reportedTS); } } @@ -347,7 +347,7 @@ export abstract class AbstractPlayerState { this.logger.debug(this.textSummary()); } - getPosition() { + protected getPosition() { if(this.calculatedStatus === 'stopped') { return undefined; } diff --git a/src/backend/sources/PlayerState/ListenRange.ts b/src/backend/sources/PlayerState/ListenRange.ts index 8335939a..4a3209cf 100644 --- a/src/backend/sources/PlayerState/ListenRange.ts +++ b/src/backend/sources/PlayerState/ListenRange.ts @@ -26,7 +26,7 @@ export class ListenRange implements ListenRangeData { return this.start.timestamp.isSame(this.end.timestamp); } - seeked(position?: number): [boolean, number?] { + seeked(position?: number, reportedTS: Dayjs = dayjs()): [boolean, number?] { if (position === undefined || this.isInitial() || !this.isPositional()) { return [false]; } @@ -36,7 +36,7 @@ export class ListenRange implements ListenRangeData { } // if (new) position is more than a reasonable number of ms ahead of real time than they have seeked forwards on the player - const realTimeDiff = dayjs().diff(this.end.timestamp, 'ms'); + const realTimeDiff = Math.max(0, reportedTS.diff(this.end.timestamp, 'ms')); // 0 max used so TS from testing doesn't cause "backward" diff const positionDiff = (position - this.end.position) * 1000; // if user is more than 2.5 seconds ahead of real time if (positionDiff - realTimeDiff > 2500) { -- 2.54.0 From fc87b86f5228e7af2d0f398fa0c36d9b0535e2dc Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 3 Oct 2023 12:36:00 -0400 Subject: [PATCH 78/82] test(player): Add player tests --- src/backend/tests/player/player.test.ts | 357 ++++++++++++++++++++++++ 1 file changed, 357 insertions(+) create mode 100644 src/backend/tests/player/player.test.ts diff --git a/src/backend/tests/player/player.test.ts b/src/backend/tests/player/player.test.ts new file mode 100644 index 00000000..e7bbff91 --- /dev/null +++ b/src/backend/tests/player/player.test.ts @@ -0,0 +1,357 @@ +import {describe, it} from 'mocha'; +import {assert} from 'chai'; +import {generatePlay} from "../utils/PlayTestUtils"; +import {GenericPlayerState} from "../../sources/PlayerState/GenericPlayerState"; +import {getLogger} from "../../common/logging"; +import { + CALCULATED_PLAYER_STATUSES, + NO_DEVICE, + NO_USER, + REPORTED_PLAYER_STATUSES +} from "../../common/infrastructure/Atomic"; +import {playObjDataMatch} from "../../utils"; +import dayjs from "dayjs"; +import clone from "clone"; + +const logger = getLogger({}); + +const newPlay = generatePlay({duration: 300}); + +describe('Basic player state', function () { + + it('Creates new play state when new', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + assert.isUndefined(player.currentListenRange); + assert.isUndefined(player.currentPlay); + + player.setState(undefined, newPlay); + + assert.isDefined(player.currentListenRange); + assert.isDefined(player.currentPlay); + }); + + it('Creates new play state in unknown status', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + assert.isUndefined(player.currentListenRange); + assert.isUndefined(player.currentPlay); + + player.setState(undefined, newPlay); + + assert.isDefined(player.currentListenRange); + assert.isDefined(player.currentPlay); + assert.equal(CALCULATED_PLAYER_STATUSES.unknown, player.calculatedStatus); + }); + + it('Creates new play state when incoming play is not the same as stored play', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + player.setState(undefined, newPlay); + + assert.isTrue(playObjDataMatch(player.currentPlay, newPlay)); + + const nextPlay = generatePlay({playDate: newPlay.data.playDate.add(2, 'seconds')}); + const [returnedPlay, prevPlay] = player.setState(undefined, nextPlay); + + assert.isTrue(playObjDataMatch(prevPlay, newPlay)); + assert.isTrue(playObjDataMatch(player.currentPlay, nextPlay)); + }); +}); + +describe('Player status', function () { + + it('New player transitions from unknown to playing on n+1 states', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + player.setState(undefined, newPlay); + assert.equal(CALCULATED_PLAYER_STATUSES.unknown, player.calculatedStatus); + + player.setState(undefined, newPlay, dayjs().add(10, 'seconds')); + assert.equal(CALCULATED_PLAYER_STATUSES.playing, player.calculatedStatus); + }); + + describe('When source provides reported status', function () { + + it('Calculated state is playing when source reports playing', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(10, 'seconds')); + assert.equal(CALCULATED_PLAYER_STATUSES.playing, player.calculatedStatus); + }); + + + it('Calculated state is paused when source reports paused', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(10, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.paused, newPlay, dayjs().add(20, 'seconds')); + assert.equal(CALCULATED_PLAYER_STATUSES.paused, player.calculatedStatus); + }); + + it('Calculated state is stopped when source reports stopped', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(10, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.stopped, newPlay, dayjs().add(20, 'seconds')); + assert.equal(CALCULATED_PLAYER_STATUSES.stopped, player.calculatedStatus); + }); + + }); + + describe('When source provides playback position', function () { + + it('Calculated state is playing when position moves forward', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.meta.trackProgressPosition = 3; + + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 13; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + assert.equal(CALCULATED_PLAYER_STATUSES.playing, player.calculatedStatus); + }); + + it('Calculated state is paused when position does not change', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.meta.trackProgressPosition = 3; + + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 13; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + player.setState(undefined, positioned, dayjs().add(20, 'seconds')); + + assert.equal(CALCULATED_PLAYER_STATUSES.paused, player.calculatedStatus); + }); + + // TODO playback position reported and conflicts with player reported status + }); +}); + +describe('Player listen ranges', function () { + describe('When source does not provide playback position', function () { + + it('Duration is timestamp based for unknown/playing reported players', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(10, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(20, 'seconds')); + + assert.equal(player.getListenDuration(), 20); + + const uplayer = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + uplayer.setState(undefined, newPlay); + uplayer.setState(undefined, newPlay, dayjs().add(10, 'seconds')); + uplayer.setState(undefined, newPlay, dayjs().add(20, 'seconds')); + + assert.equal(uplayer.getListenDuration(), 20); + }); + + it('Range ends if player reports paused', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(10, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(20, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.paused, newPlay, dayjs().add(30, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.paused, newPlay, dayjs().add(40, 'seconds')); + + assert.equal(player.getListenDuration(), 20); + }); + + it('Listen duration continues when player resumes', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(10, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(20, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.paused, newPlay, dayjs().add(30, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.paused, newPlay, dayjs().add(40, 'seconds')); + // For TS-only players the player must see two consecutive playing states to count the duration between them + // so it does NOT count above paused ^^ to below playing -- only playing-to-playing + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(50, 'seconds')); + player.setState(REPORTED_PLAYER_STATUSES.playing, newPlay, dayjs().add(60, 'seconds')); + + assert.equal(player.getListenDuration(), 30); + }); + }); + + describe('When source does provide playback position', function () { + + it('Duration is position based', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.meta.trackProgressPosition = 3; + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 10; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + assert.equal(player.getListenDuration(), 7); + }); + + it('Range ends if position does not move', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.meta.trackProgressPosition = 3; + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 3; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + assert.equal(player.getListenDuration(), 0); + }); + + it('Range continues when position continues moving forward', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.meta.trackProgressPosition = 3; + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 7; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + player.setState(undefined, positioned, dayjs().add(20, 'seconds')); + + positioned.meta.trackProgressPosition = 17; + player.setState(undefined, positioned, dayjs().add(30, 'seconds')); + + positioned.meta.trackProgressPosition = 27; + player.setState(undefined, positioned, dayjs().add(40, 'seconds')); + + assert.equal(player.getListenDuration(), 24); + }); + + describe('Detects seeking', function () { + + it('Detects seeking forward', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.meta.trackProgressPosition = 3; + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 13; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + positioned.meta.trackProgressPosition = 30; + player.setState(undefined, positioned, dayjs().add(20, 'seconds')); + + assert.equal(player.currentListenRange.start.timestamp, player.currentListenRange.end.timestamp); + + positioned.meta.trackProgressPosition = 40; + player.setState(undefined, positioned, dayjs().add(30, 'seconds')); + + assert.equal(player.getListenDuration(), 20); + }); + + it('Detects seeking backwards', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.meta.trackProgressPosition = 30; + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 40; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + positioned.meta.trackProgressPosition = 20; + player.setState(undefined, positioned, dayjs().add(20, 'seconds')); + + assert.equal(player.currentListenRange.start.timestamp, player.currentListenRange.end.timestamp); + + positioned.meta.trackProgressPosition = 30; + player.setState(undefined, positioned, dayjs().add(30, 'seconds')); + + assert.equal(player.getListenDuration(), 20); + }); + + }); + + describe('Detects repeating', function () { + it('Detects repeat when player was within 12 seconds of ending and seeked back to within 12 seconds of start', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.data.duration = 70; + positioned.meta.trackProgressPosition = 45; + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 55; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + positioned.meta.trackProgressPosition = 65; + player.setState(undefined, positioned, dayjs().add(20, 'seconds')); + + positioned.meta.trackProgressPosition = 5; + const [curr, prevPlay] = player.setState(undefined, positioned, dayjs().add(30, 'seconds')); + + assert.isDefined(prevPlay); + assert.equal(player.getListenDuration(), 0); + }); + + it('Detects repeat when player was within 15% of ending and seeked back to within 15% of start', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.data.duration = 300; + positioned.meta.trackProgressPosition = 351; + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 361; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + positioned.meta.trackProgressPosition = 371; + player.setState(undefined, positioned, dayjs().add(20, 'seconds')); + + positioned.meta.trackProgressPosition = 20; + const [curr, prevPlay] = player.setState(undefined, positioned, dayjs().add(30, 'seconds')); + + assert.isDefined(prevPlay); + assert.equal(player.getListenDuration(), 0); + }); + + it('Detects repeat when player is seeked to start and a heft chunk of the track has already been played', function () { + const player = new GenericPlayerState(logger, [NO_DEVICE, NO_USER]); + + const positioned = clone(newPlay); + positioned.data.duration = 70; + positioned.meta.trackProgressPosition = 0; + player.setState(undefined, positioned); + + positioned.meta.trackProgressPosition = 10; + player.setState(undefined, positioned, dayjs().add(10, 'seconds')); + + positioned.meta.trackProgressPosition = 20; + player.setState(undefined, positioned, dayjs().add(20, 'seconds')); + + positioned.meta.trackProgressPosition = 30; + player.setState(undefined, positioned, dayjs().add(30, 'seconds')); + + positioned.meta.trackProgressPosition = 40; + player.setState(undefined, positioned, dayjs().add(40, 'seconds')); + + positioned.meta.trackProgressPosition = 2; + const [curr, prevPlay] = player.setState(undefined, positioned, dayjs().add(50, 'seconds')); + + assert.isDefined(prevPlay); + assert.equal(player.getListenDuration(), 0); + }); + }); + }); +}); -- 2.54.0 From f4256d1084f4bdea2945c03e523af6d0ed89b3ae Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 3 Oct 2023 13:56:27 -0400 Subject: [PATCH 79/82] docs: Update dashboard screenshot --- README.md | 2 +- assets/status-ui.jpg | Bin 196020 -> 0 bytes assets/status-ui.png | Bin 0 -> 540085 bytes docsite/src/pages/index.mdx | 2 +- docsite/static/img/status-ui.jpg | Bin 196020 -> 0 bytes docsite/static/img/status-ui.png | Bin 0 -> 540085 bytes 6 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 assets/status-ui.jpg create mode 100644 assets/status-ui.png delete mode 100644 docsite/static/img/status-ui.jpg create mode 100644 docsite/static/img/status-ui.png diff --git a/README.md b/README.md index 5cdad449..68ad7edc 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ A javascript app to scrobble music you listened to, to [Maloja](https://github.c Yes! You can use [Last.fm as a **Source**](/docsite/docs/configuration/configuration.md#lastfm--source-) or [Listenbrainz as a **Source**](/docsite/docs/configuration/configuration.md#listenbrainz--source-) to forward scrobbles from your profile to any other Client! That way you can keep your current scrobble setup as-is but still get the benefit of capturing your data to a self-hosted location. - + ## How Does multi-scrobbler (MS) Work? diff --git a/assets/status-ui.jpg b/assets/status-ui.jpg deleted file mode 100644 index 3a6581f6a3606d1fee8dc4800a5d23c7a5fa087c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196020 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%0Dcl=44c8Y`Zq{P06iM~@GuBlz) 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 E01P!tt^fc4 diff --git a/assets/status-ui.png b/assets/status-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bd6dbca2be5665369738fce1ec850699c93b4d GIT binary patch literal 540085 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%0At^+Q{|T;_J$1BpH@LW=ZT=REs{ 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 z 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 + ## How Does multi-scrobbler (MS) Work? diff --git a/docsite/static/img/status-ui.jpg b/docsite/static/img/status-ui.jpg deleted file mode 100644 index 3a6581f6a3606d1fee8dc4800a5d23c7a5fa087c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196020 zcmex=o+2Ft9TSF)}kSGBAL# z6eBB`PGVqSkcP6e7#J8dplX;I7#Iv0nHYE(7#NBe7#NHgnHWSE7#JED7#K3!S-^Uy zFfcGIV_;y|%fP_EibT76`UWT%=@}a685uD!7#SEDS{WEy8Ja5?8dw<{S{a)$FfuSM zK)8j0fdS+~Mu@3TKrV!`LDn!aGBbc&!^6nHzzlUA8v_Fa8xmU-$_A-pWP+F@#K^$F z1ZB6$gX{p=!ok47fD&Gy;9z86_=$VSiD#0X>vBPS;(4>yklFRz4= zqKu*u$>9G120;!+28Jihj7khlf{e_9jQ@`?$TKi7vND1J#48L8j7-cdtZeKYoLt=h zk1%W%U|?coW@chxW@TkzVPIgaWn^MzU=d^$QZ#gA6AnydS1J@SYMi)`L)mHLLD8U# zA5@H!ikdjN#Ka{erBv0_H8izMOwG(KEUlbfT;1F~JiUTLLc_u%BBPR1Qq$5iGP89XZ3R<7E#dCS&q+js2Tb?ESsqsNY) zIC<*QfcOl}UxExw zj7%&n%q;96e=#zZgFG(C!m4P(ZXWYowZ;xuvL#)F*7#z7xMlZq~KiK&=8 zRQ(9@8rWyVd8~;npTRwb@YgK{9%e=cCP8LF27882Rr5~W)qB5i`=p8oo-*3r>USMq zWpRbZo)IZud#2y@>X-WVUuj)w&4IIieb5M$3Ho#<k2S*H^pPU_tqxs!jM{lz|Q)^J&wxp?5`F`G+nR?k^NFMhL;zjNd3d*wpUp2zENhh0hbc;2SFqR32Z zz1@#h_BX@le?I-6K~Da0?9sD(_dNCS&t_vh5uU{VOl$iMH_qR&+vVTRtM|%m?Q{OE z_4!|A{o})bGX9;~^Pgc}{ErX+8KmCub~X6l);-7WaQu(f>UGDpI1>1btS=TuJgeWd z-v0UYe>V2VX59*X;AR(||DNmR%1!mF>c9Ik6yHi+`*-`zcW)oZo?_Ni5&S82)%$L) zo?L0u9goK>KQqI>>0tY^1e`Rg(Y0$9voRZ|phx_iCSkCsWw*W%e=uL}pw(c7NH* zl}3^eJ8~ofB|_zw1|vJ`3)3}QA2Vi|2G!!rbL6bQthyfHSnxuz+QM+oBe&J%0{g+I~IYx{!$@>qZU(&Q8unxBuC{ zufOO2mu*)_wpnX2?*wai)f+N@H4W!%39mY%b7n$x>iz086H5!`U!mT&YrXyz>RdR! zgTc;smA%*7<2Saa98BK+Z`Z#1sp+PZ8a#GyxAilZ|FD1$XKXaEG*@O{kZD){6;ga# zMq+k|_b~qN{G6&y~s5%4K;_#G86O_|f_w-?sl}sQJ&J z^>hWpqAm@F)lunxTGsw&xGx&Ebo-3kciasmHH!PA7{1OGu@qA|dg z%I80WR!`Q1g1U=l4-D)}_CJiP{LjD{v;1GI_`l!(8D0m1c=JEM*#G_he}<@T*7Hua zL5iF=3k@gFNi#k8_+@0cc=26PV~>~>2OjWnJ=y?b-l1B>z=~e znbAp&bN|+RP5&pf)BgEIu)i2ezJwd1IIsVQ*OUJY^IiWl?EBB~>k8xLi!sOls20_q zU-X~he*NDpdnDHdu=~3f%YT@9@;`%J_kV`k{|sMOpg7Axy6pbP{|wdtKGnZ4y}WKI zgUf#gkJ(x~o~c^=wOxJo@kf=3=S}vf1wWfmxO*9!tyVs&iOTO{|v4A-?qLFG~+Xzu=tO5 zH;N10k&P(hp6jUEslM{rq@8HNP=6>~{m(D`zu*5eTwCDsPwPKJe|G)%^Pkp5ZTV`O zxYgpZTZ{XK=WXY*jT*Q#7Bz4c={*m%J!`gXOV8PIk%Y&^jI$W_=Po*3aYlF1tf0MR zJdc*z$?S=ANxSyEGWK>^aevh9?U(a)y``(4cUzo0)AP3=%Q<_cq|N!amfI70Z_nNz zc&)+m_FS$fr}ue@E@_ok)7FRyR+V)_2bOMF35wEWCf{~2!h|7Wnh z{_p1kzWO(Y{~0P*{N|~@m-WJa!~B2M>;Has|0evO;e6?ThJBfh=l_DtU^~g6UL5ZD zx8*;>=ezaqXSrXvqbzS*A%AxPpI29yM3OD9ssh+oAfMsGu%bRRGhovW4UfbNeOnk` z-70;s)rc)=;m1FWyV9?%Teq6yoXn@eQ=`{Xetre}8ECS8K}JRFi&XZ;hnlh6b+B_FJ;#KYuL#&rmP@C*!x`kKvCn%L$vdES>wqxyn>Aq=N9|M|?nV?R|6OfndC)lXLc&i~XM zOgiu^n*ZeF-@`ux!DIll#!{`22R%|=3>u5NFtFx_{|xK=*BY(OTx>OUU;RD}=3;-V zqMwTcn_hnI*Ew(?`MRadx7CVUM0X_RZWU{1&YCGA^ZmT6_L5B-n_hUNPC2?=;x=c^ z^Ou*_^vYeB#Cy4~;^^u+lXb=&`~RKSmH$>#?zKSnUnR?YpQM#<^PPW&FZ$1r9NFZ! zYeMq6ToH<-+o1Pr|uM9 z|9s$2W=y(tP06$dZVvshfVwYdmI%IMcpZ5=`oh1^7xQm?Yv8$a^0xhp-q3YhUOd#$ zy}A6v&;14A`OjSs9p^;2yXjQ$rJMWTcl9pfD7e^A%dzOu#^WHr2ZEHumVrHUWB*CjDn92@toH{_T|W{B8gIc!U28 zz4Et&9?NIf)L-}dJb#n--;3@br3>_`H1|*Fk=~}f-Y6t4r~ZEYxjp|G!1@EfdDidJ z;GX-RVYdAD>z|jM)Ts;p^ZL7g)q{N}^}oByr%eC7`11n3*Pin<-s(oq5LjWvoV2Ze z>spDYd)|C`^x(_!AD`nQL1x%n*?}~OanD=(cVlv&>%kY5JC|7Poo?-W!ovR3$GA|C zB8}fF`|paZv7Wc4v|4rvV}Zqi{|p{4BYmxQi)A|6E!`Yfi%|7O-1u@0+Kfkd%nlV{F_?*c4Hpze+G`H+a55Si)Vjj z+;w;3Ht&ApDv#TR-zCFkYqK6jIDE(xyUyCLxaa6GO~W}YpPW^M-1(YicpftznPeDO zou{_B?s)Nk2AlX#>s_aNwobfuPkX)vAM>W%f29E#+n)$2%74G{pFv94F}d}(?D;<* z>reG>yz`&oy!fBhs})uYR5dqy`nYRv-d?&25)DEfEgVb{H@;>X@%>N9E+V$U$GE})P_E`F7ccHn@ zQ}d)X#|sN~FdZ)Qw75}u*4WqLb6vq+t5d<(Kd)A86ny4!-f#0HO{0mDJ9dXT|DDII zc-~NW)^eM2er3OF?`HQ^I5DhEPki>DVXfbPhEJdB=eidixLv;{_{7Vi=r2p|PEajN z=}=3Y+IimMMDVr7e9NRolH7cYGtXw-H2CE8{#eZOzY6P@KlkgM;BTh#fbrx`<^I=B zRm@Q{m2MSZlC*mKZdUxJnEwpt_w4_EaBUs)11~lMKfR5Uzb?%@X5Puq{;%%jx8(&J zyPtUfXRw+7@2APKYY$4B;&%LQ+Zxe6F-3@R-tKjs7AsYzaCleFW%K_PsD7)vwI?yx z@+Hsw?pFW)>-I_Oh+S5X##H#sQ=D9C*R(W*IW+VUP#;4~zMPkB?>rNN` zXRuNI&#;fz?ZkBnm@?-d)>gfLr`|76_UEu&#Xj<@S4@Jt9ucX5MGu+S7vr5lme*HS^KSPzxy0o`F zO6%8GEnc4c_uWJJ{C)oWmqz}qFK^7hZLckVX|kr+vd`Pie2%aGv&kXLdcF0V_QL6s zG7CMfT46@E%I;B{9 z^u*(Tu~(|fS54b(b9lb?!r$i#gJU{c{2TLczdP~d+k#R%wTRn#mHIvNf0hUOYg^Vi zPrhw-a`M+zKf22b^RI7N|2Ol9Q}mQ=zdBVU|1-S4;P7_RhQwXL6SuZc*x&wn)nPB6 z4gVQDANO?p{#UBV;ar?MP2%DGe&;`{w%<%SDWBIPV87@7bT5YF+c%GEy3Gsh+u1+= zxv$`j2WgK2&)e_*&+z)v)=BRV?rF9?ss2Zkb&>%8ZQbKn=6_hG=u#%@^Xacy@SeTq z^Y8n<{dAdilKjt_?Z>Ws~$&&wnoq{ATjA zad)%wyyf#RHK)w>uHAHBK6w692d<4b#C|THqW^nJqfTASX??$fy)VO#nI+iW&SQM% z`JaI+V{^~c{|r72Dd{U8e_6m9x>3X2=HSNj%xm>d^WONJcHHLe_s3tBtzD9{;O{1Z z!Z|XaCijiScelTtQ2tz9wr&bzT%y2~j>wtTViG2&YA$vx(b%NZP%rewPRVYEC(BbZ2V)u6aqNug^NBRcIvzEt%(|y7S9Qr&V`ELwcUS=ij{X=5d+oFUy2~ zbUK}j(dKR{p2I1uQWbo1wsq6p3C8DV%(Y!5v~q_~_xAn2tP8z-Qr;c$zC3@k!GejL zJNc(ZPguileObN#!%^RvP46S#RSW+<@@&m2X&gC(N2S&0ha`#FZk?-^Nu^ z4CgX)mK1%`J(zsuoy^BCOYSD9$g3Xok!dq6>}?_qy6g^}f%u=+dE zsfHK({IaZOJ$i6QRL$Ztv%J!yh0DMdIJ96Pvru_?EA#m5&&kXGY`yvV=haDv1)pB& zvoL4rTEDdY@4I7#m#qWL*RNPzzfUgg+I*X2L5;8PJ*RZa9y}R1%$mv0+?dlcOYHEpNAG#no=!b@ zhf(dtm;Vf3gEr~k6_WF`Fs~_9>+v|-sIpu_Qtb5g%OZj$ZrZ^^PgdYRj^9$ z98M8!d!NT|-I-tdAGqB&;~XZ3QA$GNPjSA{$};NZ*Sjf zeD*G-(9A=Nf5KdQ{Vawq-*sju6-!uB$Nt7-dA0+ z!+KwEcgdIMUynMQOn(t@D5bEW=)?N>Qw>r&xeW(7JS5cLGOvFcYIB?Dza< zcpcjNYg6IV$7$k!gFYUY-TP|grajZ#)Wme>RWMKXar!w;`Co)j{o4i4zbwhr>B$k} zbe7-c{pGKw-NEwz3^wxHUlj(P&NX55*|>@A<-9Kkx46Cnu;n(_p?_@^=5;JIS(kKb5avTJy~Q?vsPJ zEqLm^+Pyy8*FJ5xHQw6r_3P@CGc1vj*2zW-{%x7*5pI}obF0)=@|AVd{ImzROXW-F z+pmq95i|F`%JIq9TXx6W(O9X&a_r_I&W?M0+)@8q8-@Z8Ff zkl^v3;oq)cC7}Y{X8v#Y+54_)2v6Q@{QktlnXJ-z<_X*j?@Leauleh^OlcFx)7&Sw z-9k6Em0P|K_I$!uew**kiLXK5em&x3@l;uLcpCqfuQDZaU%jGFcV14}G%cpN`IY_O zk~eHKcC@Q{Zar{;FFKXqnljSg48C87@jHQtABpA)wO6r)TE8auYjwEOUZ>lXRpuRl%+kV zcE+ExSL#n+%)hksjpT{>*P&kEYNiyEy-D%ckj?KFSJfgAR%X6OIe-hMWr z=J~rjxo`a$ru%p+_{cnaz2euS8HV*`T$5$w_J4eLfdi<`f;k8v49mI}qUH5_a)!XChi3@YrcJtiRkdXYz z8?vZDC&rN_gC|@mc;0M}RbK)fz+?ZQ@qdv(2bup2UHc#3y8rj{pViaWEk|U_00p$+ zSa=m5z`p!t_5SKD_W8Rd^5f&C=6`QK{WJaTB~kXh!IwSc@}dkczuzdgZ)$Q${O;2S z`>gWpm#PKndOypv{QT?twy3Vx^*8-$-lUXn53u@mY4`CR58qaOD_^lr&N%n*Z8`V5 zW#?Z9>$b}t-NKg}!Ct`AA`{*IHdxEXYvSe;4D9kRRv&!(uQ>E=qzn7=2HF1%$Cdey zcTFx@v*uWICZjCN+D4}va!+ zUPLsit~mdZGrp_q&7yUmE_f_vP&#p@ZqEf){q4Sc%-?D`R--S3mwYbN!FNzl-fp|6AWY|7-R?(V#9J*3Bzpggig( zwEWKyw*R4T_Rm}9&YQDKf3k)x>Sh2Hg-Dq3{EyZDY(azL_NR7cy{ZZQ&med0Kg0X^ zPh+++fk*yeZLiQwM=eK|ChIPSuiny2w|zFZ>E110Ecey^TUX6|o9B7fja{Gmx5m_; zudIK++5Of!`{#T1f4{jj@y^%dSCx}IrafL)dHbKJ%&#tQwu359p2!t;eX7S$zVN6m zqu24(w_XVz77Uw|;4S>A@#TAeUpLihZl9MQPM)y(pXihQSv&qS%=`48;eHz2KG)_M zUyof`n0hO9=RpY@eJ}sF8trnm$84w8AKEkdZMgjBd-1>DT>Q4W|L1%Czuz)8#C&aB z;okFebDM?w)8O+@zpQwtKkX5-^hxDp7A6MC=YO(K{kvNDpTYL&e};W$Ky*`J%>p>))Zr|9qeR@3%?qs>lDTPyc7A zoy9=94SbUkc`x{0q{{J`%KNPHk}{`&QUT-toBtp3O~@!IDX`Ml&nwnTOvz75)l1IL z)vrh_&^OdG&}Xo*uP8`N&Q2{+NJ>r5%(GQ`zk9!uLS~AsQn;zFfp39xYDT68?tx|+< zfP!;=QL2K8o{64;u4_eRnURv6f=y9MnpKdC8`OlNlr&o*7iAWdWaj57fJ{tG$}cUkRZ@Z)n^{nj z>{?L*HyXqT8(dtHqVHKyl5A3uTi{wzqHkniV4-VZq-$geay!IRxdpzyaGhAgFE!;?V=BDPA6zd!68NxkKky`*) zjMe!dLkoO;tz7bxOF`N_U2K&=wpyj+CugQuftkjZrpczsriQwv7KTZ>CW+>jx=E>q ziMj@cCTV8o<`!wG7UnQ>JoAc667!N%LFQEC7U*SWrdU}RTcnyKn_1{48>AWOnwY1U z>n52PS?VU6TBfBY8k(6Jry0WZ`xj-VXXYj5AiD=-PD*BqRhprBvSnJ5rEXekqNT2h znVE@hl8JGWuA#YsK}xEDc}iNEg^~g&5Um^oJZ+VX^bDZffSkmVwEUu6TP2^&ywVD& zXh>#mYH&#+D2NQr3{5R94NVP6{Mzv9dG4al$uzQUlfv`pJS^8as_xP4=7E85~yoMiIq=&av~^EgH@)c zK=X@JV!FPaf{i|IRp>Io8TsXT1a!mH!1Ov6m6YcfW&0QTCuOB3m*CKisS2h)C^bE^ zxTL7k6PL456jXq+nUzOoaY=qrCDg9q)IumLCsP5Ov#b)6LBV0GRGe6rnxX_1OwLHm zOHWO)RnmuvWMWBF#s-PWi3VnAx@Kmksk$ZxsmZ!YhGqu3N#-UNDQQUtX=avbF#W~( zX(i=}MX8SIsd*)~O75At1>m?*&;Ta~O_;j!jMO|^C0zp(D+2>1aGZcjABej_nbp@9 z$xEP|Y~=|`1Hq*Q1v#0iMNr=brxt?sVpV_;1Sf)g+?o*bU_H+H1(ija=@}*d<$2hx z!cYO$=aZS7npce79wa$^kWZ1yT~LAq2?e>hftcWeA5;n0DU5>A5Eu=C(GVC7fzc2c z4S|st0*KyaYF>)1Qn`}7-Ty~S8$6wz;{$^H-8_9<85lt;$QR@!=N7XVFfioil@tZJ zJ1Im&Mk%mAWng9yWZ+|vXW&RoE-r8k2=IX{UdBd#y9Qdv&cJY47i1PT6?nvWQ&NkQ z85kH97#J8Fk_(DT7#J867#JAL%1a7B>=_IU3?j)Hi75;WjB6Me7<7svBBK}>7;k{Y zlOXIjAa**K%>=Saq$niFnSp@`w4h%h9f_TU#7@pA%4J|+GGSm~P)W(nOJQJOih!_F zK_voaahkCa zSd5X!iGhLj-v9rfRT&uACo?eoo$&wv?}h*W|6Rnuzqcr0N%8~u=qLyLr4t+gU?w8hMBV%7}U}k82Dpw_#3oM10HU8)j-1!wBdk(m6?Tw zg_)Iwg@u)sm5rSTw10t}pPQSLN047gNRVGpP*_YxTv$X(R8UYtQ9?>qR$g9SSX@a( zNlryZPF@aV2qP;iD?1xI9|s4YoQR-^9LeDSAqGJXmU!kD%#4DFT?;Y{u;u;W5CaiR z%q)zoZ0sEWk1$Ap*8GDq8Au$0L2Lj2Ls!oWFbgm+F#dVG9hCGT(!`STzIrpZ=Ge(c z64t1Ecd4E9%^l-sEK`Rxz0 zqSyG{!~Ay5?cVEpxydfqm(-Qidw#xpymQaL=#?MEz{WGwwa*O-O5Xfb2f`&l*4CA> zeE4cGk$^I)NWVZa<>3WnE}twikKqBB$GB@9n1&Lps)n0D`-7ld28PdzFD`&{KpTpV z6@asWN}sEqFKug=UIU3? z1_lP37hf`}Jipca3SDz~Zv2`bY?FO+k4?9?+i$xE=7Zys5Y>6B8;uyYtN>dKCO~cl zGoS?6rBF7AVn(&XUvO( zMIPhxd0DkW{R_|D2shce;JVJzzRf~QFRG{Qa|Uhy0vXNx`1}U8E5CFyw#Gb*cZzws zB>3r!A*kb;K-j0!G$)`0!-^YC#<;;2n}&%RPx_0fe{ zYg!h!E=&3_b9&U3Nh&U{p6>i~4V3dBe&`MQ_3<*_vN<>BZi?KJc|+%2@#&q3B3ZEl z*1BRzYsx^j+1dPNC_7&)wdq*ttkZ|iDyX(CFV5f0TXnN?>WcGGN|Vp7nFdx?@DY+h zdSkA?x!UrDlGj-q7#Nt(+g$mj3epC{pa5fi z`ssSg(pM21HGNs#{jMlIJ)ipNLUdB(Qq#>=pTEumRjQxc`@sHW_;vIie_Et#sPRT# zmu+)9rifonNqVK~T@vE9uHQNs6vsB7&-yO{2PVu8kWV72Ew|p7c4$LboNv)hl}(Y7 zYj#Cld#%+O8M9by87Mc_Jbb(Wtif($dGkx-ET!$LL0wz*eX`do>f~$-JatxYw#nnl z(td6ykSgq!I!5PjEI;By@M>l!^ZL*v=I_6R`4_A*HU=F1`@WbwSi>?5O+vo z#%*hn-OcI-N^-~|nC!dZ$YM;Bd62nS*?FrQzeVPsdwFG6P3Zo7)uL}F((Ab|gIc&C z<&2(fAPO%w4?QsR(vL-})i_;1yIH|%iPQ&H3ni8uhB9zd@&UUcB@aXiW6RGL2n!GS z>*zgXS$>0EOafFc-0Xg;>$zmf%R`qY9qyc4x>hsu5_e+X zd8Kn8MU~G_!75%57b|AJruP9^f+#(g*Fl;YP>qRpkajnei2f*Pl1$#}#_tl>SbNXUPYJ(ycIKQ< zTWxm34CV4lPUZKCcepBGA3DPbp5W!I#6 z!{k6l@m^f;X3ML@e$PB(wbIj|o+wz><_5NOh*ktlnsF03&oESO6aZ^RAsD}?Z9o=C zF_?D(na_TDDk$wD3o$S-@UMwQNi5(71&U=qrog?8q!-j~*gt#TiL;@_d(P`l72Y70 z5(8>3fRunMyTDi8nM|5RM|vXDS@x_}K70iv1G2Ew3yU*A>AY&9qG{-vBdgTKTTeRu zyarVdF>K3KfykMcuDa{Yx)K#pu?;H6eqX5sBd_3 z(49NiGS2NzJw7>XUMR=`{5GG1Ured0+|BK8b@t~~t8*taSEfC_RwBA4>FU|yrK$SD zo1Shy0d_S%PA4-kFmO&_Imo~W=|NXMpEciQ(dCU&jmj;4ldK9l4?WuC;&}v8qT)3L z;&KKC2Cxx}YpRSc%k`#B3*D@9D|6CZ)!E9r89rsX(>D9%Pha`q6<9UScmc~o2`tS7 z>|yredInSrm@=3ld>1AE*m)8xtH2ruj$qsbZ}bpy#Ay*w3SeMB&1U#?CHFvbiFxRO zUp{vy`c@hJ42#K~^*JxqGcnJPEHYH$bP$3lKut~=%!ZBq+)SAn>W~nTF1hq5RA@^urAL}fdsK4@H z=H`@ruIIN(to=wtszh-C*eQewiuKg;?45po^JSy7=htd8&YNu7HK**f@oN70pUd|5 zXW8D1Pmg#J5%bfmYUjNn4;f>PhM3O{apGjAfw}2XYrkzdUIZjZI<=D zx!*nwQY=DziV}uP-UNqFIl9$i(HcRnhnEVcOe>Xro|C$6qEbwmV))TgN8@d7(Ta5 zU*eV}ZaPb3@~l^tc6r~5U&gOL|0aKa>cg8gYoFgZwtAD9ySdu46&H2O{G#}7*6ciU ztt_@(eADsBB~OB*pRPKsy4B{^+*zCRr}J%!6`XM)tnAd&4XcA@mK>AymE6T4yiPrJ zV$jv}nMj!&)g3Nxwp?4OHEpl&#F!16RJ%o{Y__=}U#)dfHT)vDw9;>7~ooD?(QrHRe{r z>S9RnGRRw0K)P0-`u@Ib%(Seou-&Fpy-ixZtb_X2$yLuYmAmsj!dvy^n&;CmC~Ol^ z%=enMT7Q~awN7^!r;@hPr6tFsRrj2m6Q{cA*h#%=)6=1orpwM+G^=G-PRrhnV!D~C z6Q6^IxuN!fD3t7ZZ~CSOo39u?yS(Pt#hHtoPNauto27@zvHSbntu&fbz9TaH(Z!(2 z$FF=-?O1X8wrSe)g@?>dy*Hit^kWyK=mVLEhEcLWhP6oOQ`IGlR&80bNqgO-uDo_3 z->jME6B>;+9b(w9E9P5C<09iLC#H!^vT}K#;xehwok7KAqLIpJrCkq|7DTwrj69@r zQdE|mF;Ph6q>NfviLk1`s&mst1$DGQ1viRkZnx}sUFovpU9FRF;O1@V=eFFrIoIQ3 zRaM&SlQYj`SLXOyUKR0IIv*E!s%NkFbl!76i@7dJdS0FM)lh%QS>C7_uYz9eJZZX7 zYm?-)ZVjCXl~-@>?3!#nw>aWmsqd7?#b&Zb&o9k=eCh0}P1328lGjRZyKq?il}p+$ zv5K!-PU>z8@r$_gdRkMcMDMiIg^ypQGBBW)K`&&do6c6Y`f4h&UNCTK>ZWfte@owP zoG~eT=Cae9vp0G7oi$Wm;?1%4~CQWn6KJSIn zxIh?;GCE;9!+X|t5pUn~%Ti~lddHsI6ddN>x!+~>W1FJ8mR_efu39tk>8q;BJ?l8$ zW}ZDC>mj>oa-h@CFobDnER-^3g3*uq)2HW77EP1U z-gL7>PHmY10|Uw!qO{*p(Iv|wBNu7LsfX>hik6Krug%gcGCAox?R4y8)=GZJ06|0dHZe7i{N=P z4?PNGsQfjrXQRiO#Zwcbe5P!U35ylBC_8eslk0O(7h0r2xu}I?oV8x8xvS9C;uj*m zZYR8N&-Og)@$t{!oadM3$Irfat!kS~&gYyjn|CLzHh7gcZOKg?)oc^rxT!N&FVXp8 zyej9S8n5nj&#sfFbLXC0ZSyw$*163$Rh9;>+H`a)$HY*tlitgW^s3E|rXKk8S{KEu zC?53a()M%|dOXpprKqLvsBrAre5=c??pm8J1sytA6Xf$yX=6;s)wD${Ph00I3ocAN z6kr_s0)HXV1jA?Qn`)HhD?TXK~P& zDKrF8C=_eVIF_x~p1v(!q>H0BQZ}Y?^Rb1u=bc=!Ir7w!%fiY*(=UU+gcnWuGZBm`+o7pkPV&ev%H?BpvJ!BiB=>te9Wt z7Ya__8WpkR%_f_DvN^{+sw}EzA5WEyw|ahQ+Nw$6x>D0!KOH-*dZz5G&~vQ~yOP^Q zQ`41Z-PARU7MoW)ZPrrn`H}mgUa_`i%#BFa-4vL0U1qiCa@94TwxakFrIcDNJKb)! z(#-5@&&wtIEPn|LE0lcB`I_1pcrt&de$rZN+(gFj%3aQz_`_mN}l2bQE>gob#FK zxn#{nJ#UMssBnRGbJ#s5X{mY4*>Y3p(53@?6RpBLI#`#wK3KqXXoHUc%gHGXoPsQ{ z0SMIW93}Mha!#OLZu-RzuN6yQM|nlch5a?N`sC>oU9+z*U2S3d{IppYXA5^vuDE?Z zH+^!T#^#{txrx`j9rtOiPC9&UwQ$OXMW?%bB{yvrT(n%m_i50Y9qTqpr5;Y5R%N+U z>&Aw|E0;xxxkcTa9k%(lNqWfKRhPSS0@F6ld41>}bi4qiJ@n-WxDB?}cVo=fSH{)p zey5GkJic_MWcB64rDwdaZ8;jfIY)cVw47;6F6)SIH}y`84JcHN`kcMlvE}8;!kd=) zn`dq`cvUU*$Zt*1Qx#5cs|6EpybYVH7PG}$T5r?Nl*#dSXCU22NMb^%Gh`#v&2$;gTuT-r$#PQh*%I3F(+zGPi$=88o{7xoToM^ z2TyO)Hjz@;xn|2Q!|BuYQf7L6we(nbHt49Q(V_!stDyb_TZoc!U!;0Jzxis$=B#VA z5vQ)_oY&oMtUf#I&wqy5Tkq@+eEaG5u4fUaxou9{?s+BVbRs<@%h&X@tY_MVZFiQQ zOWPFm&SGmFhxqAv2bGsAl?GM{9a?m0(TPoqb;YZ!keCNPDziuxk@wQ=FKXnlcy~{SH7#bTl?efrd1bpJtuAR&Iyftb6wXg zW18V??nSY;dO zesf~+_B?GYw`9@RrIxza5;S3*edJ(f`>2;~GSxeD)~Tf%HCHcHnDprB&h)^y=P&Gh z^;|VA{WJ;jU<`rL#-8dhk zE*f%fqPnbNtU|nKkaD=>X^o8Wplf|#5`bN!sb>r#eX+=Nk>b8A;9lrkj zyVn8{kvFyC&4X{9U9?n6S!~wk!mN_3dLd68z7*$ND?VFvI%(3W1953)X-}_Qn)P{= zUQzTWMV-=_;%k)8U%5HkYLS^n3vC=eGE3w08 zP{x*_hJq-R2BzE`antNcQ_rToXu45wYF5)Xn|HA~#~$AAU%BR{UeT<*7HMmPj_ORe zouztqYc_=JkkFL#XkWtt$io4$&irJOdrMm9<#h$gXX+^9rHCHPieR%C$ zt>)LCe`n7+5qU}I!IiI@i?6nB^z~BB@b>%#GhTR1aaz+k^~%#_rzaIXU3j5jmv;1I zTQ1~E0ohoTj&xN)%+*cCQzCaMY@49uYpHYIyx-e!*Y8hXOJ`h3jO{8ld3I>m)U`)9 zC12WE!tr+IwI{F63jN$Q6J_=V$#7J&H(p(|)wSqi@e7gDxvAc%Zzs)~RPnFRdE)wh zUvA5^8KxFh6+6GoNz%WvO<8AM_N>DzUwF^CGWXo3*M{-lIZGoT z#v5lZt12>i9@HAHqa*I3b)xCm$+^?Q+|)L1+L;O})TX995*0ep>hm&ExjnUYmeL~8 z#FNRX6C<_O?9yJHG;3yx)5OENU`wC`ig#;S_D(;y`C5@z+=v=T zT^s!N)9>$+s~g?~E`8GJ=^d~+CNS1#(>u+Df$KPr?U*Tk>KcydLMdH&9oB4VDO=a& z>f)XisCrswbK+&Wo@DKH)22*TD!3|g-K%e|TC`5inl)n3F>k0lktoz0yhruqvKQy| zV$&~noQ+K3nB?hw`Sj;+n`ISWe*U%VOkbe(^mA9fe$HBV^!V)P$(ueIN2i`qof|7E z`T9ct{41a?F_Ot}CW@2!!-Sq+&PktUZtbP|He_z(^3)BVD!y!<@3l9^Hsy4z-`r_y zeJl4Uri3pK*1A(_v3JvpwJDS1rEn!M)Ul5>ZdI3p1=q4Dm2}9iJXn+*eD=A|+ntR< zs!L06R&_mz*m{#=ODFSI3!O=7T5#u~F;D_T-dR8O^P8_cl{>%Ak1{?Rnd;6NnOAE3 z{LkI>k8kytPrrBF&h*($ZQGb^Q;*N@%F}~48QqM`S!Xt7V%#L}r>o8#$y#-Hn%3D+ z>2Bk!YuTn}117IR_xU=NiijQAyYqI&4ew=YpcUpyLC`v(v5@ftinyXJOI<-k- zosdGwON&$9R(+pexX*WpauFAm)w0UyTD5_1vO+{iR?ilYUnUALSn*9{U`hdT5E!Lt z^!1^hulcdcqStm)+_Fw<3R;Y&uKL;= zc{OC`ii>k~SUb_GUSRvpfFJU;n0=!Y0{;@(1MwfmzOM> z`Yxw@zLUX~#sjgUYqzE8Yq9jnSh>7ZUg9^+MZ28?$AU(bsQva(&+1;Fp7s2ImaCnv zlcsNroa^z?=5OBfYwP3Z-@0Zz%VUzyW^WVG=|@8Y7sW;N+{*HJ_UvB%xph&KE+1Tl z!^vokTINm9Hs_?p-CU&=6z*A_I_Z?nJ5U>9asPq|78`uNZi}0`w4G0{WXq$kY8y2+ zonUtQYI6#?4}=^XC}n1qK+Lzyu4~<9qNfuSCR=PWD7y1`N9og-**0;)Jyx@e6Jz~E z*B*1Zw8!%_m*})6_axD0C<72k2BTyl{xqRyYmXXTEPg4uY@N?F*L=_C!8U%fxlgan zkDq<}o}xb2nb21*9ud=Bc7C6-RqP1ol$$xLl~STRglujjnTgCqF`xU~6md}*9Tsno z2`XHltF}OR&v-gN;N^5h&#VSQa}0*JA=-%Y|Jb zLNrYq!5$PW{{Kf9j0G5&m>5|YSs0m_S(um^85x+E8Ce(vg@i>|1&mD`0+f^!6b+0- z6;uq_oE%*m3MTx&#lXSH$iT?T^q=8}dGm+&pL)t0H_IiT{=puUKkYxm@&4mK-ao$o zr+)L%AKv#I>--Pj`}lLizxfRxc|YYFab-)y_q+Dx%l&8g(|l(8$&JZ7rwcz?($}Qr zKf`HC)AHD_$694ief+W`TWQ_aKdwS6v->yx@jkH4sXzMA2KB#|^R$nvA2}<$^5H_A z@D81wT-|kcq9Qsk56=Htu}t@`yx@O^iLCs>59>eit)Bd!VS@GF^z%QbR~rBGd}RNL zd!B7v@cH|D=ic5CtZM(SBYgW0wf_uF_NPD8|Nh5&|LGUexBocz-9qO7QreXp&Lw9R zyKPVS*2_DKT|S7$%O4dC5tXw(?mOFHTE+Wy_jBc+zI-ShD{^g?*|V!z&5t!#P1d*D z%J%5c+GBxhJ%gW$ZCw1V{`;4YRj!|w`(C>lH+xD+O%1p9MW3HqUxVIr2hE*kq2(L@ zRsRM+2xHt)CJ%BC1R)kU{Cvzk8#f*JbqTkf2#VvQ~QxGuBB2}9RpS_*fhJO z(d+eftHQ^VRCZ|!y$o0UWO``l-+IN5HsL#8J__e$ShU!gBTZNa*<+?oi@s#6#BYw`ClB9OGt5N9|XGr~W^`g}bm2AP@r)+8~8<)&w zK7LJYliB9iKmDs;1pJuSGOZzzr$;yKr0RrUJtrp5Ixe&3!IruE-&`s?;&aZaFKp|^ z$$!s-9q?ky)`?9l&TVZizZRZx6qs|Q(eXdSCZ)8Zq+~IcLlbAH>0FDy(?9bCvzkxj znnk9QB!ybGg#|A8rTEsRW8#xe2N93+zqwS>l+p}WB`r_P`S*Ov_kFGWoiC<$xJ0_k zr&d=A`AK_T(@`^6tF9Bxc`V9jLyXYNEi2}ot@S*uy|$_%Z)ecs4U>-DiSdjK7oNAd z#j@a--{XJxC;XVFedmi~2iIElqPHrAZz-+@nGDcgW8)KSfhCNPCc>pp?I!<|M%o)RqlV!PCe~+D$Vbd$AqU0t}Qv; z+CAJE_sp*D%hm4WjaZknJ|oJ$`SK0hSLy0qs&u=OW9>P4%Lj`m{~0>}p4WU| z%Ox*-;nf+QYb6c~m)NGKhu#!9RU~jzb4`J5_`6s)!Pa6^-m+<>{_U-ERff;0NsHd~J=!f)yWrfVWe4IL=lz>}PjYHx)WPxx!nflEZ!xFWe`&qI6T6Ya z`a_!7HMP?U$@j1GHf#R74i4o%GBxL2Jvz@%_{+PSS7W!p!u?FnB}q;Xc=S$PTeO#D z=O_D>)55Z}vuBn*$SZ$5Gt9Lj+-2#uX$j)rCPp(w+~&1*=BeFSa3fv2e(O`)_Y0jL zRfT(bDQ#*NcjFL_bZ+!j?_4qS+zzj{MMrY3iE6A|VK}wX^eOjL*-)0b4y|8<*g0cv zYB@>Vdf*f4YOsGdJZD|%;Jp1x<%70<{}KVA)~O4Zuo^Vnz8n@Eqxqj98S4LOkqmG5 zTl;ssy>VjO!vnRGPHs)`-tlL)@5I^tbKdUGPu*!Y*Z5AI=ytKP`@6T?wa!1d?Vdwn^CC{yj z=USed^W3j^x#i_Kaa!d)6`Gh9>VCVX6=^ed+1-|`7R<{!(b@%K!fyXpIc(`%k=eRKBx?HhIP(ldE; z#Er||*PY9@5}uX(@9olUO6kA%IX|kGT=>yekjNYJkLHB)TFtzb+_o@zi!X&f7RZ#?(NdG zZ9WN=(hK`O>CWu__TWuKY5!*X?>}9u>zneo^?&*!^Pl1VQ_Tf@`$H?Q#+8Q84Sh}p zMvMb%z1)t(uT(M);;f1j7w1nwG=JFMmw%dKr@o-#hej;h98obxtHr{?kJDGx*&Pt6 zc+TVAyIIYIPh^)vW_Vwwv(^^vzy9DB$4jp@5%IsOIZkz(iHdVvTzq5Z$7^N${Tl+_ z%bhU#xXt0&qD2QUO9ysb zEUDy{;-9oZ^=s_Ae?jd>zR0fi3E~V4k6EeJdV5wQYuKjk>sI~v)sjAZ zmH4>5hDlBn{DK`MzO*dTR{0nzVy44Wcqi)6{_jvLl`m#3+a{&8UaEuDZjT&ms333Y zC)R)&p|0GkG$cA!?G^XoSbc@-MzFBU7$=-M!>@ZAHb)wZ-wj*L|!bobeXRo_l%o?{i>t>bSuzjVgud8q%WQY)@-7|4o!;-268yYtDp5w}9ZO+9ZGTT{+3 z`g|qyPcdT-RSbhW%HVnMe}=D7$5hPta%65;ZYWN8cJOTTZ1y3`wYbrtzhHg-&*=T9 zUufU{V#Rb?>qF6@4__{P-F#Rr)K1H6s?_4=cOPClrhVj{6ui-SaxdYc_96^Bl=L+bzv}{U%$M61&cZ|FLX?y+j3rnU> z&D*tk-I~{{tzMlQAq<-i4)YfQKjxqMvwZItjT(QCwR`Wf<(KBEggKatKEAd+a)npS z(wL)eX|h44FVBDChcxjn=~^kz-I160#CD@<*1=>Q%dXf>?B&a?-^_eJAFjsC(7Wq& z%yAKVwj1(fLtT z;k4b}5{u*Xbd0%lxV}X^o4A>~V%=FS`0d#mUVj^-nsq-P^8YIDNsV zrwt{G!q28$Hf>ma_L`K^7NKV+H*LE%rOS7rj0|yFx4_Iq+c7Yr*=m(=E6el99M$U~1}(|F9)?|smbnf~j8-kZ;!wsL zBD7jhGI-V2hYY=SDh^?hzLtJ#XK=bpe9hxJI$239)WBJ3?V=SAHcez-seINqYoh7u z71^@64oBzjhX!Qn-Q}^jBqY)!f4AnSv6jv7^_K4R5&e35V(g`x-ib9nj~?c$$KIRe zH{(K0V67^X)7AIyTD>><0m~?QC?sEz0^D1fV?oO<3 z4hA`m%!)UnC0I5YC>)g3xDj2@<}NaA`^5wwTlI`1(*#aDI&j0qNX1aa`;Cdk%+uG) zeA5r=rX8NLO`I#GKj_%r^5@)^6*HHpPGVcecuMvJS7Nis(c||&&HH{~;YVAsCk?`r zx6BsO*)S<3g74XnuEnV_dlybERx8xy{hV5xv1x8=X3D)wCBnC4Hm;eHvNv1wPT1b1 zevupInV7iVy_&JR`^j5%j}q$>irp<{H=f*yTb>)VX-BU$Q`m1uhVrSp8xwd9K3vRY zs?t?8Sj}i`cECfYGu4|jXkub!Y@6;m>(x4MU$SQw>+D)&t>2dF&9J81^Y&eT-Drj_ zM;qU=9(@?mx&6l4#kq_(KfYy*owjg$wW8sf4OvlpmnQ}b-I(>~;W@ME3}r5}!n99K zPYi6$t!=&K^s!7#G55g1-~S*3B#T~iwnr3PG!za}Yz#{~pcx#$Os3tZRW-t`>fw!9 z#RpBfdsbz(E7psoQ+I zds4rBU!^O;pI3I8J26W6Waa6nt;fvz_%}rHPGX$?&S=La!7Uf#b2r-_bAMz5DFIy9 zlt~?NU9^);gZ02x{s~NtOSvQWOqsd*=x(8@vfCWGs$Nf#62JK%uEB77!m+|9dX`!_ zk5YX(UapvDa((-%okD^qmouze_+hxt6l#F{7@f zpwb~Bc?Th*q#HX=bk3MDW4>$SCNGtAvvVh+Raki1TQ|@4R^W3ua9wG-$l3A(AI%lg ziX0v(?d?>Iobpz8kMGIO&VT2jV_Mr(v(?nIWm$BKe47)LzWtDDPK>#nplZE(p56i8 zX{H6XEroNZ3jfx;kdmO%92-9W%c;xTcFOv4UhQ1;>VnPH4IKr2%h^qnP8KPfU!OSb zL)7z?t0WdW?wYcBu3&-0+z+oV9GBu$`g)RE^PTg>oxGw^+@k8NS1p!aHJ==Q^2FRr zukN&6`8G9aL)W==6TX}=yqfax#oLpYFGcmedZVf&md)(gF-bf;Qu^we8zBaAOXqfL zr$)UEFrO$`$`>?QH(=c!HrcMV$9;3JcM2Q*y4+hE^UPyo@0udE>C!WU4CDl!nr%C} z(^!l*XsV^b6t4%KTW_lTb%~qD%^P;I;%wJBhK5ZWj_!4u?c>ZbV?k}Wmhy&4>u>r+ z8=C)TfYnM|w-2xF4QVNPCb7lyW|YIkOMg=X9`NnaOImF$)X`en-Li6y`LYOQW0}<1 z-iqm}aoY_F#MUf(kP=pNJamV%p<(Q7ztxAW`tOULOI|N?X4Qk~mlEV7FZL|EkRJH^ zAg|4=^PR8uM=U!t#Y}zG386I)&#nHtVW0ZHYG{({wn~h=BXfMq+kCy#s(&UQGCL)C zbDrp}o7@|sw#3e>|Q}M#PN)dMq zCvCOzUHc&{C9d43d0Rp4p=)|`e6y1*#5g#oeSe&{ai+Oi%9?)tVo&W|Yo~iodgdMb z^F6dq^$KZR>7*0&Bx(t>BUksq<03x-^-Qk6E@X6S+8N6cbNRJi*r}J@wka=^rBjrQ z`+vQWz538bJvejItdooV)U28}=VV^FwQk15Qt|dU#_HhPvjQST+Vexod<{FIriIRr z30bmKty}aE^AB}MVtjcrIbXL|Jyvm=xy!V-YbIQM6n%TS>fF>`<%@HwXCB|XbMH-I zt2~`+#S^}3+|ztgCcGy9Y1)Lm4$VpP+~*W+&NN-BbiC8BU;J>4#r7>mQ75O~%+TX` zY?`b-bw|oSn~s@t)#JY%@j3t7OC?=NE#33F=h>ypC7)foz2xPVy)GV`Jx>VD>6rPo zW9B4D`R_cQKK~i~ebw_OFPpsV(w9pmGiID%nscKnSKn9NOm3sF-7Noa(8iYQHU{2} zTh}nNS)?v_+CM?;L@>AVIe(`0JNOxI#j-hEX}kWwd{s`F_yUhNS4#ix`OmQI$|M%~ zXr9-?EvpV344q>sW4A`lZ)3`)9q0el&Y2^&{qjslHSL*!(+&%mJ6zr4x5DsJr;DkJ z^X0p-9Z%LJtxh^s+*I;od&mrbctAo#zyUjjt$q=1!$|Sd2)A$M=hh@v(waj@Q z|2;DHp#G|>^O?7%hA~^n?+H6}jy?Op8>zK(9;cPg-WGJ@9Q&)Ur{=;E?_2Y2qS!Xh_FT*zMddTw-BTcrC%T&3R z?K|qS;`3r@_v2F@DpxOC_(Gd^^%9$&RYtn2CRuZcuKMb?!)VrVo7%dvFJDfqS;V6 zavYf>HnMLqlDW|)Gc(&t?{JvFweiI_h0EA@(%@rL)KHF_|d#3^a_n0eQ<%_asu32+h zd_m@>vb65A8&CS*@(R%8W3at?LY`BsC-@R8V@v3n_7qFsaNo_5%FJHH-^8S|vc9a- zT$6cbZRwKzk6aF{Sod~4L*E7&*E*rDCA$}GOn(k7B0Sa|>f3DCZTjSDihyF<2S=e_ zdG|tZGiqqeSa;8P-330jg0tbyRqIYj&bbj?GRNxejjRn!M>cR=NuDTmTHxyGY|}#S zY(H(|xe52=)Lw|*snkf97D+UY-H;R7yC>(I@}oSQt35G=MoJsd}+Rw-$HVz0Kz?ZQpqy zQ#v}%EX??9(+_dh86s9!jJ!^qp7J5$#?C!nFW$}eQnR{aSltOYMDjLy~xq&mg9 zI^7X@(33flIm^)T=YIxBMSFR}o!Pn*m1cHsdO0KU(|bL`O%LtTa;5cT+Bd1JF=?K= zr*?Yw%{oUPw@=qAQ#O@zZ(EYHqj<~T>fV0OEk9>eC#79}Ch^T!;^j2awkgHiOCoa8 zQ-4O?)Jj~_^TwR(u(!mw4b^%VaxA=b_9<`rTX}OiELFPpbsNrL`zRpeZuGzUS@Gy0CVHe?TPR`wtn^M)e1SidTVrL_uB*ZD$pvkH;!%c-{!!%{mlO@XVJO{QYj0zp&O)b8US4 zzHh^=aQ!TcovWugA1d6=a9wQrw%nG@+tvtoaHjZt;>)|(c-*x9iui(?aR+x<-}(D& zwSwuIIN`Qi>yl1q+uUX7*syeC*p&^l8xMsYIK4^WNGyj^)z{UDo>4k$6~5`NwO$Zt z_Mc&~p3cJU(^3;ZREC{c&UDL(?NMTKp0f4A&P@|`nTHC9U$eNaRGRkaq4u7QdgtG- z`gF+cgDBtk zB_|kz)vbJvT#=NUIW3oOb5=&J^NGb)U!J=LTGnPgy7OYQmH*YwzvtL8xq4SE3CdY% zaVvS}iN~?C{wS5C6fLT}VH#<8W9@B$TdsZuKT)xgXQdp}xK{N08I;MI? zXsnj`bDf+Zc#<>9Xh!Deljj9)Wz4tCeY>A=lJL12!_*Bscf7Q_U0m|^iEjBh-}RU8 z<}FWcGfth{5Tqi;WjO6didlr^J`3ygC6N|-k2mjl>-Jc&t7eVU?H0G&M?9aN@Go?F zn$5Qq;k4>U8d0Q=bnl zk&ivsyjUdlMK@DaEzz5!Y87KU*Hfnj5o@)2mNb}zdp+BGG;hnV7c*McCY?GUaLbEn z%Ld7nN4Q_BE;4b>?OGk`$MqyO^wpNNWskNNcfANN`gKgb`+J*@^=#~TALU1 z@NfydR1BRkIkstr&VZSjKyuHxm%!a*KYeRFQg z@U3t-vF1&eyYZE@u4R`?v+nE&xh;5gs{zq)C@ zGSkEfyoq-&^&SmUQk(x(swwT%ku8cw$JO@uwuY)Zt;$!`uQ8j=(6zZ;HJbA(hySWS zv1xO5tqv;={SX}ak#m*H&sBG;&K+{(y6)1M;bY9VqRnXAovzD=llIH>CcNPdmEe{A zvFnM$uOl<1R!>{BUFEBP^YXuP`_yXVp%wV1h_IBVh-kkvbG}KQ-&f&w^Wf+6^0_;f z7aqKw$P=Bzp7G>&&)Lh{B8`or9^T}g`|ROOrOquU4;Tr>PU=iOti1zEb=#?mZs__k0vH|89A6!H&e*YkA%25@9zD!g)4tTwI;g@ZNfgo!j66wIh-4yR2y+)O6S(8B7vp{&%_2w-q`w6>$F&SYAVaoP!^+A z4v4ujH$xeG)^WuwV3(M3 z#E^mcTEJG*)q**_(_VdC-J6~gu=BK%&E5bDEoVWKFQKK)Q!j_z4m}uA8fvM;3_yPI?1+*|g|JIeE0_Dt8_q-wK4`J{wwpJ%(%e}>}j@1=j= z{M%Kx=32p{(=41jc`ObW`Kv*u1{&hrj0lKnw1$qH8k7YY*+SJ#wo;XT3u1>P1W4 zi)LTjdiv$doYjSso3r_r#U%MCZvDRGaI#LQ#_Xw2S0y=FbGDR;=!xqDiwSdYd62ES zmD@w$kmcoLhhvs)T%+9>mYuNjHBZ1@u}c?bheur#;%*D+iP7xJUirX6X?1jzf@F}S z%Er=bdfJMo1B%uu_6Y^YZPF`{SLA72XC|&|t*yH16pO;dbAG)|UkZF%y^kGAvU?9L zXhoMCUu$vI>rs}7)CKnhVU~F_^Jn!oO7&>4c*-nx{d&GDbDQL4n}(U^EN^evq~+LWK}uJx_n)*B}DZ1Ezs-3xYYJbtb2!`Smgzo#g&D+%bx1SI$mrtJ(T@azY zSwVZ-j*OdeFE(#hyW>}$+`n_3>s!?@R~_vjuh^4p^^CC2&5{#BlbNozUDMiiiz6m3 zUL^S8dflY#uZw0qaCH>hwk+E(x%5n9<2moI z7v^0nI~>h=>W;ACiRwiuUCEUn4@XO$y7O;WR^^V3eH)qiYtpq(^SsGCbEo(4>^B03 z=Sr%*J@A_|Z}URY8J)@M);bT`t&Cz`He`Q&ns@%eJxJq!(fOnk{~4Sk*mzRBr(NZr zATALkEvT=~7{+$}*4~X7XM@8h$`)rWJ8$$wcDI^y{L7{&$JWG&DoIcCET^70AFeXl z;=tciGtmt(J z$5$h26E7y=3KKhGuoHp2n@W zHkF3!Ir3=Mmg}p!_pLdaa;-owwbvcbZ|a**{%4TMJ+5-|s&ZAbwc?HLC^bDFms^tQMMnIPbn<3x>Kz&F z`73k}D9CNv)y|=oU)Q+9Ah=9j>O;b|Cpp{;bz=9fc~iG@o0ZuUiPjrpTIWu7Pu!&2 z!g5zq@B5bxCldcNz|%>qfS0I1X0K$d!ofAR8$`ZVUH!?oY0-XnM-l!c&DYV(S8Q5z z=y+fxqp`G+`!5CYRVzQO%IfL37P0c`kAoRkPPM;38c`X#LY+(W#JVLCt^v1J%@lQu zyrg-2eOJzv#@QSq>ojEKBMlqFQjbTpdas)_aXGuP|F6~x^P>i0noLL6%`~t&Y|6+W z_H0eMyH9A6(Ut~@uGA$LHJaBN8u|-I+z1n5mSw)a+^E=PG2gzMTsoZ_ruNCo#+W`U z%6h3Bpd=Z@n!6zS%^ETLCTPO9);qcBrKIMJxAqZ-|0oJb~tZ(qi)cV zW8pn_hnbW`UgDA48;$jI4qCRTryg%iT-fqV#CN)1v3YsoE@_{pT)UJxhdQ_XG|Xn_ zJKSeoX6`%vgy?h;qr;JifvZJl_B(f`uoa%!6i~@fxo(Pe^_gp>;ilW#Uv6JzHEU7! zoOL-T!QJ$fBMEb!i{@_Hwb5YL9YzK@uN9q&%@NLB+jO*?S=@{^y`Iz{$nj|XHm4<` z3q$yM;~YYB0>W%A+O~dOcq)q9Y{iD@-hJOr@IR1)}My;anVL{0`?D@ak?%(P7~S7*kIgMm}(nV^xy`jSC?ne*%~qEm&f?LTcl z9+9g*efw|al9Kkt^K_3W>GoaPwkbWgLVbaEa>*RO;uQvYYRbFzyz5E46{#U9-Sz52 z?)t>Lk_R^}i*$AnHoLrg*Iu_5opT#ZdY3vy=TDfN>aaE1X_{CFbLwg1_brkycmLpr zRtLLYo1QIAT>Q&7)Y)nKpQTM!mqTTGRv0ua7j9^Lb2R?OtGb(^G4{*$2wYRGzntfq z>hV=_x$i7qvss6>@E%pJ>T7(Q`ESEYLo;oz4_SV`+=2~FI$Av)vvPV~Zg0q%*c05@ zdSxc(k|IZkhyNK4Ku6I04i~I3XzB7&JMC5JKfAK9cRJ^1xqFwtyxCrEUGeB}V(s#i zWpigQ_kFtV<;ks9-{wwEy%d}{J3KA%b){}<>QceXi<2{N86BJrGOhsi$M6q-$lo<*jx8!7Uf(KY*@~Saj83Q^=cqk!JDVr(4`72;cNb@O-AFbzs%+ zu%@?87q2|_xo*08vvypw;BjTiZN>#$t(q-}uID~@M~TC;LrYye ziq$aAytPEkH{oqlcJqu4uQi;6Uae%|=v)@E&u*1@=@e#BQG=QP8G63xuGM-WR;ZD) zF{7o+En(#udRbt}q$%L35wf!X-<+## z2H8u_ua0tW;MywS*;^RU+!S{I5VR7VTb_Bntc^|bTHS+S-p1Hv!a>I#1+x|`^I?k0 zd2G7}u@b^_)4{JnCzo&8CL!SIEX=@CE<0`dCTwSj=f1YoD>(_SBzZ1WxaYrclRW1&(r>59g#8Z zg@&!g9$Ri)-ZA%arjzzI0k2Ivw(MTmv2B9s?U3}+n(|oQf2`0-KySm0(so|qC09BU zLT7H^3R%2Nrro1e(Wi@1P_JvL)~r^BP?K_h1=BwJ%bSW<$<(GLy_~ny=b_%Rq?~m} z`#B~nE#_icnQ^Q5)Dy4krl+@<_IoZ@og6#i+`3g=eKTLbxVYl1*S;IC&anGlo?9t( z|3D37I^FML$}J@(BhXp^KD$cGN76aX&*#qFo+);E@}_$lTW-YM&Y54hb643XzulX+ zGOMO^Sod7ZGjdsP(Y~p=@WO+39Vbs^pvgjTZQ<7o}39X6OQYbRxFV`w&Y=`+tr4Nu348GT9>%(Ek6Hm=6ZLd zNt?3O#DivRwN2nUw`x)5wWw#BO1>*uFR5s*QPGk!RZd=|7{n~O&4|sYn5{Ga@8$TRnx3wS#-pwTOq-pMOJ-b=9VAdHkV6p{?E{>?qj&6aLt2*Vj0mq z9z0%dKG7$)e31)w+dL=tuJo6=huhgyq8r*cHf-;#TiJhAP@yU}Wy^wgmTrzS-V-)Y z*j)4E-2S=H@=ol?+LR-2lNYr1dTz*JiMwYQprbx3hh>Sba>m)bxc&+McmMBVoz~i3CuKG6h4P7s z+=$?~x;N?JYjMtCi+sN#rZkJ^d52D}{GGGnqFHE)xAu$&jFLvP-68`Xg-1^EU9HWx zZGotan`WYa=&!Tk2foJdShXQ}WpaULi(%|#!^q2X)8A_O^|-1TssH=W&;V^9&Yf$p z<{e-1t+MUYQz!lNd?=mD^X9yG;jFU#WxCr$#ig0ePWkVM-2LUWTAFvv?CQeu2*Eou zr^nvWF6{i?$6C(AzavVv(Nyi?YPOes+(`=SM2_6CJQi!_6RmOXX2xzIfw1oh(G&GP zZ|i*|)7`rKgFGaHFM5S^LT9p@k!G@A9d&i!a>?nsl<`_Gtn{*2)yWHPDk{pJ5Pl&M>yEr3qe#t}*Odp~YME77*eaGFe|u%XSlD^VBcg}pp?PWI`psGH}?-cGmj zpSp9;r>L79njOP4l!3T{172k~!+3!3Chw`V+GHKIjZ`0`YimKOl96xZm zR^xm3$C~|xOJ&PvZO>nOHmpwg@~^$eR_x(YU2n*z&ptg`YEkZu`bj=M6ZZ=(Gyl8D zrkDKl3pD6;nzW4v;e|e+ZNZeqX*x?Otug_flr?;-y?@Np0Bz>lE18YIvp3eH& zU0DH!3s)#)$+y+~4ZFuaTSD%6{NCty>#9B*82JRgG2f{^;oW}*h3zJf`m-MOtF2z8 z%(Q69Y&m2xL!mZy^1OzT|-&6jyDvu*A>!nHxQ?noG$X~mlAARbSVCXOXx z97_Z}L|@7soOM?A&LvOb#;D1W(vwp10`0C&yz8hk$z!IX=AE1+H=0=-*;XsA?vDx zMWSVvO*L?sdSsiB^0Db3@9}{B9Y3}B`pm{Ip1?OYSN}8Ax@0 zlrV6Vzsllwq{7ZG`)rCIr;4AZ{p?AZDwjO>Oj3XFMlhLqBh%~WF1vnQd}CU-`@|C7 zJk!E=u7*Elt-C%bzKwYO*kzsKjV8UKuOF8Pdc1y=dH+Ad=7mumC-2{=Ty<+j$?@-- zdOMVVD3u9K>=n>8(tEEjb@s_D|D^ao@4AX6WbT+UQKjNh#u`tR9~X0DLi4ZJ8tpo` z!t_2qJ zb|1ZS=AfCv<*holGfo7%Ze)LHr2qU6*E5N?*LP$|3#`1SRW4!dmJ)sScb0XbU%2pF zjx}Y;wDQr?$S#rDnOYKAdspr&|t`1q{d*o=|o)t6Aoy4@&>mwx9 zuFOj7oiuT2*U`2oQ`G$9m9lQkJ>qFw<92Reb4kfT+fKDj+J?q*SDSb|#k(peB)KPP zGC4im>lN@r?6YZRRg9r#-xUGZB^3%?N23&61aD+b^ib$ZXe^WM*x9Mjbx`i!th4Ex zRk}N_%?rN#D$h4+=bX-q7K@ABPO4Nax#YR#ny1<(PnAi&YLh+R_^NI8RKI=0pl%^| z5|32-ZUeVN7BRXubIzZsPrtZu>;B*FcSFA3EBxW@;?TD1hhU+m)!!FWrJD4a?=*32 zn7FL_s8nz@_l(K$!eM(~ZeLlq&UT^PiGv+#U!on=c%AQFG>mvyXp(vHvuR;P@n5r- zl`?!~4l{le@np3>*8ZWa^Y?K-eBsZ2iUu>7N0o{ev^l5h4G@+a=T)n9bH zRHfW)^(G&oWuD7Ys*TFm$9ws{n5nVh{8jh8V#i!J-qS99k}!8gubE-kJM}jlh8}yu zc=(P4aah!duQk)({QBgJ((h6~s8sGs?P)UWr1FltDwF-C zr~5dreybn6%kJyy3X40wRu40m#~)NG@D*NM663~U zkP_0{THJc*^64{wj(@AQQi~7j-*r!YrNti8MGDTZpQ^-odAxq^vf_$hg(SPCn2^cE zip73w3prx^)Lw2ZG*uNUthlwK@88;Q!XN(e2>%U<7D_m4;I*MoY%O>DXSsbc{~26L z+5hpk|DB(8`SdBpub+%GPF{cSx>Yh$?)4h3%^O~3MI`?Tj^R%Z_?CRf`9`7H;yWAf zx?K2Xn&*2)Y*OY-x%2Bj<-NXsY33rGh_sCFi*B53-V^d}k;#nJcj69xR{9vRB#gtP zU~9H-cjMXzPp;m{y13f^kqb|kd!E+Sq)uPuL!UfV?#*+V;u z+vk37y z61qDMN^?q8WQWa6e(LD998IYeK}ECq*AI$IV4cP@%l9zR@+Xo*UF>vO zpw}c>?veaMxkq*a#-45r6-p|sM zo$*yb)po_3)xX;FPHzLq}y#E>^iQDbsv$$`W;^jmkTf)Ynh6?aR4tWZNyQa;aL_M?&`Gw=;stEO9d? z@klC7P*vw|){39;@6;E6`)K*H>js4uH4_ViIFprH~~f;MlpQ^rO;|im+_c zS!YvXVm*r%U(TLsYcIU#ap7JS&P$$eJWXeLD({};x#W_k`XO+p&Pu4h%(_O|>GDba zwQXB&yYK&L(Wx8IYawQJV8Z=)#do^xSqT-d_jNd*y#C%T-^F3qPmYkQ+hdO{5^Q4K z&?Eck)=W{szTHQ6E-%b=e_(NZWwYP()rpz;8#i33>iE-A;g#8;_T`9B(qvCzi<;Es z?)rPKep_obckT5(zmK&&vzq)iYI66<#y2N-F1r}1cER__fxAyqCKpCcE{y6uE3CeL zqUofpWA8joCT{Yy_f)xPnD6q^wuW=HtaOkz$1MMNVP%!eS^k?AGz+=D>{K{1v0{xt z=EGu5Th={iqvEFX9AuHc#ImIGjcMZQUcn-cbt+kpf@3&+6{>j!t5iLfaD8diTq2-q za^Q_AOB}}%p8o8!X`5XmRbt$x$juHpxjOjD(@O;&Yu%naQ{SjE$@kf0&n4Gcx~|Of zwC!BAHMq-Dsqn@m&n3UJ+4!$0=K4qqY}3u#r0mzL@3L>3Jiq^g@BbOph5hwbh{qe5 zx&P(#j|=g5=Okvww1hYEYvYsVfBzXKX-{UmTiGe)qGI>OjaQ}glfqG*U!RxA)*X?( z()h-BPk84iu~#!Bz6ne{6CC!uKJtT%OrPb-u6^gOD}NHaS@xlg$I*PzElxwG@`)0{ zf{Q!0y!`y1!F}0fyKswHldoz-ERv6Re5bg{bHfLZxpJP1cN*_h+A1t8@J)KR+LyD^ zCzl;#b+0=l+!&F()5Pyc|LqM42gSP%c1kHtaM+O_G^L82drwtV!E4b*O{Ix$ZRGvA46)DOSvpv zSMvOls)an2$|rfQ<5ZbcZRD#m%dSU@=or;q`o8IK`3>9d5280E^YbwpJCxgi(N#v`y)9yHx5KyP zl_s;VTCGx-kAKz?Qhm{3|3t2BOZzKYw6d0QzJ8?TtDd(>{jHD0Bz@5)_9RUfsfzrt z;|pq5KBCv%Y-VAu#pD8&@Hv zj0+P$6|cuE_pa1~R{t3UZs*l{uYGAUpZ~$ZUoE;T+I_^fM+z={8D;fJZmsa?_kV95 z>C5JpOCJDDnDC)-#Sp%Q%)u<$ElvbCJGma-;iTr_u+N zB=;nJHV&np?pbS>xpgdwIUakZKgT!y%84(_cb?d;7?f!`>ulO)Pn*sqmukItn$Pky zoqbk)qaEYH=C2&lfjP!H(PA5VW%f*eo%pGazy4F9P}CZo(uoqwLX8qi+~)1uQYmZo z>v~W~U2M#IxqFh`$5%E_o!9&6bDfuswaSd9eAg{PzG{=yG9P_<*|))di(dZBBUjI^ za#43L%9wlPq)NynPebN%fjL6fz5RziBpei9rqaZga*)Ywp19G(54z8?E}wef5~jD3 zC5UC|#7P{YCj>f{RHS9wE%PfEsLBmiTk9V@J@Soz637?oha*5usw~BsY249kIxa5v z2RB6jGpxV=XO6G7-wHRY_vWw995qe3(_xfYI&s~;B*E)fD&&sGJ0>*dB(HnK)8S_I zNlMnh_2|ZpEP?O(9_FYj?PQz(`A^6DH`=o@{xHh!Sg!3=TT;=@rZD?rE=%V(6`zYo zpI*-W&v5a3E2xB+wl=6mEobFaPqo#FlM*JHy7`_|nfN1)!%!to^O+;_Mv+Ekf8JL? z?FY8cTu3R$7 z_sLPUO&)jVT%YBs@*^2sI=Zx_&QMO2GRdq`{kq{tR6YBiN10ErGTmPHNmr%xv*@q) za)$#{ub=Vq`@G}G#Bz__5)+xCyAyA8|Csfm=v7~Su$(%i&8U>zY~thATU7!o>6{+rBmgcy8*xzU0HhFHJqTgq$DoY(Y4$2>xGC`$WF|WS= zgKA0T*NrR!j!X(i`VI#?NUzxAuJin=vC22~-|66KEzn^~Rx(>bCzDxBV$qv@f{$?y}ik zSsU#gJNJlw{$qb~*_q$m@BDq`Cbu&MKMP;h?em|Zqc`Hp{YNp}KR3Tf&3ts*#@(XO zBJ26rzx#f!Uhwf(ebOGu6Sq&ht*h$3|DR#~yVBoZXVn}2XRy|8uV1lq*2ZP?uYUd8 z^)SA^VdsB_1OL|L?9{mw(?4Ub@cS2fbH51xezwo`S=_!>%a?!rl!G&kSIpJ*@Sk|p z2P0`_jGlm8SRBSFtN*B~|PW`V%xa(aS8TbIR_Zx87TIZg)Qr zc&Ny^DWXO3kg3~B4krOGAq`c@!yn@W6EDfAb8Jn8$KfpL@U2pXh}NH}2Sc%a{GB)ctU;hm(?oB8QVeiz0_p zO`JfBBIk!^ii!L)etv&qIJf?v_Z+ip>-U)}-1Ad3zp`WTRoV zo$L;?{uHL;gbnJr|)0r_Q7b%4vXEta=n6{?^h1jpY{HZ z{@I?)dw)46ubffp^g?&q-?EzBUrft?cIWN?oLWEoLe+vhf4wdHLrix2DSee&5&rAX zOZKIvZ0jy(ZgKg~@NQSo+oMgrhr7hYpL=e(rBo`lMDg(F#m`Fqe0#k$ZC&h7k(l|l zzHXV3F{b|>Z@KjI&x4u0AK!$Y*=twqacSX&SCwJS@93!NgUgRxoiF_1SHg#_wo$^>F>{Xp{?{I~ao^rAa{PLKwk=9} zviq~fJ-)rarhdOa^ZE9enUgR7$@w_%m$2%I<0sa{969yu{QPIZE9UXWKmIP=9-{O8 zN9UCp$Ks7o)Ep_1x4mp7wNth%UUc`J*mYlaU+Rv^Z>{Itx9@o5_uqSOO<8(-W}QCY zqQh!x_m)^aczR-XL9d+p%^zRWr~j3I8*|?Neey1>j{>3T0f8|o&Ei0VYUHGKN;rpYI z*Q;09UUYYGw|G|YicPUAedFxr>KWE9EwoqmTe>nNP+WTZq$xfxg8HRnC(LwjnzGdD zpwaZ1ULiqm-5%Vz)p==NyI|SUPZn*@k1Lwbn0<)9!tsYy+&aBKt>0=jUGF=)wJ!E? zQ9QgUpheLvt2gjT%PoP7DJ_a-EsC6zTUu`Anl-6i&TtZ#FH>DAZv4yrd{(KzX1={Y zMW5u~y7X!HEA_@#t>^1z$DI4w*?H+v$5OrOFB+$3*iZZT=IWo&`43k9vA+H;WZ&K2 zTlEh{PF}I$tM*t5kK$oD18| z-Mpz^CXk)C$myACSe9Ieiu05)fxBRQsEc;8@5)k5 zmlrc#S4~+OZR@J(rCt{@+bOxik<&?F-lc$tQcK?NKb$$sQNxF$Me*>7rU;J~spWw> z0!=@|SL~enp+75TX0!EQ?lbwfE}!3Tq29P7?mvU>y7ZbOM_#%FckFzBVR7mi`O_7@ z=h^PO;Bt5U^tijOXXd?;H|&-5e0T7()%Pdv6W6ECs$BPLX4~ou=j(lUeSfAX3G%$G zZ`KDZJxTd|bGhC8omXNyJ4%&X&fQhKTK>dGb(`OR zhCo@Kp7Zs6x2ohX@AHj0e&SUn-}fJL{SDVEKDnZo?z^}-_HP|y`HtN|Q+DjWQdn&g zsi$}S)}j-0Z)PpM_2z4Cx!<3aW-Z4)v>dr5Fz?dA!_7fU-hcYLZRQf8mIED5GB%wo z8zyp?`Yno3WbL1-dBtzj@5Q!UrP|HUw+q}{f4r*HWa@v0!~VBSZGFGI{2A=F&(_90 zXnNjqfv>!WPnTnxZJ81uIO-a5@`9Bb~n>@hVMhOmVYew z^6kv8#GHKBKjYe6*At(tzCTG<{#KgTn(&{Y*#9&4gr9c5=K5^Be0krp>OW>>JpL2* zPdV|c=jwT;pJDF{%a-1I>t!$O^{jsV^3Io^ZoMsEYRTJQdXDpc()+T!YR*g3Z{}5N z-hElNRI{+QEA->cE#NHvmZM<8)dz*ydp|Y(Hum1HQ4wWfqHAs9Bv6%UU}D<7DWFNn zqL4pGIJ1dUaMo0*#UT-jSG<&RISS^S@Nq0YIZ?w&;Ikr!QHsZ`VSFO328_$QFn> zw!x_Ut3}}!b*1tzRx%b+yPX$Yyf8y?b>@fFo6^NJzAX=W)U#aBH_qz9t)$=nd;auV zU0WJ3cI7pnj>ztq-m@#O_&mC~Y03_bJ9>VKJ4*Dt8+Sy+ zbUpB!6Zcl{iqGEa&p)=PeHN~8e9vLe?S1t~{q~EB%bhOm2;{sn`*167>_QGF-XP)3 zEsA_wT5jcX?om6h9MU4SMA3>jcG-m%MUKvo>5$O={;KGbT{Q{+PF`Q4!ulP?a^#AprfmQD=_vHN- z^8d`*HLLBcozGsknDSS_E6yyO^7lVO(Y)#y?iu?XOJvV{l~*(TdXsWtgAZHwS_!4k*x76668qQnM7ENPn(N74UjB)ky*mYa`BjwPf0U9B zEEam=!!xI)WtY@ctKO2Ep>GV=^agU86!gqoB7Qvc%F?5fUZqVHdRLaMm-m}K5mxzx z?$x`JC!Q5F$5oFjB&hf7N-uLwuTtTq8guooi!8eO?(VuT%e}YWdYl!w>Cs!S*cEqf zO<6AJ`eEmuBlmNVYc&Hp|0FR+q|rtgfpr-UCmmg6wO-XJba(sQTY*l8(b#OyOKX+Q}F%^>y^{? ziw9l1Ht$2`$F1S(&&w~h(XFWxTRU6-r{3AaXZt7ov|n*_(iQb7>L+$AU;gkPSL{00 zGnd|Z8O`;+e`V2W*QDoW>$4}H-`5`OmRRUzW;Cnl$j|a8g}iUNyGmQXXUw=~Z@hBp z@9o(qK3o6gik)s~^v784Y}`Hm(#?13-fy;@wtjPeJ{wPU#O=#6w+__t|Y~J*0 zOV>T;uXlWFDKO{v3)7F*dyn3lvO9LiMBg~Gx%Ox3cU(Sl-9^`PRrgjx&HHvFD&adERhr;&CJur85DN}JxES^|5@Ya(XBrh$yh~O)R@0Z@KhD-Ps;6G*tYH1<&1stuk=#B zC;aT?sde2R_ow5NNp_s_b@2+5mmh_y_T2h+y!GgT9XtD1PMotz**bmy@o(bJ;qk}+ zbn|$w`_CXd`H7xKnDX+|+pD{`YL@K|>OXpM`Oi7_cQPJjpV+SYP5S7q>Dhmzg8pna zYdLaHV1^=x;}7w8(RYruv-E0DR8(1*tW}?Jk;C-e#yKjARcIIqG%Vf zJkaX&yPnrvvFmkrw4Jr%zOrJE-m>+4T6V4{-Og=ry4uM5sJEZ>jGoz}TW`HeG*_No zcU^wo*>mYZ55DN?Y5on~moBF9RW@O+#YVs7f?kTR4lcJ^Fpn!LhWqF4&%*l0)IL{k z`KGY-RfPMmSvzI&r(Mq66YZ35)}qKClxsHo?6cP_M{GShN*5gzneCJ>_{#Sohky6p zUEMSPDnIj`A6R75xA&*yiL>>u3b!to|B?APJbup07Zv`&7v?SeDr@!TKf~0X+JDP~ zZU0GIU$}bz<+gblm$%n1I}yHr-SzW(xE{p(i`=n0=zZBziwS!|zS`PF$4vhrE`EEz z-r0qQW?vP}S}fdp>(d`ykFRL@Z5&no$wpU3N^J6(Di75YvrVi2uyx+QGDGe{l}G8K zK%T4#UNROtc4?cd?bXqu$hP5I%Prx|3oUAAg9PU57|nG( zbDra8Px31@XjkAXv?Nwr^J9MdW%kyUuP)5C>X-c`>ylYm{-mg5?_a*=n%^%sC)Ynu z(fiL3y#GpV^(T#=bF05<+^?T-N4|dM{qMrU$G%G!YwMl<8DHyf_lx&w@8K}6tS?{w zGcbR#TJ(0_e+J&I{~7x4B$YodukPOZ?WOBlvoC8m>}~H)dtaB>9;k7$bNfoRoio+$ zD7$xltFsOL^q*nz-_t1%{+6Z_I7c1Ks%$1g7nyWiS<{$%nhYN~Upw4TeUxYRkv9?TC+J@jCC z&~(+?-O@q5f7U|-jQ`-JuZ87L>bGB-68ps@Bg*86lR%4_qUEH|iiWK1o)=~x;&g7$ z6B2$3t;W7Bt~v4n6nNSvZmvIiZR^(Md!%Y|OJDDKewn>>eZSMyt!H%Q>z!9dd@cXU zd-z1`zf_Aku|IqE^y)0t^IJCED}I{co2!4gR&348Z_larSp0LkdSK$@yR+?$c#Dnv z-0K&z_14Mljrwcj!*w$@JUJOC&?>) z%KP6{a$4S>b}P%|)6b~6UNNyNy_7y#&2crY_*G(G5uXVzx4eT^X9d0W3YxB}>D3jq zcBNNP_tVTRYUZH+JpV!eaPc~)-$q{QciMVoq$&bAoN^C2u5uDiTWNfMu7!uACWn&% zxX9Wk_}1;nnFsH`=o@a1?_KS;ZPGibnp)qzarIkmY-_5*)~>Al>lL`8a^ola`a4%{ z`FwdlW3I5Km(iP+SId3p+fQBou_D~~udR`jaOIYJ)yDq}>;E5N@D*TSWM*b$WntrF zW@2Sx0SzuO2{H>Q8VV~JIR+Xh7A_P}Zk)LBB8!7lKu}WAq=N|$KPVW8I5#zaOkTul z(lA+6CAfG~!GuGX9)TBqFfy>&GyP}y#gp*n#rCcx`u`dDm%LrZylrBG_4SJ{FRuL0 zAdoG=q;N{!tNfDGcMksC{g*%go4ZzQ>z1FE&lnx9Et5I?ZRUg>vhRM)nVEj^_ObsA z547qXfAOl#+PLGKuYBjJnAoVj&Xd2b+WqIddi}@#=vCedvqc$sGtXPZ|1p25 z-)6aXk<{;v!7Ez71bq&;Qhi{BbBoW@mA}Qrj0$efe`(db{7e7hOO@+RZ(GL{$yVyO zx>m5X_I_lJd8VN7<(=V6%y^2mu9#%bI%bkr8glo`v`eKyGO?x|zn$3jiuy;L5zp_s z^l*QJ^ciY&W$*GIG&&NKZAVi^i7wpU1o35c7TSF{gp*MW?Kap z$FBIcK<|b@?W{DL>;D-nzx4lm8T82WRsF9{`NAo6Prm(qW%pR)@5#5nuT<5woLZaA z#&$;R{ku6Q&hNFbx{$bibDnL;tMoYvuX2|${t{$;c*k9$^~>VO3HKM3RJNP=*?w5| z{cU>N9rvz@@{P$AFK z&_}IG<_C1|8vkeLUn5d$`s#X5NSY3xO1fmost|_l3Cx;XAJi_k`I(rTX@0$!^(XJ- zy^mG~o62QQ+*|joN~>>``AyH>jZ@j4z3&T^Uwn<{=EVi)e@RNK{lsd;9zzqS9? z%H5~LFLq}J@9>WMw%=G?@Xz1u+bIHiM2Q1JwE2Os;-}>t5ov1c^>nhRlW(^8f90Q&z;h$$3^=bDjv`|O+@a<%s(>Nh`{|M2CiyA#wu?%d9{D!MP5SHXMMTR-cm zYHYj8k3M+iav)S8RJC=_-(5w5_yT@NdR*hT{owFtJi71?b+PDGxqdfb2qCMQoqa^ zcQ5|)FC;jz@ZEog(tqc>>f4u0GuUOzS0Irw`NjQZ(U1GT#Cl$vB3E2^eU*-lbIgB+ zWeoEjCa&wc#;JA4e3@c&;L_#$|K9&S|NOFRom#hgb#1vCy8RaBvYLy1ZDqgYtA1Pa z;tZjHLJ2Dk`3!bb-L~k-qw7|04!+;YykOt+ZTD=2v&3gGcdq>K$6|Mpse#dK zKK^YBjq?~@-s`v>!mxK;NwLFawbbbnk2?RITAX*wV$LLs$sH>d*bgWvB{8k6b$6^N zJ-F+jU)iMezsG;uY5tR&wczhEhwm-F@4eV!VrD3?=}}aKlw>~Rp=GyE&$)bA{%5Fe zVco@dWwR3gTRVBN%1a^p?G2acc1PCMM6Zg&5yJ&UXF^T~VoZ-vNKR-}6G zNMbYCmRGZLJMUc+Ezdq}*?hhUt!6WAK0ccz9kTUoV!K63#$3L`-P?5^9XMZBw6f{b zb+Zb$$(Fve`YQS6^o#mu23}&6%1C*y)ysBzodBDxmB_7y*G;#kDIYZ4awkUW#*Fvs z;F$U)yXV36aDBtelSdW4deQqRkq!ab$P7##Qjf(GTbgGdy&Ui>a+8MS=o$7S617d%$z7cf$`a# z*B>ez(>eZVttd2ldH3luQIB;hvDuH?cZQbSI?ge{Xx8_uHEbr)67M;$eCtcN$<{C9 zB_?fr?^XOKK?!I~Qs+&~KezL!t|MFM2?S6S*YtQ0&>K^%fh4bb9q#WW-8l5NE?pqE!ptbT%wOeZ!=pzE6YqWwd-M6x!V4F#J-mF@^lfu-M`!CU z=FJiX8aC+_%`EQvvrM+=~>v~At0 zc>mW@ldb)CbNAFNWzU%tb3Nv|_!I43^N-B4CNJupnZ}^U=4bLl{i;ddXOGTfU9R%H ze@%X}aPZAOeO|Y+CQxrt>`dXHM7B4cTPAVVO`7ewrN{iU?({$Qt7mTeTDj!qwtFVW zrrES{ob`2a%H3j7a_{{N2ea85?X%Z!jQQnPUbrIB_BVI;+`8C>A-A6Gd^q!(%5ra+ zw7P4Plo#FHx=#AKXUTttZT}h4kJ=x8=l^^D`6c3;K3)n;J9}`63)ie9VVP%k5$Rj} zmM1?vGVk)L>e(*a{%NdmnYXIU{mtKXO@doncW-NaJ2hd6U+kok2~4Hd+|FMW{xfj? zUVrb!j~}`-7gc)hR%6k;QM=&r-j!Th0eXTz{?uh>Wt{%c5S6;7>~VM7_isU&7Bl&T zgA!JoiET6Cdq3qlSKd99xj(Mid2GGXsp5M5nOZPw>$C%VBn^yKg@~Nc7d*P)yLPPa zz2n&(FYm1HI3WLaJES&S!frPI&z@byMwMFmCwJaaUuY<&Ar!-D_c!^$%9!Jp#}?cC zTK&Evk@-kU|3mZ6TQOEAtaO)zG~5#~-_bRF>ysO)n`a(BYtSzAS>hvCTo!}$#Lk(m zVX5b~cNre%@af1dzOpOStEeJfS=nIWn(EF99^(@WVkjb}WSfBa{t1efr4=7Z`WGaGNuQ@b9puAOw&*z(lA zTm7t)`*!$Nzn5OJ!@p#e$gJyIY|Q*Sq!em%tQ0p+G+w{cb?wES{U@HbhunQ6Tb|Cb z!6!L>4bF?-F!=FqeU&C5>i_~d%&&a1NApE^0m|8Dy;?Q!IPhFke3 zJvUhYXSkhzl4oN|Up;sx=k}+-ow8<$p1Lm&2^yVw z{p$9o=-bARefO)Dp5477A@J3MPdCk<>^uISA$PxOvA5%89_GK#K}E8BQT?5NwTfpu zWiM^qEdTBHCuf~w^VaV86yU84w$WVY?!&Li++jX0Z;q`0S^sz2p9$78&NH~aH+uYa z+Q0cLHsAjEW$XG)N^@`DI%I|&NFZoNo^z?V#wVg9H%9Gq>FM zJ15CK@>RpFz&SC|4Hf$m-B+GCH@~4?bK2Im)1_TE0pL>AC*j^={377rWK|&hD)Gon=@4GZfKD{^Z$Qw@FnZ zukT1J&!Ur+guR^pF8tHJ@Bs`JbSJj<@g3Ly&#*z`&;?y4Qjx{KS@MPRUoL#P=>8Iu zi`B0t8}4~_+aktD~@Zo)-yjx=CGGlWq|HH4@e`Qp;eLObvqVK!;BC>(M%q}t+zKO~E{)=J9fy>%@ z>bKV2vZ^|DxPL!LW$m&0Wiz}TuTQUfkiWCQ{LT*PcQL%*_1Jz-XRbZnxbNwK`$bfj znCI+pd3ybq%eMRFcieyT<3EG1@$HXaF6b`b{hz_$kB+n&EAEt|rV@M@*6u->xgQj-cftXAJWkh&m6V%~~crOz|&DzD%EYW=sG`eifU z{`eKGznb^q$wOPNt#COL(`mZueb0N@r)*2zADOCi<*&@=+voLnZ}cLyN6lqh6%x27 z6s-6Vr69eu*L z_^%154eVk2J?i?yo5Cl9cU;o@(B~eXqm}Tc`&N0o#*P>JCP+rE-8p;R!!xaVI@Qbd zY`&NJHoI)M>bX1PTSlkiB*R^%Gv+_FI(BJBkMd@b3g4EO>+MayEa#5letvX&{X>gi z%Vj3+{u%J*&HihpJ(~DVjHw)Ui zlYhCa>09%o-EP0HXWXxPEB!upaqa6Z`FqQHzpuNv@9Qn|d$f`&;AfflpW)w@)Ql}r zx?iDhI&9hl#?J( zXVibE{e9SuNn4Aqo(|WIA%{A7j%B&e3vzVAZB*y`&#*W0?T^35pp8`be~Z7b26aq0 zR@LU;+Fp{#&Tg>j!y(6c1-b7CG`7JF>7RN%K1!|d)2 z&8y9%qWt(~OwBP5KL6*{YP)T3dkxgpM2)vvd-W90x?R}!<+|mY?3hCjQn`LFZ8^q& zHU7gtr>{PpJo7Tce+CWqTNi~q%b0$7#|EBF?GyVA(|@#a(H^54W`bXPEBeBy#6gStE0~ zixfv&TVt=X)0~{8e3H2{oN{J+rx_J;wnaHdrU*6(ugr5^{^q4dU~Us55Xe&}TknZ?O3R&KgWE-SgMAF9O`cu#%I5O-%=fQ%KbezxIIp0r zb3ufz(d9h%qUxL_Qt!et@2xU>!0IvMUHG)imt=PzeYEO|ZgOv&!n21VEL*R?R`zk) zrFpW`?DhSx>97b=_-4Qz=ew5S@!sINf8RB)vwR8h%ym4mrI4{OR5NGJo8+?JwH+~X z1&^Mayn9q&cxR=ZywK&jJaYx}PObZx(!b@L-V>SUf;{;gAJ276xSq1P=JUae2^LY` zw(l~$JB9T;JIkD6&9AXr5`}kFCeO3;ntium=Yxb#^I6QbIk!byrkvaHE_|lh9{-1} zkx$nz&oos3tve(8NSKcPT$6XcjX_H+H{F|OanbObq^^+LoPSv@p;XqHy|iZqTR zI}a}_@sa)zZC<3ltn`I zt95Ig%I5s?pS4`SLeKue<SyDh(H*b?!OMM68x?&3wy2;mpm%XKft zo{V7=5#<-C37x##_}}mU41vF|!iNlP^%s4A^Yq|lp;??K8qHp|bN#iMhb z%kw>#r(IAzYj(unF7xQI*-_c12jVVw{(B|!%G#-T-@RQA?UsHyb7haomHbCPmA&R) z(kv*9yYuwM^}UwoY9*&fyU7i&An9ho=zoc{BL0Xk9Xyt49Fy~#t3daxHp8e%} zZ$)Ur=E}o1%XjY${w1MbYUFz0@$^ugRp%EQ1ZU6H+ri}7^Ce{E{3Q*)diV1l$g4bG zwCdSk!~ShKTQ|w_?v9N2S?>4gRmhDG{<L&d1&5k~#ZxO1+Bp>)|?33o`nWCAo)-LECvSTA*^Zj){Iec@jUdZG1cNv%k7pw9KwQQ*(cAntPychkJhD`eoO4 zJSvs{8SQ;5NiXBK@uIbg*ETj@;BP-0cRcU5QjMy`<%%s?R!L!5W=RgOciUg#{c8`h z;AO^+ya#zL4mIBEj)%Ndu8vU`c(Ws_@T65%q0i%WE4R!Km}c%UH$2_<=ppmT&sv4+ zHW&U2u;#Mfzxvs#s%`nd+mwGb?qB{&=i8rJlW(nSwTCgbGj#j6AKhs$ z8o4%iaT1TuC$0(AFWzj+-@8n$SoYO~ybo4$7o4+v{$vK{vZyTSds>-uk{2m7s5H)+ zmGC^&@A`(ADDQ1Et(Vn^3M9y$?x@>jm$^3CIkjN|Pv^f`(4kcy3F+;+TqlkzU$r{) zIb(Xdib(ZQ^X8v*eTbDJ5^HxFQW6n1>^Nl;a za>F-Cyyai^Y!b&a(es6cHYefc`u^MWcWR59MWRjB3DqATFUIgX?kT*h^83>&+pCY9 z+y0!KcxU0(S-?$}#w(y>b}qQ#mvh|joC{B4ZB0W?uHVEoL)_()zwTPU z@->XhXY_S7u{?UB%k+fu(={o+>?OzV`)cZpxlfEX``(KHC`{O@D7*u3g z-=&V}Oi?+<`Pi%0yzS8CWoS4nn^&V4sDAa={!Mp%rrg$O-uHrc8P8^c00z^~0o@)4 zPR-7o6wf=2FX}%7=i^jw))^ZL{w}$(B<1MZ2F`<%wO>3tc6paH+l-e-?``W@z+B|_ zz~UH#pZ@ZVPY=%Ay}l`*V=42s=-KOjs!h9;5}{;~cA4YXuBxgx1@9_TJ)bn&)b8|e zo6Nkf>zcuyty3Pc&Cr^%_0ofqZ{@lRmM_&)C^cg0sJ)x_XVS{VlXttnM$9gbFFtKt{%ESK7Jp-SPRGG*9U0j>tFJDaedockT^HV_23l=x7gcA! zmNDnJulAz{es14ZPB^~v;Mr;CW?uJa@l1~0KU4N-@b($S4bN8`+MSV9$8Hy}@~wf) zf!G=T=C@_6ulxVJS}S8Xol~!TZ_p~9JO3Hdc4^-M+|MatVu|~A-RjE9os%Pwdo!?`wH@6+iF8rn@#gg~+x#lyDHc#Pc5+8hd zGq?S*n5UDq>eqIYxDt!(dZ8tM=e)OiUM;*Tzu=5NpN&{_vg5tVjPu(keO+7Ma{N|n zOv1FQ4Dxr@>Mqa8N~)_$4PCiu@2rBfs`Dy3%g(8197vm|EORw_C0AiY(Fw^zcQOik zuSZY%z2$q6!^G^h($n1cnS{n@Uf#In@Y)S>&Ofypbe5`E|BE>JWL2z>N!xpAme{(*_GUN`?x z>6DfC_ihyHec18w*(x^I?GpVvKqG&kR`%h|)_*jQrcv|JL4~6W95L-Nqx^ zeM6DcLm}0uhpdkMiC;`_NlaL_Y~8s{3l|%B$-DKOxmD2Xw!I{)mQSIeQ*)Wc7T0xG zBs5I?*Ip<+b((K_wJqDqa|!d^&hC89VbNpl`k!H0@xSV+k922DdLX*ktSQm*Y^LI_ z?@B-JvZ+RWWM3q{rBld8xZ}5y*Y4?yl`I!;PQCboCu36R#ikAFvxLuhgl*gunB5}K z9HlacbyN1d2unYvn-Tdh=D)hT^T@2blb7Doj=1EtXG7Z=h1b4I4%ogjt63f}`_bW?)Daf3T0vSH`b@;Y0dZ*AGSYYO*`=(70*&}_Z5m*t4`$1@#M zK3&S+Vjy%cVCB1Zu}zoDI~@;9-1ll`%4-Ry6*=aa<&{F)lJfMX*UO(OEPW7jyhFZ~ z?Igd|4s!=Krp0wX6Hjh3yu3F)@|}v%iyp5H?|1Lr_1zL^iZOMa z)F-8y3y;4hN%!gAh`5^MaDJnmj7#6Fg$5tK83@RpGU|R6TbLtY^8D{a=|iQ0M|Vqx zu55~lefMO>qYKQH{at12N*BaDJlZev-1aKR78AZe$@r`og~z^!u6ixIT;eX-9XvDS zjxq1{`CTiM?>Tq0z2yC)c`5Oz_Lc@nD*f(Ij(r&-lVy4B!Op{b zbLOaNM%mPPw_p9zYobu8HSI+L<9(xG^Z4EO?7UWP-O_x+q0e)zxO8-T^!-P(B`l6L z2lp5HCd<5?omG8+$&Q2FnukgKi=*77HPvx>YCmii*=3zDWi)!=Qa{so#dB-3_QyMv zzIFAi(BnPxYS~<`hBt3{|EO~qHk(Sl zc)2R0c$HueJ{%_`?V(xEwGui+AXE17>TXrJ*%B$WZleia2H|w@Kr#;Vk zIkV&Y^2-%lEH@TNUJET2%CdTJyZYC1W8a_56Rw7q<>=_7@8)ncmv&ydLqL(;^x14T zhE0V6a}Jykx7c2OerMHjt0i_1ce13fTJqsQ?v*3OPXtoe7w~L*%WpqR-11#^X6H_d7Pop#7Jvj}|^Ry4U1W>i@N!XHVXzma{W&#hmV4>>|0P@Scvrx#U}| z>Q=|5N6F`{xLO*%jYBZ~yX&HzSJzHDm+qHg_ik2)B+oBfoxW8iHbZff z|E9nd*TpN$*$uW@d(2keCptT9V(!sdjH|sgCo4&+ z#O9ao{2ROU-t7`!d3p65tL4%@<}Am$-oz@4^KhtZ#U*}sxF>k}*%q0f-~A7IlyooN zn{(?o>-5umR5>KA&Kaw?Pnuo$_^v%`!HU=KczHL^d_N^;>k(Pzi8alcXJoXWPW*K! zSLsG^pY>%8u1VJ?^7pO$%H8(*t?b`di{CNbWq%ZuD=|-D*QT2X|7@Cf?bd4_pI37W zvpsSz+R2-o5x72suXR`9%sr7D4Xg)lxjYR_eH3>oEv5LU?lR@r%1n*-+sYCj8?LFj zSUg*BUGW;VX_H>hE}Ol}Z`BJazrB|~gsin(ktn`x>BYJB=TRYp# zDy_7cx5Up$nK*j9??0!^KWZVCYbxH$UCn#9+3se@J&9vC6ihPKY-|?nn{2Rl>m0N5 z7XKNTie&|S9#x&<&9zD>{&S<}_jPU-|NjifuKIL*O>^4VyRBmX`J`pc61=v2!Lu@h zwq8)S`0Shi(CJsnU8#S`_qH96ocAR25%;?AsKdLYS(2qRw(cxF_vfC5>6(PzdUKuC zbKPdXJ5`{#Dc$DCY8HR>V#z7Ttu8&|5q`AcT3w)w9U`teYQ^q27BsFiw9{H?A}!YE z=G+m|v2D)fd6h=NwQl;w72HdAoZ?Yj$F_7^x@5Ri$w|Go6W{+ca2^OqY&UR_>04@g zc3CAObH#&Gi(Zw?vK08{t~2kenb@Ysyp^5r{Ih5K_(n^;xV-+uEc4ukvb*2i51MH_ zI^e+Oa;r49BTGbOJEuxln$E8oWYW6Dp^xSXi6I_o^IlIeeG4G0-dc5h| z54&6{o3rGfX3oQ;PnY+w={=m`cXmU;tdFQEj?UUWh?OA6Zu2_5YaLJ5Me&uVF zF1bIwvs+Me-4V4KptMW|B50vS4Z!dhbDkM8bM#)|6<)8U4!l1?3 z=CUQ$?NUF~^FkVr_SytYC|<-6yjmrh-8I{B_X5YWivzY#TPwqwRGL4(kIQiC3BhT9)CREYg2zo+DGX2MrPxWu5FIb z1o_n5xUR;|nD3@?AZl%}f2?r#vJd8qf9oYOU3bw9Ot!nWn;(WuNYW&i(X9Jqn+Wv(4p6G?DVZ_wer3ST>U>QWrdJnv~|6@3ZHaI?X!b@+`$E^Ilw& zUSwb*)Ow)v#C+E^nT0Qyx_XNFp9#KD;WZ6#WWOwOS3@cNx+@`IXriBFXkgl4YCC zRClut`wkpbcwWXCvQFAb^Y)~|NsXeCx2%?ZFi2V!F&TH@E!#v(SX;gmG_NM*S)Vj-I zQK>s;DDwV0<2I*y;)^5vN&ke+XIa1XHM(&7j%-dF1Rmh z+1WV@A`kDL`FaZ9gGy$zjNG5gJF+`%s?-{s=Vt!4y~p|eX5O_ZsXNooH%-Xgd2!u& znRt~*pRMbjc&pFe_#w3a*3AZ+4I3GfoM#&;w?@29xo^FHx?D!y_Vjs?QVy4QpEZ2b zwu$H63!guinOB)fT~;v;_k8!Fc~+DJ_tI@oUQ2%0YOvf~vQ3(Onn`3aOK?W^oRht( z@w?cjiT$hmp_QkXEZ^OCe$Rh~l&r4#sTX^BL~drVol9o8<0&O-X7*#o_8AwA?#{?5 zmdyWmf7UPS!%w%IbKQB>blr+e`l{!6KJ^liy0eQc-Otu4Ek01}y*_1o(5kjM(b=iH z9>-cO3*pbmUG^f6ZSTpAf#++@4tvP@|9tP0^K13#Ee}Ip?OGQl!L0Czx|Q2}wm&l?^UUPW{%dQ$A79mLWaoMAc6_P#7wcV%j&+wGe!SoKk9ug+iM$8- zA=z7hubbmG>He&2-}TlGZ<<@9xU;1CS(x~%*7|2CZ129M>d)M=b^5l1qW=umm!E79 zEbG1Ily>9{&y0TuYZV^sJYOheD))Yp+Jtn@?d86Pi+*`#WM=*qnEa zAN_Kz^`}RaRq@o91}-qlx7qzwBHp8LOS?&1$H7yn59ci1R=hj%gRiO1;ir$zDXfaj zk#^`yU)N}~^zGe@mp1$N?+vZHVECMut#W~EaOt@n58gd?jj{Y5^WXu?!I+u5p52^R zb6M)b^=aEwJbKn{tke@}kw44Td%SIN=eLFiz3f}Z9}e0i`1pGXMEeT zJNEK2g^C{v&q7(Z+$byH+y5-Y`fBRB-D-&u_rvnomE0}eua(WcBfX(Bb0UL(g#24* zExvSJZrH&`2al=Rs{G2fZ)a|W9dj2HuTbBeIZdL&@snQX<~csvdO0rBOOC9&xbw8V znX3O{7ime`7t#+V73RDUGrG6(Y$x+ukCw~nVlx9XcO~!kyed$s-ElBeNn!1?&wYxk zww*chk%dR1)41dOH~+NDrMiQ7iDDXZr%3a^%U-v=0T5Ho_uv$Y0SUFe3Hmw#!KDZ zQYp={k6kpyPBTv8wA5_eGMm?Uz1^x;IT^1l=T{wjxo4kyh{-MfZAGP1X{p6S9 zdaR)8Rr3MiEvB|FZ*MN>*)hZA#+@Cz&&WSC3C-EM%i;a}r``^4SzR9dD!P1P$KyX! zQnD`b1*pyT6n-Xt@tk+2%Z!u%84MO~nVIhVSZkU29A@|OpHuP^6c1N;{%5dMzha?h z{QWnq_`UDLez3&z9z$^`=Q8FT7DTP=J3p{> z#rifLy|(pJ?FtjuYwfw}G6BubvC`ISUpJrS4?m_J$9poUN?Fxq*~t>QH_P5e89h(4 zZpqlbAS)qrRcXIc%!6yk4eEEj`IrfN(0X;%WsXn#MVgwalb=U7^`IrhT7My34DVnk{W|y~Og2{pX@mH(7;gb&|}_ z|8hY`TBq?YjgXPF^L(5c#xLhTOW5{=^Q$w->aGg2CmcRqS>kfm!Q*^W=H4HNi)Q4n zwNF<+=~;bx`FhjEYd(dYUNhHHao@kd`9*bKeLg;q7i9`tn$^6d$)xqwtq05-zMWgK zIpfcq&a0BE!`||JoWgeTgUPuL3%ez}JTI0WnN+!A-{NMs$qQU}yB{=idA0PaoPVXm z-JsZeMRVT%@_#O*n6%XGKf{&T{3Yg&7A~{;RbEf|X7aJaj>CD5?qw^D>GtzO?nnK- zC;L|H=j!CoGn-#DsI2J!>L65qmBmr6gDJ#u>Y^D2J7nL5JNB(g=16$%@AumCLzHOS z^0KV3>t1j?)F9DEaaZy3MakSsVp9Gaef#=Z3JTXR(<%9(E3&Y8 zuKjK3fU2+Btjo=lDttGH2Hkpi?81%R?B%LK`{GwJ{ z!*d&+Sx@yoYPKch=-QJxE4%n=it^s=S8>&y`;qD4z4x}FNpH&>9G@=}TicOy&p4;( zeb^o&-_Occ$!FOPGusP%lmC1)xYXKN;nQo)#$$a_o_8cmrs|k{EBd`(+@e24YulS+ zsT+*k3>vI;Z{_mp9w&J+wz}e4>4J$c!00`&*bLW-m1UMcb8Uebjh2|d3oBt?3es2vuBsS zJ+}AMYUddaIXv0DwXbI1dS((;QIfZEeQous%Q-QucmBnT`prF@CKtp1Fy#J!20@;T z^wsl<)PHK8tKQ&UZPgl+ZLsZl)3MJ+!S`Nmzf`*I(#r|m^S?9(UyD0iUi$CErWxC7 z?5scAA1aM3wT|BTt!H`Y@(`}PIho&rUA?n}L#%^aW16nd>Sy6pUbWWm4_ zbI;(8+>&R#f6AZBnc_*-8)jr!cu49V`sF;Azp#2yRZ*+SZEqg4M^#z-Ci7;`c)06+ zhF{I)!+!QJ1fTVtopSnM>FgOjES?QzrFyzlt` z+TL(!k8PZ{<3B?tv|7_GjyuG+f4cCLht;Z!Uc6EY*3-S0(_z#c8#H6G%!ex7wihMG zyl%Z+*d<1t)y3MGecL|w zs^*-@RQbg5bpCXkh&h^1wrIOZNu_*hEvS&R`mU2wDy43m_E~jnxY=4&v2UD++Aw@pW%sC!lmM7_Mx7OR&Iw_lg+_;Ieo=F-J&4?cBhZ+a+j_N}4ZRe?<+$ASyI-K%n@ z$6TMxYfvI{d9RPKAzy6ghDqMuTh(uD^j6cm_d=0vRz!#O{b|CpPV(3+<;q)M3wYHZp-hKXTmEFXd2^rj^i(fFkEX4a#3`e*n*%(`_W+xYRM`l*WhKfC%D>69v`DKN2Q-@Vtrx_g%6 z<+xo6kG+-Zt}BUO{H!#S^;~cL0j3Rsvue3_KedyR^5D&`D*ruk*RH9SvLyw;qU);k_kfAZqMC*Shx{^GpX>=Cj7dyW9en2j%E*ac=n? zcJa%ZyUf)gu6^Az&RBmej&}H~Anx;wU)AGM+QsE;veFk?t>-)wKPK>>;VZZP?2ShS zTFsuV%qTf$v5-x6fmm#&q=otq=k9Bqc@^cUo(2uiXKG%07x6yabc1u``ADvrrb_Qz z(n7B6IBGqIyZTSa+wF_JtCt$<-Zxw&cK!Nl>&K5~Zj-#H_jglESkohg$m_19yAOWU z`et>Dq44bGH?ODejWTzhyL-utl?HP^-ZEeJM?K>8x`soA(idjd2E0l=Di~4gPUYdnUY?x1f`2W;>tXyp``J=g#=+kpA#l@4=&MCAWw2ugqS0 zxtHN;kWO9Yi7WA(3qo}7?7Z>backD=!n?wamY@8JJ+_n@)Sha-bNuO{pO>xFX5|@Y z=L=p@+nkYK>g{H@;OENRT-QUlY80T-~1eSNiKNb6>-gsrOpL zp*(W8YG2bpJ`8^R<0^NUj(L(&}tp%KyUHGov5D>fcxa7=&n+MJ)J-bq%9&-2d z?nQDN-o0pEcfv^Q)aP{9O?z%$Oj^8A&hy^J+rL%>Yu;5%(YssRIftSw; z*j)?Qwoq_UW8j@XUxNxe4s{;lOFj~5m0c`vhU%ilSR_myvT zy)LPF>G7VF?+gAeUMD4LKJ(wFmJo}G6>n38N;P(bluTi}dV81VEm_AfuC{v}%>mE3 zj?HIQ5ty63W9xfgro{`FIjOyw$ZEN^lJV98xknBcc^@}2MqA7be;ZrkvLe^Xki)s7 z^RvTS*_JH!+2@uD$)&t%xMjsSVO{0q@5<0dc1C+>@&*s{-op~1bF?;Iy1<<;Y4+s% zD)Udvr8ihkxo))B$M)#P5c6UIRd$2E%PL1)K80=Dykx)k4u}5?Hj|g_xH_|V-}zgd zYuo&EGway+s;Bb*XE5AU>{7Ov$);<~!%fQrFK6=0I<2rfdVArz>(voYTdqw%Dj~gj zuX)YnI9cxo$4i$pTWXU{zTSLv=kuwji_DJA4KGT2ZNt4`rXGWEK+1s!E>}(Fyu4sj zD)ZF9aN<%_;=npq<}T{ivrqBYk}GTv^Habnmu|E6$#*z@_J9eEe0r+nWo z=W6>t*W6;~uN|Kxo~?ef!_3|J&TP-G_D^40Jo>TfHh0naqwBtRt!;a^OPYOpY;cFj z_8I1S^OEJ+3`Kx7`7F_lHs`rFuJlrI4?BDKX>B~aflf}J{{z{%!H0Qg(^IMkx z{N+~UtYzqBobj&#+7k8l*mC!0n@#YJa+i<1roMYz4>>Vj<9zk-U9`a6pRHT?Qh3X^ zguN5~HKBCh!BrW033|fQ)s2+ydRn-i6O>tQb?DZC?Z>s#BKLl9XO{i-s9@t1*{d=# zS=%Pb^756JtmdfQSjp`2P&k8SLg$ug{aYmhOar1S@+>a$UMkN!V8Lz!ZxCM2%gR_V3u(2Y`Gri?<>Y17Ru zS`WN0GF4_cbkX6Z<`R?HTUsm5fy#kf88>^Hc6dxws$9Nz?SykGS&h4RL^7`kJeYOa z=k)9X=0&P&$|f&c^=!*7mKjnCW_i;ydxO1ixE^v+Y)bHqcI)1r*SOw(Qtp6=pZ*B%G?qUAMursZ+4gz%P;M$N8%4+|xZ-b51ASO*!ylTVD>p416c+ zti**M82MyV95o-XZ3)Wb%WXYU4y_9w!BGo@~4XD z92UCH^Epf8?B91serP$qt$y<-^6B!Xin^<3>&2=M`ro}*y<9;;*r0h^!W9Po)503o zX%Ba2GTuE>uf4hKL09FUjZ?Xu&)Rn@Oa54xV;6N&j-kos>Q@P0kL&k8$LPu3DL59I zwspz$q<6b&Cd)i*>$ocrnC-kppoXc`-SBe9cRhAbfj9r6L#>WXV-)wQj*)r!+deg< z*!k%@KBJn+Eurmxc_$|Ef9TwJUGm6dwScYdd^29}En4*UcVu(fuKx@rnYW9}%KGJ2 z{r25y_WkuAtvTHb+_!mtUuJfXufP0kNU2BO#g+txV_Uzmy*?l5JNI(WTvL0K+fg~G zo^k>VKXhLTNXs2N#AD+8DewG7SF>{|cmI|8RL^?nc=H;A-`B9+22oXuTpu2rk+wss zX7bZ@j0ax+S}MuUc;HOYW&fgO&zg%}@>A4hXUBZEka_uJfze`zj^+!K|12zthCB=can{&tAHJ`m=ezbCMU|oG{aO!Hv7Vmn~#ZyxX7NA?2cQv7qG6yOz~& z#pb%Cdt8;^@77@|m3_7JK)%r(j%T9mw|9FPtle^tG27>>^A^TEN0@wGt#6kPi&PKp z4c_e(b2?#8#_Z&hKMoS%T)~B^*X7a|t%x~(>$73m%qf2lZ>ea$q*nI?mPcjx-SvFW z;3w*5!Nbp1GI7zeOre*l#|qD~onG|W_tFC+%Y}Xm3leJ=^oCu0yV~4McKsxUT!)=& zugL6-)5;X`JQgY~9kifq+n#Kxa;@bVv3~O(UXSo=@;>> z_FkbzzI~0i_4afvf0w*~2K@~7S!oxhoh;eCfOpEBUzZ+nboLiDJ=?M^U)?v+Y=Xd_ zbIa#w@AT1*dhop6>ct$Fn#-C08P4e`&(}}VEzDCtnYa6`?EOrx#fcZL#W0kV{9L}X zE#gw>mY5s+)7Vnx7pWd`XkO^gqgyZ|bFO*Azksh(-Wu|qkN79pZr)>jWKovoTETPG zzjsgjne8Gu^H9#7SQV$z^9fAG^Rn(PwRL#D^2y9SO017(Ox@)?=aH_m$GxBGmPhiA z$G?D0%5K-abGby_WZH!HCxjhsl$cni&3JWS+xGl3=c{<;UPu*hfAU@7rhsLXK+{F} z37TU4znFCNCRA^}%2l4%!uwO^p>=)t?mw;EzjXr&ddjsK?oFOA$XfXNir4JMd22Z$ zlGi-*IrEEAPku}K@l`AqNp&Zl&EfvB^)B}{frrKm{EN+%W6L zw#2S6(6cLEUh|)UyCPnSKWB}V`MPh55AR*~pmjR0Qm$mccfWLpMbT2OO|~a?SgY?) zYxpOBO62~3hAry67t1yruwMXO6>{0_+m=b3nOhw09tfSAEu+iOaPeqfsLo0@TjhB+5F~b zOP*OOoGpF6Y9;Rs*%II4&A#*9pOxJ46WMv$a-Oc(jpO-wd*03buDdm{uvg!{(2!YSRHkF|54k6@geNLI?apk z_?~@qaM?!n^R8R}Y%5c^Yl^p0od`3vqQ1=3AAUd+R^Lq>fyL=UaOX z>oyt9`MB%BiNjm(gwBazE0C(JQ+aSox5DJRXSrBsZ+7oHgOmjIecdmQo!KmV#C?*= z#zirYqU#owI$zy-Hd%J|j-DxJZ%TBO%h_e@T)0VI*y@M2$I{Kcp2G4!POWd(*;R^4*j6KJYN) z&CM&FGY&rV+YopwKd0p3k$SCV=X7@*sl5gpmYZn#kqk9o^e(@9u%@yPo^0ez+{q&Mr`i)ut{0>Cs zTU=4N)~U|uwDF>HgytCrZ)h30w1kxxR9H=?BTtD0{y(7 zD-ZB_iRQF*O)r17Eh%MJ?4NqgqX$10%P4d;bwOlydyJr6M&iFU&eq?PwTyPQE=s&* z;cmDp_kBm@CC;ZO3k33ae1GpB|IqS&Gyo9Ow(c^^dbu!n^++Qfx zCtk5?THNi~%=aIy`MPl1M60=uukWmKTy?tfLS1IOyAe-_UgwACqgQilHkTw!(*}g=LO1}W=CalPLlms>iBN|o4b7vx|`#UzmI1347z@mJv~FF@z4tCEvc86 z_pFIKBcYJGtNeSpmW#O6L4k)Y&m;AV8;`LlNMsxEHBUYA^}XZ5tx|dOFRz>V-Z%Ga zfe(9`|8K0SJ4_nRqa>vfFK<0?Z!7Y=#J@U3awEXbt zv83|xskgKeOuC~_uU%5=w^Dz{rEQgG6mR(?e|k5u<<(T~PTR|N_q?QJi`VMS3sAJY z0M(+nKXUi92L+iEr##GFYo7N>TW^iqm&cYpJm1wfwBLF8;m7hxuNF*tQE+vUi`G@v zN52~Ho%A{UJ@?KNh1ZYf{C*{=Y;!K4)^}xr;N!{n7X3PFZMMz*X5Y+bJ@;IktG6p! z#5|i6o82kB;P}bVHTea*S@-<8ta);KNxqDW^z=*eTS^TRcyzBZax)&B@b_L&`m_0& ztJPlnKb&!B%ic@g-`Uz6uG*)`SKlqz?Kz=p)t2bG^KOivf31dgrlLN4=S_>g;Mwx` zd*bxoJ1%ND%a)$mak%6Z&)(xT8y?U2w$S(K+04>~-(K~GTR!5DQo6f(QPe%TJg239 zjojYv4cd9^Rhureukxc-#fYfb48y70a*xb&C_kdVb!+D)>xa?XShwBr-&C;Md5`Ms z{nLt;`-|9%o4o0%TzxB6!6^p%j6Q5Pjr&^ zynNyN@uLP;OE;_hh}MeuRe2$H&WrVDueRyzad%iWARO)z1uMp7Q%4+lG$fl$b;--O^pR9)#+= z4=JCNdx!PjjaRcG4@Ik0=AF`A@=lnqu)OEfyC6U31%I3pXU?teclrDG+NKA|!Iw|0 z_Fj{5Wo?vEfxmC4y6MBqN7O$%Wn|x;b|?MK>MYwW=L)L#f0*-td)D0;HUZW1r_+_x z%L--|X6Jo!kWSfkV@jrw+U@o_fsV`TZ62Sj+GLWqTxHs+T(=#bwHq&#hH`u8CfeO_ ze7`d1x&P;dZq0Wb*;E&~ckS7GgJB2TC#}_Gb9ijP`f!OO--!IMgOCH_p z>e#b8%aX5{^IAxyc^mKDwB!fdwQLXXoOw-n)~nvObM7&ZPZ}Qi$oWoU%GtklzVy~s@KYp-X7=B;2|UcTSZE_3az{0TCJ9aC<{c*oonvU>xP z9!<$sr=I@fa6BB4n(on)y=M6w=gx0Q0v!i4zw6FPdpR|C%9}rC5B@VuSl2f9!VP5! z=eGApC9l?|*vc|lZGP^S7Jh-;) zA)8=!vYm&K)CGGEA0=}}=0D$7yFcRlt{5b#?0eVx%H`U<$@9B-729vFQ_!gX)@)Ii zYPGN_c7-zMfh(%(uE?5BVc6n$&1T9B0R_g>@5G=haxUHq6mrzPb6rCA)#hzXw_Oe! z$;x?k9<>iYk(ILSwzK#S?##P7N95l%C$48(y6ux>P^8DCA2}O}PW}^aJ2tWDAY*gO ztKg)`JEIudWh8B1zc@7S%<0qK3#>|f>i<}5ec$n0!(yAEdGya+{~0(JmjpMyPJSEv z$#+{vH={r~Xm$FsCslU}^87bz`8;GxpTE_<^cef@qhkB6oz`sI@kz!1!@7j7vV{J; zl6S5b-kRq1-evPz8*aU;vRuvRQA(N}S8T0y#NB(zG9S8gb+e`J@|QR1w+lq?ws|(w zUev>Ej^V|1tu|Z*MP;p%OfFSwO}e$fq;2bw*Y}rotq@tYyQJY>n#`RZ#b%z}*NPrJ z>z?!J_A2*+dwugy{nF-DH(wpQ@}$G93m=^x-@mu5d|%afj&pNWLo?1eFZuEKr18q@ z*H}XgAFW-Zy5nkaZoo4eGmqYP`YhMx@o+!>Y;DhS${^1)xA52o>j|9?#r>b9EH22s z>bqw0@*jy}*T1HoJKWzStyQ*d>9+oaXt&;DOqY|l_GLb~yyDrL#$BbCeYASEUe(R) zxZdmR>(#=PP`lRT_}Rca#f%x#wfbt;WmLOG8X0YCi?}T<`0--!?#$xj`sw9oxuy#} ze)r+>PydvIN^{;l+{~S#Z}iO1$YS^8yhPob(|7h=NmzC%`(RV*hT;+IA@N{^T+eBzwFO?chgZJbA1cU)^u&TYFZY^nL(ygDtx z=3i{Ef#&zy>)7`n<(_qn;d$h#Z;wQ?Gh$wUck$@nsUC50vy6VP?|uCp&?A{H-4FTu zP9|$kng8AEQi{bM6BQXZ)y(P9X7()i2sfME@tVs_e{MxUWpcA$n?Rez-DRfH*0S{v zd)6-P+q_11Y2W6LZUU)&J6 zIqbS0mq@rR$?N;i;Bs`G?4>o^VugDia!S2?aVzI;dc+s5#gYf#2h~b*$MD`UJS&{p zkg(_*^X`=|UmRdO;Fl=7laJ zFa4Xl?xqQ@ka%=)WeeNUPc9!8dHXQ4%UoD>%sNIQZ12+L3tbmYekax8TO1j<<*Ck5;LCz{k@YnmPDNTm*kEkL$45{-$kK zvY+PF`04{XTQ5&uDEzGL^WKQYKHD3yuh}KPX-#-B@p6ck)XW=EQuaO?d5nq7GPWne zCeGUNSGZ`>`$(zd&wgq(u8}O`cexPTDR8^O+~dareciMR(<2`kKk3}<`P(Mw#E(Ui z0Uyt9T-Wt`lSTu_>#W1MX1#8vMmE>xZMrw-(fxO`c?vUMyc>Z|s@1v)`M~{qa(u z+tu4#O6qmVvA`W?IP&aOYC?l+kKPortP{yu6Txfku)W#UzkoYd_0Fk+YKG-2GNj%! z|518wKPB^s^<~xD2PY~d?y4`1le+u8i6wc~%6#+56W5ix#Frj8ocp};{LUbO@?7x} z`OM&CC6^?VSKGEHf9UwnaK5N=4_CW@yQ=Cl{ZgO4G=o*_yE9FhclT{tl%qP^+Tp;x znZ7q0JTk;P1s|*mk(!lYew^VygI0se0~_mIffv7Rx|VF5TxLw~xJBq-u1z_UvwEpJkgfd?sDaR+AAsvB$hh?@8Fzt8;EBfY*`l zH&EF;^CJ7*IUX0%_Xe5Dxm|d1?W9!ARsZN$H&;LY;TF5kIHzca%Ieoz##u+!Z zdGDRHJ8;hB<6^3bd@H_}uRgrftnexmbHe8xy3e=i>1Tsee^lqq@Y%L}b%EL^6Q7bJyRLIQ47rhY)ctmM$&`n+fjQaUmSJye zb1ZI49QpiB>DZNBt1D)6u!XZ%U7vALs^4K?4xVshXA zO{2{fm;Vfjs*V}YzqJY8xx7dHQccrEwS$$>YgK$W4_-5gQI3#4tZI4gihG@adBfuc z{~2tYD)hIWWjRvf^lHz;4|jRA?rmIh*^qhG-g8?oc;pmuZt!H?p1P4Eur${}@oY}7 zFt_&1>a{}W-!0v$Vx@EU`tfC*@AMc?fM?O~h%_F##V(pRZm0R}^qKA3weQE{Y&?)_nAM-x<}}CO3BP9 z^FKLiGani;F}&;OWVQ)cKODt4qj2x&Vm-y4#FD`-yFcH7{RLEa7-1efN`x7t^WHwwS|$?`4Ydi+YG z<~7TekET^W1xT z(STVB-0YEj%B~(;x`O?DPEJ|WfJyshhHKL2>g)?MLv>zvvP2d*@o z35*j8D%YLv$j{!nQ_G9@qpE#3v&4_px!JxwJXR^4|HM~MI9>4a`TR-h6@JrtcrO&K z+VAbstMKx(Pud0Pmf3FZMf-fsZrqE#bG314V=t3SmQ&&B))^D8&D5GLb@sB5jH(42 z?=qiVNs1vXSMDfos+_lvYfV?5fIDA`R?J#*I zyYggsBcDiq!N0K68F~L6|M{lXJF__P^4tElVBUA;MPh%hIu>W$I8=C6{Br7=-%32M zOy`S8>*Y3_UVHGq^1Z(Jd2%(&yzUlGxNKyvvg*sjO9#yb&n3&=4C}K0^Kz z$=)lo zAD+K2d5?Y=L&}kc(AsP5F|IcM55d-KqWw+}NWzLPig+-AD2xI^#E1D5Y^ zd3dciS~^{~cpsG-CUR0GL?PM7TF#4mexbzQ>56;)_v_i~YuB=p$IV1;E9D_e3o>vkvJ z?}}D`br#ybN>E!<+gmgFbC}(|eHlK-Rc@DUkKQf3NbKz06M|j~({=AC>#VutR#4(w zxX&chS9eEx`O&DeYyYyGI#E0M&D3w(ir-9O`}4@YHF(RP{|tA_wKqTNE4|7P@rc>2 z_sPP(x;g!-M}n6=uMRxPJn@WDS^wm9rLGUpGdra+Rxik$D;y)My2p5iTXX)r94GG+ z7xc{Ad9t>ZTiJ7UEn4l|e{0TyPv6DOoxJW%NIuE?J;C8ran$ua2{VK`n;C@|S+ZMr z!uJ`jIW(PXVZ-+$i?nj1;@4iDnkdTLua|k{ZVj*FlUXv)51cNVn|tw`*wx=$^DS?F;5?q4v9oW^GgA(;XEDhW6&Sddvgzz#c(}}Z;>IuA(khyF?_IHR zStaAlNAp?Ka<`bL{$~hT7@TFHFzHNlCP&phL3Z}~B5}zw_M&NirGlkdd>s)IjibFd~>_zvDxa6qS;(O;h@;N z_Zl~@Q@wr3_~^sSdrbl!JxgAGR;H=UH)Gnl%JpHd%A;J*E$?;L_!#mn#e>0G>Vc;2 zv}0~(I6sF*Y2~CI*p|M3(TbZ2p*!Z@tJx=)dA`h}I$6ed%I|#>ZuJ%Wi(Xvu?Q59d z*FNDHS1sPI=UWwXgS|NB=TF^<>-F2K&b&KQU0Jzy_PwmUHjBm;=MQtuemg;0?90ji zhmnEDuSwMKvZx2$>V0m$zGk)J=8fC_yjppYb@p1LKVLPca(8Ul?f9+7{pX#znTh(- zEo^5#eEK%Hm@Q4`a=EY7s&$E7X}@caiE1X-oA*?desp2G%y8!2`J2b}R&~c*o1`~+ z?$z?ulT0={r=PW39C4!e^X5NucBNKrGv+lro&MwJLf^A|=95Yf99j{*Nv}C2_`Tri z*g*BP=)4D;{blqQi#ueTj}UHocIQ&;l4{G}e_u_w?U#D%-Gk#hh3qD9AGKyVBa^a9 z@%PgO{VYnW{eG5xy&oL9YH`Ktw6?y;XZcW^-7i@4JnWdl&Y0|8_^LT)TWns{+Sd_QQ}v2n3i)QXIIK7qTlt^C5!P&& z6ZAl!d_#K3w>KTT7}|@ZSS}oj9|Ode3IbT$?eoQL4jj^~!v?#1m$7Hp#^rPvNP$f2{aiK=n#9=iHYa zO}hJ(jpKVk3cUy74YjwSL({J|j^_KpMlOF$^c<1yi z$Mdt2y%`y|?f$H&?BuuNEQ6b=aINT;{OaxJh=ia zj^|6%WBsDO3%PvlpEP&E>_(viu}f2pF8{i^E@#KXb8}rzt@v$mw`~72`vuS$rptcM zqF(5Mml5i;-QY0K@VFSHb9YuzUU{Wc6tnYPpF59d^epuKnOVEBtn}IXTDHk0%<8s* z(h}l^6J+YHn^wmzWZ04BBj+{slSTL4(+;8Q6Kqb*z1FvBuE>Guw~kM0mcA7wTl2U} zAjgJx?zMRps=S9^v-Et(i&-)w@Vrsayof_Q8+QjCyTz%LQWMsidGOruDpy}g@|*3!^Cu-p?l{65__fJ&m+>M0xF>R2lTN72F8Sww&lIn=~iwn8|LplfP~MzWf|qxhd&h zxD$Wz$=sIN?wsG3?YW{LTR5@v)xxPBOf#yN@XuQ1{l0Y44T(p+^$VfPS1*AU;>*04 zW48X@_399nmy6i5gB%+7tlM#S&FYlnE-_j*!YilTkNA7nc#+uNLncj2LRZ?aOg-`} z?A-UrO9dMP|9yEM@%Nq1tDT2-`FB|#xB9-UFz9ZlkRC_XtJ%BqGuGY;F_%>jk^3In zyinz7+4>W`0TmPHh{V?h-Q}Fr5?c3e_AL#)+MCbcM}HUMx%KmEw3?Of^H8xLk0+gV zm(MEI^Sg5Llwj!ZUHKUcu2#ygG%;H0lei&tw)?G0|1Z|i8JLXruHHE1zNGmRotu9@l@mm)x~2`?22n-QvDA&uaGeyUTX1TKe?xmBwavhu&~D=5u~uK1H8T%=!AC;mZ7` zM3I-`()luNKK~gwc3v~t`q}1u(VAEN3oRS&t3;JKP0mjL@?BF};K8#qbKEUH{p*0u zO?bx~F0bdeS^nNAN=-d*Rqn+-DvrL{^L_kGFMNp>Wc)0tow;=x!?kp-i$OCl&o^G+ zc+q}JmZ&jvU9zp{b^|^?E0JF<4v9_McJ$48yz1t}8Ivkm-pORn)A6(IW|+d0)yHT0 zF5GIh65I0iDl(b-I1aX2s~>;qH>;GTFxf@ZBIi!Y4(-`?e3IhpEVVsl^q^%%)D>LgwJiLw}-=?s(^T`_RLs%hzc0nzzdZPVqbW!Jxb(K+|Ua zrIw(T6P3$DcX9U|Vd&r~J^be2R5ObPmDzrR$x*Lbgv_J-I`^&peaGTz#NPz@7i!S) z{mV?V7cOYhyXF>rVA%r?-q|}D7bWEB=I$$MUc2IQVdd68=Qo;xZsllp5?TB<#y=$H zRS{?QqIbDYlbbuP%${5uBWRh~yhJ%V<@L_|%=^n$ToyTA_4@#GZ+Ezh>iNn$+s+wfv&-SNsl&wZ3%_3X;K_h-YZ z3EZ)vhf>a{2PI5gQ2tk;!O&~r8CbTQTTN8E^}OqsP6^W$>;Y}+;>alAKLyl)|Wi->Cg)AJbmLQ?w{70oD^iQ{&Yw=dA82XcP%lQR;fn>-l_?^ zoo8^oY`yWKhXAv~^#%W$U`dB_?~;?9j~LYFeqd&9UU$ijX<4Rh=AAr+VuyUU3zv<4 zT%Okvyu!Ej=^~D)TdK2sFDTynsbrfIbL?ZCe$p+jxs1j({i;4!_HI`FYch3nMR`Lx z$7{{6uD9OFviK+*JGnNaY{#S4)brhXO-2R&AKKzyvuwA@J69{Ua%xc0(k<_vuUhtO zmrDA5u8ZyOem}gga^Z)m%=$1g zwQ{!=9Qs>%NX-5XyS0=Tuc_-1VZr-cy=p@F(s%C$&w92?Pwd==D6eJt?Y2+%vlh#C z_H60Ty0!HY^J(wB7ym3ewKF>^cG;@3wb{9R78Y~G{-$l|E&RDQRQl}P8$KHxiyxod zZ{quSp0b6*t_2d4dkwWFWUs%KdC~9gwmJ=~Gg`gR&b?8)-C5&ld-mt@_X!CSSEIC; zT(_5diQDja9-A@M`x=v0?TQ1=nNpee=TA!EjhFNNx%|yNvxMCfkI27UozJ=aL|X8% zE8Yf$=NGMr4_(4G_W>V=^0V1{%$i=xCR!b0&~NMiwJ><&bq}N3{e`eY#%CWc_PsEN zyOHl&lmN?z2MYN!1Sg1Hdi!&x8l<6gxj;Wh3Azx z++R|u{_F7mRR_OJa=mmr^!le>mg)&}A6QmsuRDA6-lYXI!wn8S{vDoqHs|p7(Az%W z`F@6`FlBK}VJPQu-~69JoB!qMMNEIKCy4h*N-zHNq;a>$r+}ynh6@~z{**nj_1pyC zTN<}y+^2ONdgGGO{qA(ne9_H%cZ1~TRA#h&YqD_SV^?rEG<&nyZvn<%ng6Oo*OsZ3 zI5vJ@>+U{LKWFOEo82W(*72W-eiM`K@p*n%jdg#Fg3QZS^XFe$SZ{G$o|Nsq;jS`w zP?V@h=XXm#0ED$A}hf5Ak4tZ@Cu<+cB@afMFIF&BbyUr!^ z^PBdznH?9!q}upa>p!>B{qDc{of))Py2xKFlQ1DAZ^nVp-ZMrQxKmOuPFiudWBE6B zOUA zv}EqJ{eE-)WlcNA?5{SzFW7P0-G#eq4F9Z}nEiIwwdvot|6a*7uesz(zg*S~mW1Zo z4;7CeY-i3j={>j0Z@$T)-;TR@cE_7&TBonj|2iu<M2xa!J0u;GXV9C(G4+cYX}Hb>JZDjqK&WSfOLMx(dwY z&*UHY9k_e)9_RLLdO`v$CjQ~Ao3c6UUAKsVmTX-+|C+;QyPRf=abIp2cluYB@3(gy z=8KLluL)Qdxu;S+FY}&F?Y@S0``V_5@MUCN{bPJui{YupgNLrm?=-L6(G+dHG-uRU&QMz4!M&wb;3?GrOfUOXTV2vj-STE*fRt7E;}-WV!l81yim7 z2fJj;t1zaz)BQH*0?N*1Ipny#@mcVqLhP10SFLa9W5%kh|RY*+M}m-zg?eCzjIQny2J2R!7q@JC$+QIpAvHvx5X20rxx&iV49Yops38?S|)*&mSbBCvFQ&3SQ6`)wzC z*IbpkMk`N0n7#g81J})ce`ajS622!}IQM{MXQxAc?xGh@*C<>Ji%vbh^2o!&-8H`U zw=IJe6z6<)^Ef{1=+kc|w>Ty%`kpy3N!`aw`pmr!xdZi6UiB2mTs-3!T-P6R=ATSW z$Qhx>>lzqUEiRdxu4SuwchWys+_!gn_9y>ag1h+U=1vVUTY7BvLhm`3bSLNQ-sD^? z^p?HeHK5&0^HuSb@)^0aH!mrQtTmkf$jkI#_6*C;Q+#~cDZGA5&Yui6XNY^&ogT@& zdvC5xId|;x08SUfGqam>C)=}JyILG|$zjg3s(L4Ar*r8X>n64ruFEd*KjmETcOoOx zYyNJg+kSuU+P(<>t#C@8?_^)BK;9d^uolJ@F)R;ny58R8B70%3-{<6g=T#(R8A`6- zYwmt}Sjc7Z9^<>q6rHA&oG(gTcHz3|0?+2<2YDat+QjeKB-N@)wNEcYQOIA=J)$);E z*|MwV{I`rBHFvjhT9t-L=l)gZTwvYOWO(^MgGN5@4P_}OriYDE_k#}#y zxfy+{*4(-tySMjQy33s{L5;7ui$SY8exbxgfln?j!k8Rw&^XXJ|gI0U_td+cK z?6D$OFRocG-FRpBg-RA~7n71nD|h(Jvp+RI_iAo;^g_+47R$D8?sompAQ&$6aQ5y4 zKB;ag)5M#9b^O#{YOrN7*#t}`>N-tAZ}w)J`0J3Zc$ zKFgPETHL>5;qK%0GOZjJQ3Ia9pi#lF7lTeph~tIsd=61Ib3~l*|pP6#cK`j zSntfuF)MYN+x9#|_;2K$>lf|XCf#IQWMuN6!L{e)$M9os4z+U}S?u%Z;Y5wLUY12M zH<~lw*)_0v2A!CArAK>S%72ChFZ;gkp2BCeeL?2=^^4iAU6K3G@ZCqY@ZSQrg`Q#O z)atLqJXZO84z@(ubm>L5zxPsHmfwo4UD$B@l&E1wVYaS$#nb|o{9Vg3&uwhcYCG)e zz5B$}&BBExyMO!(?q1LI%*Nr5hM7m@)q}ej41~>PF6qh4Vd)5e&(^7%yJL=euukz@ zW0i+D9j1A1F*_F%v~Jb{v8adZmDJDj*@r3acyzb5b808E-I2eKR7$RzXFPb7HaoR} zdBG>G%QY^pd!&~n8kqfdZoP3$iv7d9Lyx{&JUy2$K5Kc{UyJTDYLi~*7H_$(9IqOX zvh$GY;qEf4RY#w#+~L6P(NgifaZcuLuFc>2O5X{{o(}Q5`KDsIkd0eYNW%lQvcf*i z`9-x`wWiNrc;|Ee$v`3fM=MIt&41pdH*4mjMF|`dmU(W^dpg;@PB+wR zokXD&KWL+Cd}W>Lz003{i|>X$;ZXmWYI4@?=&o`zVdvIoFKf2PzMLCs`+d*W4KeQ# zeM-zj>E>MBIbGVV!#Lydo`}Rb$G39%m-gyyvAY|%>ec!j0j2Zry35{OT|3)yuI0j@ zce6U=zWP_|%@jP$6tL{M<)(zZ_ti^nA6{}^xPVV}<*g$(^J}!t)+*iZ{O0wxqGfY= z?9Fdg?2r5|%f5Q>{6vBZqq_2g%?WLH%C|&+FsQrMrmpoSR?YQJ13Txp)U_&{mIia4 zM>pq-n>wzYpk?Os>Eut%)D0!9hl&?f)-mL?JiAn&xMR9S(N(6>8TJD69oMmJy`V0% zea^La@snm~3dCmUP3NmpyL@*#r}PbnZ8485<gJrgBq4jsCAXI^iuyiS zWM21twSDWk_Nkj%BIlY@dBkuVdRW@7dXN&%FE;Bl4fY%wkWV z*ycGB5050@m~&bBSmmlk*M42r(`uf@zdA?q`Q*<|7tFmq=AT}aEP3df*!yBXgS*cy z?|r#;%x&L`e}b!Sh0J=Ma^(40v$;Jw%+8iU%ysAg-4&MQy~|Q@=Fb(wHTfP-C)Br= zm4htl6tB;dNQn5t-s4wxm!ng zQN~@~hO)iiQBF-e@pb;>qS~23scaR$gFifGzWZpq=1Jb=hwd#nwY2opTlYHa-B-^o zcoQ^viO+G@{|rViUMc173>N=r#qpvoYm3X1{-asqn;xBB|8Y~I`4-lrdye1wrpu2>$uh(+^B%|lMu1!jwH}~#;h6}mSsmZ*j9_4(des@+fcS|WMbY5i8yfVqK zdC}Gd(@Vn5dY$eq+!2s*mCc^>BKx!*CNC0A+IFjRY+SP<&Xgfln2l{|eD<2x5{}z; z`85fDm*0J~*QQpyN_y90o}-JWZ_ElY^Wk*-(Bu(b&;P@fYM@X_mF#;jfO2+=7qaG_0CMxI#536 z?R!4YBl|8E%NwpKa@=&_v*eZs450?9+wQQuP$}0GmAYoG%OYF&WL0q4=gxW0XF5#$ z=3M6d)oXv|YF#5^11IUfGkPt)E0+JzkV>C6)4z$$Dr=UuaLr)OG`p(&gy~l%21N-MMk^?&gkLEPXRW`MBpiDl+{P`sw2SoxEqNr(e`R_I$Uh z>H3aor*+SnhP5+XdUnU*N}6Bi?z0Co)$S&xPjBK$4Y;0{WxcRgDecr$6Zv-go4Hz6 zyc2UO9{aPN@>{T3?=F+=>zBMcVo$iY7p2&){hGRT+p~mc!3)g$m+kxz%1|5?!!g_5 zOyJ=@%WZYnPg>2EkzV-ly57&$g7QDNca#V}yeRuk#zgGqI^&ahV&)RHbN_L^lM)yH z%LL74({^rkk<-cS^p_4qI)jRH%`KlvmwDA>EOmR|N_IZ!bq>3sAef~q+ODWlY^Cs$ z<&nGRsiiEwp2t1H#BXsnBnLlO6{3 zRZF&M*_mAC+`z_|zqg=yul12B-`*Td-dW;zCu3LMdljdLc`emP>N)NmaBg#%|9KMY znv4Pl|3<+NzP!t>ZCxT@yJ=NkbCtrS)O9l@Uu!+|-JIKU@w`PBytW^iqn_Q^qn*om z&FEb85&sW+0~M!zEVcZp$+E4&Atchv{Eb5nR4E_?FN! z%grBO%ndxBY|kN;Y4d3n+ZDSNhd(}=BOBcylw`g8_k|U1nv=J@m)YlCwXNZV;OBtj zCn^LUS)Ta0;O*kW{!hTk5=9J<7$tt?<0;!m&C)Kq0>Nz^9uHyf!_~+h`G!_kDTQ@%+N{&{Z>y`us}YJIFXN%RF?>vPm)smtH($ zZt$|j3vX?a(PZON&kl-h%DXCbt6zAHCF9l_bKkduOMLpimL97*B^>%gz`bNSEU03CSw3OdI=H~E3y<&$OeytjOcT|Vip&GgJC zyZu#fRgMa7`4nz@ss2~P|04{#0*nkyOpHvdEKJOdjEsy742*(`42F(@iG__5KYSEe zxbdRH!GMH^1_})Y|8FsHFfuYQ+AIEN_+cKg!s{2ip2OF-+|L&uR$q3k$L8yO=^e}r z^ZLzi|E-hdDgAX=SmdwHbN9&|;_4L%)mEi;6SC_M?O}dYpZ-{M$L}+9?Ou19KC1|L z@ODA+p5)7IuTNLa-^Q)B)NH@{W9#5wn@)GNt?KJ=KY2E-Db*xVMdg#(+~94&3l6B5 zxIJXN@E}Kou~R9Kx2gKcA?~v77+Kj*H&uH&zG?1!Kk?AAN9|dLd$UcR&;K=RjYI1J zGt)I%D=(!_EO>9&Jf~T4iU#+l5D_(TwUx1-SQu`_>*O!_Cdk?0eet+o+>bM@T;6=5 zIUHSAlluEymSp~ve4_R77rUzeQuX(Llw=&Pi&cg^p6$7lWybdMY3_#=8a}T3y00Kw zDE0QII{TZIlMl_EyjVc;r^tNSIp6iacSo)DjQ`INcJ`b6L;er*_Va(*RNMZ;`H%Yg z!#^f@&Q;BG>Ms_*W5qFJxAJvm;fI}@V&i9?i)C2sQxF~Vn|Yt;`^n?s?5%k9k;Uh%B!)%rgnw#&lMf9tvMgbne4Tw^+MH}L*b>ABrc1DJ$$940)qvnp_K>|fw9|HY}u zWQlzC!#|y0FX-{JpRs(MwRqH)sXiV$sWKA-pUW}5uG9)GZII}FmBh35+r)h@ju|d- zZl3Zfj90x|#(1rT)f25FlOpzN@m@17Uea|bbOzUyJqmlZEjo`lem;?SvFo()<-YyL zuRr|bd4ONi=HJ>4i92^K|GfN0eT)5}sz3IpPQrrd!DRPMC#+IrjreA=`!p|eysYqY zLJ64y22y+5FD8($AI%MEb0}~Nnpx@l-u-7_zh7S8{B7?1hvEJ|oI&jOyZ5a)y|78| zT*}8|stS@qQ=Q~(?y+4us2mkDd!uB>N;ZepkBY=ko?N7_e4XuhQUb@y(n~U>lU7a= zj(B@tNh&lVa81~T29{51$6g-)WV<~5KLgi?Foi91?^Zm#pOerdbmjinzPyerR!ef5 z=P6iT6gS z9X)+FHmo`Rwqcun#?h(eg@u-DcDPu}*8FGaUH*zi?czP%;3ppJYh^!b9$vddq@ptQ z$r0HXr}|kAcU_dpQ(ExnNzB!WtNGT>P?)|)`DC8HLcFMg`JJ-EKN}{LnJhix<0iM` z@%5i_zjyzUuf6-#VCItGFKr7dmMnjAJeg&|#o5~@I@FkdEnoQL#giY0g)ba!Nxj`H zKj)=b@BQWf8EhVXylCMu)qvgNGN0;9lg*dx{bNdayg2_eT)$OT|6$3zo4hG0O?!kq z>VlcRHga0_hVK6-citmHhT&$w%y9cT#!L}Ti_8BroO!7cVb`R>X!PW41$Rc^G;+0SZcoH@W6E&bF_qFqy8K{cv4R=iZ!`nJ){Y0MF3Wi!)Vn>d%GRwjI$ zAp1mqgV*cU#U>L}1)m$-bLgOiKSCsr`xC{!i&C+(Y z>R%`EZBx#av-tIu%PHU8`<{X7k&O1RLP3*W&lwf}8GJI#dR;GW@|nqXAiAgY;-~i= zqSbv5za`u>WZxwD%6;caGo`sbHWOQ4M2StDzFIR~;-H4>iREAHgxe3*E;_TRruMb9 zd`GWsdc+cjS!)G0sQzG?#j|T$HrKPcD32`!WKH8gdqUlLMTbjQ3l6HYt z^Cx~e@$fO+F>GWE<2jgPsncp~=Q`o*!2N6ZQ)zn!!}%+R3cw&3d?zZcBx z-X;0*KY#n3|FC-bt3b`9$o*dzI_l0`EG&MJz13FQym`vx8M#77@01Jb0GalVD#k;a)8Qe}9FU$Aam2l6vE3tF?Iu^qv-F`M_)_!ARGOjQcJE0Z4KJd7U z%jqSK(-LmJZk#f&!;@?6vG?074s_|E^=yh;&(ipOT{=TmoTcZ3xqDLkT)1h;GVa|G$Enh*U)(d+j9A(+G5=aY{;rJ-Hf1M8 z@@;o3S-zasBeYXEeC6YJk1q*7ThhDa>;uy&LMo1?%R36Zv{a8MUk-lWc$C3#HvhxU zwxv6_oDV)N&|$}+r6POx>Gds(ii>wWmhH((hzOLupUmef9w2ym`@g!&oBwFN{59c9 zdB_9xHZJ>(?#4aUj4AOf&8H0d^b-Z%F8cFaerjDo!N=+pjwzCN^7>p)2}<5vn)7AW z8m$dZ=N7zfPxmRc(T`KT5Ovzf;%!gys}CoBdL8djTkIFrSp6l>?*}&nL$sh`L&x;+WE6`)Z5H%dU~yot-8lkcv8_r z(CsmA<_)D)HY^E(c_E%o_uQoU42>7qumAHGlGIk>jY= zw|gAR*-97!N={6g$04a=+kfID*A6=_{>_SE3v%0Dcl=44c8Y`Zq{P06iM~@GuBlz) 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 E01P!tt^fc4 diff --git a/docsite/static/img/status-ui.png b/docsite/static/img/status-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bd6dbca2be5665369738fce1ec850699c93b4d GIT binary patch literal 540085 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%0At^+Q{|T;_J$1BpH@LW=ZT=REs{ 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 z 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 Date: Tue, 3 Oct 2023 14:00:57 -0400 Subject: [PATCH 80/82] docs: Clarify subsonic api compatibility --- README.md | 2 +- docsite/docs/configuration/configuration.md | 2 +- docsite/src/pages/index.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 68ad7edc..24b57580 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ A javascript app to scrobble music you listened to, to [Maloja](https://github.c * Supports scrobbling from many **Sources** * [Spotify](/docsite/docs/configuration/configuration.md#spotify) * [Plex](/docsite/docs/configuration/configuration.md#plex) or [Tautulli](/docsite/docs/configuration/configuration.md#tautulli) - * [Subsonic-compatible APIs](/docsite/docs/configuration/configuration.md#subsonic) (like [Airsonic](https://airsonic.github.io/)) + * [Subsonic-compatible APIs](/docsite/docs/configuration/configuration.md#subsonic) (like [Airsonic](https://airsonic.github.io/) and [Navidrome](https://www.navidrome.org/)) * [Jellyfin](/docsite/docs/configuration/configuration.md#jellyfin) * [Youtube Music](/docsite/docs/configuration/configuration.md#youtube-music) * [Last.fm](/docsite/docs/configuration/configuration.md#lastfm-source) diff --git a/docsite/docs/configuration/configuration.md b/docsite/docs/configuration/configuration.md index 45a69ae3..f5507dc8 100644 --- a/docsite/docs/configuration/configuration.md +++ b/docsite/docs/configuration/configuration.md @@ -232,7 +232,7 @@ See [`tautulli.json.example`](https://github.com/FoxxMD/multi-scrobbler/blob/mas ## [Subsonic](http://www.subsonic.org/) -Can use this source for any application that implements the [Subsonic API](http://www.subsonic.org/pages/api.jsp) (such as [Airsonic](https://airsonic.github.io/)) +Can use this source for any application that implements the [Subsonic API](http://www.subsonic.org/pages/api.jsp) and supports the [`getNowPlaying`](http://www.subsonic.org/pages/api.jsp#getNowPlaying) endpoint (such as [Airsonic](https://airsonic.github.io/) and [Navidrome](https://www.navidrome.org/)) **Known Issues:** * "Time played at" is somewhat inaccurate since the api only reports "played X minutes ago" so... diff --git a/docsite/src/pages/index.mdx b/docsite/src/pages/index.mdx index f4f60932..f82d08a5 100644 --- a/docsite/src/pages/index.mdx +++ b/docsite/src/pages/index.mdx @@ -15,7 +15,7 @@ A javascript app to scrobble music you listened to, to [Maloja](https://github.c * Supports scrobbling from many **Sources** * [Spotify](docs/configuration#spotify) * [Plex](docs/configuration#plex) or [Tautulli](docs/configuration#tautulli) - * [Subsonic-compatible APIs](docs/configuration#subsonic) (like [Airsonic](https://airsonic.github.io/)) + * [Subsonic-compatible APIs](docs/configuration#subsonic) (like [Airsonic](https://airsonic.github.io/) and [Navidrome](https://www.navidrome.org/)) * [Jellyfin](docs/configuration#jellyfin) * [Youtube Music](docs/configuration#youtube-music) * [Last.fm](docs/configuration#lastfm-source) -- 2.54.0 From ab84cb396decb2af39c538fcf00abb4ad8c8aa34 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 3 Oct 2023 14:08:07 -0400 Subject: [PATCH 81/82] docs(jellyfin): Add request header workaround for jellyfin #101 --- docsite/docs/FAQ.md | 17 +++++++++++++++++ docsite/docs/configuration/configuration.md | 2 ++ 2 files changed, 19 insertions(+) diff --git a/docsite/docs/FAQ.md b/docsite/docs/FAQ.md index d0a281a7..0ef9deb0 100644 --- a/docsite/docs/FAQ.md +++ b/docsite/docs/FAQ.md @@ -1,6 +1,7 @@ * [Connection Issues](#connection-issues) * [Plex/Tautulli/Jellyfin don't connect](#plextautullijellyfin-dont-connect) * [Jellyfin has warnings about undefined or missing data](#jellyfin-has-warnings-about-undefined-or-missing-data) + * [Jellyfin has warnings about missing headers](#jellyfin-has-warnings-about-missing-headers) * [Spotify/Deezer/LastFM won't authenticate](#spotifydeezerlastfm-wont-authenticate) * [Configuration Issues](#configuration-issues) * [Config could not be parsed](#config-could-not-be-parsed) @@ -95,6 +96,22 @@ You can verify the payload sent from the webhook by modifying your jellyfin conf If your issue persists and you open an Issue for it please include the raw payload logs in your report. +## Jellyfin has warnings about missing headers + +If you experience issues trying to scrobble with Jellyfin and find this in your MS logs + +``` +[API] Jellyfin is not sending a request with valid headers... +``` + +A workaround that may fix this: + +* In Webhook settings: + * [In the webhook you have already configured...](configuration/configuration.md#jellyfin) + * Add Request Header... + * **Key:** `Content-Type` + * **Value:** `application/json` + * Then Save ## Spotify/Deezer/LastFM won't authenticate diff --git a/docsite/docs/configuration/configuration.md b/docsite/docs/configuration/configuration.md index f5507dc8..ace31df8 100644 --- a/docsite/docs/configuration/configuration.md +++ b/docsite/docs/configuration/configuration.md @@ -270,6 +270,8 @@ Must be using Jellyfin 10.7 or greater * Check `Send All Properties` * Save +If you see errors in the MS logs regarding `missing headers` when using Jellyfin [see this workaround.](../FAQ.md#jellyfin-has-warnings-about-missing-headers) + ### ENV-Based | Environmental Variable | Required? | Default | Description | -- 2.54.0 From 2deca322e796f64cf86ebc87153e61eb5399a0a9 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 3 Oct 2023 14:16:07 -0400 Subject: [PATCH 82/82] fix(ui): For non-polling sources use last activity date for status So that status changes if player is updated instead of waiting for track to be discovered --- src/backend/server/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index dfe53be5..381192f1 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -159,7 +159,7 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, initialLogOutput } else if (canPoll) { base.status = polling ? 'Polling' : 'Idle'; } else { - base.status = tracksDiscovered > 0 ? 'Received Data' : 'Awaiting Data' + base.status = !x.instantiatedAt.isSame(x.lastActivityAt) ? 'Received Data' : 'Awaiting Data'; } return base; });