Пример #1
0
 public void Set(MylistId mylistId, MylistSortKey sortKey, MylistSortOrder sortOrder)
 {
     _collection.Upsert(new MylistUserSelectedSortEntry()
     {
         MylistId = mylistId, SortKey = sortKey, SortOrder = sortOrder
     });
 }
Пример #2
0
        public static async Task <bool> UpdateMylistGroupAsync(NiconicoContext context, string mylistId, string name, string description, bool isPublic, MylistSortKey defaultSortKey, MylistSortOrder defaultSortOrder)
        {
            var dict = new Dictionary <string, string>();

            dict.Add("name", name);
            dict.Add("description", description);
            dict.Add("isPublic", isPublic.ToString1Or0());
            dict.Add("defaultSortKey", defaultSortKey.ToQueryString());
            dict.Add("defaultSortOrder", defaultSortOrder.ToQueryString());

            var request = new HttpRequestMessage(HttpMethod.Put, new Uri($"https://nvapi.nicovideo.jp/v1/users/me/mylists/{mylistId}"));

#if WINDOWS_UWP
            request.Content         = new HttpFormUrlEncodedContent(dict);
            request.Headers.Referer = new Uri($"https://www.nicovideo.jp/my/mylist/{mylistId}");
#else
            request.Content          = new FormUrlEncodedContent(dict);
            request.Headers.Referrer = new Uri($"https://www.nicovideo.jp/my/mylist/{mylistId}");
#endif
            request.Headers.Add("X-Request-With", "https://www.nicovideo.jp");


            var res = await context.SendAsync(request);

            var json = await res.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject <MylistUpdateResultResponse>(json);
            return(result.Meta.Status == 200);
        }
Пример #3
0
        public static async Task <WatchAfterMylistGroupItemsResponse> GetWatchAfterMylistGroupItemsAsync(NiconicoContext context, MylistSortKey sortKey, MylistSortOrder sortOrder, uint pageSize, uint pageCount)
        {
            var uri = $"https://nvapi.nicovideo.jp/v1/users/me/watch-later?sortKey={sortKey.ToQueryString()}&sortOrder={sortOrder.ToQueryString()}&pageSize={pageSize}&page={pageCount + 1}";
            await context.PrepareCorsAsscessAsync(HttpMethod.Get, uri);

            return(await context.GetJsonAsAsync <WatchAfterMylistGroupItemsResponse>(uri, Converter.Settings,
                                                                                     haaders =>
            {
#if WINDOWS_UWP
                haaders.Referer = new Uri("https://www.nicovideo.jp/my/watchlater?ref=pc_mypage_menu");
#else
                haaders.Referrer = new Uri("https://www.nicovideo.jp/my/watchlater?ref=pc_mypage_menu");
#endif
            }));
        }
Пример #4
0
        public static async Task <MylistGroupItemsResponse> GetMylistGroupItemsAsync(NiconicoContext context, long mylistId, MylistSortKey sortKey, MylistSortOrder sortOrder, uint pageSize, uint pageCount)
        {
            // Note: CORSのOPTIONSを先に送る奴が必要になるかも
            var uri = $"https://nvapi.nicovideo.jp/v2/mylists/{mylistId}?sortKey={sortKey.ToQueryString()}&sortOrder={sortOrder.ToQueryString()}&pageSize={pageSize}&page={pageCount + 1}";
            await context.PrepareCorsAsscessAsync(HttpMethod.Get, uri);

            return(await context.GetJsonAsAsync <MylistGroupItemsResponse>(uri, Converter.Settings));
        }
Пример #5
0
 public void SetMylistSort(MylistId mylistId, MylistSortKey sortKey, MylistSortOrder sortOrder)
 {
     _mylistUserSelectedSortRepository_Internal.Set(mylistId, sortKey, sortOrder);
 }
Пример #6
0
        public override async Task <MylistItemsGetResult> GetItemsAsync(int page, int pageSize, MylistSortKey sortKey, MylistSortOrder sortOrder)
        {
            try
            {
                return(await _loginUserMylistProvider.GetLoginUserMylistItemsAsync(this, page, pageSize, sortKey, sortOrder));
            }
            catch
            {
            }

            return(new MylistItemsGetResult()
            {
                IsSuccess = false
            });
        }
Пример #7
0
        public async Task <bool> UpdateMylistInfo(string name, string description, bool isPublic, MylistSortKey sortKey, MylistSortOrder sortOrder)
        {
            if (await _loginUserMylistProvider.UpdateMylist(this, name, description, isPublic, sortKey, sortOrder))
            {
                this.Name             = name;
                this.Description      = description;
                this.IsPublic         = IsPublic;
                this.DefaultSortKey   = sortKey;
                this.DefaultSortOrder = sortOrder;

                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #8
0
 public Task <WatchAfterMylistGroupItemsResponse> GetWatchAfterMylistGroupItemsAsync(MylistSortKey sortKey, MylistSortOrder sortOrder, uint pageSize = 25, uint page = 0)
 {
     return(MylistClient.GetWatchAfterMylistGroupItemsAsync(_context, sortKey, sortOrder, pageSize, page));
 }
Пример #9
0
 public Task <MylistGroupItemsResponse> GetMylistGroupItemsAsync(long group_id, MylistSortKey sortKey, MylistSortOrder sortOrder, uint pageSize = 25, uint page = 0)
 {
     return(MylistClient.GetMylistGroupItemsAsync(_context, group_id, sortKey, sortOrder, pageSize, page));
 }
Пример #10
0
 /// <summary>
 /// ログイン中のユーザーのマイリストグループを更新
 /// </summary>
 /// <param name="group_id"></param>
 /// <param name="name"></param>
 /// <param name="description"></param>
 /// <param name="is_public"></param>
 /// <param name="default_sort"></param>
 /// <param name="iconType"></param>
 /// <returns></returns>
 public Task <bool> UpdateMylistGroupAsync(string mylist, string name, string description, bool isPublic, MylistSortKey defaultSortKey, MylistSortOrder defaultSortOrder)
 {
     return(MylistClient.UpdateMylistGroupAsync(_context, mylist, name, description, isPublic, defaultSortKey, defaultSortOrder));
 }
Пример #11
0
        public async Task <MylistItemsGetResult> GetMylistVideoItems(MylistId mylistId, int page, int pageSize, MylistSortKey sortKey, MylistSortOrder sortOrder)
        {
            var res = await _niconicoSession.ToolkitContext.Mylist.GetMylistItemsAsync(mylistId, page, pageSize, sortKey, sortOrder);

            if (res.Meta.IsSuccess is false)
            {
                return(new MylistItemsGetResult()
                {
                    IsSuccess = false, MylistId = mylistId
                });
            }

            var videos        = res.Data.Mylist.Items;
            var resultItems   = new List <MylistItem>();
            var nicoVideoList = new List <NicoVideo>();

            foreach (var item in videos)
            {
                var nicoVideo = _nicoVideoProvider.UpdateCache(item.WatchId, item.Video, item.IsDeleted);

                nicoVideoList.Add(nicoVideo);
                resultItems.Add(item);
            }

            return(new MylistItemsGetResult()
            {
                IsSuccess = true,
                MylistId = mylistId,
                HeadPosition = (int)(pageSize * page),
                Items = new ReadOnlyCollection <MylistItem>(resultItems),
                NicoVideoItems = new ReadOnlyCollection <NicoVideo>(nicoVideoList),
                TotalCount = (int)res.Data.Mylist.TotalItemCount,
            });
        }
Пример #12
0
        public async Task <bool> UpdateMylist(LoginUserMylistPlaylist mylist, string name, string description, bool isPublic, MylistSortKey sortKey, MylistSortOrder sortOrder)
        {
            var result = await _niconicoSession.ToolkitContext.Mylist.LoginUser.UpdateMylistAsync(mylist.MylistId, name, description, isPublic, sortKey, sortOrder);

            try
            {
                mylist.Name             = name;
                mylist.IsPublic         = isPublic;
                mylist.DefaultSortKey   = sortKey;
                mylist.DefaultSortOrder = sortOrder;
                mylist.Description      = description;
            }
            catch { }
            return(result);
        }
Пример #13
0
        public async Task <string> AddMylist(string name, string description, bool isPublic, MylistSortKey sortKey, MylistSortOrder sortOrder)
        {
            var result = await _niconicoSession.ToolkitContext.Mylist.LoginUser.CreateMylistAsync(name, description, isPublic, sortKey, sortOrder);

            return(result.Data.MylistId.ToString());
        }
Пример #14
0
        public async Task <MylistItemsGetResult> GetLoginUserMylistItemsAsync(IMylist mylist, int page, int pageSize, MylistSortKey sortKey, MylistSortOrder sortOrder)
        {
            if (mylist.UserId != _niconicoSession.UserId)
            {
                throw new ArgumentException();
            }

            if (mylist.MylistId.IsWatchAfterMylist)
            {
                var mylistItemsRes = await _niconicoSession.ToolkitContext.Mylist.LoginUser.GetWatchAfterItemsAsync(page, pageSize, sortKey, sortOrder);

                var res   = mylistItemsRes.Data.Mylist;
                var items = res.Items;
                foreach (var item in items)
                {
                    _loginUserMylistItemIdRepository.AddItem(item.ItemId, mylist.MylistId, item.WatchId);
                }

                return(new MylistItemsGetResult()
                {
                    MylistId = mylist.MylistId,
                    IsSuccess = true,
                    Items = items,
                    NicoVideoItems = items.Select(MylistDataToNicoVideoData).ToArray(),
                    TotalCount = (int)mylistItemsRes.Data.Mylist.TotalCount,
                    HeadPosition = page * pageSize,
                });
            }
            else
            {
                var mylistItemsRes = await _niconicoSession.ToolkitContext.Mylist.LoginUser.GetMylistItemsAsync(mylist.PlaylistId.Id, (int)page, (int)pageSize, sortKey, sortOrder);

                var res   = mylistItemsRes.Data.Mylist;
                var items = res.Items;
                foreach (var item in items)
                {
                    _loginUserMylistItemIdRepository.AddItem(item.ItemId, mylist.MylistId, item.WatchId);
                }

                return(new MylistItemsGetResult()
                {
                    MylistId = mylist.MylistId,
                    IsSuccess = true,
                    Items = items,
                    NicoVideoItems = items.Select(MylistDataToNicoVideoData).ToArray(),
                    TotalCount = (int)mylistItemsRes.Data.Mylist.TotalItemCount,
                    HeadPosition = page * pageSize,
                });
            }
        }