#!/bin/bash ##################################### # Script: generate_pending # Objetivo: # - Buscar grabaciones DEL DIA ACTUAL en MONITOR_DIR # - Convertir in.wav y out.wav a MP3 estéreo # - Guardarlas en DESTINATION_PATH con la fecha de HOY ##################################### ##################################### # 1. Conexión a la base de datos ##################################### MYSQL_DRIVER=$(which mysql) DBHOST=$(head -n 12 /etc/odbc.ini | awk -F "=" '/Server/ {print $2}') DBUSER=$(head -n 12 /etc/odbc.ini | awk -F "=" '/User/ {print $2}') DATABASE=$(head -n 12 /etc/odbc.ini | awk -F "=" '/Database/ {print $2}') DBPASS=$(head -n 12 /etc/odbc.ini | awk -F "=" '/Password/ {print $2}') if [ -z "$DBHOST" ]; then DBHOST="localhost" fi if [ -z "$DBUSER" ]; then DBUSER="ccuser" fi if [ -z "$DATABASE" ]; then DATABASE="ccrepo" fi if [ -z "$DBPASS" ]; then if [ -z "$1" ]; then echo "Database password is empty" exit 1 else DBPASS=$1 fi fi export MYSQL_PWD="$DBPASS" MYSQL_MODIFIER="--skip-column-names -B -se" MYSQL="${MYSQL_DRIVER} ${DATABASE} -h${DBHOST} -u${DBUSER} ${MYSQL_MODIFIER}" ##################################### # 2. Variables de audio ##################################### MONITOR_DIR="/var/spool/asterisk/monitor" DESTINATION_PATH="/usr/local/cleverideas/recordings/MP3" # Fecha de HOY (día de la ejecución) today_date=$(date +%Y-%m-%d) CURRENT_DIR="$DESTINATION_PATH/$today_date" # Crear la carpeta si no existe if [ ! -d "$CURRENT_DIR" ]; then mkdir -p "$CURRENT_DIR" echo "Carpeta creada: $CURRENT_DIR" fi ########################################## # 3. Buscar archivos DEL DIA ACTUAL (-daystart -mtime 0) en MONITOR_DIR # y convertirlos a MP3 ########################################## # -daystart reinicia la referencia del 'mtime' a la medianoche de hoy # -mtime 0 => Archivos modificados desde las 00:00 de hoy find "$MONITOR_DIR" -daystart -mtime 0 -name "*all*" | grep -v "lost" | while read -r file; do filename=$(basename "$file") echo "Procesando archivo ALL: $filename" # Extraer GUID base=$(basename "$file") left_cut=$( echo "$base" | cut -d"_" -f2 ) rigth_cut=$( echo "$left_cut" | cut -d"." -f1 ) GUID=$( echo "$rigth_cut" | sed -e 's/-all//g' | sed -e 's/-compress//g') echo "GUID extraído: $GUID" # Archivos de audio de entrada (WAV) AUDIO_IN="$MONITOR_DIR/$GUID-in.wav" AUDIO_OUT="$MONITOR_DIR/$GUID-out.wav" DESTINATION_COMPRESS="$CURRENT_DIR/$GUID.mp3" # Mezclar y comprimir usando sox + lame if [ -f "$AUDIO_IN" ] && [ -f "$AUDIO_OUT" ]; then echo "IN: $AUDIO_IN" echo "OUT: $AUDIO_OUT" sox -M -v 1 "$AUDIO_IN" -v 1 "$AUDIO_OUT" -r 8000 -c 2 -e signed-integer -b 16 -t wav - | \ lame -V 9 -m s - "$DESTINATION_COMPRESS" echo "Procesado: $filename => $DESTINATION_COMPRESS" # Borrar los archivos in/out si deseas if [ -f "$AUDIO_IN" ]; then rm "$AUDIO_IN" fi if [ -f "$AUDIO_OUT" ]; then rm "$AUDIO_OUT" fi # Copiar a repositorio SFTP si se generó correctamente if [ -f "$DESTINATION_COMPRESS" ]; then echo "Enviando $DESTINATION_COMPRESS a /usr/local/cleverideas/sftp_repo/" cp -rf "$CURRENT_DIR"/*.mp3 /usr/local/cleverideas/sftp_repo/ fi else echo "No se encontraron in/out WAV para GUID=$GUID => se omite" fi done echo "Finalizando en $CURRENT_DIR"