PowerShell/Scripts/ping-weather.ps1

42 lines
1.8 KiB
PowerShell
Raw Normal View History

2022-06-28 15:49:36 +02:00
<#
.SYNOPSIS
Ping the currrent weather conditions
.DESCRIPTION
This PowerShell script continuously shows the current weather conditions (similar to htop, 10 min update interval by default).
.PARAMETER Location
Specifies the location to use (determined automatically per default)
.EXAMPLE
PS> ./ping-weather Paris
Sunny 🌡23°C 0.0mm 💨9km/h from S 0% 💧41% UV6 1020hPa 🕗10:24 AM UTC @Paris (Ile-de-France)...
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz | License: CC0
#>
param([string]$Location = "", [int]$UpdateInterval = 600000)
try {
do {
$Weather = (Invoke-WebRequest -URI http://wttr.in/${Location}?format=j1 -userAgent "curl" -useBasicParsing).Content | ConvertFrom-Json
$Description = $Weather.current_condition.WeatherDesc.value
$TempC = $Weather.current_condition.temp_C
$PrecipMM = $Weather.current_condition.precipMM
$WindSpeed = $Weather.current_condition.windspeedKmph
$WindDir = $Weather.current_condition.winddir16Point
$Clouds = $Weather.current_condition.cloudcover
$Humidity = $Weather.current_condition.humidity
2022-06-28 16:09:41 +02:00
$UV = $Weather.current_condition.uvIndex
$Visib = $Weather.current_condition.visibility
2022-06-28 15:49:36 +02:00
$Pressure = $Weather.current_condition.pressure
$Time = $Weather.current_condition.observation_time
$Area = $Weather.nearest_area.areaName.value
$Region = $Weather.nearest_area.region.value
2022-06-28 16:09:41 +02:00
"$Description 🌡$($TempC)°C ☂️$($PrecipMM)mm 💨$($WindSpeed)km/h from $WindDir ☁️$($Clouds)% 💧$($Humidity)% ☀UV$UV 👀$($Visib)km $($Pressure)hPa 🕗$Time UTC @$Area ($Region)..."
2022-06-28 15:49:36 +02:00
start-sleep -milliseconds $UpdateInterval
} while ($true)
exit 0 # success
} catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
exit 1
}