84 lines
2 KiB
JavaScript
84 lines
2 KiB
JavaScript
|
import * as mpd from "./mpd.js";
|
||
|
|
||
|
export const escape = mpd.escape;
|
||
|
|
||
|
export function command(cmd) {
|
||
|
console.warn(`MOCK does not know "${cmd}"`);
|
||
|
}
|
||
|
|
||
|
export function commandAndStatus(cmd) {
|
||
|
command(cmd);
|
||
|
return status();
|
||
|
}
|
||
|
|
||
|
export function status() {
|
||
|
return {
|
||
|
volume: 50,
|
||
|
elapsed: 10,
|
||
|
duration: 70,
|
||
|
file: "name.mp3",
|
||
|
Title: "Title of song",
|
||
|
Artist: "Artist of song",
|
||
|
Album: "Album of song",
|
||
|
Track: 6,
|
||
|
state: "play",
|
||
|
Id: 2
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export function listQueue() {
|
||
|
return [
|
||
|
{id:1, Track:5, Title:"Title 1", Artist:"AAA", Album:"BBB", duration:30},
|
||
|
status(),
|
||
|
{id:3, Track:7, Title:"Title 3", Artist:"CCC", Album:"DDD", duration:230},
|
||
|
];
|
||
|
}
|
||
|
|
||
|
export async function listPlaylists() {
|
||
|
let lines = await command("listplaylists");
|
||
|
let parsed = parser.linesToStruct(lines);
|
||
|
|
||
|
let list = parsed["playlist"];
|
||
|
if (!list) { return []; }
|
||
|
return (list instanceof Array ? list : [list]);
|
||
|
}
|
||
|
|
||
|
export async function enqueueByFilter(filter, sort = null) {
|
||
|
let tokens = ["findadd"];
|
||
|
tokens.push(serializeFilter(filter));
|
||
|
// sort && tokens.push("sort", sort); FIXME not implemented in MPD
|
||
|
return command(tokens.join(" "));
|
||
|
}
|
||
|
|
||
|
export async function listPath(path) {
|
||
|
let lines = await command(`lsinfo "${escape(path)}"`);
|
||
|
return parser.pathContents(lines);
|
||
|
}
|
||
|
|
||
|
export async function listTags(tag, filter = null) {
|
||
|
let tokens = ["list", tag];
|
||
|
if (filter) {
|
||
|
tokens.push(serializeFilter(filter));
|
||
|
|
||
|
let fakeGroup = Object.keys(filter)[0]; // FIXME hack for MPD < 0.21.6
|
||
|
tokens.push("group", fakeGroup);
|
||
|
}
|
||
|
let lines = await command(tokens.join(" "));
|
||
|
let parsed = parser.linesToStruct(lines);
|
||
|
return [].concat(tag in parsed ? parsed[tag] : []);
|
||
|
}
|
||
|
|
||
|
export async function listSongs(filter, window = null) {
|
||
|
let tokens = ["find"];
|
||
|
tokens.push(serializeFilter(filter));
|
||
|
if (window) { tokens.push("window", window.join(":")); }
|
||
|
let lines = await command(tokens.join(" "));
|
||
|
return parser.songList(lines);
|
||
|
}
|
||
|
|
||
|
export async function albumArt(songUrl) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
export function init() {}
|