Вы можете также рассмотреть вопрос о постраничном поиске. Вот демо:
static async Task DoPagedSearchAsync(TwitterContext twitterCtx)
{
const int MaxSearchEntriesToReturn = 100;
string searchTerm = "twitter";
// oldest id you already have for this search term
ulong sinceID = 1;
// used after the first query to track current session
ulong maxID;
var combinedSearchResults = new List<Status>();
List<Status> searchResponse =
await
(from search in twitterCtx.Search
where search.Type == SearchType.Search &&
search.Query == searchTerm &&
search.Count == MaxSearchEntriesToReturn &&
search.SinceID == sinceID
select search.Statuses)
.SingleOrDefaultAsync();
combinedSearchResults.AddRange(searchResponse);
ulong previousMaxID = ulong.MaxValue;
do
{
// one less than the newest id you've just queried
maxID = searchResponse.Min(status => status.StatusID) - 1;
Debug.Assert(maxID < previousMaxID);
previousMaxID = maxID;
searchResponse =
await
(from search in twitterCtx.Search
where search.Type == SearchType.Search &&
search.Query == searchTerm &&
search.Count == MaxSearchEntriesToReturn &&
search.MaxID == maxID &&
search.SinceID == sinceID
select search.Statuses)
.SingleOrDefaultAsync();
combinedSearchResults.AddRange(searchResponse);
} while (searchResponse.Any());
combinedSearchResults.ForEach(tweet =>
Console.WriteLine(
"\n User: {0} ({1})\n Tweet: {2}",
tweet.User.ScreenNameResponse,
tweet.User.UserIDResponse,
tweet.Text));
}
Я написал сообщение в блоге некоторое время назад, чтобы объяснить, в общем, как это работает:
Working with Timelines with LINQ to Twitter
Это немного старый и не включает в себя синтаксис асинхронной, но делает объясните SinceID
, MaxID
и методы. Twitter также имеет хорошую документацию, объясняя, как и почему их стратегии подкачки:
Working with Timelines (Twitter)
С учетом сказанного, Twitter API делает предел, как далеко вы можете пойти с поисками. В разделе The Search API, Best Practices они описывают, что они вернутся только через 6-9 дней.
Я понятия не имею, но вы пытались изменить search.SinceID? – hellogoodnight
Вы пытаетесь указать диапазон дат для получения твитов? –
Каково использование переменной dateFrom в вашем коде? – hellogoodnight