#! /bin/bash

#############################################################################
#  Copyright (C) 2003  Enno Bartels   <ennobartels@t-online.de>             #
#############################################################################
#                                                                           #
#  This program is free software; you can redistribute it and/or            #
#  modify it under the terms of the GNU Library 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        #
#  Library General Public License for more details.                         #
#                                                                           #
#  You should have received a copy of the GNU Library General Public        #
#  License along with this program; see the file COPYING.LIB.  If not,      #
#  write to the Free Software Foundation, Inc., 59 Temple Place -           #
#  Suite 330,  Boston, MA 02111-1307, USA.                                  #
#                                                                           #
#############################################################################
#                                                                           #
#  Project name.....  minolta_dimage_xt                                     #
#                                                                           #
#  Modul name.......  processCamDataIntoHtmlPages.sh                        #
#                                                                           #
#  Starting dates...  18.Sep.2003 (Enno Bartels)                            #
#                                                                           #
#  Version..........  0.1                                                   #
#                                                                           #
#  Author...........  Enno Bartels <ennobartels@t-online.de>                #
#                                                                           #
#  Description......  Tool for the Minolta Dimage Xt Camera                 #
#                                                                           #
#############################################################################/


##############################################################################
# Dieses Script ist für die Daten der Minolta Dimage Xt geschrieben          #
# es hat folgende Aufgaben:                                                  #
##############################################################################
#                                                                            #
#  0. Optionen auswerten                                                     #
#                                                                            #
#  1. Bei jpeg Bildern den exif-Tag auslesen und die Datei umbennen          #
#     mit Datum und Zeit                                                     #
#                                                                            #
#  2. Bei wav Dateien 2 Teile mit hexdump aus der Datei auslesen und die     #
#     Datei mit dem ermittelten Datum und der Zeit umbennen                  #
#                                                                            #
#  3. Bei mov Dateien den Dateiname umbenennen nach                          #
#     dies ist aber nur beim ersten Durchlauf möglich                        #

#  4. Bei allen Dateien "pict0" vom Dateinamen entfernen                     #
#                                                                            #
#  5. Bilder rotieren die angegeben waren per Option  (-prr, -prl, -prh)     #
#                                                                            #
#  6. Preview Verzeichnis erzeugen                                           #
#                                                                            #
#  7. Previews für JPEGs erzeugen                                            #
#                                                                            #
#  8. Previews für Filmsequenzen erzeugen                                    #
#                                                                            #
#  9. Previews für Sounddateien erzeugen                                     #
#                                                                            #
# 10. Sounddatei im ogg vorbis wandeln plus Metadaten addition               #
#                                                                            #
# 11. Hauptbild für HTML Seiten bei Filmsequenzen erzeugen                   #
#                                                                            #
##12. Filmsequenzen aus mov in mpg wandeln mit Tonspur                       #
#                                                                            #
# 13. Ton aus Filmsequenzen herausfiltern                                    #
#                                                                            #
# 14. Haupt HTML Seite erzeugen                                              #
#                                                                            #
# 15. Einzelne HTML Seite erzeugen                                           #
#                                                                            #
##############################################################################
#                                                                            #
#  Es fehlt noch:                                                            #
#                                                                            #
#  - MOV in MPEGS wandelt mit der Tonspur: Probleme mit dem Tonformat        #
#  - Datum und Zeit bei den *.movs bestimmen aus "geändert" Datum und Zeit   #
#    bei der Hauptseite ist dies aus dem Dateinamen zu ermitteln!!!!         #
#                                                                            #
##############################################################################
#  Man benötigt dazu:                                                        #
#                                                                            #
#    - jhead                                                                 #
#        JPEG Exif Header auslesen                                           #
#        http://www.sentex.net/~mwandel/jhead/                               #
#                                                                            #
#    - mplayer                                                               #
#        Preview Bild aus Film herausziehen                                  #
#        Sound aus dem Film herausziehen                                     #
#                                                                            #
#    - Image Magick: convert                                                 #
#        JPEG: Previews erzeugen, Bilder drehen, Bilder mit Text versehen    #
#                                                                            #
#    - sox                                                                   #
#        Konvertiere die Minolta Wav-Datei in eine normale Wav-Datei         #
#                                                                            #
#    - wavetools:wplot (make; make wplot)                                    # 
#        Previews für Sounddateien erzeugen                                  #
#        http://tph.tuwien.ac.at/~oemer/wavetools.html                       #
#                                                                            #
#    - gs                                                                    #
#        Ghostscript: Konvertiere ps zu jpg                                  #
#                                                                            #
#    - oggenc                                                                #
#        Konvertiere wav zu ogg                                              #
#                                                                            #
#   (- memcoder)                                                             #
#        Filme drehen                                                        #
#                                                                            #
#   (- ffmpeg)                                                               #
#        Konvertiere mov zu mpg                                              #
#        (ffmpeg  -y  -i 006.mov   -an  006.mpg)                             #
#                                                                            #
#        Input #0, mov, from '006.mov':
#          Duration: 00:00:06.7, bitrate: 2453 kb/s
#          Stream #0.0: Video: mjpeg, 320x240, 15.00 fps
#          Stream #0.1: Audio: pcm_u8, 7875 Hz, mono, 63 kb/s
##############################################################################
WAVETOOLS_WPLOT_DIR="/usr/src/programme/wavetools-1.0/"

