-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paththecleaner
executable file
·120 lines (116 loc) · 3.22 KB
/
thecleaner
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/env bash
# Check for tool dependencies
SELF_FULLPATH=`realpath $0`
SELF_DIR=`dirname $SELF_FULLPATH`
# Override default tool list
TOOLS=(mkvmerge mkvpropedit)
# Does not depend on any other scripts
SCRIPTS=NONE
if [ ! -r $SELF_DIR/toolchecker ]; then
echo "toolchecker not found."
exit 1
else
. $SELF_DIR/toolchecker
fi
if [ $# -lt 1 ]; then
echo "Need an input file at least."
echo "<input> [original audio format: dtsx,atmos,truehd,dtshd,flac,lpcm] [channel layout: 5.1, 7.1, etc] [path for output file]"
exit 1
elif [ $# -eq 1 ]; then
INPUT="${1}"
OUTPUT="${INPUT:0: -4}_1.mkv"
IFS=""
MERGEOPTIONS=(-o "${OUTPUT}"
-a eng
-s eng
--track-name 0:\
"${INPUT}")
unset IFS
elif [ $# -eq 2 ]; then
INPUT="$1"
OUTPUT="${INPUT:0: -4}_1.mkv"
case "$2" in
dtsx) TRACKNAME="DTS-X MA";;
atmos) TRACKNAME="Dolby Atmos";;
*) echo "Not Atmos or DTS-X, need a track layout (5.1, 7.1, etc)"; exit 1;;
esac
TRACKNAME="$TRACKNAME"
IFS=""
MERGEOPTIONS=(-o "${OUTPUT}"
-a eng
-s eng
--track-name 0:\
--track-name 1:"${TRACKNAME}"
"${INPUT}")
unset IFS
elif [ $# -eq 3 ]; then
INPUT="$1"
OUTPUT="${INPUT:0: -4}_1.mkv"
case "$2" in
dtsx) echo "No track layout allowed for object format."; exit 1;;
atmos) echo "No track layout allowed for object format."; exit 1;;
truehd) TRACKNAME="Opus from TrueHD ${3}";;
dtshd) TRACKNAME="Opus from DTS-HD MA ${3}";;
flac) TRACKNAME="Opus from FLAC ${3}";;
lpcm) TRACKNAME="Opus from LPCM ${3}";;
ac3) TRACKNAME="Dolby AC-3 ${3}";;
eac3) TRACKNAME="Dolby EAC-3 ${3}";;
aac) TRACKNAME="AAC ${3}";;
*) echo "Unrecognized original format."; exit 1;;
esac
IFS=""
MERGEOPTIONS=(-o "${OUTPUT}"
-a eng
-s eng
--track-name 0:\
--track-name 1:"${TRACKNAME}"
"${INPUT}")
unset IFS
elif [ $# -eq 4 ]; then
INPUT="$1"
case "$2" in
dtsx) echo "No track layout allowed for object format."; exit 1;;
atmos) echo "No track layout allowed for object format."; exit 1;;
truehd) TRACKNAME="Opus from TrueHD ${3}";;
dtshd) TRACKNAME="Opus from DTS-HD MA ${3}";;
flac) TRACKNAME="Opus from FLAC ${3}";;
lpcm) TRACKNAME="Opus from LPCM ${3}";;
ac3) TRACKNAME="Dolby AC-3 ${3}";;
eac3) TRACKNAME="Dolby EAC-3 ${3}";;
aac) TRACKNAME="AAC ${3}";;
*) echo "Unrecognized original format."; exit 1;;
esac
if [[ -z "${4:-}" ]]; then
OUTPUT="${INPUT:0: -4}_1.mkv"
else
OUTPUT="${4}/${INPUT}"
fi
IFS=""
MERGEOPTIONS=(-o "${OUTPUT}"
--no-attachments
--no-track-tags
--no-global-tags
--no-buttons
-a eng
-s eng
--track-name 0:\
--track-name 1:"${TRACKNAME}"
"${INPUT}")
unset IFS
else
echo "Unrecognized number of arguments."
exit 1
fi
if [ -f "${OUTPUT}" ]; then
echo "Output file exists."
exit 1
fi
echo "## Merging..."
echo "$MKVMERGE $(printf " %q" "${MERGEOPTIONS[@]}")"
$MKVMERGE "${MERGEOPTIONS[@]}"
if [ $? -eq 0 ]; then
echo "## Merge complete."
else
echo "## merge error"
exit 1
fi