public async Task <TelevisionEpisodeCardResultsViewModel> Handle(
        GetTelevisionEpisodeCards request,
        CancellationToken cancellationToken)
    {
        int count = await _televisionRepository.GetEpisodeCount(request.TelevisionSeasonId);

        Option <JellyfinMediaSource> maybeJellyfin = await _mediaSourceRepository.GetAllJellyfin()
                                                     .Map(list => list.HeadOrNone());

        Option <EmbyMediaSource> maybeEmby = await _mediaSourceRepository.GetAllEmby()
                                             .Map(list => list.HeadOrNone());

        List <EpisodeMetadata> episodes = await _televisionRepository
                                          .GetPagedEpisodes(request.TelevisionSeasonId, request.PageNumber, request.PageSize);

        var results = new List <TelevisionEpisodeCardViewModel>();

        foreach (EpisodeMetadata episodeMetadata in episodes)
        {
            string localPath = await episodeMetadata.Episode.GetLocalPath(
                _plexPathReplacementService,
                _jellyfinPathReplacementService,
                _embyPathReplacementService,
                false);

            results.Add(ProjectToViewModel(episodeMetadata, maybeJellyfin, maybeEmby, false, localPath));
        }

        return(new TelevisionEpisodeCardResultsViewModel(count, results, Option <SearchPageMap> .None));
    }