usage() {
    test -n "$1" && echo $1
    echo "Usage: $0 [OPTIONS]"
    echo "OPTIONS:= -gnjp   == Generate no jpeg previews"
    echo "" 
    echo "          -prr x   == Rotate picture right -  90 degrees" 
    echo "          -prl x   == Rotate picture left  - -90 degrees"
    echo "          -prf x   == Rotate picture       - 180 degrees"
    echo "" 
    echo "          -mrr x   == Rotate movie right   -  90 degrees"
    exit
}


##############################################################################
#  0. Optionen auswerten                                                     #
#                                                                            #
##############################################################################
# -gen_nojpgpreview
# -rr, rl, rh

echo "0. Kommandozeile auswerten"

# Initialisieren
PRE_JPG=on
P_ROT_R=off
P_ROT_L=off
P_ROT_F=off

P_ROT_R_N=0
P_ROT_L_N=0
P_ROT_F_N=0

M_ROT_R=off

M_ROT_R_N=0

declare -a P_ROT_R_A
declare -a P_ROT_L_A
declare -a P_ROT_F_A

declare -a M_ROT_F_A

# Schleife durch alle Kommandozeilenargumente
while [ $# -gt 0 ]; do
    case $1 in
        -gnjp)    
           PRE_JPG=off 
           ;;
        -prr)                      
           P_ROT_R=on 
           shift
           P_ROT_R_A[P_ROT_R_N]=$1
           let "P_ROT_R_N = $P_ROT_R_N + 1"
           ;;
        -prl)                      
           P_ROT_L=on     
           shift
           P_ROT_L_A[P_ROT_L_N]=$1
           let "P_ROT_L_N = $P_ROT_L_N + 1"
           ;;
        -prf)                      
           P_ROT_F=on     
           shift
           P_ROT_F_A[P_ROT_F_N]=$1
           let "P_ROT_F_N = $P_ROT_F_N + 1"
           ;;
        -mrr)                      
           M_ROT_R=on 
           shift
           M_ROT_R_A[M_ROT_R_N]=$1
           let "M_ROT_R_N = $M_ROT_R_N + 1"
           ;;
         *)
           usage "unknown option $1" 
           ;;
    esac
    shift
done


# Bild Rechts drehen 
echo "   RR $P_ROT_R  $P_ROT_R_N"
let "a = 0"
let "P_ROT_R_N = $P_ROT_R_N - 1"

while [ $a -le $P_ROT_R_N ]; do
  echo "   . ${P_ROT_R_A[$a]}"  
  let "a = $a + 1" 
done 
echo   

# Bild Links drehen
echo "   RL $P_ROT_L  $P_ROT_L_N"
let "a = 0"
let "P_ROT_L_N = $P_ROT_L_N - 1"

while [ $a -le $P_ROT_L_N ]; do
  echo "   . ${P_ROT_L_A[$a]}"  
  let "a = $a + 1" 
done 
echo   

# Bild 180 Grad drehen
echo "   RH $P_ROT_F  $P_ROT_F_N"
let "a = 0"
let "P_ROT_F_N = $P_ROT_F_N - 1"

while [ $a -le $P_ROT_F_N ]; do
  echo "   . ${P_ROT_F_A[$a]}"  
  let "a = $a + 1" 
done 
echo   

# Movie Rechts drehen 
echo "   RR $M_ROT_R  $M_ROT_R_N"
let "a = 0"
let "M_ROT_R_N = $M_ROT_R_N - 1"

while [ $a -le $M_ROT_R_N ]; do
  echo "   . ${M_ROT_R_A[$a]}"  
  let "a = $a + 1" 
done 
echo   
#
echo "   Previews erzeugen: $PRE_JPG"

echo "0. Kommandozeile auswerten  --  fertig"
echo  
echo 



##############################################################################
#  1.Bei jpeg Bildern den exif-Tag auslesen und die Datei umbennen           #
#    mit Datum und Zeit                                                      #
##############################################################################

echo "1. Dateien umbenennen: JPEG: Datum + Zeit eingefügen"

BLA3=`find .  -name "pict0???.jpg"  -maxdepth 1 -print | sort`

for FILENAME_IN in $BLA3
do
  echo "   In : $FILENAME_IN"
  jhead -n%f._%Y.%m.%d._%H:%M:%S $FILENAME_IN >> /dev/null
done

echo "1. Dateien umbenennen: JPEG: Datum + Zeit eingefügen  --  FERTIG"
echo 
echo 



##############################################################################
#  2. Bei wav Dateien 2 Teile mit hexdump aus der Datei auslesen und die     #
#     Datei mit dem ermittelten Datum und der Zeit umbennen                  #
##############################################################################

echo "2. Dateien umbenennen:  WAV: Datum + Zeit eingefügen"

BLA3=`find .  -name "???.wav"  -maxdepth 1 -print | sort`

for FILENAME_IN in $BLA3
do
  DATE=`hexdump -s 80 -n 10 -e'10/1 "%1_u"' $FILENAME_IN `
  DATE_Y=`echo ${DATE} | cut -d- -f1`
  DATE_M=`echo $DATE | cut -d- -f2`
  DATE_D=`echo $DATE | cut -d- -f3`

  TIME=`hexdump -s 146 -n 8 -e'8/1 "%1_u"' *.wav ` 

  base_name_w=`basename $FILENAME_IN .wav`
  dir_name=`dirname $FILENAME_IN`

  N_FN="${dir_name}/${base_name_w}._${DATE_Y}.${DATE_M}.${DATE_D}._${TIME}.wav"

  echo "   In : ${FILENAME_IN}  -> ${N_FN}"
  mv ${FILENAME_IN}  ${N_FN}
