Crontab

29,59 *    * * *   encoder sleep $(echo 60-$(date '+\%S.\%N') | bc); /usr/local/bin/gbd-corte > /dev/null 2>&1  
31,01 * * * *   encoder /usr/local/bin/gbd-verificador > /dev/null 2>&1  

/usr/local/bin/gbd-corte

#!/bin/bash

source gbd-env

MNUEVO=""  
MACTUAL=$(date "+%M")


if [ $MACTUAL -le "29" ]  
then  
    MNUEVO="00"
else  
    MNUEVO="30"
fi


DESTINOFINAL="$DIRDEST$(date "+%Y-%m")/$(date "+%d")/"  
DESTINOTEMPORAL="$DIRTEMP$(date "+%Y-%m-%d-%H-")$MNUEVO/"  
AHORA=$(date "+%Y-%m-%d_%H-")$MNUEVO


/bin/mkdir -p $DESTINOTEMPORAL &
/usr/local/bin/gbd-grabando "$DESTINOFINAL" "$AHORA" "$DURACION" "$DESTINOTEMPORAL" &

sleep 1

/bin/touch $DESTINOTEMPORAL$AHORA.$!.lock


[ -d $DESTINOFINAL ] || /bin/mkdir -p $DESTINOFINAL


exit 0  

/usr/local/bin/gbd-grabando

#!/bin/bash

source gbd-env

PID="$$"  
DESTINO="$1"  
NOMBRE="$2"  
DURACION="$3"  
DIRTEMP="$4"  
PARCIAL="$5"

timeout $DURACION /usr/bin/ffmpeg -f pulse -i default -codec:a libmp3lame -qscale:a 5 $DIRTEMP$NOMBRE.mp3

if [ "$PARCIAL" == "PARCIAL" ]  
then  
    exit 0
else

    /bin/mv $DIRTEMP$NOMBRE.mp3 $DESTINO/$NOMBRE.mp3
    /bin/rm $DIRTEMP$NOMBRE.$PID.lock
    /bin/rm -d $DIRTEMP
fi


exit 0  

/usr/local/bin/gbd-parcial

#!/bin/bash

sleep $(echo 60-$(date '+%S.%N'))

source gbd-env

MNUEVO=""  
DURACION=""  
MACTUAL=$(date "+%M")


if [ $MACTUAL -le "29" ]  
then  
    MNUEVO="00"
    DURACION=$(echo "(30-$MACTUAL)*60+$(date "+%S")"|bc)
else  
    MNUEVO="30"
    DURACION=$(echo "(60-$MACTUAL)*60+$(date "+%S")"|bc)
fi


DESTINOFINAL="$DIRDEST$(date "+%Y-%m")/$(date "+%d")/"  
DESTINOTEMPORAL="$DIRTEMP$(date "+%Y-%m-%d-%H-")$MNUEVO/"  
AHORA=$(date "+%Y-%m-%d_%H-")$MACTUAL


/bin/mkdir -p $DESTINOTEMPORAL


/usr/local/bin/gbd-grabando "$DESTINOFINAL" "$AHORA" "$DURACION" "$DESTINOTEMPORAL" "PARCIAL" &

sleep 1

/bin/touch $DESTINOTEMPORAL$AHORA.$!.lock


[ -d $DESTINOFINAL ] || /bin/mkdir -p $DESTINOFINAL


exit 0  

/usr/local/bin/gbd-verificador

#!/bin/bash

source gbd-env

MNUEVO=""  
MACTUAL=$(date "+%M")


if [ $MACTUAL -le "29" ]  
then  
    MNUEVO="00"
else  
    MNUEVO="30"
fi


AHORA=$(date "+%Y-%m-%d-%H-")$MNUEVO  
DIRECTORIOS=(`ls $DIRTEMP |grep -v $AHORA`)


if [ -z "$DIRECTORIOS" ]  
then

    echo "no hay directorios por procesar"
    exit 0

else

    for DIRECTORIO in "${DIRECTORIOS[@]}"
    do
    SPLIT=""
    DESTINO=""
    SPLIT=(`echo $DIRECTORIO |awk -F- '{print $1"-"$2"-"$3"_"$4"-"$5}'`)
    DESTINO=(`echo $DIRECTORIO |awk -F- '{print $1"-"$2"/"$3"/"}'`)
        ARCHIVOS=(`find $DIRTEMP$DIRECTORIO -name '*.mp3' |sort`)

        if [ "${#ARCHIVOS[@]}" -ge "2" ]
        then
        echo "Hay mas de dos archivos"
        ARCHIVOSFF=""

            for ARCHIVO in "${ARCHIVOS[@]}"
                do
               ARCHIVOSFF="$ARCHIVOSFF $ARCHIVO"
            done

        UNION=(`cat $ARCHIVOSFF > $DIRDEST$DESTINO$SPLIT.mp3`)
        echo "se unieron los archivos $ARCHIVOSFF, en $DIRDEST$DESTINO$SPLIT.mp3"
        PURGA=(`rm $ARCHIVOSFF`)
        PURGA=(`rm $DIRTEMP$DIRECTORIO/*.lock`)
        PURGA=(`rm -d $DIRTEMP$DIRECTORIO`)

        else

        echo "no hay mas de dos archivos"
        MUEVO=(`mv $ARCHIVOS $DIRDEST$DESTINO$SPLIT.mp3`)
            PURGA=(`rm $DIRTEMP$DIRECTORIO/*.lock`)
            PURGA=(`rm -d $DIRTEMP$DIRECTORIO`)

        fi

    exit 0
    done
fi

exit 0  

/usr/local/bin/gbd-env

#!/bin/bash

env  
export DISPLAY=:0

# Directorio de Destino : formato /folder/to/share/
DIRDEST="/home/encoder/audios/"

# Directorio Temporal
DIRTEMP="/home/encoder/tmp/"

# Tiempo grabacion en segundos
TEMPREC="1800"

# Duracion en segundos
DURACION="30m"