|  |  | #!/bin/sh | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | file="/tmp/panel-btc-module" | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | # Enable mathematics in POSIX shell | 
						
						
						
							|  |  | calc() { awk "BEGIN { printf(\"%.2f\", $*) }"; } | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | data() { | 
						
						
						
							|  |  | 	[ -z "$1" ] && return 1 | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | 	url="$1" | 
						
						
						
							|  |  | 	curl --location --request GET --silent "$url" | 
						
						
						
							|  |  | } | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | output() { | 
						
						
						
							|  |  | 	[ -z "$1" ] && return 1 | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | 	# Get symbol and color | 
						
						
						
							|  |  | 	difference="$1" | 
						
						
						
							|  |  | 	possitive=$(calc "$difference >= 0" | cut -c 1) | 
						
						
						
							|  |  | 	if [ "$possitive" -eq 1 ]; then | 
						
						
						
							|  |  | 		symbol="" | 
						
						
						
							|  |  | 		color="$COLOR2" | 
						
						
						
							|  |  | 	else | 
						
						
						
							|  |  | 		symbol="" | 
						
						
						
							|  |  | 		color="$COLOR1" | 
						
						
						
							|  |  | 	fi | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | 	# Result | 
						
						
						
							|  |  | 	# >>> session=xorg | 
						
						
						
							|  |  | 	echo "%{F$color}$symbol $difference%%{F$COLOR15}" | 
						
						
						
							|  |  | 	# <<< | 
						
						
						
							|  |  | 	# >>> session=wayland | 
						
						
						
							|  |  | 	# echo "<span color='$color'>$symbol $difference%</span>" | 
						
						
						
							|  |  | 	# <<< | 
						
						
						
							|  |  | } | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | if [ ! -f "$file" ]; then | 
						
						
						
							|  |  | 	touch "$file" | 
						
						
						
							|  |  | else | 
						
						
						
							|  |  | 	# Only pull if older than 10 seconds | 
						
						
						
							|  |  | 	lastModified=$(calc "$(date +%s) - $(date +%s -r $file) >= 10" | cut -c 1) | 
						
						
						
							|  |  | 	if [ "$lastModified" -eq 0 ]; then cat "$file"; exit; fi | 
						
						
						
							|  |  | fi | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | # Get dates | 
						
						
						
							|  |  | date_last_week_start="$(date --date 'last week' +%s000)" | 
						
						
						
							|  |  | date_last_week_end=$(calc "$date_last_week_start + (1000 * 60 * 60)") # +1h | 
						
						
						
							|  |  | date_last_week_end=${date_last_week_end%.00} # cut off ".00" at the end | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | # API URLs | 
						
						
						
							|  |  | url="https://api.coincap.io/v2/assets/bitcoin" | 
						
						
						
							|  |  | url_last_week="${url}/history?interval=h1&start=${date_last_week_start}&end=${date_last_week_end}" | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | # Current price | 
						
						
						
							|  |  | data="$(data "$url")" | 
						
						
						
							|  |  | data_first_character="$(echo "$data" | cut -c 1)" | 
						
						
						
							|  |  | if [ "$data_first_character" != "{" ]; then cat "$file"; exit; fi | 
						
						
						
							|  |  | price="$(echo "$data" | jq --compact-output --raw-output '.data.priceUsd')" | 
						
						
						
							|  |  | price=$(calc "$price") | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | # Get yesterdays difference | 
						
						
						
							|  |  | difference_yesterday="$(echo "$data" | jq --compact-output --raw-output '.data.changePercent24Hr')" | 
						
						
						
							|  |  | difference_yesterday="$(calc "$difference_yesterday")" | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | # Get last weeks difference | 
						
						
						
							|  |  | data_last_week="$(data "$url_last_week")" | 
						
						
						
							|  |  | data_last_week_first_character="$(echo "$data_last_week" | cut -c 1)" | 
						
						
						
							|  |  | if [ "$data_last_week_first_character" != "{" ]; then cat "$file"; exit; fi | 
						
						
						
							|  |  | price_last_week="$(echo "$data_last_week" | jq --compact-output --raw-output '.data[0].priceUsd')" | 
						
						
						
							|  |  | difference_last_week=$(calc "$price / $price_last_week * 100 - 100") | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | # Create output formatting | 
						
						
						
							|  |  | difference_yesterday_output="d $(output "$difference_yesterday")" | 
						
						
						
							|  |  | difference_last_week_output="w $(output "$difference_last_week")" | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | echo "\$$price  $difference_yesterday_output  $difference_last_week_output" > "$file" | 
						
						
						
							|  |  | echo "\$$price  $difference_yesterday_output  $difference_last_week_output"
 | 
						
						
						
							|  |  | 
 |