diff --git a/refactor_music_library.sh b/refactor_music_library.sh index c2dc253..f87f809 100755 --- a/refactor_music_library.sh +++ b/refactor_music_library.sh @@ -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