public static void SaveAllGroup() { for (int i = 0; i < ParametersClass.groups.Count; i++) { IOClass.SaveGroupJson(ParametersClass.groups[i]); } }
public static void PostsBack(long groupId, int localGroupId) { LoadAndFixLogs(groupId); Random rnd = new Random(); for (int i = 0; i < ParametersClass.logs.Count; i++) { if (File.Exists(ParametersClass.logs[i].file)) { string[] splitter = Path.GetFileName(ParametersClass.logs[i].file).Split('_'); var delete = ParametersClass.vkapi.Wall.Delete(-groupId, ParametersClass.logs[i].postId); string file = ParametersClass.groups[localGroupId].groupItem.ForPublic + "\\" + "backed_" + rnd.Next(0, 11) + "_" + splitter[splitter.Length - 1]; if (delete) { File.Move(ParametersClass.logs[i].file, file); } } } LoadAndFixLogs(groupId); IOClass.SaveLogsJson(ParametersClass.logs); MessageBox.Show("Посты успешно откачены!"); }
public static void LoadAndFixLogs(long groupId) { if (File.Exists(ParametersClass.logsPath)) { ParametersClass.logs = IOClass.ReadLogsJson(); List <Logs> UpdateLogs = new List <Logs>(); PostInfo[] posts = VkApiClass.GetAllPostponed(groupId).ToArray(); for (int i = 0; i < ParametersClass.logs.Count; i++) { for (int p = 0; p < posts.Length; p++) { if (ParametersClass.logs[i].groupId == posts[p].groupId) { if (ParametersClass.logs[i].postId == posts[p].postId) { UpdateLogs.Add(ParametersClass.logs[i]); } } } } ParametersClass.logs = UpdateLogs; } }
public static bool Auth(string login, string password, System.Windows.Forms.Button loginButton) //Авторизация в вк { try { if (ParametersClass.AutostartValue) { ParametersClass.vkapi.Authorize(new ApiAuthParams { ApplicationId = ParametersClass.appID, Login = login, Password = password, Settings = ParametersClass.settings }); ParametersClass.autch = true; ParametersClass.token = ParametersClass.vkapi.Token; IOClass.SaveGlobalJson(login, password); loginButton.BackColor = Color.Lime; ParametersClass.timertoautopost.Enabled = true; ParametersClass.vkapi.Stats.TrackVisitor(); } else { ParametersClass.vkapi.Authorize(new ApiAuthParams { ApplicationId = ParametersClass.appID, Login = login, Password = password, Settings = ParametersClass.settings, TwoFactorAuthorization = () => { using (Autch Autch = new Autch()) { if (Autch.ShowDialog() == DialogResult.OK) { TwoFactorAuthorizationResult = Autch.TheValue; } } return(TwoFactorAuthorizationResult); } }); MessageBox.Show("Успешная авторизация."); ParametersClass.autch = true; ParametersClass.token = ParametersClass.vkapi.Token; IOClass.SaveGlobalJson(login, password); loginButton.BackColor = Color.Lime; ParametersClass.vkapi.Stats.TrackVisitor(); } return(true); } catch (Exception ex) { ParametersClass.autch = false; MessageBox.Show("Авторизация не удалась. \n" + ex); loginButton.BackColor = Color.Red; return(false); } }
public void Post(bool force = false) //Создание поста { int postMultiply = 0; int wallid = 0; ulong CoutPosts = 0; int FileCount = 0; postMultiply = groupItem.ImageInPost; wallid = -groupItem.WallId; FileCount = Directory.GetFiles(groupItem.ForPublic).Length; var vkpost = ParametersClass.vkapi.Wall.Get(new WallGetParams { OwnerId = wallid, Filter = WallFilter.Postponed, }); if (!ParametersClass.AutostartValue || force) { CoutPosts = (ulong)CoutPost; } else { CoutPosts = (ulong)groupItem.MaxPostInAuto; } if (vkpost.TotalCount + (ulong)(CoutPost * groupItem.ImageInPost) > 150) { CoutPosts = 150 - vkpost.TotalCount; } if (CoutPosts > 0) { if ((int)CoutPosts * postMultiply > FileCount) { MessageBox.Show("В папке всего: " + FileCount + ", а не " + (int)CoutPosts * postMultiply + " файла."); } else { if ((CoutPosts + vkpost.TotalCount) <= 150) { for (int i = 0; i < (int)CoutPosts; i++) //Сколько будет постов { time.Time(); DateTime datenow = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, 00); DateTime date = new DateTime(time.year, time.month, time.day, time.hour, time.minute, 00); if (date < datenow) { MessageBox.Show("Мы не можем отправлять посты в прошлое."); } file = IOClass.GetFile(groupItem.ForPublic); long ownerid = ParametersClass.vkapi.Users.Get(new long[] { })[0].Id; try { var get = ParametersClass.vkapi.Wall.Post(new WallPostParams //Создание поста { OwnerId = -groupItem.WallId, FromGroup = true, Message = groupItem.Hesh != null ? groupItem.Hesh : "", Attachments = VkApiClass.Posts(postMultiply, ownerid, groupItem.WallId, file.ToArray()).getIEMA(), PublishDate = new DateTime(time.year, time.month, time.day, time.hour, time.minute, 0) }); for (int f = 0; f < postMultiply; f++) { string new_path = groupItem.Public + @"\" + DateTime.Now.Hour + "." + DateTime.Now.Minute + "." + DateTime.Now.Second + "_" + DateTime.Now.Day + "." + DateTime.Now.Month + "." + DateTime.Now.Year + "_" + "f" + f + "_" + (Path.GetFileName(file[f]).Split('_').Length > 1 ? Path.GetFileName(file[f]).Split('_')[Path.GetFileName(file[f]).Split('_').Length - 1] : Path.GetFileName(file[f])); File.Move(file[f], new_path); //Перемещение файла в папку после загрузки IOClass.SaveGroupJson(this); //Сохраняем переменные json ParametersClass.logs.Add(new Logs { file = new_path, groupId = groupItem.WallId, postId = get }); IOClass.SaveLogsJson(ParametersClass.logs); DesuBot.progressBarPlus(Program.desuBot); } } catch (Exception ex) { if (ex is VkNet.Exception.PostLimitException) { MessageBox.Show(date + " : Возможно в данное время уже запланирован пост или вы достигли лимита 150 постов в отложенных записях. error: P1. \n" + ex.Message); } else if (ex is VkNet.Exception.CaptchaNeededException cap) { csid = cap.Sid; captchaUrl = cap.Img.AbsoluteUri; using (Captcha captcha = new Captcha()) { captcha.Show(); if (captcha.ShowDialog() == DialogResult.OK) { captchaKey = captcha.TheValue; } } System.Windows.Forms.Application.Exit(); } else { MessageBox.Show(ex.Message); } } } } else { MessageBox.Show("В отложенные записи нельзя добавить больше 150 постов."); } } } }