nixos-config/extraFiles/scripts/convert_images.sh

50 lines
1.1 KiB
Bash
Raw Permalink Normal View History

#/usr/bin/env bash
IFS=$'\n'
nix build nixpkgs\#imagemagick --no-link
CONVERT="$(nix eval nixpkgs\#imagemagick.outPath | tr -d '"')/bin/magick"
convert_cmd () {
if ! command -v magick &> /dev/null; then $CONVERT "$@"; else convert "$@"; fi
}
function max16 {
while [ `jobs | wc -l` -ge 16 ]
do
sleep 2
done
}
change_to_webp() {
f="$1"
file="${f%.*}"
file_webp="${file}.webp"
echo "Trying to convert to $file_webp"
if convert_cmd "$f" -define webp:thread-level=1 -define webp:method=6 -quality 99 "$file_webp"; then
if touch -r "$f" "$file_webp"; then
rm "$f"
echo "Finished converting $f"
else
echo "Failed to set old date to new file"
exit 1
fi
else
echo "Failed to convert $f"
exit 1;
fi
}
pushd $XDG_PICTURES_DIR
for f in `find "." \( -name "*.png" -type f -o -name "*.jpg" -type f -o -name "*.jpeg" -type f -o -name "*.avif" -type f \) \
-a -not \( -path "./Inne/Special/*" -o -path "./Inne/Emojis/*" -o -path "./Inne/MCSkins/*" -o -path "./Avatar/*" -o -path "./Inne/GIF/*" \)`;
do
max16; change_to_webp "$f" &
done
for job in `jobs -p`
do
echo "Waiting for: $job"
wait $job || let "FAIL+=1"
done
popd