#!/bin/bash

# Путь к папке с аудиофайлами
AUDIO_DIR="/home/musicapi/music_fldr/radio_recordings"

# Лог файл
LOG_FILE="/home/musicapi/music_fldr/waveform_generation.log"

# Текущая дата и время
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

echo "[$TIMESTAMP] Начало генерации waveforms" >> "$LOG_FILE"

# Переходим в папку
cd "$AUDIO_DIR" || {
    echo "[$TIMESTAMP] Ошибка: не могу перейти в $AUDIO_DIR" >> "$LOG_FILE"
    exit 1
}

# Обрабатываем все аудиофайлы
processed=0
skipped=0

# Вариант 1: перебор каждого расширения отдельно
extensions="mp3 wav flac m4a ogg aac webm"
for ext in $extensions; do
    for audio_file in *."$ext"; do
        # Проверяем, что файл существует (чтобы не обрабатывать буквальные *.расширение)
        if [ -f "$audio_file" ]; then
            # Получаем имя файла без расширения
            filename="${audio_file%.*}"
            output_file="${filename}.png"
            
            # Проверяем условия для пропуска
            skip=false
            
            # 1. Проверяем, существует ли уже PNG файл
            if [ -f "$output_file" ]; then
                # 2. Проверяем, изменился ли исходный аудиофайл после создания PNG
                if [ "$audio_file" -nt "$output_file" ]; then
                    echo "[$TIMESTAMP] Файл $audio_file обновлен, пересоздаю waveform" >> "$LOG_FILE"
                else
                    echo "[$TIMESTAMP] Waveform уже существует для $audio_file, пропускаю" >> "$LOG_FILE"
                    skipped=$((skipped + 1))
                    skip=true
                fi
            fi
            
            # Если не нужно пропускать, создаем waveform
            if [ "$skip" = false ]; then
                echo "[$TIMESTAMP] Создаю waveform для: $audio_file" >> "$LOG_FILE"
                
                ffmpeg -i "$audio_file" \
                    -filter_complex "aformat=channel_layouts=mono,compand,showwavespic=s=600x60:colors=#0077ff" \
                    -frames:v 1 \
                    "$output_file" 2>/dev/null
                
                if [ $? -eq 0 ]; then
                    echo "[$TIMESTAMP] Успешно создан: $output_file" >> "$LOG_FILE"
                    processed=$((processed + 1))
                else
                    echo "[$TIMESTAMP] Ошибка при создании waveform для: $audio_file" >> "$LOG_FILE"
                fi
            fi
        fi
    done
done

echo "[$TIMESTAMP] Завершено. Обработано: $processed, пропущено: $skipped" >> "$LOG_FILE"