// STATUS [ June 24, 2019 ]: this works /// <summary> /// Gets last X tweets from one Twitter list based on filters set in search and current sinceId /// </summary> /// <remarks> /// Uses tweetinvi to get the list, then tweets in that list, and then filters the tweets /// Note that this DOES filter any of the tweets returned (see previous method for no filters) /// See: https://github.com/linvi/tweetinvi/wiki/Twitter-Lists /// </remarks> /// <param name="listName"> /// The name of the list as defined by the user (e.g., 'Baseball') /// </param> /// <param name="screenName"> /// The screen name / Twitter handle / user name that you want /// </param> /// <param name="includeRetweets"> /// True if you want to include retweets; False if you don't; /// </param> /// <example> /// var tweets = GetTweetsFromTwitterListAfterSinceId("baseball", "mr_baseball", false); /// </example> /// <returns> /// IEnumerable of Tweetinvi.Models.ITweets /// </returns> public IEnumerable <ITweet> GetTweetsFromTwitterListAfterSinceId(string listName, string screenName, bool includeRetweets) { ITwitterList list = TwitterList.GetExistingList(listName, screenName); var currentSinceId = ReadCurrentSinceIdFromTxtFile(); var tweetsParameters = new GetTweetsFromListParameters { SinceId = currentSinceId, IncludeRetweets = includeRetweets, }; IEnumerable <ITweet> tweets = list.GetTweets(tweetsParameters); long newSinceId = currentSinceId; foreach (ITweet tweet in tweets) { if (tweet.Id > newSinceId) { newSinceId = tweet.Id; } } WriteSinceIdToTxtFile(newSinceId); // PrintTweetInfoFromIEnumerableITweet(tweets); return(tweets); }
public ITwitterPageIterator <ITwitterResult <ITweetDTO[]>, long?> GetTweetsFromListIterator(IGetTweetsFromListParameters parameters, ITwitterRequest request) { return(_pageCursorIteratorFactories.Create(parameters, cursor => { var cursoredParameters = new GetTweetsFromListParameters(parameters) { MaxId = cursor }; return _twitterListQueryExecutor.GetTweetsFromListAsync(cursoredParameters, new TwitterRequest(request)); })); }
// STATUS [ June 24, 2019 ]: THIS DOES NOT WORK public IEnumerable <ITweet> GetTweetsFromTwitterListAfterDate(string listName, string screenName, bool includeRetweets, DateTime date) { ITwitterList list = TwitterList.GetExistingList(listName, screenName); var tweetsParameters = new GetTweetsFromListParameters { // Until = new DateTime(2019,06,23), IncludeRetweets = includeRetweets, }; IEnumerable <ITweet> tweets = list.GetTweets(tweetsParameters); // PrintTweetInfoFromIEnumerableITweet(tweets); return(tweets); }
public async Task Tweets() { if (!EndToEndTestConfig.ShouldRunEndToEndTests) { return; } var publicList = await _protectedClient.Lists.CreateList("members-test-list", PrivacyMode.Public); var tweet = await _tweetinviTestClient.Tweets.PublishTweet("Testing that members are working" + Guid.NewGuid()); await publicList.AddMember("tweetinvitest"); await Task.Delay(_twitterEventualConsistencyDelay); // give some time to twitter for timeline generation // act var getTweetsParameters = new GetTweetsFromListParameters(publicList) { PageSize = 2 }; await _protectedClient.Lists.GetTweetsFromList(getTweetsParameters); var tweetsIterator = _protectedClient.Lists.GetTweetsFromListIterator(getTweetsParameters); var listTweetsPage1 = await tweetsIterator.NextPage(); getTweetsParameters.PageSize = 4; var listTweetsPage2 = await tweetsIterator.NextPage(); await tweet.Destroy(); await publicList.Destroy(); // assert Assert.Contains(listTweetsPage1, listTweet => listTweet.Id == tweet.Id); Assert.Equal(listTweetsPage1.Count(), 2); Assert.DoesNotContain(listTweetsPage2, listTweet => listTweet.Id == tweet.Id); Assert.Equal(listTweetsPage2.Count(), 4); }