ARSO na svoji spletni strani objavlja vremenske razmere po opazovalnih postajah (za posamezne kraje) v obliki XML, HTML in RSS.
Kot vaja v slogu si želim pridobiti podatek za željeni kraj in ga objaviti v opravilni vrstici. Uporabim seveda Powershell.
Najprej prenesem datoteko:
$kraj=$kraj.ToUpper()
$ImeDat="http://meteo.arso.gov.si/uploads/probase/www/observ/surface/text/sl/observation_"+$kraj+"_latest.xml"
$wc=New-Object System.Net.WebClient
$wc.Encoding = [System.Text.Encoding]::UTF8
[xml]$doc = $wc.DownloadString($ImeDat)
Pri tem pazim, da datoteko prenesem kot UTF8, sicer se datoteka prenese kot ASCII in imam pri izpisu vrednosti težave s šumniki.
Pobrskam po datoteki:
$doc
xml data
--- ----
version="1.0" encoding="UTF-8" data
$doc.data
id : MeteoSI_WebMet_observation_xml
language : sl
(...)
metData : metData
Izluščim podatke, ki me zanimajo:
$temperatura=$doc.data.metData.t
In jih objavim v opravilni vrstici:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon
$objNotifyIcon.Icon = "C:\Program Files\Internet Explorer\images\bing.ico"
$objNotifyIcon.BalloonTipIcon = "Info"
$objNotifyIcon.BalloonTipText = $Sporocilo
$objNotifyIcon.BalloonTipTitle = "Vreme"
$objNotifyIcon.Visible = $True
$objNotifyIcon.ShowBalloonTip(10000)
Pri tem je ikona obvezna, zato izberem Bing za katero računam, da je na večini računalnikov.
Celotni skript gre takole:
function Pokazi-temperaturo{
Param([string]$kraj="ljubl-ana_brnik"
)
Process{
#
If ("nova-gor","celje","crnomelj","katarina","kocevje","kreda-ica","cerklje_letal-sce","maribor_slivnica","ljubl-ana_brnik","lesce","portoroz_secovlje","lisca","ljubl-ana_bezigrad","mursk-sob","novo-mes","postojna","ratece","slove-gra","vogel","vojsko" -NotContains $kraj)
{
Throw "$($kraj) Kraji kjer so opazovalne postaje so:nova-gor,celje,crnomelj,katarina,kocevje,kreda-ica,cerklje_letal-sce,maribor_slivnica,ljubl-ana_brnik,lesce,portoroz_secovlje,lisca,ljubl-ana_bezigrad,mursk-sob,novo-mes,postojna,ratece,slove-gra,vogel,vojsko"
}
# Ime kraja je case sensitive
$kraj=$kraj.ToUpper()
$ImeDat="http://meteo.arso.gov.si/uploads/probase/www/observ/surface/text/sl/observation_"+$kraj+"_latest.xml"
$wc=New-Object System.Net.WebClient
$wc.Encoding = [System.Text.Encoding]::UTF8
[xml]$doc = $wc.DownloadString($ImeDat)
$temperatura=$doc.data.metData.t
$vreme=$doc.data.metData.nn_shortText
$pojav=$doc.data.metData.wwsyn_shortText
$Sporocilo=$vreme1+$kraj+" "+$vreme+" "+$pojav+" "+$temperatura+" °C"
write-host $Sporocilo
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon
$objNotifyIcon.Icon = "C:\Program Files\Internet Explorer\images\bing.ico"
$objNotifyIcon.BalloonTipIcon = "Info"
$objNotifyIcon.BalloonTipText = $Sporocilo
$objNotifyIcon.BalloonTipTitle = "Vreme"
$objNotifyIcon.Visible = $True
$objNotifyIcon.ShowBalloonTip(10000)
sleep -Seconds 3
$objNotifyIcon.Dispose()
}}
Pokazi-temperaturo ljubl-ana_brnik
Kar še manjka, je lepša izbira imen krajev, razširitev na avtomatske postaje in zagon skripta kot razporejeno opravilo (scheduler).
Ni komentarjev:
Objavite komentar