#!/bin/bash # jigl2slideshow # Copyright 2003 Scott Merrill # adapted from gallery2slideshow by Scott Dylewski # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # version='0.4' changes () { echo ' Changes: 0.4 -i switch not required for input file 0.3 Added fadein before first picture and fadeout at the end 0.2 Scott Changed typo [ -n $output_dir ] to [ -z $output_dir ] 0.1 Initial release' } # set defaults duration="10"; output_dir=""; gallery_path=""; crossfade=0 help () { echo "jigl2slideshow $version" echo "jigl2slideshow is part of the dvd-slideshow set of tools." echo 'http://freshmeat.net/dvdslideshow' echo 'Copyright 2003 Scott Merrill ' echo 'Copyright 2003 Scott Dylewski ' echo echo ' jigl2slideshow description: Generates a text file listing of the pictures visible in a given jigl (http://xome.net/projects/jigl/) photo album in order to easily pass the information to dvd_slideshow Usage: jigl2slideshow -o -t Options: path_to_album Path to the gallery.dat that you want to generate a slideshow for. -o output_directory Path to the directory where you want to output file written. -t time_per_picture Integer number of seconds for each picture to be displayed. -h or -help Prints this help.' } if [ $# -lt 1 ]; then help exit 1 fi ## setup initial variables: debug=0 # 1 or 0 for arg do case "$arg" in -i) shift ; gallery_path="$1" ; shift ;; -o) shift; output_dir="$1"; shift ;; -t) shift; duration="$1"; shift ;; # need to do more work to get this working: # -c) shift; crossfade=1; crossfade_duration="$1"; shift ;; -h) help ; exit 0 ; shift ;; -?) help ; exit 0 ; shift ;; -help) help ; exit 0 ; shift ;; esac done if [ -z "$gallery_path" ] ; then gallery_path="$1" fi if [ -z "$gallery_path" ] ; then echo "[jigl2slideshow] Error: No album specified" exit 1 fi # sanity checking # did the user give us a valid input file to work with? if [ ! -f $gallery_path ]; then # it's not a regular file if [ ! -d $gallery_path ]; then # it's not a directory! echo "Bogus input file (-i $gallery_path)!" exit 1; else # it is a directory, so use gallery.dat echo "*** Using gallery.dat in $gallery_path"; gallery="gallery.dat"; if [ ! -f $gallery_path/$gallery ]; then # there's no gallery.dat file there! echo "No such file $gallery_path/$gallery!"; echo "Aborting!"; exit 1; fi fi else # it is a regular file! gallery=`basename "${gallery_path}"`; gallery_path=`echo $gallery_path | sed -e "s/$gallery//"`; fi # make sure $gallery_path has no trailing slash gallery_path=`echo $gallery_path | sed -e 's/\/$//'`; # did the user give us a valid destination directory? # if I was really good, I'd check permissions to ensure we can _write_ there # but I suck and should be destroyed if [ -z $output_dir ]; then # no output directory specified! echo "Invalid output destination (-o $output_dir)!"; echo "*** Using $gallery_path instead."; output_dir=$gallery_path; fi if [ ! -d $output_dir ]; then # I'm sure it was a simple typo. echo "Invalid output destination (-o $output_dir)!"; echo "*** Using $gallery_path instead."; output_dir=$gallery_path; fi # make sure $output_dir has no trailing slash output_dir=`echo $output_dir | sed -e 's/\/$//'`; cleanup () { ## clean up temporary files echo "All done!"; echo "Enjoy your new $output_dir/pictures_list.txt!"; } forcequit () ## function gets run when we have some sort of forcequit... { ## clean up temporary files cleanup } trap 'forcequit' INT trap 'forcequit' KILL trap 'forcequit' TERM ## snag the title from the gallery.dat file title_bit="INDEX-TITLE ---- "; title=`grep "$title_bit" $gallery_path/$gallery | sed -e "s/$title_bit//"`; echo title:$duration:$title > $output_dir/picture_list.txt; ## fade in after title: echo "background:1" >> "${output_dir}/picture_list.txt" echo "fadein:1" >> "${output_dir}/picture_list.txt" `grep -i .jpg $gallery_path/$gallery | sed -e "s/ ---- /:$duration:/" -e "s#^#$gallery_path/#" >> $output_dir/picture_list.txt`; ## fade out at end echo "fadeout:1" >> "${output_dir}/picture_list.txt" echo "background:1" >> "${output_dir}/picture_list.txt" cleanup