done

echo "2. Dateien umbenennen:  WAV: Datum + Zeit eingefügen  --  FERTIG"
echo 
echo


##############################################################################
#  3. Bei mov Dateien den Dateiname umbenennen nach                          #
#     dies ist aber nur beim ersten Durchlauf möglich                        #
##############################################################################

echo "3. Dateien umbenennen:  MOV: Datum + Zeit eingefügen"

BLA3=`find .  -name "???.mov"  -maxdepth 1 -print | sort`

for FILENAME_IN in $BLA3
do
 
  DATE=`ls  -l  $FILENAME_IN  | awk -F" " '{ print $6 }'`
  TIME=`ls  -l --full-time $FILENAME_IN  | awk -F" " '{ print $7 }' | cut -d. -f1`

  DATE_Y=`echo ${DATE} | cut -d- -f1`
  DATE_M=`echo ${DATE} | cut -d- -f2`
  DATE_D=`echo ${DATE} | cut -d- -f3`


  base_name_w=`basename $FILENAME_IN .mov`
  dir_name=`dirname $FILENAME_IN`

  N_FN="${dir_name}/${base_name_w}._${DATE_Y}.${DATE_M}.${DATE_D}._${TIME}.mov"

  echo "   In : ${FILENAME_IN}  -> ${N_FN}"
  mv ${FILENAME_IN}  ${N_FN}
done

echo "3. Dateien umbenennen:  MOV: Datum + Zeit eingefügen  --  FERTIG"
echo 
echo
 

##############################################################################
#  4. Bei allen Dateien "pict0" vom Dateinamen entfernen                     #
#                                                                            #
##############################################################################

echo "4. Dateien umbenennen: PICT0 entfernt"

BLA2=`find .  -name "pict0*"  -maxdepth 1 -print | sort`

for FILENAME_IN in $BLA2
do
  echo "   In : $FILENAME_IN"
  FILENAME_OUT=`echo $FILENAME_IN | sed "s/pict0//"` 
  if test  $FILENAME_IN  != $FILENAME_OUT ; then
    echo "   Out: $FILENAME_OUT"

    mv $FILENAME_IN  $FILENAME_OUT
  fi
  echo 
done

echo "4. Dateien umbenennen: PICT0 entfernt  --  FERTIG"
echo 
echo 




##############################################################################
#  5. Bilder rotieren die angegeben waren per Option  (-prr, -prl, -prh)     #
#                                                                            #
##############################################################################
echo "5. Bilder drehen"
BLA3=`find .  -name "*.jpg"  -maxdepth 1 -print | sort`

####
# Rechts rum
if test $P_ROT_R == "on" ; then
  echo "   Drehe Bilder rechts rum:"

  let "a = 0"

  while [ $a -le $P_ROT_R_N ]; do
    for FILENAME_IN in $BLA3
    do
     FN=`echo $FILENAME_IN | cut -d. -f2 | sed "s/^\///" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//"`

     #echo "  -D-  $FILENAME_IN   -   $FN  -- ${P_ROT_R_A[$a]}" 
     if test "${FN}" == ${P_ROT_R_A[$a]}; then
       convert -rotate 90 $FILENAME_IN $FILENAME_IN
       echo "      Rotiere Bild ${P_ROT_R_A[$a]}"   
     fi
    done 


    let "a = $a + 1" 
  done 
fi

####
# Links rum
if test $P_ROT_L == "on" ; then
  echo "   Drehe Bilder links rum:"

  let "a = 0"

  while [ $a -le $P_ROT_L_N ]; do
    for FILENAME_IN in $BLA3
    do
     FN=`echo $FILENAME_IN | cut -d. -f2 | sed "s/^\///" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//"`

     #echo "  -D-  $FILENAME_IN   -   $FN  -- ${P_ROT_L_A[$a]}" 
     if test "${FN}" == ${P_ROT_L_A[$a]}; then
       convert -rotate 270 $FILENAME_IN $FILENAME_IN
       echo "      Rotiere Bild ${P_ROT_L_A[$a]}"   
     fi
    done 


    let "a = $a + 1" 
  done fi

####
# Um 180 Grad
if test $P_ROT_F == "on" ; then
  echo "   Drehe Bilder um 180 Grad rum:"

  let "a = 0"

  while [ $a -le $P_ROT_F_N ]; do
    for FILENAME_IN in $BLA3
    do
     FN=`echo $FILENAME_IN | cut -d. -f2 | sed "s/^\///" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//"`

     #echo "  -D-  $FILENAME_IN   -   $FN  -- ${P_ROT_F_A[$a]}" 
     if test "${FN}" == ${P_ROT_F_A[$a]}; then
       convert -rotate 180 $FILENAME_IN $FILENAME_IN
       echo "      Rotiere Bild ${P_ROT_F_A[$a]}"   
     fi
    done 


    let "a = $a + 1" 
  done fi

echo "5. Bilder drehen  --  fertig"
echo 
echo 

