2
0
mirror of https://github.com/thumbsup/thumbsup synced 2024-11-05 12:01:04 +00:00
Go to file
2016-10-26 21:57:06 +11:00
bin Re-implement "classic" theme = same as thumbsup v1 2016-10-26 21:56:20 +11:00
docs Rebuild the example gallery with nested folder as a demo 2016-10-16 22:30:29 +11:00
example Rebuild the example gallery with nested folder as a demo 2016-10-16 22:30:29 +11:00
public 2 main themes will be "cards" and "mosaic" 2016-10-26 08:29:48 +11:00
src Enable --albums-from = [ folders | date ] and --albums-date-format 2016-10-26 21:57:06 +11:00
templates Re-implement "classic" theme = same as thumbsup v1 2016-10-26 21:56:20 +11:00
test by-date generator supports nested albums + custom album title format 2016-10-17 18:34:45 +11:00
.gitignore Initial commit 2014-04-17 21:26:18 +10:00
.npmignore More files for npmignore 2014-09-14 23:32:19 +10:00
.travis.yml Add TravisCI for unit tests 2016-10-13 18:53:04 +11:00
example.json Work in progress: support multiple themes 2016-10-15 23:22:22 +11:00
LICENSE.md Update license to MIT 2014-05-19 22:25:09 +10:00
package.json Fix README table of contents 2016-10-16 13:51:32 +11:00
README.md README updates 2016-10-16 17:09:42 +11:00
screenshot.jpg Fix README screenshot 2016-10-16 13:55:05 +11:00
THEMES.md README updates 2016-10-16 17:09:42 +11:00

┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐
│ t │ │ h │ │ u │ │ m │ │ b │ │ s │ │ u │ │ p │
└───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘

NPM License Dependencies

Build static HTML galleries from local photos & videos.

  • thumbnails & multiple resolutions for fast previews
  • mobile friendly website with customisable themes
  • only rebuilds changed files: it's fast!
  • uses relative paths so you can deploy the pages anywhere
  • works great with Amazon S3 for static hosting

Table of contents

You can view a sample gallery here.

screenshot

Required folder structure

Any folder with photos and videos! thumbsup currently supports 1 level of subfolders, where they each become a gallery.

input
  |
  |__ paris
  |    |__ img001.jpg
  |    |__ img002.jpg
  |
  |__ sydney
       |__ vid001.mp4
       |__ img003.png

Setup

As an npm package

Requirements

Note: there currently is an issue with Ubuntu 14.04 if you build ffmpeg from source. Please upgrade to 14.10 and install it with apt-get.

Installation

npm install -g thumbsup

Creating a basic gallery

thumbsup --input ~/photos --output ~/gallery

Expected output

If everything worked well, you should expect:

$ thumbsup [args]

  List all files      [===================] 6/6 files
  Update metadata     [===================] 6/6 files
  Original photos     [===================] 6/6 files
  Original videos     [===================] 6/6 files
  Photos (large)      [===================] 5/5 files
  Photos (thumbs)     [===================] 5/5 files
  Videos (resized)    [===================] 1/1 files
  Videos (poster)     [===================] 1/1 files
  Videos (thumbs)     [===================] 1/1 files
  Static website      [===================] done

  Gallery generated successfully

thumbsup keeps track of which files need updating.

Re-running the command above when nothing has changed will show the same output but only take a second, even on a 50GB folder with thousands of photos and videos.

Configuration

The following args are required:

  • --input <path> path to the folder with photos / videos
  • --output <path> target output folder

And you can optionally specify:

  • --title [text] website title (default: Photo gallery)
  • --thumb-size [pixels] thumbnail image size (default: 120)
  • --large-size [pixels] fullscreen image size (default: 1000)
  • --original-photos [true|false] to allow download of full-size photos (default: false)
  • --original-videos [true|false] to allow download of full-size videos (default: false)
  • --sort-folders [name|date] how to sort the folders/galleries (default: date)
  • --theme [name] name of the gallery theme to apply (default: default)
  • --css [file] CSS or LESS styles to be applied on top of the theme (no default)
  • --google-analytics [code] code for Google Analytics tracking (no default)

Note: all paths are relative to the current working directory. For example:

thumbsup --input "/media/photos" --output "./website" --title "My holidays" --thumb-size 200 --large-size 1500 --full-size-photos true --sort-folders date --css "./custom.css" --google-analytics "UA-999999-9"

You can also save all your arguments to a JSON file:

thumbsup --config config.json

config.json

{
  "input": "/media/output",
  "output": "./website",
  "title": "My holiday",
  "thumb-size": 200,
  "large-size": 1500,
  "original-photos": true,
  "original-videos": false,
  "sort-folders": "date",
  "css": "./custom.css",
  "google-analytics": "UA-999999-9"
}

The generated static website has the following structure:

website
  |__ index.html
  |__ sydney.html
  |__ paris.html
  |__ public
  |__ media
  |    |__ original
  |    |__ large
  |    |__ thumbs

Themes

The --theme flag allows you to select a style for the generated gallery. The only theme so far is called default, but please submit more ideas to share!

Some themes have LESS variables that you can customise. Check THEMES.md for more details. Simply use the --css option and pass a LESS file with your values, e.g.

// thumbsup --css custom.less

@myvariable: #cef9b6;

Deployment

The simplest is to deploy the media and generated pages to S3 buckets on AWS using the AWS CLI tools.

  • aws s3 sync ./generated/website s3://my.website.bucket --delete

You can also use s3cmd which offer a few more options.

  • s3cmd sync --config=<credentials> --delete-removed --exclude-from <exclude-file> ./generated/website/ s3://my.website.bucket/

Password protection

Amazon S3 buckets do not offer any type of authentication. If you want to protect your galleries, you can

  • deploy the galleries to UUID-based locations, like Dropbox shared galleries
  • use CloudFront with signed cookies in front of S3
  • deploy to another web server that offers password protection, such as Varnish/Apache/Nginx with HTTP Basic Auth

Dev notes

To create the sample gallery locally:

npm run clean      # clean the output
npm run example    # build the gallery
npm run open       # open it in the browser