あなたはまた、ページング検索を検討する必要があります。ここではデモです:
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のAPIが戻ってあなたが検索して行くことができるどこまで制限を行い、言ったことで
Working with Timelines (Twitter)
:Twitterはまた、自分のページング戦略の方法と理由を説明し、良いドキュメントを持っています。 The Search API, Best Practicesセクションでは、彼らは6〜9日だけ戻ってくると説明しています。
私は考えていませんが、search.SinceIDを変更しようとしましたか? – hellogoodnight
つぶやきを取得する期間を指定しようとしていますか? –
あなたのコードでdateFrom変数の使用法は何ですか? – hellogoodnight