#!/bin/bash
# gallery.sh
# Author: Nils Knieling - https://github.com/Cyclenerd/gallery_shell
# Inspired by: Shapor Naghibzadeh - https://github.com/shapor/bashgal
#########################################################################################
#### Configuration Section
#########################################################################################
height_small=187
height_large=768
quality=85
thumbdir=__thumbs
htmlfile=index.html
title="Gallery"
footer='Created with gallery.sh'
# Use convert from ImageMagick
convert="convert"
# Use JHead for EXIF Information
exif="jhead"
# Bootstrap (currently v3.3.7)
# Latest compiled and minified CSS
stylesheet="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
downloadicon=''
movieicon=''
homeicon=''
function debug {
return 0 # 0=enable, 1=disable debugging output
}
#########################################################################################
#### End Configuration Section
#########################################################################################
me=$(basename "$0")
datetime=$(date -u "+%Y-%m-%d %H:%M:%S")
datetime+=" UTC"
function usage {
echo "usage: $me [-t
EOF
### Photos (JPG)
if [[ $(ls -l | grep -i jpg | wc -l) -gt 0 ]]; then
echo '
' >> "$htmlfile"
## Generate Images
numfiles=0
for filename in *.[jJ][pP][gG]; do
debug && echo -n "+ $filename: "
filelist[$numfiles]=$filename
let numfiles++
for res in ${heights[*]}; do
debug && echo -n "$thumbdir/$res "
if [[ ! -s $thumbdir/$res/$filename ]]; then
$convert -auto-orient -strip -quality $quality -resize x$res "$filename" "$thumbdir/$res/$filename"
fi
done
debug && echo
cat >> "$htmlfile" << EOF
EOF
[[ $(( $numfiles % 4 )) -eq 0 ]] && echo '
' >> "$htmlfile"
done
echo '
' >> "$htmlfile"
## Generate the HTML Files for Images in thumbdir
file=0
while [[ $file -lt $numfiles ]]; do
filename=${filelist[$file]}
prev= next=
[[ $file -ne 0 ]] && prev=${filelist[$((file - 1))]}
[[ $file -ne $((numfiles - 1)) ]] && next=${filelist[$((file + 1))]}
imagehtmlfile=$thumbdir/$filename.html
exifinfo=$($exif "$filename")
filesize=$(ls -lah "$filename" | awk '{ print $5}')
cat > "$imagehtmlfile" << EOF
$filename
EOF
# Pager
echo '
' >> "$imagehtmlfile"
cat >> "$imagehtmlfile" << EOF
EOF
# EXIF
if [[ $exifinfo ]]; then
cat >> "$imagehtmlfile" << EOF
EOF
fi
# Footer
cat >> "$imagehtmlfile" << EOF
EOF
let file++
done
fi
### Movies (MOV)
if [[ $(ls -l | grep -i mov | wc -l) -gt 0 ]]; then
cat >> "$htmlfile" << EOF
EOF
for filename in *.[mM][oO][vV]; do
filesize=$(ls -lah $filename | awk '{ print $5}')
cat >> "$htmlfile" << EOF
$movieicon $filename ($filesize)
EOF
done
echo '
' >> "$htmlfile"
fi
### Downloads (ZIP)
if [[ $(ls -l | grep -i zip | wc -l) -gt 0 ]]; then
cat >> "$htmlfile" << EOF
' >> "$htmlfile"
fi
### Footer
cat >> "$htmlfile" << EOF
EOF
debug && echo "= done :-)"