Public/Get-FilmtheaterHilversum.ps1
function Get-FilmtheaterHilversum { $DutchCulture = Get-Culture('nl-NL') $Today = Get-Date -Hour 0 -Minute 0 -Second 0 -Millisecond 0 $Tomorrow = $Today.AddDays(1) Invoke-WebRequest -Uri https://www.filmtheaterhilversum.nl/films/ ` | Select-Object -ExpandProperty Links ` | Where-Object Href -Like 'https://filmtheaterhilversum.nl/film/*' | Select-Object -ExpandProperty HRef ` | ForEach-Object { Write-Host "Processing movie url $($_)" $Document = ConvertTo-HtmlDocument -Uri $_ $ScreenTimes = $Document | Select-HtmlNode -CssSelector '.movie-time' -All | ForEach-Object { $CurrentMovieTime = $_ $ScreenDay = $CurrentMovieTime | Select-HtmlNode -CssSelector '.movie-screenday' | Get-HtmlNodeText Write-Host "- Screen day $($ScreenDay)" $ScreenDay = switch -regex ($ScreenDay) { 'Vandaag' { $Today; break; } 'Morgen' { $Tomorrow; break; } '\w{2}\s\d{1,2}\s\w{3}' { [DateTime]::ParseExact($ScreenDay.SubString(3), 'd MMM', $DutchCulture); break; } } if ($ScreenDay -lt $Today) # assume next year if day/month before today (end of December/start of January) { $ScreenDay = $ScreenDay.AddYears(1) } Write-Host "- Corrected screen day $($ScreenDay.ToShortDateString())" $CurrentMovieTime | Select-HtmlNode -CssSelector '.movie-timeblock' -All | ForEach-Object { $_ | Get-HtmlNodeText } | ForEach-Object { [TimeSpan]::ParseExact("$($_):00", 'g', $DutchCulture) } | ForEach-Object { $ScreenDay.Add($_) } } [PSCustomObject]@{ PSTypeName = 'UncommonSense.Cinema.Film' Url = $_ DateTimes = $ScreenTimes -join ',' #FIXME Title = $Document | Select-HtmlNode -CssSelector 'h1' | Get-HtmlNodeText Body = $Document | Select-HtmlNode -CssSelector '.content p strong' | Get-HtmlNodeText } } } |