예제 #1
0
        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();
            }
        }
예제 #2
0
        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))
            }));
        }
예제 #3
0
        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);
            }
        }