Refactor program so that each converted file is instantly moved to the NEW directory struture. Start using mv for all operations and remove the non-MP3 originals after converted successfully.

This commit is contained in:
Hyperling 2025-04-13 11:26:49 -07:00
parent a513995ad9
commit 38aceb3220

View File

@ -32,6 +32,8 @@ OLD_DIR="$DIR/$OLD"
NEW_DIR="$DIR/$NEW"
INT_DIR="$DIR/$INT"
cmd="mv"
## Checks and Setup ##
# System Packages #
@ -70,43 +72,9 @@ echo "** Folder exists appropriately."
echo "* Ensuring working directories NEW and INTERIM exist."
mkdir -pv "$NEW_DIR" "$INT_DIR"
## Convert Media ##
## Functions ##
# TODO: Use the INTERIM folder folder, or remove references to it entirely.
echo "* Ensure all files are mp3."
find "$OLD_DIR" -type f ! -name "*".$EXT | sort | while read file; do
echo "** Working on '$file'."
TEMP_DIR="`dirname "$file"`"
TEMP_DIR="${TEMP_DIR//$OLD/$INT}"
echo "TEMP_DIR='$TEMP_DIR'"
mkdir -pv "$TEMP_DIR"
TEMP_FILE="`basename "$file"`"
TEMP_FILE="${TEMP_FILE//[^[:alnum:][:space:].]/}"
echo "TEMP_FILE='$TEMP_FILE'"
if [[ -s "$TEMP_DIR/$TEMP_FILE" ]]; then
echo "*** Skipping file, already exists!"
continue
fi
# Actual conversion.
ffmpeg -y \
-nostdin -hide_banner -loglevel quiet \
-i "$file" "${file//$OLD/$INT}".$EXT
status="$?"
if [[ $status != 0 ]]; then
echo "*** FAILED: Exited with status '$status'."
echo "**** To troubleshoot, try running this:"
echo "ffmpeg -y -i \"$file\" \"${file//$OLD/$INT}\".$EXT"
else
echo "*** Success!"
fi
done
echo "** Done converting any mp3s."
## Transform Media ##
# Transform Media #
function migrate_music {
file="$1"
@ -270,7 +238,7 @@ function migrate_music {
fi
if [[ "$skip" == "true" ]]; then
echo "*** Skipping file, critical data missing."
echo -e "*** Skipping, critical data missing, please add EXIF data.\n"
return 1
fi
@ -281,18 +249,54 @@ function migrate_music {
new_file="$NEW_DIR/$new_file"
$command -v "$file" "$new_file"
echo "*** Finished file!"
echo -e "*** Finished file!\n"
}
echo "* Moving INTERIM files to NEW."
find "$INT_DIR" -name "*".$EXT | sort | while read file; do
migrate_music "$file" mv
## Main ##
# Convert Media #
echo "* Ensure all files are mp3."
find "$OLD_DIR" -type f ! -name "*".$EXT | sort | while read file; do
echo "** Working on '$file'."
temp_file="`basename "$file"`"
temp_file="$INT_DIR/${temp_file//[^[:alnum:][:space:].]/}.$EXT"
echo "temp_file='$temp_file'"
status=""
if [[ ! -s "$temp_file" ]]; then
# Actual conversion.
ffmpeg -y \
-nostdin -hide_banner -loglevel quiet \
-i "$file" "$temp_file"
status="$?"
fi
if [[ $status != 0 ]]; then
echo "*** FAILED: Exited with status '$status'."
echo "**** To troubleshoot, try running this:"
echo "ffmpeg -y -i \"$file\" \"$temp_file\""
exit
fi
echo "*** Success!"
echo "*** Moving file to NEW."
migrate_music "$temp_file" $cmd
echo "*** Removing original."
if [[ -d ~/TRASH ]]; then
mv -v $file ~/TRASH/
else
rm -v $file
fi
done
echo "** Done converting any mp3s."
echo "** Done with INTERIM, deleting."
rm -rfv "$INT_DIR"
echo "* Copying OLD files to NEW."
find "$OLD_DIR" -name "*".$EXT | sort | while read file; do
migrate_music "$file" cp
migrate_music "$file" $cmd
done