Browse Source

albumart

master
Ondrej Zara 3 years ago
parent
commit
106bcb3382
  1. 53
      commands.js
  2. 5
      index.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

@ -54,6 +54,11 @@ function initConnection(request) {
ws.close();
});
mpd.on("error", () => {
log("mpd connection error");
ws.close();
});
waitForCommand(commands.welcome(mpd));
}

Loading…
Cancel
Save