##############################################################################
#  51. Filme rotieren die angegeben waren per Option  (-mrr)                 #
#                                                                            #
##############################################################################
echo "51. Filme drehen"
BLA3=`find .  -name "*.mov"  -maxdepth 1 -print | sort`

####
# Rechts rum
if test $M_ROT_R == "on" ; then
  echo "   Drehe Filme rechts rum:"

  let "a = 0"

  while [ $a -le $M_ROT_R_N ]; do
    for FILENAME_IN in $BLA3
    do
     FN=`echo $FILENAME_IN | cut -d. -f2 | sed "s/^\///" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//"`

     #echo "  -D-  $FILENAME_IN   -   $FN  -- ${M_ROT_R_A[$a]}" 
     if test "${FN}" == ${M_ROT_R_A[$a]}; then
       #./mencoder -vop rotate=1 -oac pcm -ovc lavc -lavcopts vcodec=mpeg1video  $FILENAME_IN $FILENAME_IN.rot.mov
       echo "      Rotiere Film ${M_ROT_R_A[$a]}"   
     fi
    done 


    let "a = $a + 1" 
  done 
fi


##############################################################################
#  6. Preview Verzeichnis erzeugen                                           #
#                                                                            #
##############################################################################
echo "6. Preview Verzeichnis erzeugen"

if test ! -d preview ; then
  mkdir preview
  echo "   Preview Verzeichnis wurde neu erzeugt"
else
  echo "   Preview Verzeichnis gabs schon"
fi

echo "6. Preview Verzeichnis erzeugen  --  fertig"
echo 
echo 


##############################################################################
#  7. Previews für JPEGs erzeugen                                            #
#                                                                            #
##############################################################################
echo "7. JPEG Previews erzeugen"

if test $PRE_JPG == "on" ; then

  BLA3=`find .  -name "*.jpg"  -maxdepth 1 -print | sort`

  for FILENAME_IN in $BLA3
  do
    echo "   Working on: $FILENAME_IN"
    convert -geometry 160x120 $FILENAME_IN preview/$FILENAME_IN
  done
  echo "7. Previews für JPEGS erzeugt"
else
  echo "7. Previews für JPEGS NICHT erzeugt"
fi

echo 
echo 


##############################################################################
#  8. Previews für Filmsequenzen erzeugen                                    #
#                                                                            #
##############################################################################
echo "8. Previews für MOVs erzeugen"

BLA3=`find .  -name "*.mov"  -maxdepth 1 -print | sort`
for FILENAME_IN in $BLA3
do
  echo "   Working on: $FILENAME_IN"

  # Erzeuge JPEG Bilder bis frame 1
  mplayer -vo jpeg -ao null -frames 1 -really-quiet $FILENAME_IN > /dev/null 2>&1

  # Erzeuge eine verkleinerte Previewansicht im preview Ordner
  convert -geometry 160x120 00000001.jpg preview/${FILENAME_IN}.jpg

  # Füge in das Previewbild einen Text ein
  convert -font -adobe-times-bold-i-normal--14-140-75-75-p-77-iso8859-9 -fill "#B8B8B8" -draw 'text 10,10 "F i l m s e q u e n z"'   -fill blue -draw 'text 8,8 "F i l m s e q u e n z"' preview/${FILENAME_IN}.jpg preview/${FILENAME_IN}.jpg

  # Lösche alle Framebilder 
  rm ????????.jpg 
done

echo "8. Previews für MOVs erzeugen  --  fertig"
echo 
echo 


##############################################################################
#  9. Previews für Sounddateien erzeugen                                     #
#                                                                            #
##############################################################################
echo "9. Previews für WAVs erzeugen"

BLA3=`find .  -name "*.wav"  -maxdepth 1 -print | sort`

for FILENAME_IN in $BLA3
do
  echo "   Working on: $FILENAME_IN"

  # In verarbeitbare Wavdatei wandeln
  sox $FILENAME_IN tmp.wav

  # In Postscript abbilden
  ${WAVETOOLS_WPLOT_DIR}/wplot -w20cm -f8p -otmp.ps  tmp.wav

  # Postscriptdatei in JPEG Image konvertieren
  gs  -dSAFER -dNOPAUSE -sDEVICE=jpeggray -sOutputFile=tmp.jpg -sPAPERSIZE=a4 -dBATCH -dDOINTERPOLATE -q tmp.ps

  # Trimmen des Bilder (Ränder entfernen)
  convert -trim tmp.jpg tmp.jpg

  cp tmp.jpg preview/${FILENAME_IN}_big.jpg

  # Bild auf die richtig Größe zuschneiden
  convert -geometry 160x120 tmp.jpg preview/${FILENAME_IN}.jpg

  # Text in Preview einbringen
  convert -font -adobe-times-bold-i-normal--14-140-75-75-p-77-iso8859-9 -fill "#B8B8B8" -draw 'text 10,10 "A u d i o s e q u e n z"'   -fill blue -draw 'text 8,8 "A u d i o s e q u e n z"' preview/${FILENAME_IN}.jpg preview/${FILENAME_IN}.jpg

  # Tempräre Dateien entfernen
  rm tmp.ps tmp.wav tmp.jpg

done
echo "9. Previews für WAVs erzeugen  --  fertig"
echo 
echo 



##############################################################################
# 10. Sounddatei im ogg vorbis wandeln                                       #
#                                                                            #
##############################################################################
echo "10. Sounddatei im ogg vorbis wandeln"

