protected override async Task<IAsyncEnumerable<VideoInfoControlViewModel>> GetPagedItemsImpl(int head, int count) { VideoListingResponse res = null; if (SearchOption.SearchTarget == SearchTarget.Keyword) { res = await SearchProvider.GetKeywordSearch(SearchOption.Keyword, (uint)head, (uint)count, SearchOption.Sort, SearchOption.Order); } else if (SearchOption.SearchTarget == SearchTarget.Tag) { res = await SearchProvider.GetTagSearch(SearchOption.Keyword, (uint)head, (uint)count, SearchOption.Sort, SearchOption.Order); } if (res == null || res.VideoInfoItems == null) { return AsyncEnumerable.Empty<VideoInfoControlViewModel>(); } else { return res.VideoInfoItems.Where(x => x != null).Select(item => { var vm = new VideoInfoControlViewModel(item.Video.Id); vm.SetupDisplay(item); return vm; }) .ToAsyncEnumerable(); } }
async Task <IEnumerable <VideoListItemControlViewModel> > IIncrementalSource <VideoListItemControlViewModel> .GetPagedItemsAsync(int pageIndex, int pageSize, CancellationToken ct) { VideoListingResponse res = null; var head = pageIndex * pageSize; if (!IsTagSearch) { res = await SearchProvider.GetKeywordSearch(Keyword, head, pageSize, _sortOption.SortKey, _sortOption.SortOrder); } else { res = await SearchProvider.GetTagSearch(Keyword, head, pageSize, _sortOption.SortKey, _sortOption.SortOrder); } ct.ThrowIfCancellationRequested(); if (res == null || res.Videos == null) { return(Enumerable.Empty <VideoListItemControlViewModel>()); } return(res.Videos.Select((x, i) => new VideoListItemControlViewModel(x.Video, x.Thread) { PlaylistItemToken = new Models.Domain.Playlist.PlaylistItemToken(_searchVideoPlaylist, _sortOption, new CeApiSearchVideoContent(x.Video)) })); }
protected override async Task <IEnumerable <NicoVideo> > PreloadNicoVideo(int start, int count) { // 最初の検索結果だけ先行してThumbnail情報を読みこませる // VideoListingResponse res = null; if (SearchOption.SearchTarget == SearchTarget.Keyword) { res = await _HohoemaApp.ContentFinder.GetKeywordSearch(SearchOption.Keyword, (uint)start, (uint)count, SearchOption.Sort, SearchOption.Order); } else if (SearchOption.SearchTarget == SearchTarget.Tag) { res = await _HohoemaApp.ContentFinder.GetTagSearch(SearchOption.Keyword, (uint)start, (uint)count, SearchOption.Sort, SearchOption.Order); } if (res == null && res.VideoInfoItems == null) { return(Enumerable.Empty <NicoVideo>()); } else { List <NicoVideo> videos = new List <NicoVideo>(); foreach (var item in res.VideoInfoItems) { var nicoVideo = await ToNicoVideo(item.Video.Id); nicoVideo.PreSetTitle(item.Video.Title); nicoVideo.PreSetPostAt(item.Video.UploadTime); nicoVideo.PreSetThumbnailUrl(item.Video.ThumbnailUrl.AbsoluteUri); nicoVideo.PreSetVideoLength(item.Video.Length); nicoVideo.PreSetViewCount(item.Video.ViewCount); nicoVideo.PreSetCommentCount(item.Thread.GetCommentCount()); nicoVideo.PreSetMylistCount(item.Video.MylistCount); videos.Add(nicoVideo); } return(videos); } }