Only create thumbs / copy files if they have changed

pull/9/head
rprieto 10 years ago
parent 0b6c7ec8f8
commit 288ee7f87c

@ -19,8 +19,7 @@ Static HTML galleries from a list of photos & videos.
## Input
Any folder with photos and videos.
`thumbsup` supports 1 level of subfolders:
Any folder with photos and videos. `thumbsup` supports 1 level of subfolders, where they each become a gallery.
```
input

@ -0,0 +1,26 @@
var fs = require('fs-extra');
var glob = require('glob');
exports.find = function(folder, ext, callback) {
var opts = {
cwd: folder,
nonull: false,
nocase: true
};
glob('**/*.{' + ext + '}', opts, callback);
};
exports.newer = function(src, dest) {
var srcTime = 0;
try {
var srcTime = fs.statSync(src).ctime.getTime();
} catch (ex) {
return false;
}
try {
var destTime = fs.statSync(dest).ctime.getTime();
return srcTime > destTime;
} catch (ex) {
return true;
}
};

@ -1,7 +1,7 @@
var _ = require('lodash');
var fs = require('fs');
var path = require('path');
var glob = require('glob');
var files = require('./files');
exports.fromDisk = function(mediaPath, mediaPrefix, callback) {
@ -48,7 +48,7 @@ exports.fromDisk = function(mediaPath, mediaPrefix, callback) {
};
}
glob('**/*.{jpg,jpeg,png,mp4,mov}', {cwd: mediaPath, nonull:false}, function (err, files) {
files.find(mediaPath, 'jpg,jpeg,png,mp4,mov', function (err, files) {
var galleries = _(files)
.map(fileInfo)
.sortBy('date')

@ -1,12 +1,12 @@
var fs = require('fs-extra');
var path = require('path');
var glob = require('glob');
var async = require('async');
var pad = require('pad');
var galleries = require('./galleries');
var render = require('./render');
var thumbs = require('./thumbs');
var files = require('./files');
exports.build = function(opts) {
@ -22,10 +22,9 @@ exports.build = function(opts) {
};
function photos(opts) {
var thumbsFolder = path.join(path.resolve(opts.output), 'thumbs');
glob('**/*.{jpg,png}', {cwd: opts.input, nonull:false}, function (err, files) {
files.find(opts.input, 'jpg,png', function (err, files) {
var fns = files.map(function(file) {
return thumbs.photo.bind(this, {
input: path.join(opts.input, file),
@ -38,7 +37,7 @@ function photos(opts) {
function videos(opts) {
var thumbsFolder = path.join(path.resolve(opts.output), 'thumbs');
glob('**/*.{mp4,mov}', {cwd: opts.input, nonull:false}, function (err, files) {
files.find(opts.input, 'mp4,mov', function (err, files) {
var fns = files.map(function(file) {
return thumbs.video.bind(this, {
input: path.join(opts.input, file),
@ -69,7 +68,9 @@ function website(opts) {
function support(opts) {
var pub = path.join(__dirname, '..', 'public');
var out = path.join(path.resolve(opts.output), 'public');
fs.copy(pub, out, log('Supporting files'));
if (files.newer(pub, out)) {
fs.copy(pub, out, log('Supporting files'));
}
}
function ext(file, newExtension) {

@ -3,6 +3,7 @@ var fs = require('fs-extra');
var path = require('path');
var async = require('async');
var gm = require('gm');
var files = require('./files');
// default thumbnail size (square)
@ -11,6 +12,7 @@ exports.size = 100;
// opts = input, thumbnail
exports.photo = function(opts, callback) {
if (files.newer(opts.thumbnail, opts.input)) return callback();
fs.mkdirpSync(path.dirname(opts.thumbnail));
gm(path.resolve(opts.input))
@ -36,6 +38,7 @@ exports.video = function(opts, callback) {
}, next);
};
if (files.newer(opts.thumbnail, opts.input)) return callback();
fs.mkdirpSync(path.dirname(opts.thumbnail));
async.series([fnVideo, fnPhoto], callback);

Loading…
Cancel
Save