Release 2.01

- Fixed error output on 'mv' commands
- Added error checking for when Recycle Bin is configured but doesn't exist
- Reordered error redirects.  No functional difference.
- Updated Readme
- Updated Usage display
This commit is contained in:
TheCaptain989
2021-07-04 17:36:37 -05:00
parent 194b1c7b85
commit 7f413a28c6
2 changed files with 35 additions and 30 deletions
+1 -1
View File
@@ -76,7 +76,7 @@ Both audio and subtitles that match the selected language(s) are kept.
>**Note:** The intent of the Radarr language selection 'Original' is not well documented. For the purposes of this script, it has the same function as 'Any' and will preserve all languages in the video file. >**Note:** The intent of the Radarr language selection 'Original' is not well documented. For the purposes of this script, it has the same function as 'Any' and will preserve all languages in the video file.
#### Manual Override #### Manual Override
The script still supports command line arguments that can override what is detected. More granular control can be therefore be exerted or extended using tagging and defining multiple Connect scripts (this is outside the scope of this documentation). The script still supports command line arguments that will override what is detected. More granular control can therefore be exerted or extended using tagging and defining multiple Connect scripts (this is native Radarr/Sonarr functionality outside the scope of this documentation).
The script accepts two command line arguments and one option: The script accepts two command line arguments and one option:
+34 -29
View File
@@ -86,7 +86,7 @@ Video remuxing script designed for use with Radarr and Sonarr
Source: https://github.com/TheCaptain989/radarr-striptracks Source: https://github.com/TheCaptain989/radarr-striptracks
Usage: Usage:
$0 [-d] [<audio_languages> [<subtitle_languages>]] $0 [-d] <audio_languages> <subtitle_languages>
Options and Arguments: Options and Arguments:
-d enable debug logging -d enable debug logging
@@ -103,7 +103,7 @@ Examples:
# and Japanese audio, and English and # and Japanese audio, and English and
# Spanish subtitles # Spanish subtitles
" "
>&2 echo "$usage" echo "$usage" >&2
} }
# Can still go over striptracks_maxlog if read line is too long # Can still go over striptracks_maxlog if read line is too long
# Must include whole function in subshell for read to work! # Must include whole function in subshell for read to work!
@@ -216,7 +216,7 @@ while getopts ":d" opt; do
d ) # For debug purposes only d ) # For debug purposes only
striptracks_message="Debug|Enabling debug logging." striptracks_message="Debug|Enabling debug logging."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
striptracks_debug=1 striptracks_debug=1
printenv | sort | sed 's/^/Debug|/' | log printenv | sort | sed 's/^/Debug|/' | log
;; ;;
@@ -228,7 +228,7 @@ shift $((OPTIND -1))
if [ ! -f "/usr/bin/mkvmerge" ]; then if [ ! -f "/usr/bin/mkvmerge" ]; then
striptracks_message="Error|/usr/bin/mkvmerge is required by this script" striptracks_message="Error|/usr/bin/mkvmerge is required by this script"
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
exit 4 exit 4
fi fi
@@ -259,7 +259,7 @@ if [ -f "$striptracks_arr_config" ]; then
# Radarr/Sonarr version 2 # Radarr/Sonarr version 2
striptracks_message="Error|This script does not support ${striptracks_type^} version ${striptracks_arr_version}. Please upgrade." striptracks_message="Error|This script does not support ${striptracks_type^} version ${striptracks_arr_version}. Please upgrade."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
exit 8 exit 8
fi fi
@@ -272,7 +272,7 @@ else
# No config file means we can't call the API. Best effort at this point. # No config file means we can't call the API. Best effort at this point.
striptracks_message="Warn|Unable to locate ${striptracks_type^} config file: '$striptracks_arr_config'" striptracks_message="Warn|Unable to locate ${striptracks_type^} config file: '$striptracks_arr_config'"
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
# Handle Test event # Handle Test event
@@ -286,7 +286,7 @@ fi
if [ -z "$striptracks_video" ]; then if [ -z "$striptracks_video" ]; then
striptracks_message="Error|No video file specified! Not called from Radarr/Sonarr?" striptracks_message="Error|No video file specified! Not called from Radarr/Sonarr?"
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
usage usage
exit 1 exit 1
fi fi
@@ -295,7 +295,7 @@ fi
if [ ! -f "$striptracks_video" ]; then if [ ! -f "$striptracks_video" ]; then
striptracks_message="Error|Input file not found: \"$striptracks_video\"" striptracks_message="Error|Input file not found: \"$striptracks_video\""
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
exit 5 exit 5
fi fi
@@ -318,7 +318,7 @@ if [ -n "$striptracks_api_url" ]; then
# Should never fire due to previous check, but just in case # Should never fire due to previous check, but just in case
striptracks_message "Error|Unknown environment: ${striptracks_type}" striptracks_message "Error|Unknown environment: ${striptracks_type}"
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
exit 7 exit 7
fi fi
striptracks_profilename=$(echo $striptracks_profiles | jq -crM ".[] | select(.id == $striptracks_profileid).name") striptracks_profilename=$(echo $striptracks_profiles | jq -crM ".[] | select(.id == $striptracks_profileid).name")
@@ -333,26 +333,26 @@ if [ -n "$striptracks_api_url" ]; then
# 'hasFile' is False in returned JSON. # 'hasFile' is False in returned JSON.
striptracks_message="Warn|The '$striptracks_video_api' API with id $striptracks_video_id returned a false hasFile." striptracks_message="Warn|The '$striptracks_video_api' API with id $striptracks_video_id returned a false hasFile."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
else else
# Get Profiles API failed # Get Profiles API failed
striptracks_message="Warn|Unable to retrieve $striptracks_profile_type profiles from ${striptracks_type^} API" striptracks_message="Warn|Unable to retrieve $striptracks_profile_type profiles from ${striptracks_type^} API"
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
else else
# No URL means we can't call the API # No URL means we can't call the API
striptracks_message="Warn|Unable to determine ${striptracks_type^} API URL." striptracks_message="Warn|Unable to determine ${striptracks_type^} API URL."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
# Check for command line options; will override the detected languages # Check for command line options; will override the detected languages
if [ -z "$1" -a -z "$striptracks_langcodes" ]; then if [ -z "$1" -a -z "$striptracks_langcodes" ]; then
striptracks_message="Error|No audio languages specified!" striptracks_message="Error|No audio languages specified!"
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
usage usage
exit 2 exit 2
elif [ -z "$1" ]; then elif [ -z "$1" ]; then
@@ -363,7 +363,7 @@ fi
if [ -z "$2" -a -z "$striptracks_langcodes" ]; then if [ -z "$2" -a -z "$striptracks_langcodes" ]; then
striptracks_message="Error|No subtitles languages specified!" striptracks_message="Error|No subtitles languages specified!"
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
usage usage
exit 3 exit 3
elif [ -z "$2" ]; then elif [ -z "$2" ]; then
@@ -379,11 +379,11 @@ echo "$striptracks_message" | log
# Rename the original video file to a temporary name # Rename the original video file to a temporary name
[ $striptracks_debug -eq 1 ] && echo "Debug|Renaming: \"$striptracks_video\" to \"$striptracks_tempvideo\"" | log [ $striptracks_debug -eq 1 ] && echo "Debug|Renaming: \"$striptracks_video\" to \"$striptracks_tempvideo\"" | log
mv -f "$striptracks_video" "$striptracks_tempvideo" | log mv -f "$striptracks_video" "$striptracks_tempvideo" 2>&1 | log
striptracks_return=$?; [ "$striptracks_return" != 0 ] && { striptracks_return=$?; [ "$striptracks_return" != 0 ] && {
striptracks_message="ERROR[$striptracks_return]: Unable to rename video: \"$striptracks_video\" to temp video: \"$striptracks_tempvideo\". Halting." striptracks_message="ERROR[$striptracks_return]: Unable to rename video: \"$striptracks_video\" to temp video: \"$striptracks_tempvideo\". Halting."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
exit 6 exit 6
} }
@@ -393,7 +393,7 @@ striptracks_json=$(/usr/bin/mkvmerge -J "$striptracks_tempvideo")
striptracks_return=$?; [ "$striptracks_return" != 0 ] && { striptracks_return=$?; [ "$striptracks_return" != 0 ] && {
striptracks_message="ERROR[$striptracks_return]: Error executing mkvmerge." striptracks_message="ERROR[$striptracks_return]: Error executing mkvmerge."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
} }
# This and the modified AWK script are a hack, and I know it. JQ is crazy hard to learn, BTW. # This and the modified AWK script are a hack, and I know it. JQ is crazy hard to learn, BTW.
@@ -517,17 +517,22 @@ if [ -s "$striptracks_newvideo" ]; then
# Use Recycle Bin if configured # Use Recycle Bin if configured
if [ "$striptracks_recyclebin" ]; then if [ "$striptracks_recyclebin" ]; then
[ $striptracks_debug -eq 1 ] && echo "Debug|Recycling: \"$striptracks_tempvideo\" to \"${striptracks_recyclebin%/}/$(basename "$striptracks_video")"\" | log [ $striptracks_debug -eq 1 ] && echo "Debug|Recycling: \"$striptracks_tempvideo\" to \"${striptracks_recyclebin%/}/$(basename "$striptracks_video")"\" | log
mv "$striptracks_tempvideo" "${striptracks_recyclebin%/}/$(basename "$striptracks_video")" | log mv "$striptracks_tempvideo" "${striptracks_recyclebin%/}/$(basename "$striptracks_video")" 2>&1 | log
striptracks_return=$?; [ "$striptracks_return" != 0 ] && {
striptracks_message="ERROR[$striptracks_return]: Unable to move video: \"$striptracks_tempvideo\" to Recycle Bin: \"${striptracks_recyclebin%/}\""
echo "$striptracks_message" | log
echo "$striptracks_message" >&2
}
else else
[ $striptracks_debug -eq 1 ] && echo "Debug|Deleting: \"$striptracks_tempvideo\"" | log [ $striptracks_debug -eq 1 ] && echo "Debug|Deleting: \"$striptracks_tempvideo\"" | log
rm "$striptracks_tempvideo" | log rm "$striptracks_tempvideo" 2>&1 | log
fi fi
else else
striptracks_message="Error|Unable to locate or invalid remuxed file: \"$striptracks_newvideo\". Undoing rename." striptracks_message="Error|Unable to locate or invalid remuxed file: \"$striptracks_newvideo\". Undoing rename."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
[ $striptracks_debug -eq 1 ] && echo "Debug|Renaming: \"$striptracks_tempvideo\" to \"$striptracks_video\"" | log [ $striptracks_debug -eq 1 ] && echo "Debug|Renaming: \"$striptracks_tempvideo\" to \"$striptracks_video\"" | log
mv -f "$striptracks_tempvideo" "$striptracks_video" | log mv -f "$striptracks_tempvideo" "$striptracks_video" 2>&1 | log
exit 10 exit 10
fi fi
@@ -578,7 +583,7 @@ if [ -n "$striptracks_api_url" ]; then
else else
striptracks_message="Warn|Unable to update ${striptracks_type^} $striptracks_video_api '$striptracks_title' to quality '$(echo $striptracks_original_quality | jq -crM .quality.name)'" striptracks_message="Warn|Unable to update ${striptracks_type^} $striptracks_video_api '$striptracks_title' to quality '$(echo $striptracks_original_quality | jq -crM .quality.name)'"
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
else else
# The quality is already correct # The quality is already correct
@@ -589,44 +594,44 @@ if [ -n "$striptracks_api_url" ]; then
# No '.path' in returned JSON # No '.path' in returned JSON
striptracks_message="Warn|The '$striptracks_videofile_api' API with ${striptracks_video_api}File id $striptracks_videofile_id returned no path." striptracks_message="Warn|The '$striptracks_videofile_api' API with ${striptracks_video_api}File id $striptracks_videofile_id returned no path."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
else else
# 'hasFile' is False in returned JSON. # 'hasFile' is False in returned JSON.
striptracks_message="Warn|The '$striptracks_video_api' API with id $striptracks_video_id returned a false hasFile (Normal with Radarr on try #1)." striptracks_message="Warn|The '$striptracks_video_api' API with id $striptracks_video_id returned a false hasFile (Normal with Radarr on try #1)."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
else else
# Timeout or failure # Timeout or failure
striptracks_message="Warn|${striptracks_type^} job ID $striptracks_jobid timed out or failed." striptracks_message="Warn|${striptracks_type^} job ID $striptracks_jobid timed out or failed."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
else else
# Error from API # Error from API
striptracks_message="Error|The '$striptracks_rescan_api' API with $striptracks_json_key $striptracks_video_id failed." striptracks_message="Error|The '$striptracks_rescan_api' API with $striptracks_json_key $striptracks_video_id failed."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
done done
else else
# No '.path' in returned JSON # No '.path' in returned JSON
striptracks_message="Warn|The '$striptracks_videofile_api' API with ${striptracks_video_api}File id $striptracks_videofile_id returned no path." striptracks_message="Warn|The '$striptracks_videofile_api' API with ${striptracks_video_api}File id $striptracks_videofile_id returned no path."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
else else
# No video ID means we can't call the API # No video ID means we can't call the API
striptracks_message="Warn|Missing or empty environment variable: striptracks_video_id='$striptracks_video_id' or striptracks_videofile_id='$striptracks_videofile_id'" striptracks_message="Warn|Missing or empty environment variable: striptracks_video_id='$striptracks_video_id' or striptracks_videofile_id='$striptracks_videofile_id'"
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
else else
# No URL means we can't call the API # No URL means we can't call the API
striptracks_message="Warn|Unable to determine ${striptracks_type^} API URL." striptracks_message="Warn|Unable to determine ${striptracks_type^} API URL."
echo "$striptracks_message" | log echo "$striptracks_message" | log
>&2 echo "$striptracks_message" echo "$striptracks_message" >&2
fi fi
# Cool bash feature # Cool bash feature