#!/bin/bash
zielPfad=/MediaNew/videoConverted/

echo "Bearbeite  Verzeichniss das von Comaq Recorder erzeugt wurde"
echo "Verzeichnis kann auf externer HD liegen"
echo "-> umbenennen von Dateien" 
echo "-> zusammenfuegen der ts-Dateien"
echo "-> Meta-Infos auslesen"
echo " Aufruf " $(basename $0) "verzeichnisname1 vzname2 ..."
echo " Ergebnisse in " $zielPfad 

echo "Abbruch: ctrl c"
echo "Normal: enter"
echo "dry run: dry -> ohne mplex project x, aber verzeichnisse umbenannt."
read a 
dry=""
if [[ $a. == "dry." ]]
then
  dry="echo" 
fi
echo -n "Start: " 
sdatum=$(date); 
echo $sdatum
maskiere="( )"
for dir in "$@"
do 
  if [[ -d "$dir" ]] 
  then   
    cd "$dir" &&  comagMeta > meta.txt && verz=$(comagTitel) && cd ..
     #comagTitel checkt nicht auf irgendwelche sonderzeichen -> maskiere hier
     #nein, hatte ein / im Dateinamen: nikolaikirche 1/2 ...
     verz=${verz////v} # / durch v ersetzt
     verz=${verz//\"/} # " durch nichts ersetzt
     
    #for i in $maskiere
    #do 
 	#verz=${verz//$i/\\$i}
    #done
    #echo Verzeichnis lautet $verz
    #exit
   
    
    ########################
    ##fuer batchbetrieb bei erhalt des verzeichnisnamens
    #verz=$oldVerz
    #folgendes raus fuer Batch:
    #if [[ "$oldVerz" != "$verz" ]]
    #then
    #  mv -v "$oldVerz" "$verz"
    #fi
    #########################
    zurNot=$(cat "$dir/meta.txt" | grep Startdatum | cut -d ' ' -f 2)
    
    fullVerz=$zielPfad/$verz
    if [[ -e $fullVerz ]]
    then
      fullVerz=$fullVerz"_"$zurNot
      if [[ -e $fullVerz ]] 
      then
        # wenn das auch noch da, hänge startzeit noch an :-)
        zurNot=$(cat "$dir/meta.txt" | grep Startzeit | cut -d ' ' -f 2)
        #:kritisch - ersetze durch - 
        zurNot=${zurNot//:/-}
        fullVerz=$fullVerz"_"$zurNot
      fi
      echo "fullVerz ist $fullVerz"
    fi
    #exit
    echo "fullVerz ist $fullVerz"
    mkdir -v "$fullVerz"
    pfad=$(pwd)
    if [[ "$dir" != /*  ]]
    then
      dir=$pfad/$dir
    fi
    
    cd "$fullVerz"
    
    #mv -v REC.TS "$verz""_0".ts ||  mv -v rec.ts "$verz""_0".ts
    # ln -s $dir/REC.TS "$verz""_0".ts ||  ln -s $dir/rec.ts "$verz""_0".ts
    #obiges nicht  
    i=$(find $dir -maxdepth 1 -iname  "REC.TS")
    ln -s  $i "$verz""_0".ts
        
    counter=1
    for i in $(find $dir -maxdepth 1 -iname  "REC.0?" | sort)
    do 
       ln -s $i "$verz""_"$counter.ts
       let counter++
    done
	#links angelegt (ts-Dateien)
	#kopiere restlichen Daten - meta sinnvoll - der Rest - fraglich
	find "$dir" -maxdepth 1 -mindepth 1 -iname "*.bm" -exec cp {} "$fullVerz" \;
	find "$dir" -maxdepth 1 -mindepth 1 -iname "*.cp" -exec cp {} "$fullVerz" \;
	find "$dir" -maxdepth 1 -mindepth 1 -iname "*.dat" -exec cp {} "$fullVerz" \;
	find "$dir" -maxdepth 1 -mindepth 1 -iname "*.txt" -exec cp {} "$fullVerz" \;
    
    echo "fuege ts zusammen und demultiplexe mit Project-X"
    #liste=$(find . -iname "*.ts" | sed  "s/ /\\\ /g" | sort)
    #in der liste soll jeder dateiname von  " umgeben sein
    liste=$(find . -iname "*.ts" | sed  "s/ /\\\ /g" | sort | \
    while read eintrag
    do
      eintrag=${eintrag#./}
      eintrag=\"$eintrag\"
    echo -n $eintrag " ";
    done)
    #dieser seltsame konstrukt ist noetig, da ich liste in der 
    #schleife nicht veraendern kann - habe ich nicht verstanden
    echo "Liste: $liste"
	
   #projectx macht stress mit dem . - dem : vielleicht auch	
    renVerz=$verz
    verz=${verz//./_}
    verz=${verz//:/_} 
    demuxName=$verz"_demux"
    eval $dry java -jar /home/roemke/Infos/Linux/Multimedia/Project-X/ProjectX.jar -demux\
            -name \"$demuxName\" $liste            
    #warum ist da denn ein eval noetig - unklar
    #log datei umbenennen
    mv "$verz""_demux_log.txt" "$verz""_log.txt"
    echo "Habe die Dateien erzeugt, Größen: (m2v ist Video): "
    du -sh *

    echo "erzeuge DVD-Format"
    #hinweise im Netz: fuer dvdauthor ist -f 8 sinnvoll
    mplex -f 8 -o "$verz""_result.mpg" "$verz""_demux"*
    tFile="$verz"".mpg"
    if [[ -f $tFile ]]
    then
      mv -v $tFile "$verz""_save.mpg"
    fi
    tFile="$verz""_result.mpg"
    if [[ -f "$tFile"  ]]
    then 
      #die liste
      eval rm $liste 
      #die demuxten Dateien
      rm "$verz""_demux"*
      mv "$tFile"  "$verz".mpg
    else 
      echo "Fehler? Datei \"$tFile\" nicht da" 
    fi
    mv "$dir" "${dir%/}_$renVerz"
  fi
  cd $pfad 
done
echo "Insgesamt lief der Prozess von - bis"
echo "Start: "$sdatum
echo -n "Stop: " 
date


