diff --git a/scripts/watch-news.ps1 b/scripts/watch-news.ps1 index 25d0938a..410aa80a 100755 --- a/scripts/watch-news.ps1 +++ b/scripts/watch-news.ps1 @@ -1,35 +1,39 @@ <# .SYNOPSIS - Watch the latest headlines + Watch the news .DESCRIPTION - This PowerShell script lists the latest headlines by using a RSS (Really Simple Syndication) feed. -.PARAMETER RSS_URL + This PowerShell script continuously lists the latest headlines by using a RSS (Really Simple Syndication) feed. +.PARAMETER URL Specifies the URL to the RSS feed (Yahoo World News by default) .PARAMETER lines Specifies the initial number of headlines .PARAMETER timeInterval - Specifies the time interval in seconds between the Web requests + Specifies the time interval in seconds between two Web requests (30 seconds by default) .EXAMPLE PS> ./watch-news.ps1 - ❇️ Niger coup: Ecowas deadline sparks anxiety in northern Nigeria ❇️ + + UTC Yahoo News - Latest News & Headlines - https://www.yahoo.com/news/world + --- ----------------------------------------------------------------------- + ❇️ 14:29 Niger coup: Ecowas deadline sparks anxiety in northern Nigeria + ... .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz | License: CC0 #> -param([string]$RSS_URL = "https://news.yahoo.com/rss/world", [int]$lines = 10, [int]$timeInterval = 30) # in seconds +param([string]$URL = "https://news.yahoo.com/rss/world", [int]$lines = 10, [int]$timeInterval = 30) # in seconds function PrintLatestHeadlines([string]$previous, [int]$maxLines) { - [xml]$content = (Invoke-WebRequest -URI $RSS_URL -useBasicParsing).Content + [xml]$content = (Invoke-WebRequest -URI $URL -useBasicParsing).Content [string]$latest = "" foreach ($item in $content.rss.channel.item) { - $itemTitle = "$($item.title)" - if ($latest -eq "") { $latest = $itemTitle } - if ($itemTitle -eq $previous) { break } - - & "$PSScriptRoot/write-animated.ps1" "❇️ $itemTitle ❇️" + $title = $item.title + if ($latest -eq "") { $latest = $title } + if ($title -eq $previous) { break } + $time = $item.pubDate.Substring(11, 5) + & "$PSScriptRoot/write-typewriter.ps1" "❇️ $time $title" 10 $maxLines-- if ($maxLines -eq 0) { break } } @@ -37,11 +41,18 @@ function PrintLatestHeadlines([string]$previous, [int]$maxLines) { } try { + [xml]$content = (Invoke-WebRequest -URI $URL -useBasicParsing).Content + + $title = $content.rss.channel.title + $URL = $content.rss.channel.link + " " + " UTC $title - $URL" + " --- -----------------------------------------------------------------------" $latest = "" - while ($true) { + do { $latest = PrintLatestHeadlines $latest $lines Start-Sleep -seconds $timeInterval - } + } while ($true) exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"