/// <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); } }
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); }
/// <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; } }