private async void MetroButton1_Click(object sender, EventArgs e) { SettingTaskUnSubscribe setting = new SettingTaskUnSubscribe(); setting.CheckedPause = metroTogglePauseUnSub.Checked; setting.ChekedDeleteBaseAfterUnSubscribe = metroCheckBoxDeleteInBaseUnSub.Checked; setting.ChekedUnSubscribeBlock = metroCheckBoxUnSubscribeBlock.Checked; setting.FileNameBaseId = metroTextBoxFileNameBaseUnSubscribe.Text; setting.DelayMin = Convert.ToInt32(metroTextBoxDelayMinUnSub.Text); setting.DelayMax = Convert.ToInt32(metroTextBoxDelayMaxUnSub.Text); setting.FileNameDontUnSubscribeId = metroTextBoxeExceptions.Text; setting.LimitUnSubscribe = Convert.ToInt32(metroTextBoxLimitUnSub.Text); if (metroTextBoxPauseCountUnSub.Text.Length != 0) { setting.PauseLimit = Convert.ToInt32(metroTextBoxPauseCountUnSub.Text); } else { setting.PauseLimit = 100; } if (metroTextBoxPauseTimeUnSub.Text.Length != 0) { setting.PauseTime = Convert.ToInt32(metroTextBoxPauseTimeUnSub.Text); } else { setting.PauseTime = 30; } setting.WhatDoing = metroComboBoxWhatDoing.Text; //Thread t = new Thread(() => TaskInstaBot.UnSubscribe(api, setting)); //t.Start(); if (infoDefenderTask == null) { string username = (await api.GetCurrentUserAsync()).Value.UserName; dictionaryTask[username] = new TaskUnSubscribe(api, setting); dictionaryTask[username].Start(); } else { if (infoDefenderTask.OneTask == null) { infoDefenderTask.OneTask = new TaskUnSubscribe(infoDefenderTask.Api, setting); } } Close(); }
async void UnSubscribeToList(IInstaApi api, SettingTaskUnSubscribe setting) { userInfoLog = await api.GetCurrentUserAsync(); EventFromMyClass(this, new MyEventMessage($"[{(await api.GetCurrentUserAsync()).Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Массотписка запущена")); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Отписка:{CountUnSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); try { string[] stringID = System.IO.File.ReadAllLines(setting.FileNameBaseId); foreach (string str in stringID) { try { usersID.Add(Convert.ToInt64(str)); usersIDcopy.Add(Convert.ToInt64(str)); } catch { continue; } } } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{DateTime.Now.ToString("HH:mm:ss")}] ОШИБКА: {e.Message} {e.TargetSite} {DateTime.Now}")); } foreach (long id in usersID) { try { if (_source == null || _source.IsCancellationRequested) { break; } var userInfo = await api.GetUserInfoByIdAsync(id); if (setting.FileNameBaseId != null && setting.FileNameDontUnSubscribeId.Length != 0) //Учет не отписки от определнных пользователей { var stringId = setting.FileNameDontUnSubscribeId.Split(' '); foreach (string idDont in stringId) { if (id == Convert.ToInt64(idDont)) { EventFromMyClass(null, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Пропущен пользователь {userInfo.Value.Username}. Является исключением")); Delay(); continue; } } } if (setting.ChekedUnSubscribeBlock) //Учёт отписки через блокировку { await api.BlockUserAsync(id); } else { await api.UnFollowUserAsync(id); } CountUnSubscribe++; CountPause++; EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Отписался от пользователя с ником {userInfo.Value.Username}. Kоличество отписок: {CountUnSubscribe}")); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Отписка:{CountUnSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); if (_source == null || _source.IsCancellationRequested) { break; } Delay(); if (setting.LimitUnSubscribe <= CountUnSubscribe) //Учет лимита отписок { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Превышен лимит подписок")); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Отписка:{CountUnSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); Save(); return; } if (setting.CheckedPause) //Учет паузы { if (setting.PauseLimit <= CountPause) { CountPause = 0; EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Отписка:{CountUnSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Пауза")); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Пауза на " + setting.PauseTime + " минут")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 60000 * setting.PauseTime, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } } } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] ОШИБКА: {e.Message}")); } } EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Выполнено")); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Отписка:{CountUnSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); Save(); Stat = false; }
public TaskUnSubscribe(IInstaApi api, SettingTaskUnSubscribe setting) { this.api = api; this.setting = setting; ew = new ManualResetEvent(true); }
async void UnSubscribeDontFollow(IInstaApi api, SettingTaskUnSubscribe setting) { userInfoLog = await api.GetCurrentUserAsync(); var follow = await api.GetCurrentUserFollowersAsync(PaginationParameters.MaxPagesToLoad(2)); var x = await api.GetUserFollowingAsync(userInfoLog.Value.UserName, PaginationParameters.MaxPagesToLoad(2)); var z = await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Отписка(кто не подписан):{CountUnSubscribe}/{z.Value.FollowingCount}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Массотписка запущена")); foreach (InstaUserShort user in x.Value) { try { if (_source == null || _source.IsCancellationRequested) { break; } if (setting.FileNameBaseId != null && setting.FileNameDontUnSubscribeId.Length != 0) //Учет не отписки от определнных пользователей { var stringId = setting.FileNameDontUnSubscribeId.Split(' '); foreach (string id in stringId) { if (user.Pk == Convert.ToInt64(id)) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Пропущен пользователь {user.UserName}. Является исключением")); Delay(); continue; } } } var userShort = new InstaUserShort(); userShort.Pk = user.Pk; if (follow.Value.IndexOf(userShort) == -1) { if (setting.ChekedUnSubscribeBlock) //Учёт отписки через блокировку { await api.BlockUserAsync(user.Pk); } else { await api.UnFollowUserAsync(user.Pk); } CountUnSubscribe++; CountPause++; EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Отписался от пользователя с ником: {user.UserName}. Kоличество отписок: {CountUnSubscribe}")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Отписка(кто не подписан):{CountUnSubscribe}/{z.Value.FollowingCount}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); if (_source == null || _source.IsCancellationRequested) { break; } Delay(); // Учет задержки if (CountUnSubscribe >= setting.LimitUnSubscribe) //Учет лимита отписок { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{ DateTime.Now.ToString("HH:mm:ss") }] Превышен лимит подписок")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Отписка(кто не подписан):{CountUnSubscribe}/{z.Value.FollowingCount}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); return; } if (setting.CheckedPause) //Учет паузы { if (setting.PauseLimit <= CountUnSubscribe) { CountPause = 0; EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Отписка(кто не подписан):{CountUnSubscribe}/{z.Value.FollowingCount}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Пауза")); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Пауза на " + setting.PauseTime + " минут")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 60000 * setting.PauseTime, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } } } } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] ОШИБКА: {e.Message}")); } } EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Выполнено")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Отписка(кто не подписан):{CountUnSubscribe}/{z.Value.FollowingCount}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); Stat = false; }