Public/Get-SportServiceVeenendaalOpeningHour.ps1
function Get-SportServiceVeenendaalOpeningHour { param ( ) $DutchCulture = Get-Culture 'nl-NL' ConvertTo-HtmlDocument -Uri 'https://www.sportserviceveenendaal.nl/rooster' | Select-HtmlNode -CssSelector '.planner-table tbody tr' -All | ForEach-Object { $CurrentRow = $_ $Th = $_ | Select-HtmlNode -CssSelector 'th' -All $Td = $_ | Select-HtmlNode -CssSelector 'td' -All switch ($true) { ([bool]$Th) { $Date = $Th | ForEach-Object { [DateTime]::ParseExact($_.InnerText.Trim(), 'dddd d MMMM yyyy', $DutchCulture) } break } (($CurrentRow.Attributes.Value -split ' ') -notcontains 'd-md-table-row') { break; } ([bool]$Td) { $Times = $Td | Select-Object -First 1 | ForEach-Object { $_.GetDirectInnerText().Trim() } $FromTimeText, $ToTimeText = $Times -split '–' | ForEach-Object { $_.Trim() } $FromTime = [TimeSpan]::ParseExact($FromTimeText, 'g', $DutchCulture) $ToTime = [TimeSpan]::ParseExact($ToTimeText, 'g', $DutchCulture) $From = $Date.Date.Add($FromTime) $To = $Date.Date.Add($ToTime) $Activity = $Td | Select-Object -Skip 1 | Select-Object -First 1 | Select-HtmlNode -CssSelector 'a' | Get-HtmlNodeText $Facility = $Td | Select-Object -Skip 2 | Select-Object -First 1 | Get-HtmlNodeText [PSCustomObject]@{ From = $From To = $To Activity = $Activity Facility = $Facility } break } } } } |