public static async void Subs(string userExp, string userName, string password) { user = new UserSessionData(); user.UserName = userName; user.Password = password; api = InstaApiBuilder.CreateBuilder() .SetUser(user) .UseLogger(new DebugLogger(LogLevel.Exceptions)) //.SetRequestDelay(TimeSpan.FromSeconds(1)) .Build(); var loginRequest = await api.LoginAsync(); IResult <InstaUser> userSearch = await api.GetUserAsync(userExp); IResult <InstaUserShortList> followers = await api.GetUserFollowersAsync(userSearch.Value.UserName, PaginationParameters.MaxPagesToLoad(5)); var followlist = followers.Value; int count_followlist = followlist.ToArray().Length; for (int i = 0; i < count_followlist; i++) { var res = await api.FollowUserAsync(followlist[i].Pk); string result = res.Succeeded.ToString(); } }
public async Task FollowUserAsync(long userId) { validateInstaClient(); validateLoggedIn(); IResult <InstaFriendshipStatus> friendshipStatus = await instaApi.FollowUserAsync(userId); if (!friendshipStatus.Succeeded) { logger.WriteAllProperties(friendshipStatus.Info); throw new Exception(friendshipStatus.Info.Message, friendshipStatus.Info.Exception); } }
private async Task ExecuteQueueFollowRecomendations(Queue queue, InstaBotContext db) { var top = await _api.GetExploreFeedAsync(PaginationParameters.MaxPagesToLoad(0)); var firstRecomendation = top.Value.Medias.FirstOrDefault(); await _api.FollowUserAsync(firstRecomendation.User.Pk); Console.WriteLine("Followed for user - " + firstRecomendation.User.Pk); queue.LastActivity = DateTime.UtcNow; await db.SaveChangesAsync(); Thread.Sleep(1000); }
public void StartFollowActions(ObservableHashSet <FollowerUI> toFollow, ObservableHashSet <FollowerUI> unFollow, Action <ActionPerformArgument> callback) { var args = new ActionPerformArgument { Total = toFollow.Count + unFollow.Count, Performed = 0 }; foreach (var l in toFollow) { var task = _instaApi.FollowUserAsync(l.OtherUser.Pk); task.GetAwaiter().OnCompleted( () => { args.Performed++; if (!task.Result.Value.Following) { toFollow.Remove(l); } callback(args); }); } foreach (var l in unFollow) { var task = _instaApi.UnFollowUserAsync(l.OtherUser.Pk); task.GetAwaiter().OnCompleted( () => { args.Performed++; if (task.Result.Value.Following) { unFollow.Remove(l); } callback(args); }); } }
public async Task <IResult <InstaFriendshipStatus> > Subscribe(string uri) { var userInfo = await _instaApi.GetUserInfoByUsernameAsync("uri"); return(await _instaApi.FollowUserAsync(userInfo.Value.Pk)); }
async System.Threading.Tasks.Task StartSubscribe() { Stat = true; userInfoLog = await api.GetCurrentUserAsync(); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Массфоловинг запущен.")); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Загружаю базу.")); 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; } } EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] База загружена.")); } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] ОШИБКА: {e.Message}")); } EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Начинаю подписку.")); foreach (long id in usersID) { try { userInfoLog = await api.GetCurrentUserAsync(); var userInfo = await api.GetUserInfoByIdAsync(id); if (_source == null || _source.IsCancellationRequested) { break; } if (setting.ChekedSkipSubscriber) //Пропуск подписчиков { var x = await api.GetCurrentUserFollowersAsync(PaginationParameters.MaxPagesToLoad(100)); var o = new InstaUserShort(); o.Pk = id; if (x.Value.IndexOf(o) != -1) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Подписчик с ником: {userInfo.Value.Username} пропущен")); if (setting.ChekedDeleteAdfter) { usersIDcopy.Remove(id); } Delay(); continue; } } if (!setting.ChekedSendPrivateUser) //Учет приватных пользователей { if (userInfo.Value.IsPrivate) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Приватный аккаунт {userInfo.Value.Username} пропущен")); Delay(); continue; } } await api.FollowUserAsync(id); //Подписка CountSubscribe++; CountPause++; EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] " + $"Подписался на пользователя с ником {userInfo.Value.Username}. " + $"Количество подписок: {CountSubscribe}")); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Подписка:{CountSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); Delay(); ew.WaitOne(); if (setting.ChekedLikingBySubscribe) //Учет лайков при подписке { int pages = setting.LikingMax; var media = await api.GetUserMediaAsync( userInfo.Value.Username, PaginationParameters.MaxPagesToLoad(pages % 18 == 0 ? pages : pages + 1)); //Учет загруки страниц var mediaList = media.Value.ToList(); int random = rnd.Next(setting.LikingMin, setting.LikingMax + 1); for (int i = 0; i < random; i++) { if (_source == null || _source.IsCancellationRequested) { break; } await api.LikeMediaAsync(mediaList[i].Pk); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Поставил лайк пользователю с ником {userInfo.Value.Username}")); int randomLikeDelay = rnd.Next(setting.DelayLikeMin, setting.DelayLikeMax + 1); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Задержка на {randomLikeDelay} сек")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 1000 * randomLikeDelay, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } } if (setting.ChekedDeleteAdfter) { usersIDcopy.Remove(id); } if (setting.ChekedPause) //Учет паузы { if (CountPause >= setting.PauseLimit) { CountPause = 0; EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Подписка:{CountSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Пауза")); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Пауза на " + setting.PauseTime + " минут ")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 60000 * setting.PauseTime, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } } if (CountSubscribe >= setting.LimitSubscribe) //Учет лимита подписок { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Превышен лимит подписок")); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}] Выполнено")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Подписка:{CountSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); return; } } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] ОШИБКА: {e.Message}")); } } EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Задача завершена")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Подписка:{CountSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); Stat = false; Save(); }
private static async void RunFollowTaskAsync(TaskModel t, IInstaApi api) { List <InstaUserShort> users = new List <InstaUserShort>(); t = t.Refreshed; foreach (var search in t.Searches) { foreach (var inString in search.GetInStrings()) { var _temp = await api.SearchUsersAsync(inString); if (_temp.Succeeded) { users.AddRange(_temp.Value.ToList()); var _tempList = new List <InstaUserShort>(); foreach (var user in users) { var _fs = await api.GetFriendshipStatusAsync(user.Pk); if (_fs.Succeeded) { if (!_fs.Value.Following) { _tempList.Add(user); } } } users = _tempList; } } var FilteredUsers = await Helper.GetFilteredUsersAsync(users, t.Searches, api, 5); // Execute if (FilteredUsers.Count > 0) { foreach (var user in FilteredUsers) { if (user != null) { var result = await api.FollowUserAsync(user.Pk); if (result.Succeeded) { if (result.Value.Following) { t.TaskExecuted(); Helper.Log($"Task Executed: {t.Name} - {t.TaskType.ToString()} {Environment.NewLine} {JsonConvert.SerializeObject(result.Value)}"); } else { Helper.Log(JsonConvert.SerializeObject(result.Value)); } } } } } } }
private async void ProcessHashtag(string tag) { try { // ищем информацию о теге var hashtagInfo = await api.GetHashtagInfo(tag); if (hashtagInfo.Succeeded) { //logBox.Items.Add("Hashtag: #" + hashtagInfo.Value.Name + ", media count = " + hashtagInfo.Value.MediaCount); // получаем ленту с постами по хештегу var tagFeed = await api.GetTagFeedAsync(hashtagInfo.Value.Name, PaginationParameters.MaxPagesToLoad(5)); int count = actionCount < (tagFeed.Value.Medias.Count) ? actionCount : tagFeed.Value.Medias.Count; foreach (var media in tagFeed.Value.Medias.Take(count)) { if (chk_boxLike.Checked) { // ставим лайки каждому посту var likeResult = await api.LikeMediaAsync(media.InstaIdentifier); var resultString = likeResult.Value ? "liked" : "not liked"; if (media.Images.Count > 0) { logger.WriteLog($"Hashtag: #{hashtagInfo.Value.Name}, URI:{media.Images[0].URI}"); } logger.WriteLog($" Post URI: https://www.instagram.com/p/{media.Code}"); logger.WriteLog($"User: {media.User.UserName} {resultString}"); } if (chk_follow.Checked) { // подписываемся на автора картинки var followResult = await api.FollowUserAsync(media.User.Pk); var resultString = followResult.Succeeded ? "followed" : "not folowwed"; logger.WriteLog($"{resultString} {media.User.UserName}"); folowingUsers.Add(media.User.Pk.ToString()); } if (chk_boxComment.Checked && commentsArr.Length > 0) { // ставим случайный комментарий автору фотки Random rnd = new Random(); int randIndx = rnd.Next(0, commentsArr.Length - 1); string comment = commentsArr[randIndx]; var commentResult = await api.CommentMediaAsync(media.InstaIdentifier, comment); var resultString = commentResult.Succeeded ? "comented" : "not comented"; logger.WriteLog($"{resultString}"); logger.WriteLog($"-------------------------------------------------------------"); } if (media.Images.Count > 1) { PrintImage(media.Images[1].URI); } progressBar.Increment(1); } } } catch (Exception ex) { logger.CloseLog(); MessageBox.Show(ex.ToString()); } }