Example #1
0
        internal static async Task Run(double minScore, bool log, ScoreSettings settings)
        {
            var botsOrDead = await GetBotsOrDead(minScore);

            using (var logger = new ThreadedLogger($"{settings.mode}.log", log))
                using (var pbar = new ProgressBar(botsOrDead.Count))
                {
                    logger.LogMessage($"# {settings.mode} started {DateTime.Now.ToLongDateString()} " +
                                      $"{DateTime.Now.ToLongTimeString()}");

                    var actions = botsOrDead
                                  .Select(item =>
                    {
                        var(follower, score) = item;
                        return(InvokeAction(follower, score, logger, pbar, settings));
                    }).ToArray();

                    Task.WaitAll(actions);
                }

            settings.onComplete !.Invoke(botsOrDead.Count);
        }
Example #2
0
        private static async Task InvokeAction(IUser follower, double score, ThreadedLogger logger, ProgressBar pbar, ScoreSettings settings)
        {
            if (settings.onUserAsync != null)
            {
                await settings.onUserAsync !.Invoke(follower);
            }

            settings.onUser?.Invoke(follower, logger, score);
            pbar.Tick($"Processed @{follower.UserIdentifier.ScreenName}");
        }