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; }
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; }
async void ClearBots() { Stat = true; userInfoLog = await api.GetCurrentUserAsync(); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Чистка от ботов запущена")); try { if (setting.FileNameExceptionId.Length != 0) { string[] stringID = System.IO.File.ReadAllLines(setting.FileNameExceptionId); foreach (string str in stringID) { try { usersID.Add(Convert.ToInt64(str)); } catch { continue; } } } } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] ОШИБКА: {e.Message}")); } var userInfo = await api.GetCurrentUserAsync(); IResult <InstaUserShortList> x = null; if (setting.WhomClear.Equals("Подписчиков")) { x = await api.GetUserFollowersAsync(userInfo.Value.UserName, PaginationParameters.MaxPagesToLoad(2)); } if (setting.WhomClear.Equals("Подписки")) { x = await api.GetUserFollowingAsync(userInfo.Value.UserName, PaginationParameters.MaxPagesToLoad(2)); } if (x.Succeeded) { count = x.Value.Count; EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Чистка от ботов:{CountBlock}/{x.Value.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); foreach (InstaUserShort user in x.Value) { try { if (_source == null || _source.IsCancellationRequested) { break; } if (usersID.Count != 0) //Учет не отписки от определнных пользователей { bool flag = false; foreach (long id in usersID) { if (user.Pk == id) { EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Пользователь {user.UserName} пропущен. Запрет на отписку.")); Delay(); flag = true; break; } } if (flag) { continue; } } if (setting.LimitBlock <= CountBlock) //Учет лимита блокировок { EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Превышен лимит блокировок. Останавливаю процесс.")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Чистка от ботов:{CountBlock}/{x.Value.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); return; } if (setting.ChekedPause) //Учет паузы { if (setting.PauseLimit <= CountPause) { CountPause = 0; EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Пауза на " + setting.PauseTime + " минут")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Чистка от ботов:{CountBlock}/{x.Value.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Пауза")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 60000 * (int)setting.PauseTime, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } } var info = await api.GetUserInfoByIdAsync(user.Pk); if (info.Succeeded == false) { Thread.Sleep(500); continue; } if (setting.CheckedNoAvatarUser) //Если нет автарки { if (info.Value.HasAnonymousProfilePicture) { await api.BlockUserAsync(user.Pk); CountBlock++; CountPause++; EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Заблокирован пользователя с ником: {user.UserName}. Количество блокировок: {CountBlock}")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Чистка от ботов:{CountBlock}/{x.Value.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); if (!setting.ChekedUserBlock) { await api.UnBlockUserAsync(user.Pk); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Разблокирован пользователь с ником: {user.UserName}")); } Delay(); //Учет задержки continue; } } if (setting.CheckedPublicCountLess) //Публикаций меньше { int countPublic = Convert.ToInt32(info.Value.MediaCount); if (countPublic < setting.PublicCountLess) { await api.BlockUserAsync(user.Pk); CountBlock++; CountPause++; EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Заблокирован пользователь с ником: {user.UserName}. Количество блокировок: {CountBlock}")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Чистка от ботов:{CountBlock}/{x.Value.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); if (!setting.ChekedUserBlock) { await api.UnBlockUserAsync(user.Pk); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Разблокирован пользователь с ником: {user.UserName}")); } Delay(); //Учет задержки continue; } } if (setting.ChekedFollowsCountLess) { int countFollower = Convert.ToInt32(info.Value.FollowerCount); if (countFollower < setting.FollowsCountLess) { await api.BlockUserAsync(user.Pk); CountBlock++; CountPause++; EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Заблокирован пользователь с ником: {user.UserName}. Количество блокировок: {CountBlock}")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Чистка от ботов:{CountBlock}/{x.Value.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); if (!setting.ChekedUserBlock) { await api.UnBlockUserAsync(user.Pk); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Разблокирован пользователь с ником: {user.UserName}")); } Delay(); //Учет задержки continue; } } if (setting.ChekedSubscriptionsLess) { int countSubscriptions = Convert.ToInt32(info.Value.FollowingCount); if (countSubscriptions < setting.SubscriptionsLess) { await api.BlockUserAsync(user.Pk); CountBlock++; CountPause++; EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Заблокирован пользователь с ником: {user.UserName}. Количество блокировок: {CountBlock}")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Чистка от ботов:{CountBlock}/{x.Value.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); if (!setting.ChekedUserBlock) { await api.UnBlockUserAsync(user.Pk); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Разблокирован пользователь с ником: {user.UserName}")); } Delay(); //Учет задержки continue; } } if (setting.ChekedSubscriptionsMore) { int countSubscriptions = Convert.ToInt32(info.Value.FollowingCount); if (countSubscriptions > setting.SubscriptionMore) { await api.BlockUserAsync(user.Pk); CountBlock++; CountPause++; EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Заблокирован пользователь с ником: {user.UserName}. Количество блокировок: {CountBlock}")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Чистка от ботов:{CountBlock}/{x.Value.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); if (!setting.ChekedUserBlock) { await api.UnBlockUserAsync(user.Pk); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}] Разблокирован пользователь с ником: {user.UserName}")); } Delay(); //Учет задержки continue; } } Thread.Sleep(1000); } 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}:Чистка от ботов:{CountBlock}/{x.Value.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); Stat = false; }