Last active
August 10, 2023 22:03
-
-
Save Bitnik212/fa011810771ef789b1d578709ca6ffe1 to your computer and use it in GitHub Desktop.
MKV files merge tool
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/bash | |
nowmkv="[Erai-raws] World Trigger 2nd Season - $1 [1080p].mkv" && echo $nowmkv | |
nowep="e$1" && echo $nowep | |
mkvmerge -o "World_Trigger_s02${nowep}_[1080p].mkv" --language 0:rus 'RUS Sound'/"[Erai-raws] World Trigger 2nd Season - $1 [1080p].AniDub.ac3" --language 0:rus Subs/Crunchyroll/"[Erai-raws] World Trigger 2nd Season - $1 [1080p].ass" "$nowmkv" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# =========================== Init ============================================================================================================= | |
full_path=$(pwd) | |
# echo -e "$full_path \n" | |
# Список именованных аргументов | |
args_key_words=("sounds_folder_ru=" "subs_folder_ru=" "subs_folder_en=" "sounds_folder_en=" "start_episod=" "end_episod=") | |
# Системное | |
entered_arguments_count=0 | |
for arg in "$@" | |
do | |
for kw in "${args_key_words[@]}" | |
do | |
if [[ "$arg" == $kw* ]]; then | |
value=${arg/$kw/''} | |
if [[ $kw == ${args_key_words[0]} ]]; then | |
sounds_folder=$value | |
elif [[ $kw == ${args_key_words[1]} ]]; then | |
subs_folder=$value | |
elif [[ $kw == ${args_key_words[2]} ]]; then | |
subs_folder_en=$value | |
elif [[ $kw == ${args_key_words[3]} ]]; then | |
sounds_folder_en=$value | |
elif [[ $kw == ${args_key_words[4]} ]]; then | |
start_episod=$value | |
elif [[ $kw == ${args_key_words[5]} ]]; then | |
end_episod=$value | |
fi | |
((entered_arguments_count++)) | |
fi | |
done | |
done | |
if [[ $# -ne $entered_arguments_count ]]; then | |
echo "Не указан один или несколько из аргументов" | |
fi | |
function proccess_folder { | |
folder="$1" | |
lang="$2" | |
#echo "folder=$folder lang=$lang" | |
proccess_result="" | |
for sub_folder in "$folder"/* | |
do | |
folder_name=${sub_folder/"$folder/"/''} | |
for file in "$sub_folder"/* | |
do | |
if [[ $file == "$sub_folder/$template_file_name"* ]]; then | |
proccess_result="$proccess_result= --track-name 0:\"$folder_name\" --language 0:$lang \"$file\" " | |
fi | |
done | |
done | |
echo $proccess_result | |
} | |
# =========================== Main ============================================================================================================= | |
for (( i=$start_episod; i <= $end_episod; i++ )) | |
do | |
if [ $i -gt 99 ]; then | |
number="$i" | |
else | |
number="00$i" | |
fi | |
episod="s01e$number" | |
out_file_name="Naruto.576p.$episod.mkv" | |
template_file_name="[SOFCJ-Raws] Naruto - $number (DVDRip 768x576 HEVC VFR 10bit FLAC)" | |
in_file_name="$template_file_name.mkv" | |
result='' | |
ru_sounds_result=$(proccess_folder "$sounds_folder" "ru") | |
ru_subs_result=$(proccess_folder "$subs_folder" "ru") | |
en_sounds_result=$(proccess_folder "$sounds_folder_en" "en") | |
en_subs_result=$(proccess_folder "$subs_folder_en" "en") | |
result="-o \"$out_file_name\" $ru_sounds_result $ru_subs_result $en_sounds_result $en_subs_result \"$in_file_name\"" | |
#echo "==================================================" | |
#echo "$result" | |
eval "mkvmerge $result" | |
done |
Пример:
bash mkvmerge.sh sounds_folder_ru="Sound/Rus [Dub+MVO]" subs_folder_ru="Subs/Rus Sub" subs_folder_en="Subs/Eng Sub" sounds_folder_en="Sound/Eng [Dub]" start_episod=1 end_episod=200
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Работает только если: