Added support for multiple trackers & scrobblers.
This commit is contained in:
parent
7ef6ebb076
commit
2b2cc20a1d
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,4 +4,4 @@ config/*
|
|||||||
!config/configuration.js
|
!config/configuration.js
|
||||||
!config.schema.js
|
!config.schema.js
|
||||||
credentials.*
|
credentials.*
|
||||||
config*.yml
|
*.yml
|
15
app.js
15
app.js
@ -10,11 +10,16 @@ const Recorder = require("./services/recorder");
|
|||||||
const MalojaScrobbler = require("./services/scrobblers/maloja-scrobbler");
|
const MalojaScrobbler = require("./services/scrobblers/maloja-scrobbler");
|
||||||
|
|
||||||
|
|
||||||
const maloja = new MalojaScrobbler(config.maloja, logger);
|
let trackers = []
|
||||||
const spotify = new SpotifyTracker(config.spotify);
|
trackers = trackers.concat(config.spotify.map(config => new SpotifyTracker(config)));
|
||||||
(async () => await spotify.loadCredentials())();
|
trackers = trackers.concat(config.plex.map(config => new PlexTracker(config)));
|
||||||
const plex = new PlexTracker(config.plex);
|
|
||||||
const recorder = new Recorder(sessions, [plex, spotify], [maloja], config.scrobble, logger);
|
const uniqueSpotifys = new Set(config.spotify.map(c => c.client_id));
|
||||||
|
for (let spotify of uniqueSpotifys)
|
||||||
|
(async () => await spotify.loadCredentials())();
|
||||||
|
|
||||||
|
const scrobblers = config.maloja.map(config => new MalojaScrobbler(config, logger));
|
||||||
|
const recorder = new Recorder(sessions, trackers, scrobblers, config.scrobble, logger);
|
||||||
|
|
||||||
setInterval(() => recorder.record(), 5000);
|
setInterval(() => recorder.record(), 5000);
|
||||||
|
|
||||||
|
@ -3,83 +3,89 @@ const schema = {
|
|||||||
required: [],
|
required: [],
|
||||||
properties: {
|
properties: {
|
||||||
maloja: {
|
maloja: {
|
||||||
type: 'object',
|
type: 'array',
|
||||||
required: ['name', 'url', 'token'],
|
items: {
|
||||||
properties: {
|
type: 'object',
|
||||||
name: {
|
required: ['name', 'url', 'token'],
|
||||||
type: 'string'
|
properties: {
|
||||||
},
|
name: {
|
||||||
url: {
|
type: 'string'
|
||||||
type: 'string'
|
},
|
||||||
},
|
url: {
|
||||||
token: {
|
type: 'string'
|
||||||
type: 'string'
|
},
|
||||||
},
|
token: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
plex: {
|
plex: {
|
||||||
type: 'object',
|
type: 'array',
|
||||||
required: ['name', 'url', 'token', 'scrobblers'],
|
items: {
|
||||||
properties: {
|
type: 'object',
|
||||||
name: {
|
required: ['name', 'url', 'token', 'scrobblers'],
|
||||||
type: 'string'
|
properties: {
|
||||||
},
|
name: {
|
||||||
url: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
token: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
filters: {
|
|
||||||
type: 'array',
|
|
||||||
minItems: 0,
|
|
||||||
items: {
|
|
||||||
type: 'object',
|
|
||||||
properties: {
|
|
||||||
library: {
|
|
||||||
type: 'array',
|
|
||||||
items: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
minItems: 0,
|
|
||||||
},
|
|
||||||
ip: {
|
|
||||||
type: 'array',
|
|
||||||
items: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
minItems: 0,
|
|
||||||
},
|
|
||||||
deviceId: {
|
|
||||||
type: 'array',
|
|
||||||
items: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
minItems: 0,
|
|
||||||
},
|
|
||||||
platform: {
|
|
||||||
type: 'array',
|
|
||||||
items: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
minItems: 0,
|
|
||||||
},
|
|
||||||
product: {
|
|
||||||
type: 'array',
|
|
||||||
items: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
minItems: 0,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
scrobblers: {
|
|
||||||
type: 'array',
|
|
||||||
items: {
|
|
||||||
type: 'string'
|
type: 'string'
|
||||||
},
|
},
|
||||||
minItems: 1
|
url: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
token: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
filters: {
|
||||||
|
type: 'array',
|
||||||
|
minItems: 0,
|
||||||
|
items: {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
library: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 0,
|
||||||
|
},
|
||||||
|
ip: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 0,
|
||||||
|
},
|
||||||
|
deviceId: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 0,
|
||||||
|
},
|
||||||
|
platform: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 0,
|
||||||
|
},
|
||||||
|
product: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
scrobblers: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -102,27 +108,30 @@ const schema = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
spotify: {
|
spotify: {
|
||||||
type: 'object',
|
type: 'array',
|
||||||
required: ['name', 'client_id', 'client_secret', 'redirect_uri', 'scrobblers'],
|
items: {
|
||||||
properties: {
|
type: 'object',
|
||||||
name: {
|
required: ['name', 'client_id', 'client_secret', 'redirect_uri', 'scrobblers'],
|
||||||
type: 'string'
|
properties: {
|
||||||
},
|
name: {
|
||||||
client_id: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
client_secret: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
redirect_uri: {
|
|
||||||
type: 'string'
|
|
||||||
},
|
|
||||||
scrobblers: {
|
|
||||||
type: 'array',
|
|
||||||
items: {
|
|
||||||
type: 'string'
|
type: 'string'
|
||||||
},
|
},
|
||||||
minItems: 1
|
client_id: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
client_secret: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
redirect_uri: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
scrobblers: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user