Added scrobbling functionality. Changes all around to support scrobbling, such as named trackers and configuration changes.
This commit is contained in:
43
services/scrobblers/maloja-scrobbler.js
Normal file
43
services/scrobblers/maloja-scrobbler.js
Normal file
@ -0,0 +1,43 @@
|
||||
const axios = require("axios");
|
||||
|
||||
class MalojaScrobbler {
|
||||
#config = null;
|
||||
#counter = 0;
|
||||
|
||||
constructor(config) {
|
||||
this.#config = config;
|
||||
|
||||
if (!config.name)
|
||||
throw new Error("Invalid name for Maloja scrobber.");
|
||||
if (!config.url)
|
||||
throw new Error(`Invalid url for Maloja scrobbler '${this.name}'.`);
|
||||
if (!config.token)
|
||||
throw new Error(`Invalid token for Maloja scrobbler '${this.name}'.`)
|
||||
}
|
||||
|
||||
get counter() {
|
||||
return this.#counter;
|
||||
}
|
||||
|
||||
get name() {
|
||||
return this.#config.name;
|
||||
}
|
||||
|
||||
async scrobble(song, progress, start) {
|
||||
const url = new URL(this.#config.url);
|
||||
url.pathname += "/apis/mlj_1/newscrobble";
|
||||
url.search = "?key=" + this.#config.token;
|
||||
await axios.post(url.toString(), {
|
||||
title: song.name,
|
||||
album: song.album,
|
||||
artists: song.artists,
|
||||
duration: Math.round(progress / 1000),
|
||||
length: Math.round(song.duration / 1000),
|
||||
//time: start
|
||||
});
|
||||
|
||||
this.#counter++;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = MalojaScrobbler;
|
Reference in New Issue
Block a user