91 lines
2.8 KiB
JavaScript
91 lines
2.8 KiB
JavaScript
var fs = require('fs');
|
|
var gm = require('gm');
|
|
var mkdirp = require('mkdirp');
|
|
var markdown = require( "markdown" ).markdown;
|
|
var jade = require('jade');
|
|
|
|
|
|
var config = require('./config.js').config;
|
|
var db = require('./db.js');
|
|
|
|
var generatePhotoSizesById = function generatePhotoSizesById(id, cb) {
|
|
db.getPhotoById(id, function (photo) {
|
|
if (photo) console.log('Got photo record for: '+photo.slug);
|
|
var shortDate = helper.epochToShortDateString(photo.photoDate);
|
|
var failure = false;
|
|
|
|
var folder = config.genDir+'/photos/'+photo.slug;
|
|
|
|
mkdirp(folder, function(err) {
|
|
if (err) console.log(err);
|
|
for (var size in config.imageSizes) {
|
|
console.log('Generating '+size+' for '+photo.slug);
|
|
|
|
var file = folder + '/'+size+'.'+photo.extension;
|
|
|
|
(function(size){
|
|
gm(photo.path)
|
|
.autoOrient()
|
|
.resize(config.imageSizes[size], config.imageSizes[size])
|
|
.write(file,
|
|
function(err) {
|
|
if (err) {
|
|
console.log(photo.slug+' resize failed.');
|
|
failure = true;
|
|
}
|
|
else {
|
|
console.log(photo.slug+' '+size+' generated.');
|
|
}
|
|
}
|
|
);
|
|
})(size);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
cb(failure);
|
|
});
|
|
}
|
|
|
|
exports.generatePhotoSizesById = generatePhotoSizesById;
|
|
|
|
var generatePhotoPage = function (id, cb) {
|
|
db.getPhotoById(id, function(photo) {
|
|
console.log('Fetching photo id: '+id);
|
|
var description = markdown.toHTML(photo.description);
|
|
var photoDate = helper.epochToShortDateString(photo.photoDate);
|
|
var url = '/photos/'+photo.slug+'/';
|
|
var filepath = config.genDir+url;
|
|
var filename = filepath+'index.html';
|
|
var options = {
|
|
pretty: false,
|
|
title: photo.title,
|
|
description: description,
|
|
slug: photo.slug,
|
|
url: url,
|
|
extension: photo.extension,
|
|
postDate: photo.photoDate
|
|
};
|
|
|
|
console.log('Rendering photo: '+photo.title);
|
|
var jadeOut = jade.renderFile('views/render-photo.jade', options);
|
|
|
|
console.log('Creating directory: '+filepath);
|
|
mkdirp(filepath, function(err) {
|
|
if (err) {
|
|
console.log(err);
|
|
}
|
|
else {
|
|
console.log('Writing to file: '+filename);
|
|
|
|
fs.writeFile(filename, jadeOut, 'utf-8', function(err) {
|
|
if (err) console.log(err);
|
|
cb(err);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
exports.generatePhotoPage = generatePhotoPage;
|