Compare commits
	
		
			42 Commits
		
	
	
		
			ibattus-ma
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						ae44bf94b0
	
				 | 
					
					
						|||
| 
						
						
							
						
						71095eb629
	
				 | 
					
					
						|||
| 
						
						
							
						
						ef5d9031e3
	
				 | 
					
					
						|||
| 
						
						
							
						
						99951c1fb3
	
				 | 
					
					
						|||
| 
						
						
							
						
						120fec0843
	
				 | 
					
					
						|||
| 
						
						
							
						
						361b91fad2
	
				 | 
					
					
						|||
| 
						
						
							
						
						b98e3b6d34
	
				 | 
					
					
						|||
| 
						
						
							
						
						d143be1ed0
	
				 | 
					
					
						|||
| 
						
						
							
						
						a588e2807f
	
				 | 
					
					
						|||
| 
						
						
							
						
						d173d6904d
	
				 | 
					
					
						|||
| 6c96c6efb5 | |||
| b72f95407a | |||
| 315a49fe57 | |||
| 793310303b | |||
| e7448cf7be | |||
| d4818361c2 | |||
| 95b055db9b | |||
| f10f8cb3e4 | |||
| d6bd88d23a | |||
| b69d6335ec | |||
| 1a374005ef | |||
| e7944da8c7 | |||
| 30f7ba26da | |||
| 270874bac7 | |||
| f3a56b21c4 | |||
| 1b0e5ad2d2 | |||
| bfe0a6e67a | |||
| 0afade2057 | |||
| 556fdc21cf | |||
| 70c69b036e | |||
| 782f224f7f | |||
| 7ffc527e78 | |||
| 5adf9e1dd1 | |||
| 7a785deac1 | |||
| 6f24123e5d | |||
| 02c6a11db9 | |||
| fd18087026 | |||
| 3e3bf5d5b8 | |||
| 3daee5433a | |||
| 337c8ac62f | |||
| 973a34fecb | |||
| c0eb6ef02d | 
@@ -2,11 +2,14 @@ FROM archlinux
 | 
			
		||||
 | 
			
		||||
WORKDIR /root
 | 
			
		||||
 | 
			
		||||
# update all
 | 
			
		||||
RUN pacman -Syu --noconfirm
 | 
			
		||||
 | 
			
		||||
# Basic
 | 
			
		||||
RUN pacman -Sy --noconfirm mpv jq curl bc
 | 
			
		||||
RUN pacman -S --noconfirm mpv jq curl bc
 | 
			
		||||
 | 
			
		||||
# Ookla Speedtest
 | 
			
		||||
RUN pacman -Sy --noconfirm speedtest-cli
 | 
			
		||||
RUN pacman -S --noconfirm speedtest-cli
 | 
			
		||||
 | 
			
		||||
# LibreSpeed
 | 
			
		||||
RUN curl -LOJ https://github.com/librespeed/speedtest-cli/releases/download/v1.0.10/librespeed-cli_1.0.10_linux_amd64.tar.gz \
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										100
									
								
								bot.sh
									
									
									
									
									
								
							
							
						
						@@ -20,7 +20,7 @@ speedtest_upload_meter=data/speedtest_upload_meter_$date.png
 | 
			
		||||
speedtest_meter_image=data/speedtest_meter_image_$date.png
 | 
			
		||||
weather_file=data/weather_$date.json
 | 
			
		||||
edited_image=data/edited_image_$date.png
 | 
			
		||||
 | 
			
		||||
tg_log=data/tg_log_$date.json
 | 
			
		||||
#################################################################################
 | 
			
		||||
latency(){
 | 
			
		||||
	echo $(ping -c 1 $1) | \
 | 
			
		||||
@@ -49,7 +49,7 @@ echo Satellite Image grabbed
 | 
			
		||||
#################################################################################
 | 
			
		||||
echo Doing speedtest by Ookla
 | 
			
		||||
# Run speedtest and output to a file
 | 
			
		||||
speedtest --json > $speedtest_ookla
 | 
			
		||||
speedtest --json | tee $speedtest_ookla
 | 
			
		||||
# Extract information from the speedtest output
 | 
			
		||||
 | 
			
		||||
# Parsing JSON data
 | 
			
		||||
@@ -62,6 +62,13 @@ ookla_upload=$(jq '.upload' "$speedtest_ookla")
 | 
			
		||||
ookla_bytes_received=$(jq '.bytes_received' "$speedtest_ookla")
 | 
			
		||||
ookla_bytes_sent=$(jq '.bytes_sent' "$speedtest_ookla")
 | 
			
		||||
 | 
			
		||||
# replacing null values
 | 
			
		||||
[ -z "$ookla_ping" ] && ookla_ping="-"
 | 
			
		||||
[ -z "$ookla_download" ] && ookla_download=0
 | 
			
		||||
[ -z "$ookla_upload" ] && ookla_upload=0
 | 
			
		||||
[ -z "$ookla_bytes_received" ] && ookla_bytes_received=0
 | 
			
		||||
[ -z "$ookla_bytes_sent" ] && ookla_bytes_sent=0
 | 
			
		||||
 | 
			
		||||
# Converting to human readable units
 | 
			
		||||
ookla_download_mbps=$(echo "scale=2; $ookla_download / 1000000" | bc)
 | 
			
		||||
ookla_upload_mbps=$(echo "scale=2; $ookla_upload / 1000000" | bc)
 | 
			
		||||
@@ -70,34 +77,51 @@ ookla_bytes_sent_mb=$(echo "scale=2; $ookla_bytes_sent / 1048576" | bc)
 | 
			
		||||
 | 
			
		||||
ookla_total=$(echo $ookla_bytes_sent_mb+$ookla_bytes_received_mb | bc)
 | 
			
		||||
 | 
			
		||||
#echo Starting LibreSpeed
 | 
			
		||||
#librespeed-cli --json > $speedtest_libre
 | 
			
		||||
echo Starting LibreSpeed
 | 
			
		||||
librespeed-cli --json | tee $speedtest_libre
 | 
			
		||||
 | 
			
		||||
# Parsing JSON data
 | 
			
		||||
#libre_bytes_sent=$(jq '.[0].bytes_sent' "$speedtest_libre")
 | 
			
		||||
#libre_bytes_received=$(jq '.[0].bytes_received' "$speedtest_libre")
 | 
			
		||||
#libre_ping=$(jq '.[0].ping' "$speedtest_libre")
 | 
			
		||||
#libre_upload=$(jq '.[0].upload' "$speedtest_libre")
 | 
			
		||||
#libre_download=$(jq '.[0].download' "$speedtest_libre")
 | 
			
		||||
#libre_server_name=$(jq -r '.[0].server.name' "$speedtest_libre")
 | 
			
		||||
libre_bytes_sent=$(jq '.[0].bytes_sent' "$speedtest_libre")
 | 
			
		||||
libre_bytes_received=$(jq '.[0].bytes_received' "$speedtest_libre")
 | 
			
		||||
libre_ping=$(jq '.[0].ping' "$speedtest_libre")
 | 
			
		||||
libre_upload=$(jq '.[0].upload' "$speedtest_libre")
 | 
			
		||||
libre_download=$(jq '.[0].download' "$speedtest_libre")
 | 
			
		||||
libre_server_name=$(jq -r '.[0].server.name' "$speedtest_libre")
 | 
			
		||||
 | 
			
		||||
# Converting to human readable units
 | 
			
		||||
#libre_bytes_sent_mb=$(echo "scale=2; $libre_bytes_sent / 1048576" | bc)
 | 
			
		||||
#libre_bytes_received_mb=$(echo "scale=2; $libre_bytes_received / 1048576" | bc)
 | 
			
		||||
# replacing null values
 | 
			
		||||
[ "$libre_ping" = "null" ] || [ -z "$libre_ping" ] && libre_ping="-"
 | 
			
		||||
[ "$libre_download" = "null" ] || [ -z "$libre_download" ] && libre_download=0
 | 
			
		||||
[ "$libre_upload" = "null" ] || [ -z "$libre_upload" ] && libre_upload=0
 | 
			
		||||
[ "$libre_bytes_received" = "null" ] || [ -z "$libre_bytes_received" ] && libre_bytes_received=0
 | 
			
		||||
[ "$libre_bytes_sent" = "null" ] || [ -z "$libre_bytes_sent" ] && libre_bytes_sent=0
 | 
			
		||||
 | 
			
		||||
#libre_total=$(echo $libre_bytes_sent_mb+$libre_bytes_received_mb | bc)
 | 
			
		||||
# Converting to human readable units and replacing null values with 0
 | 
			
		||||
libre_bytes_sent_mb=$(echo "scale=2; $libre_bytes_sent / 1048576" | bc)
 | 
			
		||||
libre_bytes_received_mb=$(echo "scale=2; $libre_bytes_received / 1048576" | bc)
 | 
			
		||||
 | 
			
		||||
#echo Starting Fast
 | 
			
		||||
#fast --upload --json > $speedtest_fast
 | 
			
		||||
#fast_download_speed=$(jq '.downloadSpeed' "$speedtest_fast")
 | 
			
		||||
#fast_upload_speed=$(jq '.uploadSpeed' "$speedtest_fast")
 | 
			
		||||
#fast_latency=$(jq '.latency' "$speedtest_fast")
 | 
			
		||||
#fast_downloaded=$(jq '.downloaded' "$speedtest_fast")
 | 
			
		||||
#fast_uploaded=$(jq '.uploaded' "$speedtest_fast")
 | 
			
		||||
libre_total=$(echo $libre_bytes_sent_mb+$libre_bytes_received_mb | bc)
 | 
			
		||||
 | 
			
		||||
#fast_total=$(echo $fast_downloaded+$fast_uploaded | bc)
 | 
			
		||||
echo Starting Fast
 | 
			
		||||
fast --upload --json | tee $speedtest_fast
 | 
			
		||||
fast_download_speed=$(jq '.downloadSpeed' "$speedtest_fast")
 | 
			
		||||
fast_upload_speed=$(jq '.uploadSpeed' "$speedtest_fast")
 | 
			
		||||
fast_latency=$(jq '.latency' "$speedtest_fast")
 | 
			
		||||
fast_downloaded=$(jq '.downloaded' "$speedtest_fast")
 | 
			
		||||
fast_uploaded=$(jq '.uploaded' "$speedtest_fast")
 | 
			
		||||
 | 
			
		||||
total_wasted=$ookla_total
 | 
			
		||||
[ -z "$fast_latency" ] && fast_latency="-"
 | 
			
		||||
[ -z "$fast_download_speed" ] && fast_download_speed=0
 | 
			
		||||
[ -z "$fast_upload_speed" ] && fast_upload_speed=0
 | 
			
		||||
[ -z "$fast_downloaded" ] && fast_downloaded=0
 | 
			
		||||
[ -z "$fast_uploaded" ] && fast_uploaded=0
 | 
			
		||||
 | 
			
		||||
fast_total=$(echo $fast_downloaded+$fast_uploaded | bc)
 | 
			
		||||
 | 
			
		||||
average_download=$(echo $ookla_download_mbps+$libre_download+$fast_download_speed/3 | bc)
 | 
			
		||||
average_upload=$(echo $ookla_upload_mbps+$libre_upload+$fast_upload_speed/3| bc)
 | 
			
		||||
highest_download=$(echo $ookla_download_mbps $libre_download $fast_download_speed | tr ' ' '\n' | sort -nr | head -n1)
 | 
			
		||||
highest_upload=$(echo $ookla_upload_mbps $libre_upload $fast_upload_speed | tr ' ' '\n' | sort -nr | head -n1)
 | 
			
		||||
total_wasted=$(echo $ookla_total+$libre_total+$fast_total | bc)
 | 
			
		||||
 | 
			
		||||
echo Speedtests complete
 | 
			
		||||
#################################################################################
 | 
			
		||||
@@ -106,12 +130,15 @@ echo Speedtests complete
 | 
			
		||||
valorant_ping=$(latency dynamodb.ap-southeast-1.amazonaws.com)
 | 
			
		||||
cfdns_ping=$(latency 1.1.1.1)
 | 
			
		||||
googledns_ping=$(latency 8.8.8.8)
 | 
			
		||||
[ -z "$valorant_ping" ] && valorant_ping="-"
 | 
			
		||||
[ -z "$cfdns_ping" ] && cfdns_ping="-"
 | 
			
		||||
[ -z "$googledns_ping" ] && googledns_ping="-"
 | 
			
		||||
#################################################################################
 | 
			
		||||
 | 
			
		||||
#################################################################################
 | 
			
		||||
echo Checking weather
 | 
			
		||||
# Make the API request
 | 
			
		||||
curl -s "https://api.open-meteo.com/v1/forecast?latitude=${LATITUDE}&longitude=${LONGITUDE}¤t_weather=true" > $weather_file
 | 
			
		||||
curl -s "https://api.open-meteo.com/v1/forecast?latitude=${LATITUDE}&longitude=${LONGITUDE}¤t_weather=true" | tee $weather_file
 | 
			
		||||
# Extract Weather Condition and day or not
 | 
			
		||||
weather_condition=$(jq '.current_weather.weathercode' "$weather_file")
 | 
			
		||||
is_day=$(jq '.current_weather.is_day' "$weather_file")
 | 
			
		||||
@@ -150,32 +177,33 @@ echo Weather checked
 | 
			
		||||
#################################################################################
 | 
			
		||||
 | 
			
		||||
#################################################################################
 | 
			
		||||
ookla_download_angle=$(echo "scale=2; -118 + ($ookla_download_mbps - 0) / ($MAX_DOWNLOAD_SPEED - 0) * (118 - -118)" | bc)
 | 
			
		||||
ookla_upload_angle=$(echo "scale=2; -118 + ($ookla_upload_mbps - 0) / ($MAX_UPLOAD_SPEED - 0) * (118 - -118)" | bc)
 | 
			
		||||
 | 
			
		||||
download_angle=$(echo "scale=2; -118 + ($highest_download - 0) / ($MAX_DOWNLOAD_SPEED - 0) * (118 - -118)" | bc)
 | 
			
		||||
upload_angle=$(echo "scale=2; -118 + ($highest_upload - 0) / ($MAX_UPLOAD_SPEED - 0) * (118 - -118)" | bc)
 | 
			
		||||
 | 
			
		||||
convert $download_meter \
 | 
			
		||||
    \( $needle -background none \
 | 
			
		||||
               -rotate $ookla_download_angle \) \
 | 
			
		||||
               -rotate $download_angle \) \
 | 
			
		||||
    -gravity center \
 | 
			
		||||
    -compose over \
 | 
			
		||||
    -composite \
 | 
			
		||||
    -pointsize 41 \
 | 
			
		||||
    -font $font \
 | 
			
		||||
    -fill white \
 | 
			
		||||
    -annotate +0+-15 $ookla_download_mbps \
 | 
			
		||||
    -annotate +0+-15 $highest_download \
 | 
			
		||||
    -annotate +120+85 $MAX_DOWNLOAD_SPEED \
 | 
			
		||||
    $speedtest_download_meter
 | 
			
		||||
 | 
			
		||||
convert $upload_meter \
 | 
			
		||||
    \( $needle -background none \
 | 
			
		||||
               -rotate $ookla_upload_angle \) \
 | 
			
		||||
               -rotate $upload_angle \) \
 | 
			
		||||
    -gravity center \
 | 
			
		||||
    -compose over \
 | 
			
		||||
    -composite \
 | 
			
		||||
    -pointsize 41 \
 | 
			
		||||
    -font $font \
 | 
			
		||||
    -fill white \
 | 
			
		||||
    -annotate +0+-15 $ookla_upload_mbps \
 | 
			
		||||
    -annotate +0+-15 $highest_upload \
 | 
			
		||||
    -annotate +120+85 $MAX_UPLOAD_SPEED \
 | 
			
		||||
    $speedtest_upload_meter
 | 
			
		||||
 | 
			
		||||
@@ -207,6 +235,16 @@ $current_weather
 | 
			
		||||
⬇️  *Download*: $ookla_download_mbps Mbit/s, Used: $ookla_bytes_received_mb MB
 | 
			
		||||
⬆️  *Upload*: $ookla_upload_mbps Mbit/s, Used: $ookla_bytes_sent_mb MB
 | 
			
		||||
 | 
			
		||||
*LibreSpeed*:
 | 
			
		||||
🌐 *Server*: $libre_server_name
 | 
			
		||||
🏓 *Latency*: $libre_ping ms
 | 
			
		||||
⬇️  *Download*: $libre_download Mbit/s, Used: $libre_bytes_received_mb MB
 | 
			
		||||
⬆️  *Upload*: $libre_upload Mbit/s, Used $libre_bytes_sent_mb MB
 | 
			
		||||
 | 
			
		||||
*Fast Powered by Netflix*:
 | 
			
		||||
🏓 *Latency*: $fast_latency ms
 | 
			
		||||
⬇️  *Download*: $fast_download_speed Mbit/s, Used: $fast_downloaded MB
 | 
			
		||||
⬆️  *Upload*: $fast_upload_speed Mbit/s, Used: $fast_uploaded MB
 | 
			
		||||
 | 
			
		||||
Total data wasted: $total_wasted MB
 | 
			
		||||
"
 | 
			
		||||
@@ -218,7 +256,7 @@ curl -X POST https://api.telegram.org/bot$TG_BOT_TOKEN/sendMediaGroup \
 | 
			
		||||
    -F chat_id=$TG_CHATID \
 | 
			
		||||
    -F media='[{"type": "photo", "media": "attach://photo1", "caption": "'"$caption"'", "parse_mode": "Markdown"}, {"type": "photo", "media": "attach://photo2"}]' \
 | 
			
		||||
    -F photo1=@$speedtest_meter_image \
 | 
			
		||||
    -F photo2=@$satellite_image >> /dev/null
 | 
			
		||||
    -F photo2=@$satellite_image | tee $tg_log
 | 
			
		||||
