Ability to enable/disable reporting of now playing and scrobbling

This commit is contained in:
simojenki
2021-07-08 16:48:02 +10:00
parent f7a1b3f52c
commit 9823665601
4 changed files with 104 additions and 26 deletions

View File

@@ -4,12 +4,13 @@ import { appendMimeTypeToClientFor, DEFAULT, Navidrome } from "./navidrome";
import encryption from "./encryption";
import { InMemoryAccessTokens, sha256 } from "./access_tokens";
import { InMemoryLinkCodes } from "./link_codes";
import config from "./config";
import readConfig from "./config";
import sonos, { bonobService } from "./sonos";
import { MusicService } from "./music_service";
logger.info(
`Starting bonob with config ${JSON.stringify(config)}`
);
const config = readConfig();
logger.info(`Starting bonob with config ${JSON.stringify(config)}`);
const bonob = bonobService(
config.sonos.serviceName,
@@ -20,17 +21,45 @@ const bonob = bonobService(
const sonosSystem = sonos(config.sonos.deviceDiscovery, config.sonos.seedHost);
const streamUserAgent = config.navidrome.customClientsFor ? appendMimeTypeToClientFor(config.navidrome.customClientsFor.split(",")) : DEFAULT;
const streamUserAgent = config.navidrome.customClientsFor
? appendMimeTypeToClientFor(config.navidrome.customClientsFor.split(","))
: DEFAULT;
const navidrome = new Navidrome(
config.navidrome.url,
encryption(config.secret),
streamUserAgent
);
const featureFlagAwareMusicService: MusicService = {
generateToken: navidrome.generateToken,
login: (authToken: string) =>
navidrome.login(authToken).then((library) => {
return {
...library,
scrobble: (id: string) => {
if (config.scrobbleTracks) return library.scrobble(id);
else {
logger.info("Track Scrobbling not enabled")
return Promise.resolve(false);
}
},
nowPlaying: (id: string) => {
if (config.reportNowPlaying) return library.nowPlaying(id);
else {
logger.info("Reporting track now playing not enabled");
return Promise.resolve(false);
}
},
};
}),
};
const app = server(
sonosSystem,
bonob,
config.webAddress,
new Navidrome(
config.navidrome.url,
encryption(config.secret),
streamUserAgent
),
featureFlagAwareMusicService,
new InMemoryLinkCodes(),
new InMemoryAccessTokens(sha256(config.secret))
);