|
|
|
|
@ -4,19 +4,12 @@
|
|
|
|
|
# Модуль действий: выполнение mkvmerge, создание симлинков и т.д.
|
|
|
|
|
#==============================================================================
|
|
|
|
|
|
|
|
|
|
# --- ИЗМЕНЕННАЯ ФУНКЦИЯ ---
|
|
|
|
|
# ... (функции action_merge_mkv и action_create_symlink остаются без изменений)
|
|
|
|
|
action_merge_mkv() {
|
|
|
|
|
local video_file="$1"
|
|
|
|
|
local audio_file="$2"
|
|
|
|
|
# Переименуем переменную для ясности
|
|
|
|
|
local final_output_file="$3"
|
|
|
|
|
|
|
|
|
|
# Теперь команда состоит из двух частей, соединенных '&&'.
|
|
|
|
|
# Это означает, что вторая команда (mv) выполнится ТОЛЬКО В ТОМ СЛУЧАЕ,
|
|
|
|
|
# если первая команда (mkvmerge) завершится успешно (с кодом выхода 0).
|
|
|
|
|
#
|
|
|
|
|
# 1. mkvmerge собирает результат во временный файл (TEMP_MERGE_FILE).
|
|
|
|
|
# 2. mv атомарно перемещает готовый файл в конечный каталог.
|
|
|
|
|
mkvmerge \
|
|
|
|
|
-o "$TEMP_MERGE_FILE" \
|
|
|
|
|
--track-order 1:0,0:0 \
|
|
|
|
|
@ -32,8 +25,10 @@ action_create_symlink() {
|
|
|
|
|
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 "Запуск" "Нет файлов для обработки."
|
|
|
|
|
@ -56,13 +51,13 @@ run_processing() {
|
|
|
|
|
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"
|
|
|
|
|
@ -70,7 +65,6 @@ run_processing() {
|
|
|
|
|
|
|
|
|
|
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 ;;
|
|
|
|
|
@ -83,5 +77,26 @@ run_processing() {
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|