@@ -1037,7 +1037,7 @@ function execute_ff_command {
10371037 unset flac2mp3_ffresult
10381038 # This must be a declare statement to avoid the 'Argument list too long' error with some large returned JSON
10391039 declare -g flac2mp3_ffresult
1040- flac2mp3_ffresult=$( $command " ${ff_args[@]} " )
1040+ flac2mp3_ffresult=$( $command " ${ff_args[@]} " 2>&1 )
10411041 local return=$?
10421042 [ $flac2mp3_debug -ge 1 ] && echo " Debug|$shortcommand returned ${# flac2mp3_ffresult} bytes" | log
10431043 [ $flac2mp3_debug -ge 2 ] && [ ${# flac2mp3_ffresult} -ne 0 ] && echo " $shortcommand returned: $flac2mp3_ffresult " | awk ' {print "Debug|"$0}' | log
@@ -1172,7 +1172,7 @@ function process_tracks {
11721172
11731173 # Set metadata options to fix tags if asked
11741174 if [ -n " $flac2mp3_tags " ]; then
1175- local metadata=" "
1175+ local -a metadata=()
11761176 [ $flac2mp3_debug -ge 1 ] && echo " Debug|Detecting and fixing common problems with the following metadata tags: $flac2mp3_tags " | log
11771177
11781178 # Get track metadata
@@ -1186,15 +1186,15 @@ function process_tracks {
11861186 [ $flac2mp3_debug -ge 1 ] && echo " Debug|Original metadata: title=$tag_title " | log
11871187 local pattern=' \([^)]+\)$' # Rough way to limit editing metadata for every track
11881188 if [[ " $tag_title " =~ $pattern ]]; then
1189- metadata+=" -metadata title=\" $( echo " $tag_title " | sed -r ' s/\((live|acoustic|demo|[^)]*((re)?mix(es)?|dub|edit|version))\)$/[\1]/i' ) \" "
1189+ metadata+=( -metadata " title=$( echo " $tag_title " | sed -r ' s/\((live|acoustic|demo|[^)]*((re)?mix(es)?|dub|edit|version))\)$/[\1]/i' ) " )
11901190 fi
11911191 ;;
11921192 disc )
11931193 # Fix one disc by itself
11941194 local tag_disc=$( echo " $flac2mp3_ffprobe_json " | jq -crM ' .format.tags | to_entries[] | select(.key | match("disc"; "i")).value' )
11951195 [ $flac2mp3_debug -ge 1 ] && echo " Debug|Original metadata: disc=$tag_disc " | log
11961196 if [ " $tag_disc " = " 1" ]; then
1197- metadata+=' -metadata disc=" 1/1" '
1197+ metadata+=( -metadata ' disc=1/1' )
11981198 fi
11991199 ;;
12001200 genre )
@@ -1204,20 +1204,20 @@ function process_tracks {
12041204 # Only trigger on multiple genres
12051205 if [[ $tag_genre =~ \; ]]; then
12061206 case " $tag_genre " in
1207- * Synth-Pop* ) metadata+=' -metadata genre=" Electronica & Dance" ' ;;
1208- * Pop* ) metadata+=' -metadata genre=" Pop" ' ;;
1209- * Indie* ) metadata+=' -metadata genre=" Alternative & Indie" ' ;;
1210- * Industrial* ) metadata+=' -metadata genre=" Industrial Rock" ' ;;
1211- * Electronic* ) metadata+=' -metadata genre=" Electronica & Dance" ' ;;
1212- * Punk* |* Alternative* ) metadata+=' -metadata genre=" Alternative & Punk" ' ;;
1213- * Rock* ) metadata+=' -metadata genre=" Rock" ' ;;
1207+ * Synth-Pop* ) metadata+=( -metadata ' genre=Electronica & Dance' ) ;;
1208+ * Pop* ) metadata+=( -metadata ' genre=Pop' ) ;;
1209+ * Indie* ) metadata+=( -metadata ' genre=Alternative & Indie' ) ;;
1210+ * Industrial* ) metadata+=( -metadata ' genre=Industrial Rock' ) ;;
1211+ * Electronic* ) metadata+=( -metadata ' genre=Electronica & Dance' ) ;;
1212+ * Punk* |* Alternative* ) metadata+=( -metadata ' genre=Alternative & Punk' ) ;;
1213+ * Rock* ) metadata+=( -metadata ' genre=Rock' ) ;;
12141214 esac
12151215 fi
12161216 ;;
12171217 esac
12181218 done
12191219 # shellcheck disable=SC2090
1220- [ $flac2mp3_debug -ge 1 ] && echo " Debug|New metadata: ${metadata// -metadata / } " | log
1220+ [ $flac2mp3_debug -ge 1 ] && echo " Debug|New metadata: $( echo " $ {metadata[@]} " | sed -E ' s/ -metadata //g ' ) " | log
12211221 else
12221222 echo " Warn|ffprobe did not return any data when querying track: '$track '" | log
12231223 change_exit_status 12
@@ -1229,7 +1229,7 @@ function process_tracks {
12291229 local ffcommand=" nice /usr/bin/ffmpeg"
12301230 local IFS=$' \t\n ' # Temporarily restore IFS
12311231 # shellcheck disable=SC2090
1232- execute_ff_command " converting track: '$track ' to '$tempTrack '" " $ffcommand " -loglevel $flac2mp3_ffmpeg_log -nostdin -i " $track " $flac2mp3_ffmpeg_opts $ metadata " $tempTrack "
1232+ execute_ff_command " converting track: '$track ' to '$tempTrack '" " $ffcommand " -loglevel $flac2mp3_ffmpeg_log -nostdin -i " $track " $flac2mp3_ffmpeg_opts " ${ metadata[@]} " " $tempTrack "
12331233 local return=$? ; [ $return -ne 0 ] && {
12341234 change_exit_status 13
12351235 # Delete the temporary file if it exists
0 commit comments