slidonoscopy is a software to create individual HTML based slideshows based on local data (text, images, videos...) and (optionally) remote Ical calendars. Dependencies: ============= slidonoscopy is written in node.js and requires some additional modules: * express * walk * watch-tree * ical * consolidate * a templating engine compatible with consolidate (default: swig) Currently a few patches to node-ical and watch-tree are required. node-ical has to be updated to parse recurring rules. watch-tree needs a patch to support node 0.6. Additionally we use the experimental express 3.x. Simply installing all dependencies with npm should do the trick. Usage: ====== Edit config.js to reflect the location of your slideshows und metadata/event files. Slideshows are to be created under $dir with one directory per slideshow. $dir---slideshow1 -- events.js | |___ slide1.jpg | |___ slide2.jpg | |___ video.mkv | |___ desc.js | |___ template.html | |___slideshow2 -- events.js | |___ slide.jpg | |___ template.html | |___slideshow3 -- events.js |___ template.html Templates are written in the templating language of your choice. The defaults use swig. Read them to gather which variables are substituted for content. Just execute $ node main.js to run slidenoscopy. The server will listen on port 8080 and will serve all slideshows under slides/$name. Retrieving anything else will display a list of all available slideshows. Configuration: ============== The configuration file consists of the following keys: exports.modelBackend = 'fs'; exports.Config = { rootDir: 'slideshows' , templateEngine: 'swig', listTemplate: 'index.html', templateFile: 'template.html', descriptionFile: 'desc.js', eventFile: 'events.js', ignoreDotFiles: 'false', port: 8080 }; 'rootDir' sets the root directory from which all slideshows are created. 'templateEngine' selects the templating engine to use. It has to be compatible with consolidate.js and all slideshows have to use the same templating language. 'listTemplate' is the template (relative to rootDir) used to create the listing of all slideshows 'templateFile' is the actual template file used for a single slideshow 'descriptionFile' is the JSON file containing the slide descriptions 'eventFile' contains the URL to the Ical calendar or a list of events and dates 'ignoreDotFiles' selects if 'hidden' (dot files) should be considererd when creating slideshows 'port' sets the TCP port used for serving the slideshows Events: ======= Events are substituted into the template either from a file or a remote ical calendar. Using an ical calendar is recommended as it allows defining recurring events. For using a remote calendar the events.js file should contain the following fields: { "type": "ical", "url": "https://sublab.org:5232/calendars/events", "before": 0, "after": 11160 } The time offsets (seconds) are used to fetch past and future events from the calendar. Slides: ======= Slides are created from each file in a subdirectory in the root directory defined in config.js (as described above). Slides consist of a media file (movies or images) and optionally a corresponding description. All media files should have the same size (at least with the default themes) to ensure a smooth transition between slides. Descriptions are defined in desc.js as follows: [ { "file": "IMGP4596.jpg", "head": "Kicker", "text": "unser toller Profikicker" }, { "file": "IMG.jpg", "head": "foobar", "text": "barfoo" } ]