The grabber requested each day as a fixed UTC+2 window. The API's
broadcast days start at 04:00 Europe/Helsinki, so during daylight
saving time (UTC+3) the misaligned interval was answered with a
"303 See Other" redirect to a widened two-day window. On top of that
the API paginates 20 items per response by default, so each day was
truncated to the first ~20 programmes.
- Request the exact broadcast-day window in Europe/Helsinki time
- Add limit=1000 so a full day fits in one response
- Drop the local-timezone day filter: the requested interval already
bounds the results, and the filter discarded late-night programmes
depending on the runner's timezone
- Throw on malformed or unrecognized responses instead of returning
an empty list, so failures are reported as errors rather than a
silently empty (but "successful") guide