Пример #1
0
        public ReadOnlyCollection <Comment> GetComments(
            long ownerId,
            long postId,
            out int totalCount,
            SortOrderBy?sort  = null,
            bool needLikes    = false,
            int?count         = null,
            int?offset        = null,
            int previewLength = 0)
        {
            VkErrors.ThrowIfNumberIsNegative(() => postId);
            VkErrors.ThrowIfNumberIsNegative(() => offset);
            VkErrors.ThrowIfNumberIsNegative(() => count);
            VkErrors.ThrowIfNumberIsNegative(() => previewLength);

            var parameters = new WallGetCommentsParams
            {
                OwnerId       = ownerId,
                PostId        = postId,
                NeedLikes     = needLikes,
                Count         = count,
                Offset        = offset,
                PreviewLength = previewLength,
                Sort          = sort
            };

            return(GetComments(out totalCount, parameters));
        }
Пример #2
0
        private void DownloadCommentsButton_Click(object sender, EventArgs e)
        {
            long PostID = long.Parse(Posts.CurrentRow.Cells[0].Value.ToString());
            WallGetCommentsParams wallparams = new WallGetCommentsParams();

            wallparams.Count     = 100;
            wallparams.OwnerId   = chosenGroup().groupID;
            wallparams.PostId    = PostID;
            wallparams.Sort      = 0; // Desc
            wallparams.NeedLikes = true;

            using (FileStream fstream = new FileStream(PostID.ToString() + ".txt", FileMode.Create))
            {
                int AllLikesCount = GetNumberOfComments(PostID);
                int i             = 0;
                while (AllLikesCount > 0)
                {
                    wallparams.Offset = i * 100;
                    VkCollection <Comment> comments = vkApi.Wall.GetComments(wallparams);
                    foreach (var it in comments)
                    {
                        PrintFoFile(fstream, it.FromId + " Likes:" + it.Likes.Count + " Text:" + it.Text + " ");
                    }
                    i++;
                    AllLikesCount -= 100;
                }
                MessageBox.Show("Comments save to file");
            }
        }
Пример #3
0
        public ReadOnlyCollection <Comment> GetComments(out int totalCount, WallGetCommentsParams @params)
        {
            var response = _vk.Call("wall.getComments", @params);

            totalCount = response["count"];
            return(response["items"].ToReadOnlyCollectionOf <Comment>(x => x));
        }
Пример #4
0
        public ReadOnlyCollection <Comment> GetComments(out int totalCount, WallGetCommentsParams @params)
        {
            var response = GetComments(@params);

            totalCount = Convert.ToInt32(response.TotalCount);

            return(response.ToReadOnlyCollection());
        }
Пример #5
0
        public List <Comment> GetComments(long ownerId, long postId, VkApi api, ref List <User> profiles)
        {
            //https://vknet.github.io/vk/wall/getComments/
            const int step = 100;


            var  comments   = new List <Comment>();
            long offset     = 0;
            long totalCount = 0;

            do
            {
                try
                {
                    var param = new WallGetCommentsParams
                    {
                        OwnerId   = ownerId,
                        PostId    = postId,
                        Count     = step,
                        Offset    = offset,
                        NeedLikes = true,
                        Extended  = true,
                    };
                    var getResult = api.Wall.GetComments(param);
                    profiles = getResult.Profiles.ToList();
                    var commentsChunk = getResult.Items.Select(p => p).ToList();
                    comments.AddRange(commentsChunk);
                    offset      += step;
                    param.Offset = offset;
                    totalCount   = getResult.Count;
                }
                catch (Exception)
                {
                    offset += 1;
                }
            } while (offset < totalCount);

            var orderedComments = comments.OrderByDescending(p => p.Date)
                                  .ThenByDescending(p => p.Likes?.Count)
                                  .ToList();

            return(orderedComments);
        }
Пример #6
0
 /// <summary>
 /// Возвращает список комментариев к записи на стене.
 /// </summary>
 /// <param name="params">Входные параметры выборки.</param>
 /// <param name="skipAuthorization">Если <c>true</c>, то пропустить авторизацию</param>
 /// <returns>
 /// После успешного выполнения возвращает список объектов комментариев.
 /// Если был задан параметр need_likes=1, у объектов комментариев возвращается дополнительное поле likes:
 /// count — число пользователей, которым понравился комментарий;
 /// user_likes — наличие отметки «Мне нравится» от текущего пользователя
 /// (1 — есть, 0 — нет);
 /// can_like — информация о том, может ли текущий пользователь поставить отметку «Мне нравится»
 /// (1 — может, 0 — не может).
 /// Если был передан параметр start_comment_id, будет также возвращено поле real_offset – итоговое смещение данного подмножества комментариев (оно может быть отрицательным, если был указан отрицательный offset).
 /// </returns>
 /// <remarks>
 /// Страница документации ВКонтакте http://vk.com/dev/wall.getComments
 /// </remarks>
 public VkCollection <Comment> GetComments(WallGetCommentsParams @params, bool skipAuthorization = false)
 {
     return(_vk.Call("wall.getComments", @params, skipAuthorization).ToVkCollectionOf <Comment>(x => x));
 }
Пример #7
0
 /// <inheritdoc />
 public Task <VkCollection <Comment> > GetCommentsAsync(WallGetCommentsParams @params, bool skipAuthorization = false)
 {
     return(TypeHelper.TryInvokeMethodAsync(func: () =>
                                            GetComments(@params: @params, skipAuthorization: skipAuthorization)));
 }
Пример #8
0
 public VkCollection <Comment> GetComments(WallGetCommentsParams @params)
 {
     return(_vk.Call("wall.getComments", @params).ToVkCollectionOf <Comment>(x => x));
 }
Пример #9
0
		public ReadOnlyCollection<Comment> GetComments(out int totalCount, WallGetCommentsParams @params)
		{
			var response = _vk.Call("wall.getComments", @params);
			totalCount = response["count"];
			return response["items"].ToReadOnlyCollectionOf<Comment>(x => x);
		}
Пример #10
0
		public ReadOnlyCollection<Comment> GetComments(
			long ownerId,
			long postId,
			out int totalCount,
			SortOrderBy? sort = null,
			bool needLikes = false,
			int? count = null,
			int? offset = null,
			int previewLength = 0)
		{
			VkErrors.ThrowIfNumberIsNegative(() => postId);
			VkErrors.ThrowIfNumberIsNegative(() => offset);
			VkErrors.ThrowIfNumberIsNegative(() => count);
			VkErrors.ThrowIfNumberIsNegative(() => previewLength);

			var parameters = new WallGetCommentsParams
			{
				OwnerId = ownerId,
				PostId = postId,
				NeedLikes = needLikes,
				Count = count,
				Offset = offset,
				PreviewLength = previewLength,
				Sort = sort
			};

			return GetComments(out totalCount, parameters);
		}
Пример #11
0
 /// <inheritdoc />
 public VkCollection <Comment> GetComments(WallGetCommentsParams @params, bool skipAuthorization = false)
 {
     return(_vk.Call(methodName: "wall.getComments", parameters: @params, skipAuthorization: skipAuthorization)
            .ToVkCollectionOf <Comment>(selector: x => x));
 }
Пример #12
0
 /// <inheritdoc />
 public async Task <VkCollection <Comment> > GetCommentsAsync(WallGetCommentsParams @params,
                                                              bool skipAuthorization = false)
 {
     return(await TypeHelper.TryInvokeMethodAsync(() => _vk.Wall.GetComments(@params, skipAuthorization)));
 }
Пример #13
0
 /// <summary>
 /// Возвращает список комментариев к записи на стене.
 /// </summary>
 /// <param name="totalCount">Общее количество комментариев к записи.</param>
 /// <param name="params">Входные параметры выборки.</param>
 /// <param name="skipAuthorization">Если <c>true</c>, то пропустить авторизацию</param>
 /// <returns>
 /// После успешного выполнения возвращает список объектов комментариев.
 /// Если был задан параметр need_likes=1, у объектов комментариев возвращается дополнительное поле likes:
 /// count — число пользователей, которым понравился комментарий;
 /// user_likes — наличие отметки «Мне нравится» от текущего пользователя
 /// (1 — есть, 0 — нет);
 /// can_like — информация о том, может ли текущий пользователь поставить отметку «Мне нравится»
 /// (1 — может, 0 — не может).
 /// Если был передан параметр start_comment_id, будет также возвращено поле real_offset – итоговое смещение данного подмножества комментариев (оно может быть отрицательным, если был указан отрицательный offset).
 /// </returns>
 /// <remarks>
 /// Страница документации ВКонтакте <see href="http://vk.com/dev/wall.getComments" />.
 /// </remarks>
 public VkCollection<Comment> GetComments(WallGetCommentsParams @params, bool skipAuthorization = false)
 {
     return _vk.Call("wall.getComments", @params, skipAuthorization).ToVkCollectionOf<Comment>(x => x);
 }