diff --git a/compress-music.sh b/compress-music.sh new file mode 100755 index 0000000..83d4910 --- /dev/null +++ b/compress-music.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +source="$HOME/kskcloud/Musik/" +tmp="$HOME/Musik.tiny/" +destination="$HOME/kskcloud/Musik.tiny/" +placeholder="$destination/a" + +rm -rf "$tmp" +mkdir "$tmp" + +mkdir -p "$destination" + +# create a placeholder to prevent * from failing +touch "$placeholder" + +# copy original target files and existing files as cache +echo 'copying . . .' +cp -a --reflink=always "$source/"* "$destination/"* "$tmp" + +# compress with opus; +e because ffmpeg errors on .jpg, .txt, etc. +echo 'compressing . . .' +set +e +find "$tmp" -type f -not -name '*.opus' | parallel --eta --progress 'ffmpeg -v 0 -n -i ""{}"" -c:a libopus -map_metadata 0 -b:a 128k ""{.}.opus""' +set -e + +# delete all non-opus files +echo 'deleting . . .' +find "$tmp" -type f -not -name '*.opus' -delete + +# copy compressed files to target destination +cp -a --reflink=always "$tmp/"* "$destination" + +rm -r "$tmp" \ No newline at end of file