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 = {};
|
||||
walker.on('directory', function(fullDirPath, stat, stop) {
|
||||
var dirName = path.relative(self.musicDirectory, fullDirPath);
|
||||
var dirEntry = getOrCreateDir(dirName);
|
||||
var dirEntry = getOrCreateDir(dirName, stat);
|
||||
scannedDirs[dirName] = dirEntry;
|
||||
if (fullDirPath === dir) return; // ignore root search path
|
||||
var baseName = path.basename(dirName);
|
||||
|
|
@ -315,7 +315,7 @@ Player.prototype.refreshFilesIndex = function(dir, cb) {
|
|||
cb();
|
||||
});
|
||||
|
||||
function getOrCreateDir(dirName) {
|
||||
function getOrCreateDir(dirName, stat) {
|
||||
var dirEntry = self.dirs[dirName];
|
||||
var fullDirPath = path.join(self.musicDirectory, dirName);
|
||||
var changeTriggered = null;
|
||||
|
|
@ -335,7 +335,10 @@ Player.prototype.refreshFilesIndex = function(dir, cb) {
|
|||
entries: {},
|
||||
dirEntries: {},
|
||||
watcher: watcher,
|
||||
mtime: stat && stat.mtime,
|
||||
};
|
||||
} else if (stat && dirEntry.mtime !== stat.mtime) {
|
||||
dirEntry.mtime = stat.mtime;
|
||||
}
|
||||
return dirEntry;
|
||||
|
||||
|
|
|
|||
|
|
@ -406,7 +406,9 @@ var commands = {
|
|||
}
|
||||
for (baseName in dirEntry.dirEntries) {
|
||||
relPath = path.join(dirName, baseName);
|
||||
var childEntry = self.gb.player.dirs[relPath];
|
||||
socket.write("directory: " + relPath + "\n");
|
||||
socket.write("Last-Modified: " + new Date(childEntry.mtime).toISOString() + "\n");
|
||||
}
|
||||
cb();
|
||||
},
|
||||
|
|
@ -1017,7 +1019,7 @@ MpdServer.prototype.initialize = function(cb) {
|
|||
};
|
||||
|
||||
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('error', onError);
|
||||
self.gb.player.on('volumeUpdate', onVolumeUpdate);
|
||||
|
|
@ -1484,6 +1486,7 @@ function forEachListAll(self, socket, args, onTrack, cb) {
|
|||
var baseName, relPath;
|
||||
if (dirEntry.dirName) { // exclude root
|
||||
socket.write("directory: " + dirEntry.dirName + "\n");
|
||||
socket.write("Last-Modified: " + new Date(dirEntry.mtime).toISOString() + "\n");
|
||||
}
|
||||
var dbFilesByPath = self.gb.player.dbFilesByPath;
|
||||
for (baseName in dirEntry.entries) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue