示例#1
0
文件: Form1.cs 项目: IVT2/Client
        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();
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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);
                });
            }
        }
示例#5
0
        public async Task <IResult <InstaFriendshipStatus> > Subscribe(string uri)
        {
            var userInfo = await _instaApi.GetUserInfoByUsernameAsync("uri");

            return(await _instaApi.FollowUserAsync(userInfo.Value.Pk));
        }
示例#6
0
        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();
        }
示例#7
0
        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));
                                }
                            }
                        }
                    }
                }
            }
        }
示例#8
0
        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());
            }
        }