dreemgl
Version:
DreemGL is an open-source multi-screen prototyping framework for mediated environments, with a visual editor and shader styling for webGL and DALi runtimes written in JavaScript. As a toolkit for gpu-accelerated multiscreen development, DreemGL includes
73 lines (64 loc) • 1.84 kB
JavaScript
var fs = require("fs"),
getCollectionMetadata = require("./collections"),
progress = require("progress"),
progressBar,
sets = [];
/**
* Sets
*/
function processPhotosets(flickr, set_idx, total, next_function) {
"use strict";
if(set_idx >= total) {
console.log("done fetching set metadata.\n");
if (next_function) {
next_function();
}
return;
}
var set = sets[set_idx],
id = set.id,
filename = flickr.options.locals.dirstructure.ia.photosets + "/" + id + ".json",
next = (function(flickr, set_idx, total) {
var next_id = set_idx +1;
return function() {
setTimeout(function() {
processPhotosets(flickr, next_id, total, next_function);
}, 1);
};
}(flickr, set_idx, total));
// record progress
progressBar.tick();
// TODO: download photos if new set, or known set with updates
flickr.photosets.getPhotos({
photoset_id: set.id,
page: 1,
per_page: 500
}, function(error, result) {
if (error) {
return console.log(error);
}
set.photos = result.photoset.photo.map(function(photo) {
if(photo.isprimary === "1") {
set.primary = photo.id;
}
return photo.id;
});
fs.writeFile(filename, JSON.prettyprint(set), next);
});
}
function getSetMetadata(flickr, next_function) {
flickr.photosets.getList({
user_id: flickr.options.user_id,
page: 1,
per_page: 500
}, function(error, result) {
if (error) {
return console.log(error);
}
sets = result.photosets.photoset;
console.log("Downloading set metadata from Flickr.");
progressBar = new progress(' [:bar] :current/:total', { total: sets.length });
processPhotosets(flickr, 0, sets.length, next_function);
});
}
module.exports = getSetMetadata;