DVD Slideshow Code
Brought to you by:
sdylewski
#!/bin/bash
# jigl2slideshow
# Copyright 2003 Scott Merrill <skippy at skippy.net>
# adapted from gallery2slideshow by Scott Dylewski <scott at dylewski.com>
#
# 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 <scott at dylewski.com> 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 <skippy at skippy.net>'
echo 'Copyright 2003 Scott Dylewski <scott at dylewski.com>'
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 <output_file> -t <time_per_picture> <path_to_album>
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