Public/Get-BbcTvGuide.ps1
function Get-BbcTvGuide { param ( [Parameter(Mandatory, Position = 0)] [ValidateSet('bbc-first', 'bbc-one', 'bbc-two', 'bbc-four')] [string]$Channel, [ValidateCount(1, [int]::MaxValue)] [DateTime[]]$Date = (0..7 | ForEach-Object { (Get-Date).AddDays($_) }) ) $Date | Select-Object -Unique | Sort-Object | ForEach-Object { $DateString = $_.ToString("yyyy-MM-dd") $Url = "https://www.bbcbenelux.com/smapi/schedule/nederland/$($Channel)?timezone=Europe%2FLuxembourg&date=$($DateString)" Invoke-RestMethod -Uri $Url | ForEach-Object { $_ } | ForEach-Object { $StartUtc = [DateTime]::SpecifyKind([DateTime]::ParseExact($_.Start, 'yyyy-MM-dd HH:mm:ss', $null), [System.DateTimeKind]::Utc) $EndUtc = [DateTime]::SpecifyKind([DateTime]::ParseExact($_.End, 'yyyy-MM-dd HH:mm:ss', $null), [System.DateTimeKind]::Utc) [PSCustomObject][Ordered]@{ PSTypeName = 'UncommonSense.BccTvGuide.Entry' Channel = $Channel StartText = $_.Start EndText = $_.End StartUtc = $StartUtc EndUtc = $EndUtc StartLocal = $StartUtc.ToLocalTime() EndLocal = $EndUtc.ToLocalTime() ShowTitle = $_.Show.Title ShowSynopsis = $_.Show.Synopsis EpisodeNo = $_.Episode.Number EpisodeTitle = $_.Episode.Title EpisodeSynopsis = $_.Episode.Synopsis FullTitle = (@($_.Show.Title, $_.Episode.Title) | Where-Object { $_ }) -join ' - ' FullSynopsis = @(($_.Show.Synopsis, $_.Episode.Synopsis) | Where-Object { $_ }) -join "`n`n" } } } } |