2017-09-06 3 views
0

は、私は(この時点では)何も過去の認可のためにLTTライブラリを使用していないが、私はまだ直接呼び出すとき200件のツイートに限定されているように見えるExtract BearerToken from LinqToTwitter IAuthorizerTwitterContext制限LinqToTwitterのAPIの外

にフォローアップを呼び出します

{パラメータ文字列と/状態/ user_timelineのAPI:偽USER_ID = {0} & SCREEN_NAME = {1} &カウント= 3200 & exclude_replies =真& include_rts =偽& trim_user = & contributor_details =偽}

そして

webClient.Headers.Add(String.Format("Authorization: Bearer {0}", BearerToken)); 

これはTwitterContext認証の限界ですか?もしそうなら、ライブラリ呼び出しを使わずにその制限をどのように変更できますか?

すなわち、私はそれが検索対象にTwitterの制限あたりの一貫性のない結果が生じることがあり、Twitterの検索オブジェクトを利用しているので、私は、ライブラリを使用していない

statusResponse = (from tweet in twitterCtx.Status ...) 

を使用してないです。

ありがとうございます!

答えて

0

Twitterのstatuses/user_timeline documentationによると、countの最大値は200です。ただし、それは1クエリあたり最大です。複数のクエリを作成して、最大3200個のツイートを取得できます。 Twitterは、Working with Timelines pageに、タイムラインを使って3200のつぶやきを取得する方法について説明しています。

あなたがLINQのTwitterへのドキュメントで見つけることができます
static async Task RunUserTimelineQueryAsync(TwitterContext twitterCtx) 
{ 
    //List<Status> tweets = 
    // await 
    // (from tweet in twitterCtx.Status 
    //  where tweet.Type == StatusType.User && 
    //   tweet.ScreenName == "JoeMayo" 
    //  select tweet) 
    // .ToListAsync(); 

    const int MaxTweetsToReturn = 200; 
    const int MaxTotalResults = 100; 

    // 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> tweets = 
     await 
     (from tweet in twitterCtx.Status 
     where tweet.Type == StatusType.User && 
       tweet.ScreenName == "JoeMayo" && 
       tweet.Count == MaxTweetsToReturn && 
       tweet.SinceID == sinceID && 
       tweet.TweetMode == TweetMode.Extended 
     select tweet) 
     .ToListAsync(); 

    if (tweets != null) 
    { 
     combinedSearchResults.AddRange(tweets); 
     ulong previousMaxID = ulong.MaxValue; 
     do 
     { 
      // one less than the newest id you've just queried 
      maxID = tweets.Min(status => status.StatusID) - 1; 

      Debug.Assert(maxID < previousMaxID); 
      previousMaxID = maxID; 

      tweets = 
       await 
       (from tweet in twitterCtx.Status 
       where tweet.Type == StatusType.User && 
         tweet.ScreenName == "JoeMayo" && 
         tweet.Count == MaxTweetsToReturn && 
         tweet.MaxID == maxID && 
         tweet.SinceID == sinceID && 
         tweet.TweetMode == TweetMode.Extended 
       select tweet) 
       .ToListAsync(); 

      combinedSearchResults.AddRange(tweets); 

     } while (tweets.Any() && combinedSearchResults.Count < MaxTotalResults); 

     PrintTweetsResults(tweets); 
    } 
    else 
    { 
     Console.WriteLine("No entries found."); 
    } 
} 

:私はツイッターへのLINQはそれをしないか、この、あなたはTwitterへLINQで問い合わせることが、この答えを見つけた誰の利益のためにされていません実現しますQuerying the User Timeline。私はまた、ブログの投稿Working with Timelines with LINQ to Twitterを書いて、LINQをページングへのTwitterのアプローチに説明しました。それは以前の(非同期ではない)バージョンですが、コンセプトは同じです。