# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-VERSION='2.7.2-UNRELEASED'
+VERSION='2.7.3-UNRELEASED'
usage ()
{
echo "-n No lookup. Don't query CDDB, just create and use template"
echo "-N Noninteractive. Never prompt for anything"
echo "-o <type1[,type2]...>"
-echo " Output file type(s) (vorbis,mp3,flac,spx,mpc,wav,m4a,opus,wv,ape,mp2,tta). Defaults to vorbis"
+echo " Output file type(s) (vorbis,mp3,flac,spx,mpc,wav,m4a,opus,mka,wv,ape,mp2,tta). Defaults to vorbis"
echo "-p Pad track numbers with 0's (if less than 10 tracks)"
echo "-P Use UNIX pipes to read+encode without wav files"
echo "-r <host1[,host2]...>"
fi
(
# These are from
- # http://www.xiph.org/vorbis/doc/v-comment.html
+ # https://www.xiph.org/vorbis/doc/v-comment.html
echo ARTIST="$TRACKARTIST"
echo ALBUM="$DALBUM"
fi
echo TRACKNUMBER=${TRACKNUM:-$1}
# TRACKTOTAL is not in the proposed, minimal list of standard field names from
- # xiph.org: http://www.xiph.org/vorbis/doc/v-comment.html but is in common usage
+ # xiph.org: https://www.xiph.org/vorbis/doc/v-comment.html but is in common usage
# and read by mediainfo, ffprobe, vlc, Aqualung, ogg123, Foobar. And now abcde :)
# The tag is quietly ignored by Audacious, MPlayer, mpv, XMMS....
echo TRACKTOTAL="${TRACKS}"
opus)
run_command tagtrack-$OUTPUT-$1 true
;;
+ mka)
+ run_command tagtrack-$OUTPUT-$1 true
+ ;;
flac)
(
echo ARTIST="$TRACKARTIST"
fi
echo TRACKNUMBER="${TRACKNUM:-$1}"
# TRACKTOTAL is not in the proposed, minimal list of standard field names from
- # xiph.org: http://www.xiph.org/vorbis/doc/v-comment.html but is in common usage
+ # xiph.org: https://www.xiph.org/vorbis/doc/v-comment.html but is in common usage
# and read by mediainfo, ffprobe, vlc, Aqualung, ogg123, Foobar. And now abcde :)
# The tag is quietly ignored by Audacious, MPlayer, mpv, XMMS....
echo TRACKTOTAL="${TRACKS}"
nice $ENCNICE $MP3ENCODER $MP3ENCODEROPTS --nogap $TRACKFILES
RETURN=$?
if [ "$RETURN" != "0" ]; then
- echo "nogap-encode: $ENCODER returned code $RETURN" >> errors
+ echo "nogap-encode: $ENCODER returned code $RETURN" >> "$ABCDETEMPDIR/errors"
else
for UTRACKNUM in $TRACKQUEUE
do
opus)
TEMPARG="PIPE_$OPUSENCODERSYNTAX"
;;
+ mka)
+ TEMPARG="PIPE_$MKAENCODERSYNTAX"
+ ;;
flac)
TEMPARG="PIPE_$FLACENCODERSYNTAX"
;;
opus)
OUTPUT=$OPUSOUTPUTCONTAINER
;;
+ mka)
+ OUTPUT=$MKAOUTPUTCONTAINER
+ ;;
flac)
OUTPUT=$FLACOUTPUTCONTAINER
;;
;;
esac
;;
+ mka)
+ case "$MKAENCODERSYNTAX" in
+ ffmpeg)
+ if [ "$DOTAG" = "y" ]; then
+ $RUN_COMMAND nice $EFFECTIVE_NICE $MKAENCODER -i "$IN" $MKAENCODEROPTS -metadata artist="$TRACKARTIST" \
+ -metadata album="$DALBUM" -metadata title="$TRACKNAME" -metadata track=${TRACKNUM:-$1} -metadata date="$CDYEAR" \
+ -metadata genre="$CDGENRE" -metadata comment="$COMMENT" "$OUT"
+ else
+ $RUN_COMMAND nice $EFFECTIVE_NICE $MKAENCODER -i "$IN" $MKAENCODEROPTS "$OUT"
+ fi
+ ;;
+ esac
+ ;;
flac)
case "$2" in
%local*%)
$NORMALIZER -b $NORMALIZEROPTS $TRACKFILES
RETURN=$?
if [ "$RETURN" != "0" ]; then
- echo "batch-normalize: $NORMALIZER returned code $RETURN" >> errors
+ echo "batch-normalize: $NORMALIZER returned code $RETURN" >> "$ABCDETEMPDIR/errors"
else
for UTRACKNUM in $TRACKQUEUE
do
- echo normalizetrack-$UTRACKNUM >> status
+ echo "normalizetrack-$UTRACKNUM" >> "$ABCDETEMPDIR/status"
done
fi
)
$NORMALIZER -b $NORMALIZEROPTS $TRACKFILES
RETURN=$?
if [ "$RETURN" != "0" ]; then
- echo "batch-normalize: $NORMALIZER returned code $RETURN" >> errors
+ echo "batch-normalize: $NORMALIZER returned code $RETURN" >> "$ABCDETEMPDIR/errors"
else
for UTRACKNUM in $TRACKQUEUE
do
- echo normalizetrack-$UTRACKNUM >> status
+ echo "normalizetrack-$UTRACKNUM" >> "$ABCDETEMPDIR/status"
done
fi
)
opus)
OUTPUT=$OPUSOUTPUTCONTAINER
;;
+ mka)
+ OUTPUT=$MKAOUTPUTCONTAINER
+ ;;
flac)
OUTPUT=$FLACOUTPUTCONTAINER
;;
opus)
OUTPUT=$OPUSOUTPUTCONTAINER
;;
+ mka)
+ OUTPUT=$MKAOUTPUTCONTAINER
+ ;;
flac)
OUTPUT=$FLACOUTPUTCONTAINER
;;
fi
echo "---- $(grep DTITLE "${CDDBPARSEFILE}" | cut '-d=' -f2- | tr -d \\r\\n ) ----"
if [ X"$SHOWCDDBYEAR" = "Xy" ]; then
- PARSEDYEAR=$(grep DYEAR "${CDDBPARSEFILE}" | cut '-d=' -f2-)
+ PARSEDYEAR=$(grep -a DYEAR "${CDDBPARSEFILE}" | cut '-d=' -f2-)
if [ ! X"$PARSEDYEAR" = "X" ]; then
echo "Year: $PARSEDYEAR"
fi
fi
if [ X"$SHOWCDDBGENRE" = "Xy" ]; then
- PARSEDGENRE=$(grep DGENRE "${CDDBPARSEFILE}" | cut '-d=' -f2-)
+ PARSEDGENRE=$(grep -a DGENRE "${CDDBPARSEFILE}" | cut '-d=' -f2-)
if [ ! X"$PARSEDGENRE" = "X" ]; then
echo "Genre: $PARSEDGENRE"
fi
if [ ! "$ONETRACK" = "y" ]; then
for TRACK in $(f_seq_row 1 $TRACKS)
do
- echo $TRACK: "$(grep ^TTITLE$(expr $TRACK - 1)= "${CDDBPARSEFILE}" | cut -f2- -d= | tr -d \\r\\n)"
+ echo $TRACK: "$(grep -a ^TTITLE$(expr $TRACK - 1)= "${CDDBPARSEFILE}" | cut -f2- -d= | tr -d \\r\\n)"
done
fi
}
echo "done." >> "$ABCDETEMPDIR/cddbchoices"
echo cddb-read-1-complete >> "$ABCDETEMPDIR/status"
echo cddb-choice=1 >> "$ABCDETEMPDIR/status"
- ATITLE=$(grep -e '^Album title:' "${ABCDETEMPDIR}/cd-text" | cut -c14- )
+ ATITLE=$(grep -ae '^Album title:' "${ABCDETEMPDIR}/cd-text" | cut -c14- )
echo "200 none ${ATITLE}" >> "$ABCDETEMPDIR/cddbquery"
# List out disc title/author and contents
echo ---- ${ATITLE} ---- >> "$ABCDETEMPDIR/cddbchoices"
for TRACK in $(f_seq_row 1 $TRACKS)
do
TRACKM1=$(($TRACK - 1))
- TITLE="$(grep -E ^Track\ +$TRACK: "$ABCDETEMPDIR/cd-text" | tr -d \\r\\n | sed 's~^Track ..: .~~g;'"s~'$~~g")"
+ TITLE="$(grep -aE ^Track\ +$TRACK: "$ABCDETEMPDIR/cd-text" | tr -d \\r\\n | sed 's~^Track ..: .~~g;'"s~'$~~g")"
echo "$TRACK: $TITLE" >> "$ABCDETEMPDIR/cddbchoices"
- sed "s~^TTITLE${TRACKM1}=.*~TTITLE${TRACKM1}=${TITLE}~" "$ABCDETEMPDIR/cddbread.1" > "$ABCDETEMPDIR/cddbread.new"
- mv -f "$ABCDETEMPDIR/cddbread.new" "$ABCDETEMPDIR/cddbread.1"
+ sed "s~^TTITLE${TRACKM1}=.*~TTITLE${TRACKM1}=${TITLE}~" "$ABCDETEMPDIR/cddbread.1" > "$ABCDETEMPDIR/cddbread.new" && \
+ mv -f "$ABCDETEMPDIR/cddbread.new" "$ABCDETEMPDIR/cddbread.1"
done
- sed "s~^DTITLE=.*~DTITLE=${ATITLE}~" "$ABCDETEMPDIR/cddbread.1" > "$ABCDETEMPDIR/cddbread.new"
- mv -f "$ABCDETEMPDIR/cddbread.new" "$ABCDETEMPDIR/cddbread.1"
+ sed "s~^DTITLE=.*~DTITLE=${ATITLE}~" "$ABCDETEMPDIR/cddbread.1" > "$ABCDETEMPDIR/cddbread.new" && \
+ mv -f "$ABCDETEMPDIR/cddbread.new" "$ABCDETEMPDIR/cddbread.1"
+ rm -f "$ABCDETEMPDIR/cddbread.new" # In case a sed error occurred
echo >> "$ABCDETEMPDIR/cddbchoices"
echo "cdtext-readcomplete" >> "$ABCDETEMPDIR/status"
}
MP3ENCODERSYNTAX=default
OGGENCODERSYNTAX=default
OPUSENCODERSYNTAX=default
+MKAENCODERSYNTAX=default
FLACENCODERSYNTAX=default
SPEEXENCODERSYNTAX=default
MPCENCODERSYNTAX=default
case "$OUTPUT" in
vorbis:*|ogg:*) OGGENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
opus:*) OPUSENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
+ mka:*) MKAENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
mp3:*) MP3ENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
flac:*) FLACENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
spx:*) SPEEXENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
[ "$OPUSENCODERSYNTAX" = "default" ] && OPUSENCODERSYNTAX=opusenc
OPUSOUTPUTCONTAINER=opus
;;
+ mka)
+ [ "$MKAENCODERSYNTAX" = "default" ] && MKAENCODERSYNTAX=ffmpeg
+ MKAOUTPUTCONTAINER=mka
+ ;;
mp3)
[ "$MP3ENCODERSYNTAX" = "default" ] && MP3ENCODERSYNTAX=lame
[ "$DOTAG" = "y" ] && NEEDTAGGER=y
OPUSENCODER="$OPUSENC"
;;
esac
+case "$MKAENCODERSYNTAX" in
+ ffmpeg)
+ MKAENCODEROPTS="${MKAENCODEROPTSCLI:-$FFMPEGENCOPTS}"
+ MKAENCODER="$FFMPEG"
+ ;;
+esac
case "$FLACENCODERSYNTAX" in
flac)
FLACENCODEROPTS="${FLACENCODEROPTSCLI:-$FLACOPTS}"
PIPEENCODERSVARCHECK="PIPE_$OGGENCODERSYNTAX" ;;
opus)
PIPEENCODERSVARCHECK="PIPE_$OPUSENCODERSYNTAX" ;;
+ mka)
+ PIPEENCODERSVARCHECK="PIPE_$MKAENCODERSYNTAX" ;;
flac)
PIPEENCODERSVARCHECK="PIPE_$FLACENCODERSYNTAX" ;;
spx)
# Make sure a buncha things exist
for X in $CDROMREADER $CDDISCID ${NEEDTAGGER+$TAGGER} $MP3ENCODER \
- $OGGENCODER $OPUSENCODER $FLACENCODER $SPEEXENCODER $MPCENCODER \
+ $OGGENCODER $OPUSENCODER $MKAENCODER $FLACENCODER $SPEEXENCODER $MPCENCODER \
$AACENCODER $WVENCODER $CDDBTOOL $APENCODER $MP2ENCODER $TTAENCODER \
${NEEDHTTPGET+$HTTPGET} ${NEEDDISTMP3+$DISTMP3} \
${NEEDCOMMENTER+$VORBISCOMMENT} ${NEEDMETAFLAC+$METAFLAC} \
if faac --help 2>&1 | grep -q -F 'MP4 support unavailable.'; then
echo "WARNING: Your copy of Faac does not have mp4 support"
echo "WARNING: Encoding untagged files to aac..."
- OUTPUTTYPE=aac
+ # Replace m4a with aac for single and multi-output encodes:
+ OUTPUTTYPE=$(echo "$OUTPUTTYPE" | sed 's/m4a/aac/')
else
echo "Using Faac to Tag AAC Tracks..."
fi