#!/bin/bash

#Simple wrapper for realesrgan-ncnn-vulcan (https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan).
#By Frank Endres <frankendres@tuxfamily.org> - disabled, use first@last.fr
#Public Domain (2023-04-30)

set -euo pipefail

model="realesr-animevideov3"
suffix="anime"
geom="1920x1080"
while (( $# != 0 )) && ( [ "$1" == "-g" ] || echo "$1" | grep -q "^[0-9]\+x[0-9]\+$" ); do
	if [ "$1" == "-g" ]; then 
		model="realesrgan-x4plus"
		suffix="general"
	else
		geom="$1"
	fi
	shift
done

if (( $# == 0 )) || [ "$1" == "--help" ]; then 
	echo "usage: $0 [-g] [3840×2160] img1 [img2 ...]"
	exit 0
fi

while (( $# != 0 )); do
	in_img=("$1") #pattern globbing
	for in_img in ${in_img[@]}; do #pattern globbing
		if [ -f "$in_img" ] && ! echo "$in_img" | grep -q "$suffix.jpg$" && [ $(file --mime "$1" | sed 's@.*: \([^/]\+\)/.*$@\1@') == "image" ]; then
			out_img=$(echo $(dirname "$in_img")/$(basename "$in_img" | rev | cut -f2- -d. | rev)-$suffix.jpg | sed 's@^\./@@')
			realesrgan-ncnn-vulkan -n $model -i "$in_img" -o "$out_img" #2>/dev/null
			mogrify -resize $geom "$out_img"
		fi
	done
	shift
done
