|
|
|
@ -1,56 +1,50 @@
|
|
|
|
|
#!/usr/bin/with-contenv bash
|
|
|
|
|
|
|
|
|
|
# SETTINGS
|
|
|
|
|
AudioVerification="${AUDIO_VERIFY}" # TRUE = ENABLED, Verifies FLAC/MP3 files for errors (fixes MP3's, deletes bad FLAC files)
|
|
|
|
|
ConversionFormat="${AUDIO_FORMAT}" # SET TO: OPUS or AAC or MP3 or ALAC or FLAC - converts lossless FLAC files to set format
|
|
|
|
|
ConversionBitrate="${AUDIO_BITRATE}" # Set to desired bitrate when converting to OPUS/AAC/MP3 format types
|
|
|
|
|
ReplaygainTagging="${AUDIO_REPLAYGAIN}" # TRUE = ENABLED, adds replaygain tags for compatible players (FLAC ONLY)
|
|
|
|
|
DetectNonSplitAlubms="${AUDIO_DSFA}" # TRUE = ENABLED :: Uses "MaxFileSize" to detect and mark download as failed if detected
|
|
|
|
|
MaxFileSize="${AUDIO_DSFAS}" # M = MB, G = GB :: Set size threshold for detecting single file albums
|
|
|
|
|
RequireBeetsMatch="${AUDIO_REQUIREBEETSTAGGING}" # true = enabled :: skips importing files that could not be matched using beets
|
|
|
|
|
|
|
|
|
|
#============FUNCTIONS============
|
|
|
|
|
|
|
|
|
|
settings () {
|
|
|
|
|
|
|
|
|
|
echo "Configuration:"
|
|
|
|
|
echo "Remove Non Audio Files: ENABLED"
|
|
|
|
|
echo "Duplicate File CleanUp: ENABLED"
|
|
|
|
|
if [ "${AudioVerification}" = TRUE ]; then
|
|
|
|
|
export LC_ALL=C.UTF-8
|
|
|
|
|
export LANG=C.UTF-8
|
|
|
|
|
TITLESHORT="APP"
|
|
|
|
|
|
|
|
|
|
Main () {
|
|
|
|
|
# SETTINGS
|
|
|
|
|
AudioVerification="${AUDIO_VERIFY}" # TRUE = ENABLED, Verifies FLAC/MP3 files for errors (fixes MP3's, deletes bad FLAC files)
|
|
|
|
|
ConversionFormat="${AUDIO_FORMAT}" # SET TO: OPUS or AAC or MP3 or ALAC or FLAC - converts lossless FLAC files to set format
|
|
|
|
|
ConversionBitrate="${AUDIO_BITRATE}" # Set to desired bitrate when converting to OPUS/AAC/MP3 format types
|
|
|
|
|
ReplaygainTagging="${AUDIO_REPLAYGAIN}" # TRUE = ENABLED, adds replaygain tags for compatible players (FLAC ONLY)
|
|
|
|
|
DetectNonSplitAlubms="${AUDIO_DSFA}" # TRUE = ENABLED :: Uses "MaxFileSize" to detect and mark download as failed if detected
|
|
|
|
|
MaxFileSize="${AUDIO_DSFAS}" # M = MB, G = GB :: Set size threshold for detecting single file albums
|
|
|
|
|
|
|
|
|
|
#============FUNCTIONS============
|
|
|
|
|
|
|
|
|
|
settings () {
|
|
|
|
|
|
|
|
|
|
echo "Configuration:"
|
|
|
|
|
echo "Remove Non Audio Files: ENABLED"
|
|
|
|
|
echo "Duplicate File CleanUp: ENABLED"
|
|
|
|
|
if [ "${AudioVerification}" = TRUE ]; then
|
|
|
|
|
echo "Audio Verification: ENABLED"
|
|
|
|
|
else
|
|
|
|
|
else
|
|
|
|
|
echo "Audio Verification: DISABLED"
|
|
|
|
|
fi
|
|
|
|
|
echo "Format: $ConversionFormat"
|
|
|
|
|
if [ "${ConversionFormat}" = FLAC ]; then
|
|
|
|
|
fi
|
|
|
|
|
echo "Format: $ConversionFormat"
|
|
|
|
|
if [ "${ConversionFormat}" = FLAC ]; then
|
|
|
|
|
echo "Bitrate: lossless"
|
|
|
|
|
echo "Replaygain Tagging: ENABLED"
|
|
|
|
|
elif [ "${ConversionFormat}" = ALAC ]; then
|
|
|
|
|
elif [ "${ConversionFormat}" = ALAC ]; then
|
|
|
|
|
echo "Bitrate: lossless"
|
|
|
|
|
else
|
|
|
|
|
else
|
|
|
|
|
echo "Conversion Bitrate: ${ConversionBitrate}k"
|
|
|
|
|
fi
|
|
|
|
|
if [ "${DetectNonSplitAlubms}" = TRUE ]; then
|
|
|
|
|
fi
|
|
|
|
|
if [ "${DetectNonSplitAlubms}" = TRUE ]; then
|
|
|
|
|
echo "Detect Non Split Alubms: ENABLED"
|
|
|
|
|
echo "Max File Size: $MaxFileSize"
|
|
|
|
|
else
|
|
|
|
|
else
|
|
|
|
|
echo "DetectNonSplitAlubms: DISABLED"
|
|
|
|
|
fi
|
|
|
|
|
if [ "${TagWithBeets}" = TRUE ]; then
|
|
|
|
|
echo "Tag with Beets: ENABLED"
|
|
|
|
|
else
|
|
|
|
|
echo "Tag with Beets: DISABLED"
|
|
|
|
|
fi
|
|
|
|
|
if [ "${RequireBeetsMatch}" = true ]; then
|
|
|
|
|
echo "Require Beets Match: ENABLED"
|
|
|
|
|
else
|
|
|
|
|
echo "Require Beets Match: DISABLED"
|
|
|
|
|
fi
|
|
|
|
|
echo "Processing: $1"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
echo "Processing: $1"
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clean () {
|
|
|
|
|
clean () {
|
|
|
|
|
if find "$1" -type f -iregex ".*/.*\.\(flac\|mp3\|m4a\|alac\|ogg\|opus\)" | read; then
|
|
|
|
|
if find "$1" -type f -not -iregex ".*/.*\.\(flac\|mp3\|m4a\|alac\|ogg\|opus\)" | read; then
|
|
|
|
|
find "$1" -type f -not -iregex ".*/.*\.\(flac\|mp3\|m4a\|alac\|ogg\|opus\)" -delete
|
|
|
|
@ -60,9 +54,9 @@ clean () {
|
|
|
|
|
else
|
|
|
|
|
echo "ERROR: NO AUDIO FILES FOUND" && exit 1
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
duplicatefilecleanup () {
|
|
|
|
|
duplicatefilecleanup () {
|
|
|
|
|
duplicate="FALSE"
|
|
|
|
|
if find "$1" -type f -mindepth 1 -iname "*([0-9]).*" | read; then
|
|
|
|
|
find "$1" -type f -mindepth 1 -iname "*([0-9]).*" -delete
|
|
|
|
@ -84,15 +78,15 @@ duplicatefilecleanup () {
|
|
|
|
|
echo "DUPLICATE FILE CLEANUP"
|
|
|
|
|
echo "DUPLICATE FILE CLEANUP COMPLETE"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
detectsinglefilealbums () {
|
|
|
|
|
detectsinglefilealbums () {
|
|
|
|
|
if find "$1" -type f -iregex ".*/.*\.\(flac\|mp3\|m4a\|alac\|ogg\|opus\)" -size +${MaxFileSize} | read; then
|
|
|
|
|
echo "ERROR: Non split album detected" && exit 1
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
verify () {
|
|
|
|
|
verify () {
|
|
|
|
|
if find "$1" -iname "*.flac" | read; then
|
|
|
|
|
verifytrackcount=$(find "$1"/ -iname "*.flac" | wc -l)
|
|
|
|
|
echo "Verifying: $verifytrackcount Tracks"
|
|
|
|
@ -127,9 +121,9 @@ verify () {
|
|
|
|
|
done
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
conversion () {
|
|
|
|
|
conversion () {
|
|
|
|
|
converttrackcount=$(find "$1"/ -name "*.flac" | wc -l)
|
|
|
|
|
targetformat="$ConversionFormat"
|
|
|
|
|
bitrate="$ConversionBitrate"
|
|
|
|
@ -184,9 +178,9 @@ conversion () {
|
|
|
|
|
echo "ERROR: ffmpeg not installed, please install ffmpeg to use this conversion feature"
|
|
|
|
|
sleep 5
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
replaygain () {
|
|
|
|
|
replaygain () {
|
|
|
|
|
if ! [ -x "$(command -v flac)" ]; then
|
|
|
|
|
echo "ERROR: METAFLAC replaygain utility not installed (ubuntu: apt-get install -y flac)"
|
|
|
|
|
elif find "$1" -iname "*.flac" | read; then
|
|
|
|
@ -194,59 +188,32 @@ replaygain () {
|
|
|
|
|
echo "Replaygain: Calculating $replaygaintrackcount Tracks"
|
|
|
|
|
find "$1" -iname "*.flac" -exec metaflac --add-replay-gain "{}" + && echo "Replaygain: $replaygaintrackcount Tracks Tagged"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
beets () {
|
|
|
|
|
trackcount=$(find "$1" -type f -iregex ".*/.*\.\(flac\|opus\|m4a\|mp3\)" | wc -l)
|
|
|
|
|
echo "Matching $trackcount tracks with Beets"
|
|
|
|
|
#============START SCRIPT============
|
|
|
|
|
|
|
|
|
|
touch "$1/beets-match"
|
|
|
|
|
sleep 0.1
|
|
|
|
|
settings "$1"
|
|
|
|
|
clean "$1"
|
|
|
|
|
duplicatefilecleanup "$1"
|
|
|
|
|
detectsinglefilealbums "$1"
|
|
|
|
|
|
|
|
|
|
if find "$1" -type f -iregex ".*/.*\.\(flac\|opus\|m4a\|mp3\)" | read; then
|
|
|
|
|
beet -c "/config/scripts/configs/beets-config.yaml" -l "$1/beets-library.blb" -d "$1" import -q "$1"
|
|
|
|
|
if find "$1" -type f -iregex ".*/.*\.\(flac\|opus\|m4a\|mp3\)" -newer "$1/beets-match" | read; then
|
|
|
|
|
echo "SUCCESS: Matched with beets!"
|
|
|
|
|
else
|
|
|
|
|
if [ "$RequireBeetsMatch" = true ]; then
|
|
|
|
|
echo "ERROR: RequireBeetsMatch enabled, performing cleanup"
|
|
|
|
|
rm -rf "$1"/*
|
|
|
|
|
sleep 0.1
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
echo "ERROR: Unable to match using beets, fallback to lidarr import matching..."
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
if [ "${AudioVerification}" = TRUE ]; then
|
|
|
|
|
verify "$1"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -f "$1/beets-match" ]; then
|
|
|
|
|
rm "$1/beets-match"
|
|
|
|
|
sleep 0.1
|
|
|
|
|
fi
|
|
|
|
|
conversion "$1"
|
|
|
|
|
|
|
|
|
|
if [ -f "$1/beets-library.blb" ]; then
|
|
|
|
|
rm "$1/beets-library.blb"
|
|
|
|
|
sleep 0.1
|
|
|
|
|
if [ "${ReplaygainTagging}" = TRUE ]; then
|
|
|
|
|
replaygain "$1"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#============START SCRIPT============
|
|
|
|
|
|
|
|
|
|
settings "$1"
|
|
|
|
|
clean "$1"
|
|
|
|
|
duplicatefilecleanup "$1"
|
|
|
|
|
detectsinglefilealbums "$1"
|
|
|
|
|
|
|
|
|
|
if [ "${AudioVerification}" = TRUE ]; then
|
|
|
|
|
verify "$1"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
conversion "$1"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Post Processing Complete!" && exit 0
|
|
|
|
|
#============END SCRIPT============
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if [ "${ReplaygainTagging}" = TRUE ]; then
|
|
|
|
|
replaygain "$1"
|
|
|
|
|
fi
|
|
|
|
|
Main "$@" | tee -a /config/scripts/logs/audio-pp.log
|
|
|
|
|
chmod 666 /config/scripts/logs/audio-pp.log
|
|
|
|
|
chown abc:abc /config/scripts/logs/audio-pp.log
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Post Processing Complete!" && exit 0
|
|
|
|
|
#============END SCRIPT============
|
|
|
|
|
exit $?
|
|
|
|
|