#!/bin/bash

###by plinej
###pupdvdtool-0.4 December 2006
###This is the ffmpeg gui

if [ "`which ffmpeg`" = "" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "ffmpegがパスにありません。
プログラムを終了します" 0 0
exit 0
fi

if ! [ -d $HOME/.pupdvdtool ]; then
mkdir $HOME/.pupdvdtool
fi
if ! [ -f $HOME/.pupdvdtool/ffmpegguidir ]; then
echo > $HOME/.pupdvdtool/ffmpegguidir
fi
if ! [ -d "`cat $HOME/.pupdvdtool/ffmpegguidir`" ]; then
echo > $HOME/.pupdvdtool/ffmpegguidir
fi

rm -f /tmp/pupdvdtool-ffmpegconv.txt
rm -f /tmp/pupdvdtool-exit.txt
rm -f /tmp/pupdvdtool-cbox2.txt
rm -f /tmp/pupdvdtool-cbox3.txt
rm -f /tmp/pupdvdtool-cbox.txt
rm -f /tmp/pupdvdtool-file.txt
rm -f /tmp/pupdvdtool-word.txt
rm -f /tmp/pupdvdtool-ffmpeg2.txt
rm -f /tmp/pupdvdtool-ffmpeg.txt

echo pupdvdtoolのこの部分は、選択したビデオを > /tmp/pupdvdtool-ffmpegconv.txt
echo DVD対応ビデオに変換します。 >> /tmp/pupdvdtool-ffmpegconv.txt
echo >> /tmp/pupdvdtool-ffmpegconv.txt
echo 作業用にディレクトリや一つのファイルを >> /tmp/pupdvdtool-ffmpegconv.txt
echo 選択できます。 ディレクトリを選択すると >> /tmp/pupdvdtool-ffmpegconv.txt
echo 作業したいファイルタイプ用に拡張子名ボックスに >> /tmp/pupdvdtool-ffmpegconv.txt
echo 記入する必要があります。例えば「mpg」 >> /tmp/pupdvdtool-ffmpegconv.txt

cd /

export FFMPEGGUI="
<window title=\"pupdvdtool ffmpeg gui \"icon-name=\"gtk-cdrom\">
<hbox>
<vbox>
    
    <frame どちらか一方を選択して下さい>
	<frame ファイルのディレクトリを選択し、拡張子を入力>
	<hbox>
      <entry accept=\"directory\">
        <label>ディレクトリを選択</label>
        <variable>DIRENTRY</variable>
			<input>cat \$HOME/.pupdvdtool/ffmpegguidir</input>
      <action>echo \$DIRENTRY | tee /tmp/pupdvdtool-file.txt</action>
      <action>echo \$DIRENTRY | tee \$HOME/.pupdvdtool/ffmpegguidir</action>
      </entry>
      <button>
        <input file stock=\"gtk-open\"></input>
        <variable>FILE_BROWSE_DIRECTORY</variable>
        <action type=\"fileselect\">DIRENTRY</action>
      </button>
  </hbox>
    <hbox>
      <text><label>ファイル拡張子を入力:</label></text>
      <entry>
        <variable>WORD</variable>
      <action>echo \$WORD | tee /tmp/pupdvdtool-word.txt</action>
      </entry>
    </hbox>
  </frame>
	<frame または、シングルファイルを選択>
    <hbox>
      <entry accept=\"filename\">
        <label>存在するファイルを選択</label>
        <variable>ENTRY1</variable>
			<action>echo \$ENTRY1 | tee /tmp/pupdvdtool-file.txt</action>
      <action>echo \$ENTRY1 | tee \$HOME/.pupdvdtool/ffmpegguidir</action>
      </entry>
      <button>
        <input file stock=\"gtk-file\"></input>
        <variable>FILE_BROWSE_FILENAME</variable>
        <action type=\"fileselect\">ENTRY1</action>
      </button>
    </hbox>
  </frame>
  </frame>
    
    <frame 新しいファイルを同じディレクトリに入力ファイルとして保存しますか?>
    <hbox>
    <checkbox>
      <label>チェックでyes</label>
      <variable>CHECKBOX</variable>
      <default>true</default>
    </checkbox>
    </hbox>
    </frame>
    
	<frame ntsc か palに出力しますか?>
  <hbox>
    <radiobutton active=\"true\">
      <label>ntsc</label>
      <variable>CHECKBOX2</variable>
    </radiobutton>
    
    <radiobutton active=\"false\">
      <label>pal</label>
      <variable>CHECKBOX3</variable>
    </radiobutton>
	</hbox>
  </frame>
    
    <hbox>
      <text><label>選択したビデオを変換</label></text>
      <button>
       <input file stock=\"gtk-convert\"></input>
        <label>変換</label>
      <action>echo \$CHECKBOX | tee /tmp/pupdvdtool-cbox.txt</action>
      <action>echo \$CHECKBOX2 | tee /tmp/pupdvdtool-cbox2.txt</action>
      <action>echo \$CHECKBOX3 | tee /tmp/pupdvdtool-cbox3.txt</action>
      <action type=\"exit\">Exit by button</action>
      </button>
    </hbox>

<frame 情報:>
    <edit>
      <variable>INFO</variable>
      <input file>/tmp/pupdvdtool-ffmpegconv.txt</input>
      <width>120</width>
      <height>160</height>
    </edit>
</frame>

  <hbox>     

    <button>
       <input file stock=\"gtk-cdrom\"></input>
      <label>pupdvdtool</label>
      <action>pupdvdtool &</action>
	<action>touch /tmp/pupdvdtool-exit.txt</action>
      <action type=\"exit\">Exit by button</action>
    </button>

    <button>
      <input file stock=\"gtk-quit\"></input>
      <label>終了</label>
	<action>touch /tmp/pupdvdtool-exit.txt</action>
      <action type=\"exit\">Exit by button</action>
    </button>

  </hbox>

</vbox>
</hbox>
</window>
"
gtkdialog3 --program=FFMPEGGUI --center

if [ -f /tmp/pupdvdtool-exit.txt ]; then
EXIT=""
rm -f /tmp/pupdvdtool-exit.txt
exit 0
fi

CHECKBOX=`cat /tmp/pupdvdtool-cbox.txt`
rm -f /tmp/pupdvdtool-cbox.txt

if ! [ -f /tmp/pupdvdtool-file.txt ]; then
pupdvdtool
exit 0
fi

TMPFILE=`cat /tmp/pupdvdtool-file.txt`
rm -f /tmp/pupdvdtool-file.txt

if [ -d $TMPFILE ]; then
DIR="$TMPFILE"/
else
DIR=`dirname "$TMPFILE"`/
fi

if [ "$CHECKBOX" = false ]; then
if ! [ -f $HOME/.pupdvdtool/ffmpegdir ]; then
echo / > $HOME/.pupdvdtool/ffmpegdir
fi
FFMPEGDIR=`cat $HOME/.pupdvdtool/ffmpegdir`
if ! [ -d "$FFMPEGDIR" ]; then
FFMPEGDIR="/"
fi
DIR2=`Xdialog --title "Select your save directory" --dselect "$FFMPEGDIR" 0 0 2>&1`
if [ "$?" != 0 ]; then pupdvdtool; exit 0; fi
echo "$DIR2" > $HOME/.pupdvdtool/ffmpegdir
else
DIR2="$DIR"
fi

if [ "`cat /tmp/pupdvdtool-cbox2.txt`" = true ]; then
TYPE=ntsc
else
TYPE=pal
fi

if [ -d $TMPFILE ]; then
WORD=`cat /tmp/pupdvdtool-word.txt`
rm -f /tmp/pupdvdtool-word.txt
if [ "`echo $WORD | head -c 1`" != \. ]; then
WORD=."$WORD"
fi
EXT="`echo $WORD | sed -e 's/\.//g'`"
cd "$DIR"
ls *"$WORD" | while read FILE
do
new_file=`echo $FILE | sed -e "s/ /_/g"`
if [ "$FILE" != "$new_file" ]; then
mv "$FILE" "$new_file"
FILE="$new_file"
fi
ffmpeg -i "$FILE" 2>/tmp/pupdvdtool-ffmpeg.txt
grep mp2 /tmp/pupdvdtool-ffmpeg.txt > /tmp/pupdvdtool-ffmpeg2.txt
grep ac3 /tmp/pupdvdtool-ffmpeg.txt >> /tmp/pupdvdtool-ffmpeg2.txt
FILE2=`echo $FILE | sed -e "s/$WORD//g"`
if [ "`cat /tmp/pupdvdtool-ffmpeg2.txt`" = "" ]; then
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR""$FILE" "$DIR2""$FILE2"-tmp.wav
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR2""$FILE2"-tmp.wav -ar 48000 -ac 1 -ab 448 "$DIR2""$FILE2"-tmp.ac3
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR""$FILE" -target "$TYPE"-dvd -aspect 16:9 -an -y "$DIR2""$FILE2"-tmp.m2v
rxvt -bg orange --geometry 60x10 -e ffmpeg -vcodec copy -i "$DIR2""$FILE2"-tmp.m2v -acodec copy -i "$DIR2""$FILE2"-tmp.ac3 -target "$TYPE"-dvd "$DIR2""$FILE2"-tmp.mpg
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR2""$FILE2"-tmp.mpg -target "$TYPE"-dvd -acodec copy "$DIR2""$FILE2"-converted.mpg
rm -f "$DIR2""$FILE2"-tmp.mpg
rm -f "$DIR2""$FILE2"-tmp.ac3
rm -f "$DIR2""$FILE2"-tmp.m2v
rm -f "$DIR2""$FILE2"-tmp.wav
else
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR""$FILE" -target "$TYPE"-dvd -acodec copy "$DIR2""$FILE2"-converted.mpg
fi
done
fi

if [ -f $TMPFILE ]; then
FILE=`basename $TMPFILE`
cd "$DIR"
new_file=`echo $FILE | sed -e "s/ /_/g"`
if [ "$FILE" != "$new_file" ]; then
mv "$FILE" "$new_file"
FILE="$new_file"
fi
EXT=${FILE##*.}
ffmpeg -i "$FILE" 2>/tmp/pupdvdtool-ffmpeg.txt
grep mp2 /tmp/pupdvdtool-ffmpeg.txt > /tmp/pupdvdtool-ffmpeg2.txt
grep ac3 /tmp/pupdvdtool-ffmpeg.txt >> /tmp/pupdvdtool-ffmpeg2.txt
FILE2=`echo $FILE | sed -e "s/\.$EXT//g"`
if [ "`cat /tmp/pupdvdtool-ffmpeg2.txt`" = "" ]; then
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR""$FILE" "$DIR2""$FILE2"-tmp.wav
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR2""$FILE2"-tmp.wav -ar 48000 -ac 1 -ab 448 "$DIR2""$FILE2"-tmp.ac3
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR""$FILE" -target "$TYPE"-dvd -aspect 16:9 -an -y "$DIR2""$FILE2"-tmp.m2v
rxvt -bg orange --geometry 60x10 -e ffmpeg -vcodec copy -i "$DIR2""$FILE2"-tmp.m2v -acodec copy -i "$DIR2""$FILE2"-tmp.ac3 -target "$TYPE"-dvd "$DIR2""$FILE2"-tmp.mpg
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR2""$FILE2"-tmp.mpg -target "$TYPE"-dvd -acodec copy "$DIR2""$FILE2"-converted.mpg
rm -f "$DIR2""$FILE2"-tmp.mpg
rm -f "$DIR2""$FILE2"-tmp.ac3
rm -f "$DIR2""$FILE2"-tmp.m2v
rm -f "$DIR2""$FILE2"-tmp.wav
else
rxvt -bg orange --geometry 60x10 -e ffmpeg -i "$DIR""$FILE" -target "$TYPE"-dvd -acodec copy "$DIR2""$FILE2"-converted.mpg
fi
fi

Xdialog --title "MESSAGE BOX" --msgbox "全プロセスはすぐに終了するはずです." 0 0
pupdvdtool
exit 0
