public void DownloadInitialTweets() { switch (ColType) { case ColumnType.Timeline: TwitterTimelineAsync.HomeTimeline(Global.requestToken, null, TimeSpan.FromSeconds(30), ProcessTweetsCallback); break; case ColumnType.Mentions: TwitterTimelineAsync.Mentions(Global.requestToken, null, TimeSpan.FromSeconds(30), ProcessTweetsCallback); break; case ColumnType.DirectMessages: TwitterDirectMessageAsync.DirectMessages(Global.requestToken, null, TimeSpan.FromSeconds(30), ProcessDMCallback); break; // TODO: Get sent DM's too case ColumnType.List: string[] astrListParse = ListLocation.Split('/'); TwitterListAsync.GetStatuses(Global.requestToken, astrListParse[0], astrListParse[1], null, TimeSpan.FromSeconds(30), ProcessTweetsCallback); break; } }
public async Task OnGet([FromQuery(Name = "id")] string twitterId, [FromQuery] bool DoIt = false) { if (string.IsNullOrEmpty(twitterId)) { Redirect("/Error"); } var sw = new Stopwatch(); var(consumerKey, consumerSecret, accessToken, accessTokenSecret) = await GetTwitterAuthKeys(); ExceptionHandler.SwallowWebExceptions = false; Auth.SetUserCredentials(consumerKey, consumerSecret, accessToken, accessTokenSecret); LoggedInTwitterId = (await UserAsync.GetAuthenticatedUser()).ScreenName; TwitterId = twitterId; ListName = $"private_{twitterId}"; // Ensure that we can get some information sw.Start(); var usersFriends = await Tweetinvi.UserAsync.GetFriendIds(twitterId, 5000); sw.Stop(); ListMemberCount = usersFriends.Count() + 1; _logger.LogInformation($"TweetInvi command ({sw.ElapsedMilliseconds}ms) UserAsync.GetFriendIds() for {{{twitterId}}} found {ListMemberCount} friends"); var membersToAdd = usersFriends.Select(f => new UserIdentifier(f)); var list = await TwitterListAsync.GetExistingList(ListNameSlug, LoggedInTwitterId); if (list == null) { list = await TwitterListAsync.CreateList( ListName, PrivacyMode.Private, $"The list of accounts that @{twitterId} follows as of {DateTime.UtcNow.ToLongDateString()}. Should have {membersToAdd.Count()} members."); _logger.LogInformation($"Created list {{{ListName}}}."); } else { TwitterListUpdateParameters updateParameter = new TwitterListUpdateParameters() { // Name = ListName, // PrivacyMode = PrivacyMode.Private, Description = $"The list of accounts that @{twitterId} follows as of {DateTime.UtcNow.ToLongDateString()}. Should have {membersToAdd.Count()} members." }; sw.Restart(); var existingMembers = await list.GetMembersAsync(5000); sw.Stop(); _logger.LogInformation($"TweetInvi command ({sw.ElapsedMilliseconds}ms) list.GetMembersAsync() for {{{list.Slug}}} found {existingMembers.Count()} members"); membersToAdd = membersToAdd.Where(m => !existingMembers.Any(existing => m.Id == existing.Id)); if (DoIt || !_env.IsDevelopment()) { var success = await list.UpdateAsync(updateParameter); if (success) { _logger.LogInformation($"Updated description of {{{ListName}}}."); } else { _logger.LogError($"Updating description of {{{ListName}}} failed."); } } } NoOfMembersToAdd = membersToAdd.Count(); // Need to limit to 5000 accounts if (DoIt || !_env.IsDevelopment()) { await list.AddMemberAsync(await UserAsync.GetUserFromScreenName(twitterId)); sw.Restart(); var result = await list.AddMultipleMembersAsync(membersToAdd); sw.Stop(); ResponseString = result.ToString(); if (result == MultiRequestsResult.Success) { _logger.LogInformation($"TweetInvi command ({sw.ElapsedMilliseconds}ms) list.AddMultipleMembersAsync() for {{{list.Slug}}} adding {membersToAdd.Count()} members finished with result: {result}"); } else { _logger.LogError($"TweetInvi command ({sw.ElapsedMilliseconds}ms) list.AddMultipleMembersAsync() for {{{list.Slug}}} adding {membersToAdd.Count()} members finished with result: {result}"); } } else { _logger.LogWarning($"DEV MODE: AddMultipleMembersToList: Didn't add {membersToAdd.Count()} to list {{{ListName}}}."); ResponseString = "Nothing added in Development Mode"; } sw.Restart(); NoOfActualMembers = (await list.GetMembersAsync(5000)).Count(); sw.Stop(); _logger.LogInformation($"TweetInvi command ({sw.ElapsedMilliseconds}ms) list.GetMembersAsync() for {{{list.Slug}}} found {NoOfActualMembers} members"); var rateLimits = await RateLimitAsync.GetCurrentCredentialsRateLimits(); }