	#!/usr/bin/env bash

get_status() {
	s=$1
	if [ "$s" = "Playing" ]; then
		echo ""
	else
		echo ""
	fi
}

get_length_sec() {
	len=$1
	if [ -z "$len" ]; then
		echo 0
	else
		bc <<< "$len / 1000000"
	fi
}

get_length_time() {
	len=$1
	if [ -n "$len" ]; then
		len=$(bc <<< "$len / 1000000 + 1")
		date -d@"$len" +%M:%S
	else
		echo ""
	fi
}

get_position() {
	pos=$1
	len=$2
	if [ -n "$pos" ]; then
		bc -l <<< "$pos / $len * 100"
	else
		echo 0
	fi
}

get_position_time() {
	pos=$1
	if [ -n "$pos" ]; then
		date -d@"$(bc <<< "$pos / 1000000")" +%M:%S
	else
		echo ""
	fi
}

get_cover() {
	# COVER_URL=$1
	mkdir -p "eww_covers"
	cd "eww_covers" || exit

	IMGPATH="cover_art"

	playerctl -F metadata mpris:artUrl 2>/dev/null | while read -r COVER_URL; do
		if [[ "$COVER_URL" = https* ]]; then
			# if [ ! -e "eww_covers/$(basename "$COVER_URL")" ]; then
			# 	wget -N "$COVER_URL" -o /dev/null
			# 	# wget -N "$COVER_URL" -o "$IMGPATH"
			# fi

			# ln -s "$(basename "$COVER_URL")" "$IMGPATH"

			# echo "$IMGPATH"
			coverurl="$(playerctl metadata mpris:artUrl)"
			wget -O "$IMGPATH" "$coverurl" -q
			coverpath="$IMGPATH"
			wal -c
			themejson=$(wal -i "$IMGPATH" -n -t -e -s | grep -e 'color1' | sed 's/'\''/"/g')
			printf '{"image": "eww_covers/'"$coverpath"'", "color": '"$themejson"'}\n'
			# printf '{"image": "eww_covers/'"$coverpath"'"}\n'

			# echo "$themejson" | gojq '.colors'
			# echo 'COLORS: '

			# notify-send 'eww' 'i found a url!'
			cd ..
			# notify-send 'eww color changer' "here i go in the dir that has $(ls | tr '\n' ' ')"
			echo '//Auto generated color theme for image at:' "$coverurl" > './tmp/_colorscheme.colorpallete'
			printf '$colorbg: ' >> './tmp/_colorscheme.colorpallete'
			echo "$themejson" | gojq '.colors.color0' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$colortext: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color4' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color0: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color1' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color1: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color2' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color2: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color3' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color3: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color4' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color4: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color5' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color5: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color6' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color6: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color7' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color7: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color4' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			# printf '$colormusic: ' >> './tmp/_colorscheme.colorpallete'
			# printf "$themejson" | gojq '.colors.color4' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			# echo '' >> './tmp/_colorscheme.colorpallete'

			# Border gradient: color6 -> color5 -> color7
			gradient1=$(echo -n "$themejson" | gojq '.colors.color6' | sed 's/"//g')
			gradient2=$(echo -n "$themejson" | gojq '.colors.color5' | sed 's/"//g')
			gradient3=$(echo -n "$themejson" | gojq '.colors.color7' | sed 's/"//g')
			
			echo '# Auto generated color theme for image at:' "$coverurl" > './tmp/colors_generated.conf'
			echo 'general {' >> './tmp/colors_generated.conf'
			echo '    col.active_border = rgba('"${gradient1#*#}FF"') rgba('"${gradient2#*#}FF"') rgba('"${gradient3#*#}FF"') 45deg' >> './tmp/colors_generated.conf'
			echo '    col.inactive_border = rgba('"${gradient1#*#}66"')' >> './tmp/colors_generated.conf'
			echo '}' >> './tmp/colors_generated.conf'

			# cp './tmp/_colorscheme.colorpallete' './css/_colorscheme.scss'
			cd "eww_covers" || exit
			# notify-send 'eww color changer' 'okie dokie'
		elif [ "$COVER_URL" = "" ]; then
		    echo '{"image": "", "color": "$bg"}'
		else
			COVER_URL="${COVER_URL:7}"
			cp "$COVER_URL"  "$IMGPATH"
			coverpath="$IMGPATH"
			wal -c
			themejson=$(wal -i "$IMGPATH" -n -t -e -s | grep -e 'color1' | sed 's/'\''/"/g')
			printf '{"image": "eww_covers/'"$coverpath"'", "color": '"$themejson"'}\n'
			# echo "$themejson"

			printf '{"image": "'"$COVER_URL"'", "color": '"$themejson"'}\n'
			# printf '{"image": "eww_covers/'"$coverpath"'"}\n'

			# echo "$themejson" | gojq '.colors'
			# echo 'COLORS: '

			# notify-send 'eww' 'i found a file!'

			cd ..
			# notify-send 'eww color changer' "here i go in the dir that has $(ls | tr '\n' ' ')"
			echo '//Auto generated color theme for image at:' "$coverurl" > './tmp/_colorscheme.colorpallete'
			printf '$colorbg: ' >> './tmp/_colorscheme.colorpallete'
			echo "$themejson" | gojq '.colors.color0' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$colortext: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color4' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color0: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color1' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color1: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color2' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color2: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color3' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color3: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color4' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color4: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color5' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color5: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color6' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color6: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color7' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			printf '$color7: ' >> './tmp/_colorscheme.colorpallete'
			printf "$themejson" | gojq '.colors.color4' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			echo '' >> './tmp/_colorscheme.colorpallete'
			# printf '$colormusic: ' >> './tmp/_colorscheme.colorpallete'
			# printf "$themejson" | gojq '.colors.color4' | sed 's/"//g' | tr '\n' ';' >> './tmp/_colorscheme.colorpallete'
			# echo '' >> './tmp/_colorscheme.colorpallete'

			# Border gradient: color6 -> color5 -> color7
			gradient1=$(echo -n "$themejson" | gojq '.colors.color6' | sed 's/"//g')
			gradient2=$(echo -n "$themejson" | gojq '.colors.color5' | sed 's/"//g')
			gradient3=$(echo -n "$themejson" | gojq '.colors.color7' | sed 's/"//g')
			
			echo '# Auto generated color theme for image at:' "$coverurl" > './tmp/colors_generated.conf'
			echo 'general {' >> './tmp/colors_generated.conf'
			echo '    col.active_border = rgba('"${gradient1#*#}FF"') rgba('"${gradient2#*#}FF"') rgba('"${gradient3#*#}FF"') 45deg' >> './tmp/colors_generated.conf'
			echo '    col.inactive_border = rgba('"${gradient1#*#}66"')' >> './tmp/colors_generated.conf'
			echo '}' >> './tmp/colors_generated.conf'

			# cp './tmp/_colorscheme.colorpallete' './css/_colorscheme.scss'
			cd "eww_covers" || exit
		fi
	done
}

# SANITIZE FIX
sanitize() {
	echo "$1" | sed 's/"/\"/g'
}

if [ "$1" = "cover" ]; then
	get_cover
else
	echo '{"artist": "", "title": "", "status": "", "position": "", "position_time": "", "length": ""}'
	playerctl -F metadata -f '{{title}}\{{artist}}\{{status}}\{{position}}\' 2>/dev/null | while IFS="$(printf '\\')" read -r title artist status position; do
	
		len=$(playerctl metadata mpris:length)

		gojq --null-input -r -c \
			--arg artist "$(sanitize "$artist")" \
			--arg title "$(sanitize "$title")" \
			--arg status "$(get_status "$status")" \
			--arg pos "$(get_position "$position" "$len")" \
			--arg pos_time "$(get_position_time "$position")" \
			--arg length "$(get_length_time "$len")" \
			'{"artist": $artist, "title": $title, "status": $status, "position": $pos, "position_time": $pos_time, "length": $length}'
		
	done
fi