From 8d8045f2c76f67d723befb041460c791312c289b Mon Sep 17 00:00:00 2001 From: grayhook Date: Tue, 8 Jul 2025 17:04:06 +0700 Subject: [PATCH] biump --- gemini/core_actions.sh | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/gemini/core_actions.sh b/gemini/core_actions.sh index f7551a2..1a1dee3 100644 --- a/gemini/core_actions.sh +++ b/gemini/core_actions.sh @@ -1,5 +1,13 @@ #!/bin/bash -# ... (начало файла и функции action_* без изменений) ... + +#============================================================================== +# Модуль действий: выполнение mkvmerge, создание симлинков и т.д. +#============================================================================== + +# Функция для склейки видео и аудио +# $1: Исходный видеофайл +# $2: Исходный аудиофайл +# $3: Выходной файл action_merge_mkv() { local video_file="$1" local audio_file="$2" @@ -10,10 +18,26 @@ action_merge_mkv() { echo "ИСХОДНОЕ АУДИО : $audio_file" echo "РЕЗУЛЬТАТ : $output_file" + # --- ИЗМЕНЕННАЯ КОМАНДА MKVMERGE --- + # Порядок изменен для того, чтобы новая аудиодорожка была первой по счету. + # + # 1. Сначала в команду передается аудиофайл (он становится "файлом 0" для mkvmerge). + # 2. Затем передается видеофайл (он становится "файлом 1"). + # + # 3. Опция --track-order 1:0,0:0 приказывает mkvmerge собрать итоговый файл в таком порядке: + # - Сначала взять дорожку 0 из файла 1 (предположительно, это видео). + # - Затем взять дорожку 0 из файла 0 (это наша новая звуковая дорожка). + # - Все остальные дорожки из видеофайла (оригинальный звук, субтитры) будут добавлены после. + # + # 4. --language 0:rus устанавливает русский язык для дорожки 0 из файла 0 (нашей новой дорожки). + # + # В результате итоговый файл будет иметь структуру: [Видео], [Новое Аудио], [Старое Аудио], ... + # Plex выберет [Новое Аудио] по умолчанию. mkvmerge \ -o "$output_file" \ - --language 0:und "$video_file" \ - --language 1:rus "$audio_file" + --track-order 1:0,0:0 \ + --language 0:rus "$audio_file" \ + "$video_file" if [ $? -eq 0 ]; then echo "УСПЕХ: Файл создан." @@ -23,6 +47,8 @@ action_merge_mkv() { echo } +# Функция для создания символической ссылки +# (Эта функция остается без изменений) action_create_symlink() { local video_file="$1" local output_file="$2" @@ -40,7 +66,10 @@ action_create_symlink() { fi echo } + + # Главная функция запуска обработки +# (Эта функция остается без изменений) run_processing() { if ! logic_prepare_file_lists; then return 1; fi if [ ${#FILE_TRIPLETS[@]} -eq 0 ]; then @@ -64,7 +93,6 @@ run_processing() { fi fi - # Выполнение операции с прогресс-баром local total_files=${#FILE_TRIPLETS[@]} local current_file=0 @@ -73,7 +101,6 @@ run_processing() { progress=$(( 100 * current_file / total_files )) echo "$progress" - # --- ИСПРАВЛЕНИЕ ЗДЕСЬ: БОЛЕЕ НАДЕЖНЫЙ СПОСОБ ПОЛУЧИТЬ ИМЯ ФАЙЛА --- 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"