You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
3.9 KiB
Bash

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/bin/bash
#==============================================================================
# Модуль действий: выполнение mkvmerge, создание симлинков и т.д.
#==============================================================================
# ... (функции action_merge_mkv и action_create_symlink остаются без изменений)
action_merge_mkv() {
local video_file="$1"
local audio_file="$2"
local final_output_file="$3"
mkvmerge \
-o "$TEMP_MERGE_FILE" \
--track-order 1:0,0:0 \
--language 0:rus "$audio_file" \
"$video_file" \
&& \
mv "$TEMP_MERGE_FILE" "$final_output_file"
}
action_create_symlink() {
local video_file="$1"
local output_file="$2"
ln -s "$video_file" "$output_file"
}
# Главная функция запуска обработки
run_processing() {
# Шаг 1: Подготовка и подтверждение (без изменений)
if ! logic_prepare_file_lists; then return 1; fi
if [ ${#FILE_TRIPLETS[@]} -eq 0 ]; then
ui_show_message "Запуск" "Нет файлов для обработки."
return
fi
local confirmation_text="Вы уверены, что хотите выполнить '${CURRENT_ACTION}' для ${#FILE_TRIPLETS[@]} файлов?\n\n"
confirmation_text+="Результаты будут сохранены в:\n$OUTPUT_BASE_DIR"
if ! ui_confirm "Финальное подтверждение" "$confirmation_text"; then
ui_show_message "Отмена" "Операция отменена пользователем."
return
fi
if [ ! -d "$OUTPUT_BASE_DIR" ]; then
if ui_confirm "Создание каталога" "Каталог '$OUTPUT_BASE_DIR' не существует. Создать его?"; then
mkdir -p "$OUTPUT_BASE_DIR"
if [ $? -ne 0 ]; then ui_show_message "Ошибка" "Не удалось создать каталог."; return; fi
else
ui_show_message "Отмена" "Операция отменена."; return
fi
fi
# Шаг 2: Выполнение с прогресс-баром (без изменений)
{
local total_files=${#FILE_TRIPLETS[@]}
local current_file_num=0
while IFS=$'\t' read -r video audio output; do
((current_file_num++))
local progress_before=$(( ((current_file_num - 1) * 100) / total_files ))
echo "$progress_before"
echo -e "XXX\n($current_file_num/$total_files) Обработка:\n$(basename "$video")\nXXX"
case "$CURRENT_ACTION" in
"MERGE")
action_merge_mkv "$video" "$audio" "$output" >/dev/null 2>&1 ;;
"SYMLINK")
action_create_symlink "$video" "$output" >/dev/null 2>&1 ;;
esac
done < <(printf "%s\n" "${FILE_TRIPLETS[@]}")
echo "100"
echo -e "XXX\nГотово!\nНажмите Enter\nXXX"
sleep 2
} | dialog "${DIALOG_OPTS[@]}" --title "Выполнение..." --gauge "Подготовка..." 10 70 0
# --- НОВЫЙ БЛОК: ФИНАЛЬНЫЙ ОТЧЕТ ---
# Шаг 3: Показываем отчет о проделанной работе
local action_text
local total_processed=${#FILE_TRIPLETS[@]}
case "$CURRENT_ACTION" in
"MERGE")
action_text="Склейка файлов завершена."
;;
"SYMLINK")
action_text="Создание символических ссылок завершено."
;;
esac
local report_message="Статус: $action_text\n\n"
report_message+="Обработано файлов: $total_processed\n"
report_message+="Результаты сохранены в:\n$OUTPUT_BASE_DIR"
ui_show_message "Отчёт о выполнении" "$report_message"
clear
}