mediamonkeyserver
Version:
MediaMonkey Server
111 lines (89 loc) • 2.99 kB
JavaScript
/*jslint node: true, esversion: 6 */
;
const AudioItem = require('./object.item.audioItem');
const Item = require('./object.item');
const Xmlns = require('../xmlns');
const MUSICMEDATA_LIST = [ 'trackOf', 'diskNo', 'diskOf' ];
const _UPNP_CLASS = AudioItem.UPNP_CLASS + ".musicTrack";
class MusicTrack extends AudioItem {
get name() { return MusicTrack.UPNP_CLASS; }
get mimeTypes() { return [ 'audio/*' ]; }
static get UPNP_CLASS() {
return _UPNP_CLASS;
}
toJXML(node, attributes, request, filterCallback, callback) {
super.toJXML(node, attributes, request, filterCallback, (error, xml) => {
if (error) {
return callback(error);
}
var content = xml._content;
if (filterCallback(Xmlns.UPNP_METADATA, "album")) {
if (attributes.album) {
content.push({
_name : "upnp:album",
_content : attributes.album
});
}
}
if (filterCallback(Xmlns.UPNP_METADATA, "originalTrackNumber")) {
if (typeof(attributes.originalTrackNumber)==="number") {
content.push({
_name : "upnp:originalTrackNumber",
_content : attributes.originalTrackNumber
});
}
}
if (filterCallback(Xmlns.UPNP_METADATA, "originalDiscNumber")) {
if (typeof(attributes.originalDiscNumber)==="number") {
content.push({
_name : "upnp:originalDiscNumber",
_content : attributes.originalDiscNumber
});
}
}
if (request.jasminMusicMetadatasSupport) {
MUSICMEDATA_LIST.forEach((name) => {
var value = attributes[name];
if (value === undefined) {
return;
}
if (!filterCallback(Xmlns.JASMIN_MUSICMETADATA, name)) {
return;
}
var x = {
_name : "mm:" + name,
_content : value
};
content.push(x);
});
}
// unofficial:
if (filterCallback(Xmlns.UPNP_METADATA, "MM_VolumeLeveling")) {
if (attributes.volumeLeveling) {
content.push({
_name : "upnp:MM_VolumeLeveling",
_content : attributes.volumeLeveling
});
}
}
if (filterCallback(Xmlns.UPNP_METADATA, "MM_TrackGain")) {
if (attributes.normalizeTrack) {
content.push({
_name : "upnp:MM_TrackGain",
_content : attributes.normalizeTrack
});
}
}
if (filterCallback(Xmlns.UPNP_METADATA, "MM_AlbumGain")) {
if (attributes.normalizeAlbum) {
content.push({
_name : "upnp:MM_AlbumGain",
_content : attributes.normalizeAlbum
});
}
}
callback(null, xml);
});
}
}
module.exports = MusicTrack;