#!/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