Ejemplo n.º 1
0
        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("Посты успешно откачены!");
        }
Ejemplo n.º 2
0
        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 постов.");
                    }
                }
            }
        }