160 lines
3.1 KiB
Bash
Executable File
160 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
function setTitle(){
|
|
KEY="$1"
|
|
NFO="${KEY}.nfo"
|
|
if [ -f "$NFO" ]; then
|
|
TITLE=$(xmllint --xpath 'string(//title)' "$NFO")
|
|
YEAR=$(xmllint --xpath 'string(//year)' "$NFO")
|
|
fi
|
|
|
|
if [ -n "$TITLE" ]; then
|
|
echo "Setting title to '$TITLE'"
|
|
$RUN mkvpropedit --set title="$TITLE" "$MKV"
|
|
fi
|
|
# [ -n "$YEAR" ] && mkvpropedit --set year="$YEAR" "$MKV"
|
|
}
|
|
|
|
function appendMainInput() {
|
|
IN="$1"
|
|
CMD+=" -i \"${IN}\""
|
|
MAIN_INPUT_ID=$INPUT_ID
|
|
INPUT_ID=$((INPUT_ID+1))
|
|
}
|
|
|
|
function appendMainInputMapping() {
|
|
if [ -n "$MAIN_INPUT_ID" ]; then
|
|
CMD+=" -map $MAIN_INPUT_ID -c copy"
|
|
fi
|
|
}
|
|
|
|
function appendSrt() {
|
|
KEY="$1"
|
|
SRT="${KEY}.srt"
|
|
if [ -f "$SRT" ]; then
|
|
echo "Adding SRT: $SRT".
|
|
CMD+=" -i \"${SRT}\""
|
|
SRT_INPUT_ID=$INPUT_ID
|
|
INPUT_ID=$((INPUT_ID+1))
|
|
fi
|
|
}
|
|
|
|
function appendSrtMapping() {
|
|
if [ -n "$SRT_INPUT_ID" ]; then
|
|
echo "Mapping SRT: $SRT_INPUT_ID".
|
|
CMD+=" -map $SRT_INPUT_ID -c:s mov_text -metadata:s:s:0 language=eng"
|
|
fi
|
|
}
|
|
|
|
function addCover(){
|
|
KEY="$1"
|
|
COVER="${KEY}-poster.jpg"
|
|
|
|
if [ ! -f "$COVER" ]; then
|
|
COVER="${KEY}.jpg"
|
|
fi
|
|
|
|
if [ -f "$COVER" ]; then
|
|
# convert "$COVER" -resize 600x /tmp/cover.jpg
|
|
echo "Attaching cover '$COVER'"
|
|
ACMD+=" --artwork \"${COVER}\""
|
|
fi
|
|
}
|
|
|
|
function addTitle(){
|
|
KEY="$1"
|
|
NFO="${KEY}.nfo"
|
|
if [ -f "$NFO" ]; then
|
|
TITLE=$(xmllint --xpath 'string(//title)' "$NFO")
|
|
fi
|
|
|
|
if [ -n "$TITLE" ]; then
|
|
echo "Setting title to '$TITLE'"
|
|
ACMD+=" --title \"$TITLE\""
|
|
fi
|
|
}
|
|
|
|
function addYear(){
|
|
KEY="$1"
|
|
NFO="${KEY}.nfo"
|
|
if [ -f "$NFO" ]; then
|
|
YEAR=$(xmllint --xpath 'string(//year)' "$NFO")
|
|
fi
|
|
|
|
if [ -n "$TITLE" ]; then
|
|
echo "Setting year to '$YEAR'"
|
|
ACMD+=" --year $YEAR"
|
|
fi
|
|
}
|
|
|
|
|
|
function mkvAddSub() {
|
|
MKV="$1"
|
|
IDX="${KEY}.idx"
|
|
SUB="${KEY}.sub"
|
|
if [ -f "$SUB" ]; then
|
|
OUT="${KEY}.SUB.mkv"
|
|
echo "Adding SUB: $OUT".
|
|
OUT+=" -i '$SRT' -map $INPUT_ID -c:s mov_text -metadata:s:s:1 language=eng"
|
|
$RUN ffmpeg -y -i "$MKV" -i "$IDX" -i "$SUB" -map 0 -c copy -map 1 -c:s:1 dvd_subtitle -f matroska "$OUT"
|
|
INPUT_ID=$((INPUT_ID+1))
|
|
fi
|
|
}
|
|
|
|
ARGS=$(getopt -o 'nas' -- "$@") || exit
|
|
eval "set -- $ARGS"
|
|
|
|
RUN=eval
|
|
ADD_SRT=1
|
|
while true; do
|
|
case $1 in
|
|
-n)
|
|
RUN=echo
|
|
;;
|
|
-a)
|
|
ADD_AAC=1
|
|
;;
|
|
-s)
|
|
ADD_SRT=1
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
*)
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
INPUT="$1"
|
|
INPUT_ID=0
|
|
KEY="${INPUT%.*}"
|
|
OUT="${KEY}.mp4"
|
|
CMD="ffmpeg"
|
|
|
|
appendMainInput "$INPUT"
|
|
|
|
if [ -n "$ADD_SRT" ]; then
|
|
appendSrt "$KEY"
|
|
# appendSub "$KEY"
|
|
fi
|
|
|
|
appendMainInputMapping
|
|
# setTitle "$KEY"
|
|
appendSrtMapping
|
|
CMD+=" \"${OUT}\""
|
|
|
|
$RUN "$CMD"
|
|
|
|
addTitle "$KEY"
|
|
addYear "$KEY"
|
|
addCover "$KEY"
|
|
if [ -n "$ACMD" ]; then
|
|
TMPOUT="${KEY}.tmp.mp4"
|
|
$RUN "mv \"${OUT}\" \"${TMPOUT}\" "
|
|
$RUN "AtomicParsley \"${TMPOUT}\" $ACMD --output \"${OUT}\""
|
|
fi
|
|
|