#!/bin/bash
# mar 09: Umstellung, lasse die REC.. verzeichnisse auf der 
# externen Platte - ziehe nur die benoetigten Daten in das neue Verzeichnis
#noch nicht bearbeitet - wenn ich die verzeichnisse schon umbenannt habe
#dann gibt es stress - fehler im script bei Ausgangsverzeichnissen mit leerzeichen

zielPfad=/MediaNew/videoConverted/

echo "Bearbeite ein Verzeichnis das von Comaq Recorder erzeugt wurde"
echo "Verzeichnis kann auf externer HD liegen"
echo "Vorsicht - Verzeichnis darf nur aus einem Wort bestehten, z.B REC001"
echo "Enter druecken" 
read a
echo "Ergebnisverzeichnis in $zielPfad<titel>"
echo "-> umbenennen von Dateien" 
echo "-> zusammenfuegen der ts-Dateien"
echo "-> Meta-Infos auslesen"
echo "   (um Meta-Info für mehrere Filme auszulesen -> siehe comagMetaCSV)"
echo " nicht Interaktiv: comagConvertBatch"
echo " Aufruf " $(basename $0) "<verzeichnisname>"

if [[ $# -ne 1 ]] 
then
  echo "Parameter-Zahl nicht ok"
  exit
else
  oldVerz=$1
# ein slash mehr stoert nicht  
fi

echo -n "Start: " 
sdatum=$(date); 
echo $sdatum
cd "$oldVerz" &&  comagMeta > meta.txt && verz=$(comagTitel) && cd ..

#hatte ein / im Dateinamen: nikolaikirche 1/2 ...
verz=${verz////v}

if [[ "$oldVerz" != /*  ]]
then
  pfad=$(pwd)
  oldVerz=$pfad/$oldVerz
fi

echo "Titel / neuer Verzeichnisname: "$verz
echo "anderer Name j/n";
read a
##fuer batch a=n
#a="n"
if [[ $a. == "j." ]]
then 
  echo "Neuer Verzeichnisname (ohne Pfad): "	
  read verz
fi


########################
##fuer batchbetrieb bei erhalt des verzeichnisnamens
#verz=$oldVerz
#folgendes raus fuer Batch:
#########################
fullVerz=$zielPfad/$verz
mkdir -v "$fullVerz"
cd "$fullVerz"

echo -n "work in dir "
pwd

#das folgende geht nicht, ln ist auch erfolgreich, wenn die Datei nicht existiert
#ln -s $oldVerz/REC.TS "$verz""_0".ts ||  ln -s $oldVerz/rec.ts "$verz""_0".ts
i=$(find $oldVerz -maxdepth 1 -iname  "REC.TS")
ln -s  $i "$verz""_0".ts


counter=1
for i in $(find $oldVerz -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
#sichergehen, dass ich klein / gross habe
cp "$oldVerz/"*.bm "$fullVerz"  ||  cp "$oldVerz/"*.BM "$fullVerz"
cp "$oldVerz/"*.cp "$fullVerz"  || cp "$oldVerz/"*.CP "$fullVerz"
cp "$oldVerz/"*.txt "$fullVerz" || cp "$oldVerz/"*.TXT "$fullVerz"
cp "$oldVerz/"*.dat "$fullVerz" || cp "$oldVerz/"*.DAT "$fullVerz"



#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"
echo "umbenannt, soll noch geschnitten werden? (j/n)"
echo "ich denke es ist doch sinnvoller erst spaeter  das mpg zu scheiden und demux zu wählen"
echo "danach dann wieder per mplex zusammen fuegen"
read a
if [[ "$a." == "j."  ]]
then 
  echo "Bitte nacheinander mit  öffnen (originale), schneiden, als binary copy speichern"
  echo "es entsteht eine Datei mit Namen ...[copy]"
  echo "umbenennen, so dass die erzeugten links in $fullVerz gültig sind"
  echo -n "ENTER" 
  read a
  eval java -jar /home/roemke/Infos/Linux/Multimedia/Project-X/ProjectX.jar 
  echo -n "Enter, wenn die Links wieder stimmen achte auf CASE - Sensitive"
  read a
fi
 

echo "fuege ts zusammen und demultiplexe mit Project-X"
# project-x macht stress mit . in Dateiname - ersetze
verz=${verz//./ }
verz=${verz//:/ } 
#doppelpuntk - sicher gehen
demuxName=$verz"_demux"
eval 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 -sm *
size=$(du -s "$verz"_demux.m2v | cut -f 1 -s)  
echo "Beachte: nur 4482 MB Platz auf der DVD - Vorsicht dazu noch Bilder und Menus (wahrscheinlich < 20 MB)";
#spaeter vielleicht mal eine Empfehlung berechnen lassen 
echo "Geben Sie einen Faktor ein, um die Viedeodateien (nicht Audio) verringert wird (neueGröße=größe*1/faktor: (1)" 
echo "Hinweis wollen Sie die m2v um b bytes reduzieren so sollte sich der faktor aus $size/($size - b) berechnen lassen"
echo -n " 1 oder Enter - nichts passiert: "
read fak
if [[ ( "$fak". != "." ) &&  ( $fak != "1" )  ]]
then
  cat "$verz""_demux.m2v" | requant $fak 0 $size > "$verz""_requant_demux.m2v"
  mv "$verz""_requant_demux.m2v" "$verz""_demux.m2v"
fi
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
cd ..
echo "Insgesamt lief der Prozess von - bis"
echo "Start: "$sdatum
echo -n "Stop: " 
date
# altes verzeichnis doch umbenennen, -> erkenne das gelaufen

mv "$oldVerz" "${oldVerz%/}_$verz"

#echo "original-verzeichnis nicht verschoben"
 


