You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
thumbsup/README.md

219 lines
6.6 KiB
Markdown

```
┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐
│ t │ │ h │ │ u │ │ m │ │ b │ │ s │ │ u │ │ p │
└───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘
```
10 years ago
[![NPM](http://img.shields.io/npm/v/thumbsup.svg?style=flat)](https://npmjs.org/package/thumbsup)
[![License](http://img.shields.io/npm/l/thumbsup.svg?style=flat)](https://github.com/rprieto/thumbsup)
[![Dependencies](http://img.shields.io/david/rprieto/thumbsup.svg?style=flat)](https://david-dm.org/rprieto/thumbsup)
Build static HTML galleries from local photos & videos.
10 years ago
- thumbnails & multiple resolutions for fast previews
8 years ago
- mobile friendly website with customisable themes
- only rebuilds changed files: it's fast!
10 years ago
- uses relative paths so you can deploy the pages anywhere
- works great with Amazon S3 for static hosting
## Table of contents
<!-- START toc -->
- [Table of contents](#table-of-contents)
- [Example gallery](#example-gallery)
- [Required folder structure](#required-folder-structure)
- [Setup](#setup)
* [As an npm package](#as-an-npm-package)
- [Expected output](#expected-output)
- [Configuration](#configuration)
- [Generated gallery structure](#generated-gallery-structure)
- [Themes](#themes)
- [Deployment](#deployment)
- [Password protection](#password-protection)
- [Dev notes](#dev-notes)
<!-- END toc -->
10 years ago
## Example gallery
10 years ago
You can [view a sample gallery here](http://rprieto.github.io/thumbsup).
[![screenshot](https://raw.github.com/rprieto/thumbsup/master/screenshot.jpg)](http://rprieto.github.io/thumbsup)
## Required folder structure
10 years ago
Any folder with photos and videos!
`thumbsup` currently supports 1 level of subfolders, where they each become a gallery.
10 years ago
```
input
|
|__ paris
| |__ img001.jpg
| |__ img002.jpg
|
|__ sydney
|__ vid001.mp4
|__ img003.png
```
## Setup
10 years ago
### As an npm package
**Requirements**
- [Node.js](http://nodejs.org/): `brew install Node`
- [GraphicsMagick](http://www.graphicsmagick.org/): `brew install graphicsmagick`
- [FFmpeg](http://www.ffmpeg.org/): `brew install ffmpeg`
*Note: there currently is [an issue with Ubuntu 14.04](#27) if you build `ffmpeg` from source. Please upgrade to 14.10 and install it with `apt-get`.*
**Installation**
```bash
npm install -g thumbsup
```
**Creating a basic gallery**
```bash
thumbsup --input ~/photos --output ~/gallery
10 years ago
```
## Expected output
If everything worked well, you should expect:
```bash
$ 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
10 years ago
```
`thumbsup` keeps track of which files need updating.
8 years ago
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
10 years ago
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)
10 years ago
*Note:* all paths are relative to the current working directory.
10 years ago
For example:
```bash
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:
```bash
thumbsup --config config.json
```
**config.json**
```js
{
"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"
}
```
## Generated gallery structure
The generated static website has the following structure:
```
website
|__ index.html
|__ sydney.html
|__ paris.html
|__ public
|__ media
| |__ original
| |__ large
| |__ thumbs
10 years ago
```
## 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](http://lesscss.org/) variables that you can customise.
Check [THEMES.md](THEMES.md) for more details.
Simply use the `--css` option and pass a LESS file with your values, e.g.
```less
// thumbsup --css custom.less
@myvariable: #cef9b6;
```
10 years ago
## Deployment
The simplest is to deploy the media and generated pages to S3 buckets on AWS using the [AWS CLI tools](http://aws.amazon.com/cli/).
- `aws s3 sync ./generated/website s3://my.website.bucket --delete`
10 years ago
You can also use [s3cmd](http://s3tools.org/) which offer a few more options.
- `s3cmd sync --config=<credentials> --delete-removed --exclude-from <exclude-file> ./generated/website/ s3://my.website.bucket/`
10 years ago
## Password protection
8 years ago
Amazon S3 buckets do not offer any type of authentication. If you want to protect your galleries, you can
10 years ago
8 years ago
- deploy the galleries to UUID-based locations, like Dropbox shared galleries
- use [CloudFront with signed cookies](http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in front of S3
- deploy to another web server that offers password protection, such as Varnish/Apache/Nginx with `HTTP Basic Auth`
10 years ago
## Dev notes
To create the sample gallery locally:
```bash
npm run clean # clean the output
npm run example # build the gallery
npm run open # open it in the browser
```