BLA3=`find .  -name "*.wav"  -maxdepth 1 -print | sort`

for FILENAME_IN in $BLA3
do
  echo "    Working on: $FILENAME_IN"

  # Wav-Datei in eine verarbeitbare Wav-Datei wandeln
  sox $FILENAME_IN tmp.wav

  # Dateiname ohne Extension bestimmen
  base_name_w=`basename $FILENAME_IN .wav`

  # Verzeichnisname bestimmen
  dir_name=`dirname $FILENAME_IN`

  # Datum bestimmen als Metadaten
  DATE_D=`hexdump -s 80 -n 10 -e'10/1 "%1_u"' $FILENAME_IN `

  DATE_D_Y=`echo $DATE_D | cut -d- -f1`
  DATE_D_M=`echo $DATE_D | cut -d- -f2`
  DATE_D_T=`echo $DATE_D | cut -d- -f3`

  # Tracknummer bestimmen als Metadaten
  fn_zahl=`echo $base_name_w | cut -d'.' -f1 | sed "s/^0//" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//"`

  # Encode the input to an ogg file
  oggenc -Q -q 8 tmp.wav  --title "Dimage Xt: Audio Aufzeichnung" --artist "Enno Bartels" --date "${DATE_D_T}.${DATE_D_M}.${DATE_D_Y}"  --comment "COMMENT=Minolta Dimage Xt"  --tracknum $fn_zahl -o ${dir_name}/${base_name_w}.ogg

  # Temporäre Dateien entfernen
  rm tmp.wav

done
echo "10. Sounddatei im ogg vorbis wandeln  --  fertig"
echo 
echo 


##############################################################################
#  11. Hauptbild für HTML Seiten bei Filmsequenzen erzeugen                  #
#                                                                            #
##############################################################################
echo "11. Hauptbild für HTML Seiten bei Filmsequenzen erzeugen"

BLA3=`find .  -name "*.mov"  -maxdepth 1 -print | sort`
for FILENAME_IN in $BLA3
do
  echo "    Working on: $FILENAME_IN"

  # Erzeuge JPEG Bilder bis frame 1
  mplayer -vo jpeg -ao null -frames 1 -really-quiet $FILENAME_IN > /dev/null 2>&1

  # Verschiebe das erste Framebild in den Previewbereich als großes Bild
  mv 00000001.jpg preview/${FILENAME_IN}_big.jpg

  # Lösche alle Framebilder 
  rm ????????.jpg 
done

echo "11. Hauptbild für HTML Seiten bei Filmsequenzen erzeugen  --  fertig"
echo 
echo 



##############################################################################
# 12. Filmsequenzen aus mov in mpg wandeln mit Tonspur                       #
#                                                                            #
##############################################################################
echo "12. Filmsequenzen aus mov in mpg"
echo "    Wurde nicht durchgeführt"
echo "12. Filmsequenzen aus mov in mpg  --  fertig"
echo 
echo 


##############################################################################
# 13. Ton aus Filmsequenzen herausfiltern                                    #
#                                                                            #
##############################################################################
echo "13. Ton aus Filmsequenzen herausfiltern"
BLA1=`find . -name "*.mov"   -maxdepth 1 -print | sort`
for FILENAME_IN in $BLA1
do
  echo "    Working on: $FILENAME_IN"

  # Ton aus Film herausfiltern
  mplayer -vo null -ao pcm -really-quiet $FILENAME_IN > /dev/null 2>&1

  # Dateiname ohne Extension bestimmen
  base_name_w=`basename $FILENAME_IN .mov`

  # Verzeichnisname bestimmen
  dir_name=`dirname $FILENAME_IN`

  # Tracknummer bestimmen als Metadaten
  fn_zahl=`echo $base_name_w | cut -d'.' -f1 | sed "s/^0//" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//"`

  # In verarbeitbare Wavdatei wandeln
  sox audiodump.wav audiodump2.wav

  # Encode the input to an ogg file
  oggenc -Q -q 8 audiodump2.wav  --title "Dimage Xt: Video Audio Auskopplung" --artist "Enno Bartels" --date "-"  --comment "COMMENT=Minolta Dimage Xt"  --tracknum $fn_zahl -o ${dir_name}/${base_name_w}.ogg

  # Temporäre Datei entfernen
  rm audiodump.wav audiodump2.wav
done

echo "13. Ton aus Filmsequenzen herausfiltern  --  fertig"
echo 
echo 



##############################################################################
# 14. Haupt HTML Seite erzeugen                                              #
#                                                                            #
##############################################################################
echo "14. HTML Seite erzeugt: Index.html"

BLA1=`find . \( -name "*.jpg" -or -name "*.mov" -or -name "*.wav" \)  -maxdepth 1 -print | sort`

echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">" > index.html
echo "" >> index.html
echo "<HTML>" >> index.html
echo " <HEAD>" >> index.html
echo "  <TITLE>" >> index.html
echo "    Minolta Dimage Xt: Pictures" >> index.html
echo "  </TITLE>" >> index.html
echo "" >> index.html
echo " <style type=\"text/css\">" >> index.html
echo "  <!--" >> index.html
echo "" >> index.html
echo "tr.a      { background-color : #999999;    }" >> index.html
echo "td.a      { vertical-align   : top;" >> index.html
echo "                text-align       : center; }" >> index.html
echo "   -->" >> index.html
echo "  </style>" >> index.html
echo "" >> index.html
echo " </HEAD>" >> index.html
echo "" >> index.html
echo "" >> index.html
echo " <BODY BGCOLOR=\"#FFFFFF\">" >> index.html
echo "" >> index.html
echo "" >> index.html
echo "   <CENTER>" >> index.html
echo "" >> index.html
echo "       <table class=\"ueber\" width=\"100%\" cellspacing=\"2\" border=\"1\" cellpadding=\"2\" bgcolor=\"#000000\" frame=\"border\">" >> index.html
  echo "        <tr class=\"a\" >" >> index.html

let "a = 1"
let "vier = 1"
for FILENAME_IN in $BLA1
do
  echo "    Working on: $FILENAME_IN"

  if test $vier -eq 5 ; then
   echo "        <tr class=\"a\" >" >> index.html
   let "vier = 1"
  fi 

  base_name=`basename $FILENAME_IN`
  fn_zahl=`echo $base_name | cut -d'.' -f1 | sed "s/^0//" | sed "s/^0//" | sed "s/^0//" | sed "s/^0//"`
 
  echo "         <td class=\"a\">" >> index.html
  #echo "          <b>${a}.</b>" >> index.html
  echo "          <b>${fn_zahl}.</b>" >> index.html

  base_name_j=`basename $FILENAME_IN .jpg`
  base_name_m=`basename $FILENAME_IN .mov`
  base_name_w=`basename $FILENAME_IN .wav`
  dir_name=`dirname $FILENAME_IN`

  if test $dir_name/$base_name_j.jpg == $FILENAME_IN; then 
    echo "          <a href=\"${dir_name}/${base_name_j}_s.html\">" >> index.html
    echo "           <img src=\"preview/${FILENAME_IN}\" alt=\"Picture: ${a}\" align=\"top\" border=\"0\">" >> index.html
    echo "           <br>" >> index.html
    echo "          </a>" >> index.html

    DATE=`jhead  $FILENAME_IN  | grep "Date/Time" | cut -d' ' -f 6-7`

    DATE_D=`echo $DATE | cut -d' ' -f 1`
    DATE_T=`echo $DATE | cut -d' ' -f 2`

    DATE_D_Y=`echo $DATE_D | cut -d: -f 1`
    DATE_D_M=`echo $DATE_D | cut -d: -f 2`
    DATE_D_T=`echo $DATE_D | cut -d: -f 3`
  elif test $dir_name/$base_name_w.wav == $FILENAME_IN; then
    echo "          <a href=\"${dir_name}/${base_name_w}_s.html\">" >> index.html
    echo "           <img src=\"preview/${FILENAME_IN}.jpg\" alt=\"Picture: ${a}\" align=\"top\" border=\"0\">" >> index.html
    echo "          </a>" >> index.html
    echo "          <br>" >> index.html

    DATE_D=`hexdump -s 80 -n 10 -e'10/1 "%1_u"' $FILENAME_IN `
    DATE_T=`hexdump -s 146 -n 8 -e'8/1 "%1_u"' $FILENAME_IN ` 

    DATE_D_Y=`echo $DATE_D | cut -d- -f1`
    DATE_D_M=`echo $DATE_D | cut -d- -f2`
    DATE_D_T=`echo $DATE_D | cut -d- -f3`


  elif test $dir_name/$base_name_m.mov == $FILENAME_IN; then
    echo "          <a href=\"${dir_name}/${base_name_m}_s.html\">" >> index.html
    echo "           <img src=\"preview/${FILENAME_IN}.jpg\" alt=\"Picture: ${a}\" align=\"top\" border=\"0\">" >> index.html
    echo "          </a>" >> index.html
    echo "          <br>" >> index.html

    # Datum aus dem Dateinamen bestimmen bei MOV Dateien!
    DATE_D=`echo $base_name_m | cut -d_ -f2 `
    DATE_T=`echo $base_name_m | cut -d_ -f3 `

    DATE_D_Y=`echo $DATE_D | cut -d. -f1`
    DATE_D_M=`echo $DATE_D | cut -d. -f2`
    DATE_D_T=`echo $DATE_D | cut -d. -f3`
  fi





  echo "          ${DATE_D_T}.${DATE_D_M}.${DATE_D_Y} &nbsp; ${DATE_T}" >> index.html
  echo "         </td>" >> index.html
  let "vier = $vier + 1"

  if test $vier -eq 5 ; then
   echo "        </tr>" >> index.html
  fi 
  
let "a = $a + 1"
done

echo "        </tr>" >> index.html
echo "      </table>" >> index.html
echo "   </CENTER>" >> index.html
echo " <BODY>" >> index.html
echo "</HTML>" >> index.html

echo "14. HTML Seite erzeugt: Index.html  --  fertig"
echo 
echo 




##############################################################################
# 15. Einzelne HTML Seite erzeugen                                           #
#                                                                            #
##############################################################################

echo "15. HTML Seite erzeugt: Jedes Bild eine Seite"



################
htmlPages()
{
let "a = 0"
for FILENAME_IN in $BLA1
do
  base_name_j=`basename $FILENAME_IN .jpg`
  base_name_m=`basename $FILENAME_IN .mov`
  base_name_w=`basename $FILENAME_IN .wav`
  dir_name=`dirname $FILENAME_IN`

  if   test $dir_name/$base_name_j.jpg == $FILENAME_IN; then 
    FN_IN_A[a]=${dir_name}/${base_name_j}
  elif test $dir_name/$base_name_m.mov == $FILENAME_IN; then 
    FN_IN_A[a]=${dir_name}/${base_name_m}
  elif test $dir_name/$base_name_w.wav == $FILENAME_IN; then 
    FN_IN_A[a]=${dir_name}/${base_name_w}
  fi

  if test "$1" == "1";then
    FN_IN_AA[a]=${FN_IN_A[a]}_s
  else  
    FN_IN_AA[a]=${FN_IN_A[a]}_m
  fi

   FN_IN_B[a]=$FILENAME_IN
   let "a = $a + 1" 
done


let "anz = $a - 1"
let "anz1 = $anz-2"
echo "      Anzahl: $anz"






let "a = 0"
while [ $a -le $anz ]; do
  echo "      Working on: ${FN_IN_AA[a]}.html"
  let "b = $a +1"
  echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">" > ${FN_IN_AA[a]}.html
  echo "" >> ${FN_IN_AA[a]}.html
  echo "<HTML>" >> ${FN_IN_AA[a]}.html
  echo " <HEAD>" >> ${FN_IN_AA[a]}.html
  echo "  <TITLE>" >> ${FN_IN_AA[a]}.html
  echo "    Minolta Dimage Xt: Picture ${b}: ${FN_IN_A[a]}" >> ${FN_IN_AA[a]}.html
  echo "  </TITLE>" >> ${FN_IN_AA[a]}.html
  echo "" >> ${FN_IN_AA[a]}.html
  echo " <style type=\"text/css\">" >> ${FN_IN_AA[a]}.html
  echo "  <!--" >> ${FN_IN_AA[a]}.html
  echo "" >> ${FN_IN_AA[a]}.html
  echo "tr.a      { background-color : #999999;    }" >> ${FN_IN_AA[a]}.html
  echo "td        { font-size        : x-small;   }" >> ${FN_IN_AA[a]}.html
  echo "td.a      { vertical-align   : top;" >> ${FN_IN_AA[a]}.html
  echo "            text-align       : center; }" >> ${FN_IN_AA[a]}.html
  echo "   -->" >> ${FN_IN_AA[a]}.html
  echo "  </style>" >> ${FN_IN_AA[a]}.html
  echo "" >> ${FN_IN_AA[a]}.html
  echo " </HEAD>" >> ${FN_IN_AA[a]}.html
  echo "" >> ${FN_IN_AA[a]}.html
  echo "" >> ${FN_IN_AA[a]}.html
  echo " <BODY BGCOLOR=\"#FFFFFF\">"  >> ${FN_IN_AA[a]}.html
  echo "" >> ${FN_IN_AA[a]}.html
  echo "" >> ${FN_IN_AA[a]}.html


  # Umschalten
  echo "  <font size=\"-2\">" >> ${FN_IN_AA[a]}.html
  
  if test "$1" == "1"; then
    echo "  <a href=\"${FN_IN_A[a]}_m.html\">" >> ${FN_IN_AA[a]}.html
    echo "   <b>Maximale Bildgröße</b>" >> ${FN_IN_AA[a]}.html
    echo "  </a>" >> ${FN_IN_AA[a]}.html
  else  
    echo "  <a href=\"${FN_IN_A[a]}_s.html\">" >> ${FN_IN_AA[a]}.html
    echo "   <b>Skalliert Bildgröße</b>" >> ${FN_IN_AA[a]}.html
    echo "  </a>" >> ${FN_IN_AA[a]}.html
    
  fi
  echo "  </font>" >> ${FN_IN_AA[a]}.html
  echo "  <br>" >> ${FN_IN_AA[a]}.html

  echo "   <CENTER>" >> ${FN_IN_AA[a]}.html
  echo "" >> ${FN_IN_AA[a]}.html


  # nächste oder letzte Seite
  if test $a == $anz ; then
    echo "    <a href=\"index.html\">" >> ${FN_IN_AA[a]}.html
  else
    echo "    <a href=\"${FN_IN_AA[b]}.html\">" >> ${FN_IN_AA[a]}.html
  fi

  base_name_j=`basename ${FN_IN_B[a]} .jpg`
  base_name_m=`basename ${FN_IN_B[a]} .mov`
  base_name_w=`basename ${FN_IN_B[a]} .wav`
  dir_name=`dirname ${FN_IN_B[a]}`


  # Welcher Typ soll dargestellt werden 
  if   test $dir_name/$base_name_j.jpg == ${FN_IN_B[a]}; then 
    if test "$1" == "1"; then
      echo "     <img src=\"${FN_IN_B[a]}\" alt=\"Picture: ${b}\"  height=\"100%\" align=\"top\" border=\"0\">" >> ${FN_IN_AA[a]}.html
    else
      echo "     <img src=\"${FN_IN_B[a]}\" alt=\"Picture: ${b}\"  align=\"top\" border=\"0\">" >> ${FN_IN_AA[a]}.html
    fi
  elif test $dir_name/$base_name_w.wav == ${FN_IN_B[a]}; then
    echo "     <img src=\"preview/${FN_IN_B[a]}_big.jpg\" alt=\"Picture: ${b}\" align=\"top\" border=\"0\">" >> ${FN_IN_AA[a]}.html
  elif test $dir_name/$base_name_m.mov == ${FN_IN_B[a]}; then
    echo "     <img src=\"preview/${FN_IN_B[a]}_big.jpg\" alt=\"Picture: ${b}\" align=\"top\" border=\"0\">" >> ${FN_IN_AA[a]}.html
  fi
 
  echo "    </a>" >> ${FN_IN_AA[a]}.html

  if test $dir_name/$base_name_w.wav == ${FN_IN_B[a]}; then
    echo "    <br><br><br>" >> ${FN_IN_AA[a]}.html
    echo "    <b>Sound anhören:</b>" >> ${FN_IN_AA[a]}.html
    echo "    <br>" >> ${FN_IN_AA[a]}.html
    echo "    <a href=\"${FN_IN_A[a]}.wav\">" >> ${FN_IN_AA[a]}.html
    echo "     Wav-Datei" >> ${FN_IN_AA[a]}.html
    echo "    </a>" >> ${FN_IN_AA[a]}.html
    echo "    <br>" >> ${FN_IN_AA[a]}.html
    echo "    <a href=\"${FN_IN_A[a]}.ogg\">" >> ${FN_IN_AA[a]}.html
    echo "     Ogg-Datei" >> ${FN_IN_AA[a]}.html
    echo "    </a>" >> ${FN_IN_AA[a]}.html
  elif test $dir_name/$base_name_m.mov == ${FN_IN_B[a]}; then
    echo "    <br><br>" >> ${FN_IN_AA[a]}.html
    echo "    <b>Film starten:</b>" >> ${FN_IN_AA[a]}.html
    echo "    <br>" >> ${FN_IN_AA[a]}.html
    echo "    <a href=\"${FN_IN_A[a]}.mov\">" >> ${FN_IN_AA[a]}.html
    echo "     Mov-Datei" >> ${FN_IN_AA[a]}.html
    echo "    </a>" >> ${FN_IN_AA[a]}.html
    echo "    <br>" >> ${FN_IN_AA[a]}.html
    echo "    <br>" >> ${FN_IN_AA[a]}.html
    echo "    <b>Nur Sound des Films starten:</b>" >> ${FN_IN_AA[a]}.html
    echo "    <br>" >> ${FN_IN_AA[a]}.html
    echo "    <a href=\"${FN_IN_A[a]}.ogg\">" >> ${FN_IN_AA[a]}.html
    echo "     Ogg-Datei" >> ${FN_IN_AA[a]}.html
    echo "    </a>" >> ${FN_IN_AA[a]}.html
  fi


  echo "   </CENTER>" >> ${FN_IN_AA[a]}.html

  # Jhead 
  if   test $dir_name/$base_name_j.jpg == ${FN_IN_B[a]}; then
    jhead ${FN_IN_B[a]} > my_jhead.txt
 
    FILE_SIZE=`grep "File size"     my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    CAME_MAKE=`grep "Camera make"   my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    CAME_MODE=`grep "Camera model"  my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    DATE_TIME=`grep "Date/Time"     my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    RESOLUTIO=`grep "Resolution"    my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    FLAS_USED=`grep "Flash used"    my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    FOCA_LENG=`grep "Focal length"  my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    EXPO_TIME=`grep "Exposure time" my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    APERTURE_=`grep "Aperture"      my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    ISO_EQUIV=`grep "ISO equiv."    my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    METE_MODE=`grep "Metering Mode" my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    EXPOSURE_=`grep "Exposure   "   my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`
    JPEG_PROC=`grep "Jpeg process"  my_jhead.txt | cut -d':' -f 2-20 | cut -b2-200`

    rm my_jhead.txt

    echo "    <br>" >> ${FN_IN_AA[a]}.html

    echo "     <table cellspacing=\"0\" cellpadding=\"0\">" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Dateigröße:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${FILE_SIZE}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Kamerahersteller:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${CAME_MAKE}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Kameramodell:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${CAME_MODE}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Aufnahme Datum/Uhrzeit:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${DATE_TIME}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Auflösung:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${RESOLUTIO}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Blitz:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${FLAS_USED}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Brennweite:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${FOCA_LENG}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Belichtungszeit:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${EXPO_TIME}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Blende:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${APERTURE_}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Iso-Empfindlichkeit:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${ISO_EQUIV}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Mess Methode:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${METE_MODE}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Exposure:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${EXPOSURE_}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "      <tr>" >> ${FN_IN_AA[a]}.html
    echo "       <td>Jpeg Prozess:</td>" >> ${FN_IN_AA[a]}.html
    echo "       <td>${JPEG_PROC}</td>" >> ${FN_IN_AA[a]}.html
    echo "      </tr>" >> ${FN_IN_AA[a]}.html
    echo "     </table>" >> ${FN_IN_AA[a]}.html
 
  fi


  echo " <BODY>" >> ${FN_IN_AA[a]}.html
  echo "</HTML>" >> ${FN_IN_AA[a]}.html
  let "a = $a + 1" 

done
}
################



echo "    Skallierte Bilder"
htmlPages "1"

echo ""
echo "    Maximale große Bilder"
htmlPages "0"


echo "15. HTML Seite erzeugt: Jedes Bild eine Seite  -- fertig"
echo 
echo 


##############################################################################







