MPD protocol: emit Last-Modified-Date for directories where appropriate
This commit is contained in:
parent
667fd0c76f
commit
406eae55aa
2 changed files with 9 additions and 3 deletions
|
|
@ -265,7 +265,7 @@ Player.prototype.refreshFilesIndex = function(dir, cb) {
|
||||||
var scannedDirs = {};
|
var scannedDirs = {};
|
||||||
walker.on('directory', function(fullDirPath, stat, stop) {
|
walker.on('directory', function(fullDirPath, stat, stop) {
|
||||||
var dirName = path.relative(self.musicDirectory, fullDirPath);
|
var dirName = path.relative(self.musicDirectory, fullDirPath);
|
||||||
var dirEntry = getOrCreateDir(dirName);
|
var dirEntry = getOrCreateDir(dirName, stat);
|
||||||
scannedDirs[dirName] = dirEntry;
|
scannedDirs[dirName] = dirEntry;
|
||||||
if (fullDirPath === dir) return; // ignore root search path
|
if (fullDirPath === dir) return; // ignore root search path
|
||||||
var baseName = path.basename(dirName);
|
var baseName = path.basename(dirName);
|
||||||
|
|
@ -315,7 +315,7 @@ Player.prototype.refreshFilesIndex = function(dir, cb) {
|
||||||
cb();
|
cb();
|
||||||
});
|
});
|
||||||
|
|
||||||
function getOrCreateDir(dirName) {
|
function getOrCreateDir(dirName, stat) {
|
||||||
var dirEntry = self.dirs[dirName];
|
var dirEntry = self.dirs[dirName];
|
||||||
var fullDirPath = path.join(self.musicDirectory, dirName);
|
var fullDirPath = path.join(self.musicDirectory, dirName);
|
||||||
var changeTriggered = null;
|
var changeTriggered = null;
|
||||||
|
|
@ -335,7 +335,10 @@ Player.prototype.refreshFilesIndex = function(dir, cb) {
|
||||||
entries: {},
|
entries: {},
|
||||||
dirEntries: {},
|
dirEntries: {},
|
||||||
watcher: watcher,
|
watcher: watcher,
|
||||||
|
mtime: stat && stat.mtime,
|
||||||
};
|
};
|
||||||
|
} else if (stat && dirEntry.mtime !== stat.mtime) {
|
||||||
|
dirEntry.mtime = stat.mtime;
|
||||||
}
|
}
|
||||||
return dirEntry;
|
return dirEntry;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -406,7 +406,9 @@ var commands = {
|
||||||
}
|
}
|
||||||
for (baseName in dirEntry.dirEntries) {
|
for (baseName in dirEntry.dirEntries) {
|
||||||
relPath = path.join(dirName, baseName);
|
relPath = path.join(dirName, baseName);
|
||||||
|
var childEntry = self.gb.player.dirs[relPath];
|
||||||
socket.write("directory: " + relPath + "\n");
|
socket.write("directory: " + relPath + "\n");
|
||||||
|
socket.write("Last-Modified: " + new Date(childEntry.mtime).toISOString() + "\n");
|
||||||
}
|
}
|
||||||
cb();
|
cb();
|
||||||
},
|
},
|
||||||
|
|
@ -1017,7 +1019,7 @@ MpdServer.prototype.initialize = function(cb) {
|
||||||
};
|
};
|
||||||
|
|
||||||
socket.setEncoding('utf8');
|
socket.setEncoding('utf8');
|
||||||
socket.write("OK MPD 0.17.0\n");
|
socket.write("OK MPD 0.19.0\n");
|
||||||
socket.on('data', bufferStr);
|
socket.on('data', bufferStr);
|
||||||
socket.on('error', onError);
|
socket.on('error', onError);
|
||||||
self.gb.player.on('volumeUpdate', onVolumeUpdate);
|
self.gb.player.on('volumeUpdate', onVolumeUpdate);
|
||||||
|
|
@ -1484,6 +1486,7 @@ function forEachListAll(self, socket, args, onTrack, cb) {
|
||||||
var baseName, relPath;
|
var baseName, relPath;
|
||||||
if (dirEntry.dirName) { // exclude root
|
if (dirEntry.dirName) { // exclude root
|
||||||
socket.write("directory: " + dirEntry.dirName + "\n");
|
socket.write("directory: " + dirEntry.dirName + "\n");
|
||||||
|
socket.write("Last-Modified: " + new Date(dirEntry.mtime).toISOString() + "\n");
|
||||||
}
|
}
|
||||||
var dbFilesByPath = self.gb.player.dbFilesByPath;
|
var dbFilesByPath = self.gb.player.dbFilesByPath;
|
||||||
for (baseName in dirEntry.entries) {
|
for (baseName in dirEntry.entries) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue