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)); }
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"); } }
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)); }
public ReadOnlyCollection <Comment> GetComments(out int totalCount, WallGetCommentsParams @params) { var response = GetComments(@params); totalCount = Convert.ToInt32(response.TotalCount); return(response.ToReadOnlyCollection()); }
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); }
/// <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)); }
/// <inheritdoc /> public Task <VkCollection <Comment> > GetCommentsAsync(WallGetCommentsParams @params, bool skipAuthorization = false) { return(TypeHelper.TryInvokeMethodAsync(func: () => GetComments(@params: @params, skipAuthorization: skipAuthorization))); }
public VkCollection <Comment> GetComments(WallGetCommentsParams @params) { return(_vk.Call("wall.getComments", @params).ToVkCollectionOf <Comment>(x => x)); }
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); }
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); }
/// <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)); }
/// <inheritdoc /> public async Task <VkCollection <Comment> > GetCommentsAsync(WallGetCommentsParams @params, bool skipAuthorization = false) { return(await TypeHelper.TryInvokeMethodAsync(() => _vk.Wall.GetComments(@params, skipAuthorization))); }
/// <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); }