albumart
This commit is contained in:
parent
22879cfb68
commit
106bcb3382
2 changed files with 58 additions and 0 deletions
53
commands.js
53
commands.js
|
@ -23,6 +23,7 @@ class Command extends EventEmitter {
|
|||
|
||||
_done(data) {
|
||||
this._mpd.off("data", this._dataListener);
|
||||
this._buffer = null;
|
||||
this.emit("done", data);
|
||||
}
|
||||
|
||||
|
@ -60,7 +61,59 @@ class Welcome extends Command {
|
|||
}
|
||||
}
|
||||
|
||||
class AlbumArt extends Command {
|
||||
constructor(mpd, command) {
|
||||
super(mpd);
|
||||
this._size = 0;
|
||||
this._binary = 0;
|
||||
this._data = null;
|
||||
this._lines = [];
|
||||
|
||||
log("--> mpd", command);
|
||||
mpd.write(command + "\n");
|
||||
}
|
||||
|
||||
_processBuffer() {
|
||||
if (!this._size) {
|
||||
let line = this._getLine();
|
||||
if (!line) { return; }
|
||||
this._lines.push(line);
|
||||
this._size = Number(line.split(": ").pop());
|
||||
log("size", this._size);
|
||||
}
|
||||
|
||||
if (!this._binary) {
|
||||
let line = this._getLine();
|
||||
if (!line) { return; }
|
||||
this._lines.push(line);
|
||||
this._binary = Number(line.split(": ").pop());
|
||||
log("binary", this._binary);
|
||||
}
|
||||
|
||||
if (!this._data) {
|
||||
// binary data has this._binary bytes + 1 newline
|
||||
if (this._buffer.length >= this._binary+1) {
|
||||
this._data = this._buffer.slice(0, this._binary);
|
||||
this._buffer = this._buffer.slice(this._binary+1);
|
||||
this._lines.push([...this._data]);
|
||||
log("data", this._data.length);
|
||||
} else { return; }
|
||||
}
|
||||
|
||||
let line = this._getLine();
|
||||
if (!line) { return; }
|
||||
this._lines.push(line);
|
||||
this._done(this._lines);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
exports.create = function(mpd, command) {
|
||||
if (command.startsWith("albumart")) {
|
||||
return new AlbumArt(mpd, command);
|
||||
} else {
|
||||
return new Normal(mpd, command);
|
||||
}
|
||||
return new Normal(mpd, command);
|
||||
}
|
||||
|
||||
|
|
5
index.js
5
index.js
|
@ -54,6 +54,11 @@ function initConnection(request) {
|
|||
ws.close();
|
||||
});
|
||||
|
||||
mpd.on("error", () => {
|
||||
log("mpd connection error");
|
||||
ws.close();
|
||||
});
|
||||
|
||||
waitForCommand(commands.welcome(mpd));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue