private void WorkerUploaderSearch_DoWork(object sender, DoWorkEventArgs e)
        {
            workerUploaderSearch.ReportProgress(WORKER_USER_WITH_EMAIL_DISABLE_SEARCH_BUTTON);

            string tagname   = e.Argument as string;
            var    uploaders = new ObservableCollection <InstaApiUser>();

            uploaders.CollectionChanged += Uploaders_CollectionChanged;
            var task_uploaders = InstaManager.Instance.SearchTaggedMediaUploaders(uploaders, tagname, uploader_count);

            task_uploaders.Wait();
            int total_scraped = 0;

            foreach (var uploader in uploaders)
            {
                var emails = InstaManager.Instance.UserEmails(uploader.username);
                if (emails.Count > 0)
                {
                    var allEmails         = string.Join(", ", emails.ToArray());
                    var uploaderViewModel = new UserWithEmailViewModel
                    {
                        No       = -1, // temp index, will changed with UI code
                        Username = uploader.username,
                        FullName = uploader.full_name,
                        Email    = allEmails
                    };
                    workerUploaderSearch.ReportProgress(WORKER_USER_WITH_EMAIL_ADD_NEW, uploaderViewModel);
                }
                workerUploaderSearch.ReportProgress(WORKER_UERS_WITH_EMAIL_TOTAL_SCRAPED, ++total_scraped);
            }

            workerUploaderSearch.ReportProgress(WORKER_USER_WITH_EMAIL_ENABLE_SEARCH_BUTTON);
        }
        private void WorkerFollowerSearch_DoWork(object sender, DoWorkEventArgs e)
        {
            workerFollowerSearch.ReportProgress(WORKER_USER_WITH_EMAIL_DISABLE_SEARCH_BUTTON);

            string username     = e.Argument as string;
            var    task_user_id = InstaManager.Instance.SearchUser(username);

            task_user_id.Wait();
            long user_id = task_user_id.Result;

            if (user_id == -1)
            {
                MessageBox.Show("There aren't any user who has that username.");
            }
            else
            {
                var followers = new ObservableCollection <InstaApiUser>();
                followers.CollectionChanged += Followers_CollectionChanged;
                var task_followers = InstaManager.Instance.FollowersList(followers, user_id, follower_count);
                task_followers.Wait();
                int total_scraped = 0;
                foreach (var follower in followers)
                {
                    var emails = InstaManager.Instance.UserEmails(follower.username);
                    if (emails.Count > 0)
                    {
                        var allEmails         = string.Join(", ", emails.ToArray());
                        var followerViewModel = new UserWithEmailViewModel
                        {
                            No       = -1, // temp index, will changed with UI code
                            Username = follower.username,
                            FullName = follower.full_name,
                            Email    = allEmails
                        };
                        workerFollowerSearch.ReportProgress(WORKER_USER_WITH_EMAIL_ADD_NEW, followerViewModel);
                    }
                    workerFollowerSearch.ReportProgress(WORKER_UERS_WITH_EMAIL_TOTAL_SCRAPED, ++total_scraped);
                }
            }

            workerFollowerSearch.ReportProgress(WORKER_USER_WITH_EMAIL_ENABLE_SEARCH_BUTTON);
        }