I'm trying to find all the possible entries on twitter for a particular keyword, but using the code below only the fist 100 are returned. The search returns null on the second iteration. Can anyone tell me what I'm doing wrong?
public async void SearchForTweets()
{
const int maxNumberToFind = 100;
const string whatToFind = "iphone";
ulong lastId = 0;
var total = 0;
int count;
do
{
var id = lastId;
// Get the first 100 records, or the first 100 whose ID is less than the previous set
var searchResponse =
await
(from search in _twitterCtx.Search
where search.Type == SearchType.Search &&
search.Query == whatToFind &&
search.Count == maxNumberToFind &&
(id == 0 || search.MaxID < id)
select search)
.SingleOrDefaultAsync();
// Only if we find something
if (searchResponse != null && searchResponse.Statuses != null)
{
// Out put each tweet found
searchResponse.Statuses.ForEach(tweet =>
Console.WriteLine(
"{4} ID: {3} Created: {2} User: {0}, Tweet: {1}",
tweet.User.ScreenNameResponse,
tweet.Text,
tweet.CreatedAt,
tweet.StatusID,
DateTime.Now.ToLongTimeString()));
// Take a note of how many we found, and keep a running total
count = searchResponse.Statuses.Count;
total += count;
// What is the ID of the oldest found (Used to limit the next search)
lastId = searchResponse.Statuses.Min(x => x.StatusID);
}
else
{
count = 0;
}
} while (count == maxNumberToFind); // Until we find less than 100
Console.Out.WriteLine("total = {0}", total);
}