#################################################################################
 | 
			
		||||
 | 
			
		||||
echo Ok done, Sleeping for $DELAY
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 16 KiB  | 
| 
		 Before Width: | Height: | Size: 27 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/cloud-with-lightning-and-rain.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 37 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/cloud-with-lightning.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 24 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/cloud-with-rain.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 35 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/cloud-with-snow.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 33 KiB  | 
| 
		 Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 16 KiB  | 
| 
		 Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 45 KiB  | 
| 
		 Before Width: | Height: | Size: 16 KiB  | 
| 
		 Before Width: | Height: | Size: 24 KiB  | 
| 
		 Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 58 KiB  | 
| 
		 Before Width: | Height: | Size: 24 KiB  | 
| 
		 Before Width: | Height: | Size: 33 KiB  | 
| 
		 Before Width: | Height: | Size: 15 KiB  | 
| 
		 Before Width: | Height: | Size: 20 KiB  | 
| 
		 Before Width: | Height: | Size: 31 KiB  | 
| 
		 Before Width: | Height: | Size: 19 KiB  | 
| 
		 Before Width: | Height: | Size: 18 KiB  | 
| 
		 Before Width: | Height: | Size: 18 KiB  | 
| 
		 Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 24 KiB  | 
| 
		 Before Width: | Height: | Size: 27 KiB  | 
| 
		 Before Width: | Height: | Size: 21 KiB  | 
| 
		 Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 60 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/sun-behind-cloud.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 25 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/sun-behind-large-cloud.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 22 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/sun-behind-rain-cloud.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 42 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/sun-behind-small-cloud.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 28 KiB  | 
| 
		 Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 44 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/sweat-droplets.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 74 KiB  | 
| 
		 Before Width: | Height: | Size: 19 KiB  | 
| 
		 Before Width: | Height: | Size: 21 KiB  | 
| 
		 Before Width: | Height: | Size: 39 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/wind-face.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 64 KiB  | 
| 
		 Before Width: | Height: | Size: 16 KiB  | 
| 
		 Before Width: | Height: | Size: 9.3 KiB  |