Пример #1
0
        public static string GetPreviewSizePhotoURL(this VkNet.Model.Attachments.Photo self)
        {
            // Берём какое-нибудь среднее изображение из всех возможных размеров
            var chunk = self.Sizes.Take(3);

            return(chunk.Last() != null?chunk.Last().Url.ToString() : string.Empty);
        }
Пример #2
0
 public static string GetMaxSizePhotoURL(this VkNet.Model.Attachments.Photo self)
 {
     return(self.Sizes.Last() != null?self.Sizes.Last().Url.ToString() : string.Empty);
 }
Пример #3
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);
        }