commit aa02033cb723efea21af1c15209645f9bfd71093 Author: drholy Date: Sun Jan 18 23:43:38 2026 +0700 Добавить m4a_to_mp3.sh diff --git a/m4a_to_mp3.sh b/m4a_to_mp3.sh new file mode 100644 index 0000000..d9552d0 --- /dev/null +++ b/m4a_to_mp3.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +SOURCE_DIR="${1:-.}" + +if ! command -v ffmpeg &> /dev/null; then + echo "Ошибка: ffmpeg не установлен." >&2 + exit 1 +fi + +# Временный файл для логирования неудач +temp_log=$(mktemp) + +# Счётчики +total_files=0 +success_count=0 + +# Считаем общее количество файлов +total_files=$(find "$SOURCE_DIR" -type f -iname "*.m4a" | wc -l) + +if [[ $total_files -eq 0 ]]; then + echo "Не найдено файлов .m4a в $SOURCE_DIR" + exit 0 +fi + +echo "Найдено $total_files файлов для обработки..." + +# Используем -print0 и read -d '' +find "$SOURCE_DIR" -type f -iname "*.m4a" -print0 | \ +while IFS= read -r -d '' file; do + if [[ -f "$file" ]]; then + dir=$(dirname "$file") + basename=$(basename "$file" .m4a) + mp3_file="$dir/$basename.mp3" + + echo "🔄 Конвертация: $file → $mp3_file" + + if ffmpeg -nostdin -loglevel error -y -i "$file" -codec:a libmp3lame -qscale:a 1 -map_metadata 0 -id3v2_version 3 "$mp3_file"; then + echo "✅ Успешно: $mp3_file" + rm "$file" + else + echo "❌ Ошибка при конвертации: $file" >&2 + echo "$file" >> "$temp_log" + fi + fi +done + +# Читаем лог и считаем неудачи +if [[ -s "$temp_log" ]]; then + failed_count=$(wc -l < "$temp_log") + echo "⚠️ Не удалось обработать $failed_count файлов:" + cat "$temp_log" +else + echo "✅ Все файлы успешно обработаны." +fi + +# Удаляем временный лог +rm -f "$temp_log" + +echo "Готово!" \ No newline at end of file