2017-09-06 2 views
0

, 나는 여전히 직접 호출 할 때 200 개 트윗로 제한 될 것으로 보인다 Extract BearerToken from LinqToTwitter IAuthorizerTwitterContext 제한 내가 (이 시점에서) 아무것도 과거의 권한 부여를 위해 LTT 라이브러리를 사용하고 있지 않다하더라도

까지 따라 호출

{매개 변수 문자열/상태/user_timeline의 API : 거짓 USER_ID = {0} & SCREEN_NAME = {1} & 수 = 3200 & exclude_replies = 사실 & include_rts = 거짓 & trim_user =거짓3210 contributor_details =}

그리고

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

TwitterContext 권한의 한계인가? 그렇다면 라이브러리 호출을 사용하지 않고 어떻게 한도를 변경할 수 있습니까?

즉, 나는 그것이 검색 대상에 트위터의 한계 당 일치하지 않는 결과가 발생할 수 있습니다 트위터 검색 개체를 사용하기 때문에 내가 라이브러리를 사용하지 않는

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

를 사용 하지입니다.

미리 감사드립니다.

답변

0

트위터의 statuses/user_timeline documentation에 따르면 count의 최대 값은 200입니다. 그러나 이는 쿼리 당 최대 값입니다. 여러 쿼리를 만들어 최대 3200 개의 트윗을 검색 할 수 있습니다. 트위터는 Working with Timelines page에 타임 라인을 사용하여 3200 개의 트윗을 검색하는 방법에 대해 설명합니다. 나는 당신이 트위터에 LINQ로 쿼리되지 않습니다 실현하지만,이 답을 찾아 다른 사람의 이익을 위해이 트위터에 LINQ는 어떻게하는지 : 트위터 문서에 LINQ에서에서 찾을 수 있습니다

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."); 
    } 
} 

Querying the User Timeline. 또한 블로그 게시물 인 Working with Timelines with LINQ to Twitter을 작성하여 트위터의 페이징 접근 방식에 대한 LINQ를 설명했습니다. 이전 버전 (비동기 버전)이지만 개념은 동일합니다.