//Главная функция программы static void Main(string[] args) { if (!LoadAppSettings()) { return; } using (var vk = new VkInteraction()) { if (!Authorize(vk)) { Console.ReadLine(); return; } while (true) { Console.WriteLine("Введите id аккаунта: "); string domain = Console.ReadLine(); if (string.IsNullOrEmpty(domain)) { break; } var wall = vk.GetWall(domain); if (wall == null) { Console.WriteLine("Не найдена стена пользователя или группы " + domain); } else { //Загрузка постов var posts = vk.LoadPostsText(wall, _loadPostsCount, _loadCopyHistory); //Вычисление и округление частотностей букв var frequences = new TextMetricsCalculator(posts).CalcLettersFrequences(); var roundedFrequences = RoundFrequences(frequences); string pref = $"{domain}, статистика для последних {_loadPostsCount} постов: "; //В консоль выводим статистику красиво Console.WriteLine(pref); foreach (var pair in roundedFrequences) { Console.WriteLine($"\"{pair.Key}\": {pair.Value}"); } //На стену выводим, как и просили, в формате JSON var json = JsonConvert.SerializeObject(roundedFrequences); var resWall = vk.GetWall(_resultPostDomain); if (resWall == null) { Console.WriteLine("Не найдена стена пользователя или группы " + domain + " для размещения записей"); } vk.WritePost(resWall, pref + json); } } } }
//Загрузка параметров авторизации и запрос пароля //Возвращает true, если авторизация прошла успешно static bool Authorize(VkInteraction vk) //Объект для взаимодействия с ВК { //Авторизация прекращается при вводе правильного пароля с успехом, или при вводе пустой строки завершением работы программы while (true) { Console.WriteLine("Введите пароль пользователя:"); string password = EnterPassword(); if (string.IsNullOrEmpty(password)) { return(false); } Func <string> twoFactorFun = _useTwoFactorAuthorization ? EnterConfirmCode : (Func <string>)null; try { vk.Authorize(_userLogin, password, twoFactorFun); break; } catch (Exception ex) when(ex is VkApiAuthorizationException || ex is VkApiException) { Console.WriteLine("Ошибка авторизации. Неправильный логин или пароль"); } } return(true); }