Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }
Example #4
0
 /// <summary>
 /// Добавляет пост в очередь размещние на стенку
 /// Запускает поток отправкиесли он завершил работу ранее
 /// </summary>
 /// <param name="requestPost"></param>
 public void SendPostToWall(WallPostParams sendPost)
 {
     //Добавление в очередь загрузок
     queueOutgoingPosts.Add(sendPost);
     //Если поток загрузок был завершен, запускает его
     if (!postTaskWork)
     {
         new Task(PostSender).Start();
     }
 }
Example #5
0
        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);
        }
Example #6
0
        public bool CreatePost(string message)
        {
            Authorize();

            var parameters = new WallPostParams()
            {
                Message = message
            };
            var result = _api.Wall.Post(parameters);

            return(result != default(long));
        }
Example #7
0
        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()}");
                ;
            }
        }
Example #8
0
        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)));
 }
Example #11
0
		public long Post(WallPostParams @params)
		{
			return _vk.Call("wall.post", @params)["post_id"];
		}
Example #12
0
		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);
		}
Example #13
0
        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)
        }
Example #14
0
 /// <inheritdoc />
 public async Task <long> PostAsync(WallPostParams @params)
 {
     return(await TypeHelper.TryInvokeMethodAsync(() => _vk.Wall.Post(@params)));
 }
Example #15
0
        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);
        }
Example #16
0
        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();
        }
Example #17
0
 /// <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"]);
 }
Example #18
0
 /// <inheritdoc />
 public long Post(WallPostParams @params)
 {
     return(_vk.Call(methodName: "wall.post", parameters: @params)[key : "post_id"]);
 }