public void SendPost(string postText) { Group group; try { group = VkApi.Groups .GetById(null, GROUP_ID, null) .First(); } catch (VkApiException e) { throw new IncorrectGroupException(GROUP_ID, e); } var wallPostParams = new WallPostParams { // Для группы идентификатор сохраняется со знаком '-' OwnerId = -group.Id, Message = postText }; try { VkApi.Wall.Post(wallPostParams); } catch (VkApiException e) { throw new PostSendingException(group.Id.ToString(), e); } }
public Exception exception; //Ошибка отправки если такая была /// <summary> /// /// </summary> /// <param name="_post"></param> /// <param name="_date">UTC Time</param> /// <param name="_sendResult"></param> /// <param name="_error"></param> public SendingPostLogModel(WallPostParams _post, DateTime _date, bool _sendResult, Exception _error) { post = _post; date = _date; successComplite = _sendResult; exception = _error; }
public void SetPostToAdminGroup() { var post = GetPost(); var attachments = new List <MediaAttachment>(); var wallPostsParam = new WallPostParams(); var isOnPost = false; foreach (var source in post.Attachments) { if (source.Instance is MediaAttachment attachment) { attachments.Add(attachment); } } if (attachments.Count > 0) { wallPostsParam.Attachments = attachments; isOnPost = true; } if (!string.IsNullOrEmpty(post.Text)) { wallPostsParam.Message = post.Text; isOnPost = true; } wallPostsParam.OwnerId = -AdminGroupToPost.Id; wallPostsParam.FromGroup = true; if (isOnPost) { _vkApi.Wall.Post(wallPostsParam); } }
/// <summary> /// Добавляет пост в очередь размещние на стенку /// Запускает поток отправкиесли он завершил работу ранее /// </summary> /// <param name="requestPost"></param> public void SendPostToWall(WallPostParams sendPost) { //Добавление в очередь загрузок queueOutgoingPosts.Add(sendPost); //Если поток загрузок был завершен, запускает его if (!postTaskWork) { new Task(PostSender).Start(); } }
public async Task CreatePostAsync(string text, string username) { var userId = await base.GetUserId(username); var requestParams = new WallPostParams() { Message = text, OwnerId = userId }; await api.Wall.PostAsync(requestParams); }
public bool CreatePost(string message) { Authorize(); var parameters = new WallPostParams() { Message = message }; var result = _api.Wall.Post(parameters); return(result != default(long)); }
public override async Task Post(Post post) { try { var vkClient = new VkApi(); vkClient.Authorize(new ApiAuthParams { ApplicationId = _appId, AccessToken = _accessToken, Login = _login, Password = _password, Settings = Settings.FromJsonString("wall,photos") }); UploadServerInfo uploadServerInfo = await vkClient.Photo.GetWallUploadServerAsync(); string uploadedFileJson = ""; using (var client = new HttpClient()) { var requestContent = new MultipartFormDataContent(); byte[] data = File.ReadAllBytes(post.PathToImageToAttach); var content = new ByteArrayContent(data); content.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); requestContent.Add(content, "file", $"file.{Path.GetExtension(post.PathToImageToAttach)}"); var response = await client.PostAsync(uploadServerInfo.UploadUrl, requestContent); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); // https://stackoverflow.com/questions/33579661/encoding-getencoding-cant-work-in-uwp-app uploadedFileJson = await response.Content.ReadAsStringAsync(); } Photo[] image = vkClient.Photo.SaveWallPhoto(uploadedFileJson, (ulong)uploadServerInfo.UserId).ToArray(); var wallPost = new WallPostParams(); wallPost.Message = post.MultilineText + Environment.NewLine + "#" + string.Join(" #", post.Hashtags) + Environment.NewLine; wallPost.Attachments = image; vkClient.Wall.Post(wallPost); vkClient.Dispose(); } catch (Exception ex) { Console.WriteLine($"vk> {ex.ToString()}"); ; } }
public void SendPost(Post _post) { WallPostParams parametrs = new WallPostParams { OwnerId = -72869598, Message = _post.Message }; try { api.Wall.Post(parametrs); db.Add(_post); } catch { return; } }
public long Post(long?ownerId = null, bool friendsOnly = false, bool fromGroup = false, string message = null, IEnumerable <MediaAttachment> mediaAttachments = null, string url = null, IEnumerable <Services> services = null, bool signed = false, DateTime?publishDate = null, double?lat = null, double? @long = null, long?placeId = null, long?postId = null) { if (string.IsNullOrEmpty(message) && (mediaAttachments == null || !mediaAttachments.Any()) && string.IsNullOrEmpty(url)) { throw new ArgumentException("Message and attachments cannot be null or empty at the same time."); } VkErrors.ThrowIfNumberIsNegative(() => placeId); VkErrors.ThrowIfNumberIsNegative(() => postId); if (lat.HasValue && (Math.Abs(lat.Value) > 90)) { throw new ArgumentOutOfRangeException("lat", lat, "lat must be at range from -90 to 90"); } if (@long.HasValue && (Math.Abs(@long.Value) > 180)) { throw new ArgumentOutOfRangeException("long", @long, "long must be at range from -90 to 90"); } var parameters = new WallPostParams { OwnerId = ownerId, FriendsOnly = friendsOnly, FromGroup = fromGroup, Message = message, Attachments = mediaAttachments, Services = services, Signed = signed, PublishDate = publishDate, Lat = lat, Long = @long, PlaceId = placeId, PostId = postId }; return(Post(parameters)); }
/// <inheritdoc /> public Task <long> PostAsync(WallPostParams @params) { return(TypeHelper.TryInvokeMethodAsync(func: () => Post(@params: @params))); }
public long Post(WallPostParams @params) { return _vk.Call("wall.post", @params)["post_id"]; }
public long Post(long? ownerId = null, bool friendsOnly = false, bool fromGroup = false, string message = null, IEnumerable<MediaAttachment> mediaAttachments = null, string url = null, IEnumerable<Services> services = null, bool signed = false, DateTime? publishDate = null, double? lat = null, double? @long = null, long? placeId = null, long? postId = null) { if (string.IsNullOrEmpty(message) && (mediaAttachments == null || !mediaAttachments.Any()) && string.IsNullOrEmpty(url)) throw new ArgumentException("Message and attachments cannot be null or empty at the same time."); VkErrors.ThrowIfNumberIsNegative(() => placeId); VkErrors.ThrowIfNumberIsNegative(() => postId); if (lat.HasValue && (Math.Abs(lat.Value) > 90)) throw new ArgumentOutOfRangeException("lat", lat, "lat must be at range from -90 to 90"); if (@long.HasValue && (Math.Abs(@long.Value) > 180)) throw new ArgumentOutOfRangeException("long", @long, "long must be at range from -90 to 90"); var parameters = new WallPostParams { OwnerId = ownerId, FriendsOnly = friendsOnly, FromGroup = fromGroup, Message = message, Attachments = mediaAttachments, Services = services, Signed = signed, PublishDate = publishDate, Lat = lat, Long = @long, PlaceId = placeId, PostId = postId }; return Post(parameters); }
private void btnSnd_Click(object sender, EventArgs e) { string[] rf = new string[4]; var wc = new WebClient(); if (dataGridView1.ColumnCount > 3) { for (int row = 0; dataGridView1.RowCount - 1 > row; row++) { var groupId = long.Parse(dataGridView1.Rows[row].Cells[2].Value.ToString()); if (albumID.Text != "") { var photos = vk.Photo.Get(new PhotoGetParams { Count = 4, AlbumId = PhotoAlbumType.Id(int.Parse(albumID.Text)), OwnerId = vk.UserId }); WallPostParams wpp = new WallPostParams { Message = msgWall.Text, OwnerId = 0 - groupId, Attachments = photos }; vk.Wall.Post(wpp); } else { WallPostParams wpp = new WallPostParams { Message = msgWall.Text, OwnerId = 0 - groupId }; vk.Wall.Post(wpp); } for (int cel = 3; dataGridView1.ColumnCount - 1 > cel && dataGridView1.Rows[row].Cells[cel].Value != null; cel++) { if (dataGridView1.Rows[row].Cells[cel].Value.ToString() != "") { try { long albumId = long.Parse(dataGridView1.Rows[row].Cells[cel].Value.ToString()); var ups = vk.Photo.GetUploadServer(albumId, groupId); rf[0] = Encoding.ASCII.GetString(wc.UploadFile(ups.UploadUrl, Application.StartupPath + @"\file1.jpg")); rf[1] = Encoding.ASCII.GetString(wc.UploadFile(ups.UploadUrl, Application.StartupPath + @"\file2.jpg")); rf[2] = Encoding.ASCII.GetString(wc.UploadFile(ups.UploadUrl, Application.StartupPath + @"\file3.jpg")); rf[3] = Encoding.ASCII.GetString(wc.UploadFile(ups.UploadUrl, Application.StartupPath + @"\file4.jpg")); for (int i = 0; i < 4; i++) { var sPhotos = vk.Photo.Save(new PhotoSaveParams { SaveFileResponse = rf[i], GroupId = groupId, AlbumId = albumId }); Thread.Sleep(500); } // for (int i = 0; i < 4; i++) } catch { Debugger.Log(1, "Exception", "Exception"); } Thread.Sleep(1000 * (int)numKD1.Value); // КД между альбомами } // for (int cel = 3; dataGridView1.ColumnCount - 1 > cel && dataGridView1.Rows[row].Cells[cel].Value != null; cel++) Thread.Sleep(1000 * (int)numKD2.Value); // КД между группами } } // for (int row = 0; dataGridView1.RowCount - 1 > row; row++) } // if (dataGridView1.ColumnCount > 3) }
/// <inheritdoc /> public async Task <long> PostAsync(WallPostParams @params) { return(await TypeHelper.TryInvokeMethodAsync(() => _vk.Wall.Post(@params))); }
public void WallPost(long groupid, DateTime postDate, string hashtags, ContentForUploadInfo contentInfo, Poll poll, Location location) { List <VkNet.Model.Attachments.MediaAttachment> attList = new List <VkNet.Model.Attachments.MediaAttachment>(); // добавление опроса в аттач var polls = _api.PollsCategory.Create( new PollsCreateParams { Question = poll.Question, AddAnswers = poll.Answers, OwnerId = -groupid }); attList.Add(polls); // загрузка картинки if (contentInfo.IsPhoto()) { var uploadServer = _api.Photo.GetWallUploadServer(groupid); var wc = new WebClient(); var responseFile = Encoding.ASCII.GetString(wc.UploadFile(uploadServer.UploadUrl, contentInfo.FullName)); if (location != null) { var jsonResponseFile = JsonConvert.DeserializeObject <dynamic>(responseFile); VkNet.Utils.VkParameters param = new VkNet.Utils.VkParameters { { "group_id", groupid }, { "photo", jsonResponseFile["photo"] }, { "server", jsonResponseFile["server"] }, { "hash", jsonResponseFile["hash"] }, { "latitude", location.Latitude }, { "longitude", location.Longitude }, }; var saveWallPhotoResponse = _api.Call("photos.saveWallPhoto", param); var jsonSaveWallPhotoResponse = JsonConvert.DeserializeObject <dynamic>(saveWallPhotoResponse.RawJson)["response"][0]; VkNet.Model.Attachments.Photo photo = new VkNet.Model.Attachments.Photo() { Id = jsonSaveWallPhotoResponse["id"], OwnerId = jsonSaveWallPhotoResponse["owner_id"], AccessKey = jsonSaveWallPhotoResponse["access_key"] }; List <PhotoSize> psLst = new List <PhotoSize>(); foreach (var photoSize in jsonSaveWallPhotoResponse["sizes"]) { PhotoSize ps = new PhotoSize() { Type = _getPhotoSizeType(photoSize.type.ToString()), Height = photoSize.height, Url = photoSize.url, Width = photoSize.width, }; psLst.Add(ps); } photo.Sizes = new System.Collections.ObjectModel.ReadOnlyCollection <PhotoSize>(psLst); photo.Latitude = location.Latitude; photo.Longitude = location.Longitude; attList.Add(photo); } else { System.Collections.ObjectModel.ReadOnlyCollection <VkNet.Model.Attachments.Photo> photos = _api.Photo.SaveWallPhoto(responseFile, null, (ulong)groupid); foreach (var element in photos) { attList.Add(element); } } } // загрузка видео if (contentInfo.IsVideo()) { var video = _api.Video.Save(new VkNet.Model.RequestParams.VideoSaveParams { IsPrivate = false, Repeat = false, Description = hashtags, Name = contentInfo.Name }); var wc = new WebClient(); var responseFile = Encoding.ASCII.GetString(wc.UploadFile(video.UploadUrl, contentInfo.FullName)); attList.Add(video); } var postParams = new WallPostParams() { OwnerId = -groupid, Message = hashtags, PublishDate = postDate, Attachments = attList }; if (location != null) { postParams.Long = location.Longitude; postParams.Lat = location.Latitude; } _api.Wall.Post(postParams); }
static void Main(string[] args) { Console.Write("Login: "******"Password: "******"User Login {login}"); Logger.Info($"User password is secure"); Logger.Info($"Aplication ID {appId}"); using (var api = new VkApi(NLog.LogManager.GetLogger("ApiLogger"))) { try { api.Authorize(new ApiAuthParams { ApplicationId = appId, Login = login, Password = password, Settings = Settings.Wall }); } catch (VkApiAuthorizationException e) { Logger.Fatal(e, "Wrong login or Password"); Environment.Exit(1); } catch (Exception e) { Logger.Fatal(e, "Something strange on authorization"); Environment.Exit(1); } MyUserId = api.UserId; WallPostParams wallPost = GetWallPost(); HashSet <Group> allGroups = new HashSet <Group>(); foreach (var query in GetSearchQueries()) { var groups = api.Groups.Search(new GroupsSearchParams { Query = query, Type = GroupType.Page, Sort = GroupSort.Likes, Count = 30 }); allGroups.UnionWith(groups); } Logger.Info($"We found {allGroups.Count} groups"); DebugWriteGroups(allGroups); // Runs only in Debug builds var listOfGroups = new List <Group>(allGroups); for (int i = 0; i < Math.Min(listOfGroups.Count, MaxNumberOfPosts); ++i) { Logger.Debug($"Sending to {listOfGroups[i].Name} with ID {listOfGroups[i].Id}"); // OPTIMISE: It`s possible to just add OwnerID to wall post and don`t create more objects api.Wall.Post(new WallPostParams { Message = wallPost.Message, Attachments = wallPost.Attachments, OwnerId = -listOfGroups[i].Id }); } } Console.ReadLine(); }
/// <summary> /// Публикует новую запись на своей или чужой стене. /// </summary> /// <param name="params">Входные параметры выборки.</param> /// <returns> /// После успешного выполнения возвращает идентификатор созданной записи (post_id). /// </returns> /// <remarks> /// Страница документации ВКонтакте http://vk.com/dev/wall.post /// </remarks> public long Post(WallPostParams @params) { return(_vk.Call("wall.post", @params)["post_id"]); }
/// <inheritdoc /> public long Post(WallPostParams @params) { return(_vk.Call(methodName: "wall.post", parameters: @params)[key : "post_id"]); }