- :bookmark_tabs: `ProgrammeCatalogue` built from `ChannelListings` [itself a collection of `ChannelSchedule`s], determining the parent brand [which may itself be above a parent series] and using this to obtain a canonical programme title and genre (6cf0ddeb78bd6d59fe31db65f09199c03fcda61c)
- :building_construction: Populate JSON from "prefab" string or dict, i.e. without pulling (6cf0ddeb78bd6d59fe31db65f09199c03fcda61c)
- :racehorse: Fast asynchronous downloads of both schedule listings [for `ChannelListings`] and episode metadata JSON [for `ProgrammeCatalogue`], with retry fallback mechanism for `httpx.AsyncClient` errors (6cf0ddeb78bd6d59fe31db65f09199c03fcda61c)
- Unable to achieve stable HTTP/2 support on an async session, so do not use for catalogue