50 lines
1.1 KiB
Bash
Executable File
50 lines
1.1 KiB
Bash
Executable File
#/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 |