bump
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+45
-5
@@ -1,6 +1,45 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# ... (action_merge_mkv и action_create_symlink без изменений) ...
|
# ... (начало файла и функции action_* без изменений) ...
|
||||||
|
action_merge_mkv() {
|
||||||
|
local video_file="$1"
|
||||||
|
local audio_file="$2"
|
||||||
|
local output_file="$3"
|
||||||
|
|
||||||
|
echo "---"
|
||||||
|
echo "ИСХОДНОЕ ВИДЕО : $video_file"
|
||||||
|
echo "ИСХОДНОЕ АУДИО : $audio_file"
|
||||||
|
echo "РЕЗУЛЬТАТ : $output_file"
|
||||||
|
|
||||||
|
mkvmerge \
|
||||||
|
-o "$output_file" \
|
||||||
|
--language 0:und "$video_file" \
|
||||||
|
--language 1:rus "$audio_file"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "УСПЕХ: Файл создан."
|
||||||
|
else
|
||||||
|
echo "ОШИБКА: mkvmerge завершился с ошибкой."
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
action_create_symlink() {
|
||||||
|
local video_file="$1"
|
||||||
|
local output_file="$2"
|
||||||
|
|
||||||
|
echo "---"
|
||||||
|
echo "ИСТОЧНИК: $video_file"
|
||||||
|
echo "ССЫЛКА : $output_file"
|
||||||
|
|
||||||
|
ln -s "$video_file" "$output_file"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "УСПЕХ: Ссылка создана."
|
||||||
|
else
|
||||||
|
echo "ОШИБКА: Не удалось создать ссылку."
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
}
|
||||||
# Главная функция запуска обработки
|
# Главная функция запуска обработки
|
||||||
run_processing() {
|
run_processing() {
|
||||||
if ! logic_prepare_file_lists; then return 1; fi
|
if ! logic_prepare_file_lists; then return 1; fi
|
||||||
@@ -9,7 +48,6 @@ run_processing() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Больше не спрашиваем, а используем CURRENT_ACTION
|
|
||||||
local confirmation_text="Вы уверены, что хотите выполнить '${CURRENT_ACTION}' для ${#FILE_TRIPLETS[@]} файлов?\n\n"
|
local confirmation_text="Вы уверены, что хотите выполнить '${CURRENT_ACTION}' для ${#FILE_TRIPLETS[@]} файлов?\n\n"
|
||||||
confirmation_text+="Результаты будут сохранены в:\n$OUTPUT_BASE_DIR"
|
confirmation_text+="Результаты будут сохранены в:\n$OUTPUT_BASE_DIR"
|
||||||
if ! ui_confirm "Финальное подтверждение" "$confirmation_text"; then
|
if ! ui_confirm "Финальное подтверждение" "$confirmation_text"; then
|
||||||
@@ -34,16 +72,18 @@ run_processing() {
|
|||||||
for triplet in "${FILE_TRIPLETS[@]}"; do
|
for triplet in "${FILE_TRIPLETS[@]}"; do
|
||||||
progress=$(( 100 * current_file / total_files ))
|
progress=$(( 100 * current_file / total_files ))
|
||||||
echo "$progress"
|
echo "$progress"
|
||||||
echo -e "XXX\n$((current_file + 1)) / $total_files\n$(basename "$triplet" | cut -f1 -d$'\t')\nXXX"
|
|
||||||
|
# --- ИСПРАВЛЕНИЕ ЗДЕСЬ: БОЛЕЕ НАДЕЖНЫЙ СПОСОБ ПОЛУЧИТЬ ИМЯ ФАЙЛА ---
|
||||||
|
local video_for_display
|
||||||
|
IFS=$'\t' read -r video_for_display _ _ <<< "$triplet"
|
||||||
|
echo -e "XXX\n$((current_file + 1)) / $total_files\nОбработка: $(basename "$video_for_display")\nXXX"
|
||||||
|
|
||||||
IFS=$'\t' read -r video audio output <<< "$triplet"
|
IFS=$'\t' read -r video audio output <<< "$triplet"
|
||||||
|
|
||||||
# Выполняем заранее выбранное действие
|
|
||||||
case "$CURRENT_ACTION" in
|
case "$CURRENT_ACTION" in
|
||||||
"MERGE")
|
"MERGE")
|
||||||
action_merge_mkv "$video" "$audio" "$output" ;;
|
action_merge_mkv "$video" "$audio" "$output" ;;
|
||||||
"SYMLINK")
|
"SYMLINK")
|
||||||
# Для симлинка аудио-файл не нужен
|
|
||||||
action_create_symlink "$video" "$output" ;;
|
action_create_symlink "$video" "$output" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ logic_prepare_file_lists() {
|
|||||||
common_params_ok=false
|
common_params_ok=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 1. Находим видеофайлы (это нужно для обоих режимов)
|
|
||||||
local video_list_raw
|
local video_list_raw
|
||||||
if $common_params_ok; then
|
if $common_params_ok; then
|
||||||
mapfile -d '' video_list_raw < <(find "$VIDEO_SRC_DIR" -maxdepth 1 -name "$VIDEO_FILE_PATTERN" -print0 | sort -z)
|
mapfile -d '' video_list_raw < <(find "$VIDEO_SRC_DIR" -maxdepth 1 -name "$VIDEO_FILE_PATTERN" -print0 | sort -z)
|
||||||
@@ -42,7 +41,6 @@ logic_prepare_file_lists() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Собираем триплеты
|
|
||||||
for i in "${!video_list_raw[@]}"; do
|
for i in "${!video_list_raw[@]}"; do
|
||||||
local video_file="${video_list_raw[$i]}"
|
local video_file="${video_list_raw[$i]}"
|
||||||
local audio_file="${audio_list_raw[$i]}"
|
local audio_file="${audio_list_raw[$i]}"
|
||||||
@@ -62,11 +60,14 @@ logic_prepare_file_lists() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Собираем пары (аудио-поле оставляем пустым)
|
|
||||||
for video_file in "${video_list_raw[@]}"; do
|
for video_file in "${video_list_raw[@]}"; do
|
||||||
local output_path
|
local output_path
|
||||||
output_path=$(logic_generate_output_name "$video_file") || return 1
|
output_path=$(logic_generate_output_name "$video_file") || return 1
|
||||||
FILE_TRIPLETS+=("$video_file"$'\t\t'"$output_path")
|
|
||||||
|
# --- ИСПРАВЛЕНИЕ ЗДЕСЬ: ИСПОЛЬЗУЕМ ЯВНЫЙ ЗАПОЛНИТЕЛЬ ---
|
||||||
|
# Это гарантирует, что `read` всегда увидит три поля.
|
||||||
|
local placeholder="__SYMLINK_AUDIO_PLACEHOLDER__"
|
||||||
|
FILE_TRIPLETS+=("$video_file"$'\t'"$placeholder"$'\t'"$output_path")
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -96,7 +97,7 @@ logic_generate_output_name() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Предпросмотр тоже адаптируется к режиму
|
# Предпросмотр теперь будет работать правильно
|
||||||
logic_show_preview() {
|
logic_show_preview() {
|
||||||
if ! logic_prepare_file_lists; then return 1; fi
|
if ! logic_prepare_file_lists; then return 1; fi
|
||||||
if [ ${#FILE_TRIPLETS[@]} -eq 0 ]; then
|
if [ ${#FILE_TRIPLETS[@]} -eq 0 ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user