예제 #1
0
        /// <summary>
        /// Опубликовываем запись на стене с картинкой альбома
        /// </summary>
        /// <param name="id">ID пользователя, где будем размещать запись</param>
        private void Share(int id)
        {
            string shareText = ReplaceKeyWords(Properties.Settings.Default.messageToPost);

            Console.WriteLine(shareText);

            _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
            try
            {
                if (_coverArt)
                {
                    _wallFactory = new WallFactory(_manager);
                    _wallFactory.Manager.Method("photos.getWallUploadServer");
                    _wallFactory.Manager.Params("uid", id);
                    XmlNode result = _wallFactory.Manager.Execute().GetResponseXml().LastChild;
                    XmlUtils.UseNode(result);
                    string uploadUrl = XmlUtils.String("upload_url");

                    HttpUploaderFactory uf = new HttpUploaderFactory();
                    NameValueCollection files = new NameValueCollection();
                    files.Add("photo", _imageDirectory);
                    string resp = uf.Upload(uploadUrl, null, files);
                    Console.WriteLine(resp);
                    var apiResponse = JObject.Parse(resp);
                    var server = (int)apiResponse["server"];
                    var photo = (string)apiResponse["photo"];
                    var hash = (string)apiResponse["hash"];

                    _wallFactory.Manager.Method("photos.saveWallPhoto");
                    _wallFactory.Manager.Params("server", server);
                    _wallFactory.Manager.Params("photo", photo);
                    _wallFactory.Manager.Params("hash", hash);
                    XmlNode result2 = _wallFactory.Manager.Execute().GetResponseXml().FirstChild.FirstChild;
                    XmlUtils.UseNode(result2);
                    string photoId = XmlUtils.String("id");
                    Console.WriteLine(photoId);

                    _wallFactory.Manager.Method("wall.post");
                    _wallFactory.Manager.Params("owner_id", id);
                    _wallFactory.Manager.Params("message", shareText);
                    _wallFactory.Manager.Params("attachments", photoId);
                    _wallFactory.Manager.Params("uid", id);
                    _wallFactory.Manager.Execute();

                }
                else
                {
                    _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
                    _wallFactory.Manager.Method("wall.post");
                    _wallFactory.Manager.Params("owner_id", id);
                    _wallFactory.Manager.Params("message", shareText);
                    Console.WriteLine(_wallFactory.Manager.Execute().ToString());
                }
                AddLineToConsole("Опубликовано."); // Уведомляем пользователя об успешности
            }

            catch (ApiRequestErrorException apiRequestError)
            {
                AddLineToConsole(apiRequestError.Message + ". Сайт вернул неверный ответ. Попробуйте изменить текст для публикации.");
            }
            catch (Exception e)
            {
                AddLineToConsole(e.Message);
            }
        }
예제 #2
0
 public Photos.PhotoEntryFull UploadPhotoToMyWall(string pathToPhoto)
 {
     Photos.PhotosFactory pf = new Photos.PhotosFactory(this.Manager);
     string url = pf.GetWallUploadServer(null, null);
     HttpUploaderFactory uf = new HttpUploaderFactory();
     NameValueCollection files = new NameValueCollection();
     files.Add("photo", pathToPhoto);
     ApiCore.Photos.PhotoUploadedInfo ui = new ApiCore.Photos.PhotoUploadedInfo(uf.Upload(url, null, files));
     return pf.SaveWallPhoto(ui, null, null);
 }
예제 #3
0
        /// <summary>
        /// Опубликовываем запись на стене с картинкой альбома
        /// </summary>
        /// <param name="id">ID пользователя, где будем размещать запись</param>
        private void Share(int id)
        {
            iTunesApp app = new iTunesAppClass(); // И снова регистрируем iTunes, как класс приложения

            // Получаем нужную нам информацию о композиции
            string artist = app.CurrentTrack.Artist;
            string name = app.CurrentTrack.Name;
            string playlist = app.CurrentTrack.Playlist.Name;
            string album = app.CurrentTrack.Album;
            string genre = app.CurrentTrack.Genre;
            string prefix = _templatestatus;
            int count = app.CurrentTrack.PlayedCount;

            string shareText = Properties.Settings.Default.messageToPost;

            // Преобразуем ключевые слова
            shareText = shareText.Replace("{name}", name);
            shareText = shareText.Replace("{artist}", artist);
            shareText = shareText.Replace("{playlist}", playlist);
            shareText = shareText.Replace("{count}", count.ToString());
            shareText = shareText.Replace("{album}", album);
            shareText = shareText.Replace("{genre}", genre);
            shareText = shareText.Replace("{prefix}", prefix);
            Console.WriteLine(shareText);

            _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
            try
            {
                if (_coverArt)
                {
                    _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
                    _wallFactory.Manager.Method("photos.getWallUploadServer");
                    _wallFactory.Manager.Params("uid", id);
                    XmlNode result = _wallFactory.Manager.Execute().GetResponseXml();
                    XmlUtils.UseNode(result);
                    string uploadUrl = XmlUtils.String("upload_url");

                    HttpUploaderFactory uf = new HttpUploaderFactory();
                    NameValueCollection files = new NameValueCollection();
                    files.Add("photo", _imageDirectory);
                    string resp = uf.Upload(uploadUrl, null, files);
                    Console.WriteLine(resp);
                    var apiResponse = JObject.Parse(resp);
                    string server = (string)apiResponse["server"];
                    string photo = (string)apiResponse["photo"];
                    string hash = (string)apiResponse["hash"];

                    _wallFactory.Manager.Method("photos.saveWallPhoto");
                    _wallFactory.Manager.Params("server", server);
                    _wallFactory.Manager.Params("photo", photo);
                    _wallFactory.Manager.Params("hash", hash);
                    XmlNode result2 = _wallFactory.Manager.Execute().GetResponseXml().FirstChild;
                    XmlUtils.UseNode(result2);
                    string photoId = XmlUtils.String("id");
                    Console.WriteLine(photoId);

                    _wallFactory.Manager.Method("wall.post");
                    _wallFactory.Manager.Params("owner_id", id);
                    _wallFactory.Manager.Params("message", shareText);
                    _wallFactory.Manager.Params("attachments", photoId);
                    _wallFactory.Manager.Params("uid", id);
                    _wallFactory.Manager.Execute();

                }
                else
                {
                    _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
                    _wallFactory.Manager.Method("wall.post");
                    _wallFactory.Manager.Params("owner_id", id);
                    _wallFactory.Manager.Params("message", shareText);
                    Console.WriteLine(_wallFactory.Manager.Execute().ToString());
                }
                actionsStatus.Text = "Опубликовано."; // Уведомляем пользователя об успешности
                actionsStatusTimer.Enabled = true; // Включаем таймер, который каждые n-секунд сбрасывает специальной поле статуса действий
            }
            catch (FormatException)
            {
                actionsStatus.Text = "Введен некорректный ID.";
                actionsStatusTimer.Enabled = true;
            }

            catch (ApiRequestErrorException)
            {
                actionsStatus.Text = "Сайт вернул неверный ответ. Попробуйте изменить текст для публикации.";
                actionsStatusTimer.Enabled = true;
            }
            catch (Exception)
            {
                actionsStatus.Text = "Нет соединения с ВКонтакте. Проверьте работоспособность интернета.";
                actionsStatusTimer.Enabled = true;
            }
        }