#requisitos: mplayer,imagemagick,xdialog,idvid (includido en tovid).
#Script generador de mosaicos (compuesto por 6 pics) desde archivos de video
#creado por pepe_lucho :).
#!/bin/bash

title="Generador_de_Galerias"
Xdialog --title $title --msgbox "Script generador de Galerias\n desde archivos de video :D " 0 0 2>&1
video=`Xdialog --title $title --fselect $HOME 22 47 2>&1`
mosaico=`Xdialog --title $title --rangebox "# de Galerias a Generar:" 9 34 1 10 2 2>&1`

#Extrae duracion del video (hh,mm,ss)
dialog --infobox "Analizando Video <-*->" 3 30
dd=`idvid -fast $video | grep Duration | sed 's/:/ /g'`
hh=`echo $dd | awk '{print $2}'`
mm=`echo $dd | awk '{print $3}'`
ss=`echo $dd | awk '{print $4}'`

aa=`expr $hh \* 3600`
bb=`expr $mm \* 60`
tiempo=`expr $aa + $bb + $ss `
pics=`expr $mosaico \* 6 `
factor=`expr $tiempo / $pics - 5 `

#extrae capturas 
cd /tmp
for ((i=1;i<=$pics;i++))
do
j=`expr $i \* $factor`
dialog --infobox "! Procesando: <- $i/$pics- >!" 3 30
echo `mplayer -really-quiet $video -ss $j -frames 2 -vo jpeg -msglevel all=-1 2>&1`
dialog --infobox "! Procesando: <- $i/$pics- >!" 3 30

#se ordena por nombres y se redimensiona las capturas
if [ $i -lt 10 ]
then
mv 00000002.jpg 0$i.jpg  ; rm 00000001.jpg
convert -geometry 400x250  0$i.jpg 0$i.jpg
else
mv 00000002.jpg $i.jpg ; rm 00000001.jpg
convert -geometry 400x250  $i.jpg $i.jpg
fi
done

#guardo todos los jpg en un arreglo
lista=(`(ls [0-9][0-9].jpg)`)

#crea los mosaicos compuesto de 6 imagenes cada uno.
dialog --infobox "Creando Mosaicos..." 3 30
for ((z=1;z<=$mosaico;z++))
do
dialog --infobox "! Mosaico : <- $z/$mosaico- >!" 3 30
convert -page +0+0 ${lista[6*$z-6]} -page +370+0 ${lista[6*$z-5]} \
-page +0+250 ${lista[6*$z-4]} -page +370+250 ${lista[6*$z-3]} \
-page +0+500  ${lista[6*$z-2]} -page +370+500 ${lista[6*$z-1]} \
 -background black -bordercolor white -border 2x2 -mosaic mosaic0$z.jpg
done

#elimina imagenes temporales
mv mosaic*.jpg $HOME && rm *.jpg

clear ; echo " *** Done *** "
exit 0
