pastec
Version:
Node module for using a Pastec server.
58 lines (44 loc) • 1.4 kB
JavaScript
var path = require("path");
var async = require("async");
var JSONStream = require("JSONStream");
var pastec = require("./")({
server: "new.ukiyo-e.org:4212"
});
var fileMap = {};
var files = process.argv.slice(2);
files.forEach(function(file, i) {
fileMap[i + 1] = file;
});
var outStream = JSONStream.stringifyObject();
outStream.pipe(process.stdout);
var getNiceName = function(file) {
var dirs = path.dirname(file).split(path.sep);
return dirs[dirs.length - 1] + "/" + path.basename(file);
};
async.eachLimit(Object.keys(fileMap), 1, function(id, callback) {
id = parseFloat(id);
pastec.fileSimilar(fileMap[id], function(err, results) {
//console.log(err, results)
if (err || !results) {
return callback(err, null);
}
var matches = [];
results.image_ids.forEach(function(imageID, i) {
if (imageID !== id) {
matches.push({
filepath: getNiceName(fileMap[imageID]),
rects: results.bounding_rects[i],
score: results.scores[i]
});
}
});
if (matches.length > 0) {
var fileName = getNiceName(fileMap[id]);
outStream.write([fileName, matches]);
}
callback();
});
}, function(err, matches) {
outStream.end();
//console.log("DONE");
});