Texting Yourself Sports Alerts with PowerShell
Fri, Feb 21, 2014
One-minute read
You’ve probably been in the situation of wanting to alert yourself when any update happens to a sports game, UPS package tracking status, or something else.
By combining Invoke-WebRequest’s beautiful support for HTML parsing with Send-MailMessage’s ability to send email messages - this becomes incredibly easy and useful.
(Note: this script also uses Watch-Command, a script from the PowerShell Cookbook.)
$content = ""
while($true)
{
Watch-Command -ScriptBlock {
## Fetch the current box score for the game
$r = Invoke-WebRequest http://www.tsn.ca/MENS_WORLD/scores/boxscore/?id=2388586
## The score is in a DIV with the class 'boxScoreBg', almost certainly different
## for your scenario
$result = $r.ParsedHtml.Body.getElementsByClassName("boxScoreBg")
## Extract out what text you care about
$SCRIPT:content = (@($result)[0].innerText -split "`r`n" |
? { $_ })[5..6] -join "`r`n"
## And use that to monitor
$SCRIPT:content
} -UntilChanged -DelaySeconds 30
## Every cell provider has an email address that you can send to
## so that it will be delivered as a text message.
$params = @{
To = "[email protected]"
From = "[email protected]"
Subject = "Hockey Score Update"
Body = $SCRIPT:content
SmtpServer = "mysmtpserver"
}
Send-MailMessage @params
}