Пример #1
0
 public RecommendVideoIncrementalLoadingSource(
     LoginUserRecommendProvider loginUserRecommendProvider,
     NGSettings ngSettings
     )
 {
     LoginUserRecommendProvider = loginUserRecommendProvider;
     NgSettings = ngSettings;
 }
Пример #2
0
 public RecommendPageViewModel(
     NGSettings ngSettings,
     LoginUserRecommendProvider loginUserRecommendProvider,
     Services.HohoemaPlaylist hohoemaPlaylist,
     Services.PageManager pageManager
     )
     : base(pageManager)
 {
     NgSettings = ngSettings;
     LoginUserRecommendProvider = loginUserRecommendProvider;
     HohoemaPlaylist            = hohoemaPlaylist;
 }
Пример #3
0
        protected override async Task <IAsyncEnumerable <RecommendVideoListItem> > GetPagedItemsImpl(int head, int count)
        {
            if (_EndOfRecommend)
            {
                return(AsyncEnumerable.Empty <RecommendVideoListItem>());
            }

            // 初回はページアクセスで得られるデータを使う
            if (_PrevRecommendContent == null)
            {
                _PrevRecommendContent = _RecommendResponse?.FirstData;
            }
            else
            {
                _PrevRecommendContent = await LoginUserRecommendProvider.GetRecommendAsync(_RecommendResponse, _PrevRecommendContent);
            }


            if (_PrevRecommendContent != null && _PrevRecommendContent.Status == "ok")
            {
                _EndOfRecommend = _PrevRecommendContent?.RecommendInfo.EndOfRecommend ?? true;

                AddRecommendTags(
                    _PrevRecommendContent.Items.Select(x => x.AdditionalInfo?.Sherlock.Tag)
                    .Where(x => x != null)
                    );


                return(_PrevRecommendContent.Items.Select(x =>
                {
                    var video = Database.NicoVideoDb.Get(x.Id);
                    video.ThumbnailUrl = x.ThumbnailUrl;
                    video.Title = x.ParseTitle();
                    video.Length = x.ParseLengthToTimeSpan();
                    video.ViewCount = x.ViewCounter;
                    video.CommentCount = x.NumRes;
                    video.MylistCount = x.MylistCounter;
                    video.PostedAt = x.ParseForstRetroeveToDateTimeOffset().DateTime;
                    Database.NicoVideoDb.AddOrUpdate(video);

                    var vm = new RecommendVideoListItem(x);
                    vm.SetupFromThumbnail(video);
                    return vm;
                })
                       .ToAsyncEnumerable()
                       );
            }
            else
            {
                return(AsyncEnumerable.Empty <RecommendVideoListItem>());
            }
        }
Пример #4
0
 public RecommendPageViewModel(
     ApplicationLayoutManager applicationLayoutManager,
     NGSettings ngSettings,
     LoginUserRecommendProvider loginUserRecommendProvider,
     HohoemaPlaylist hohoemaPlaylist,
     Services.PageManager pageManager
     )
 {
     ApplicationLayoutManager = applicationLayoutManager;
     NgSettings = ngSettings;
     LoginUserRecommendProvider = loginUserRecommendProvider;
     HohoemaPlaylist            = hohoemaPlaylist;
     PageManager = pageManager;
 }
Пример #5
0
        protected override async Task <int> ResetSourceImpl()
        {
            _RecommendResponse = await LoginUserRecommendProvider.GetRecommendFirstAsync();

            if (_RecommendResponse.FirstData.Status == "ok")
            {
                _EndOfRecommend = _RecommendResponse.FirstData.RecommendInfo.EndOfRecommend;

                AddRecommendTags(
                    _RecommendResponse.FirstData.Items.Select(x => x.AdditionalInfo?.Sherlock.Tag)
                    .Where(x => x != null)
                    );
            }
            else
            {
                _EndOfRecommend = true;
            }
            return(1000);
        }