2016-11-27 2 views
1

Я получаю твитерские каналы теперь в течение нескольких дней. Я использую tweetinvi Api, мой код извлекает только последние 200 каналов, и я хочу все.Невозможно получить твиттер-твиты

мой код Public Function getTweets()

''Set the credentials 
    Dim lObjConsumerKey As String = "[REDACTED]" 
    Dim lObjConsumerSecret As String = "[REDACTED]" 
    Dim lObjUserAccessToken As String = "[REDACTED]" 
    Dim lObjUserAccessSecret As String = "[REDACTED]" 
    Auth.SetUserCredentials(lObjConsumerKey, lObjConsumerSecret, lObjUserAccessToken, lObjUserAccessSecret) 
    Dim lObjDataTable As New DataTable 

    lObjDataTable.Columns.Add("Tweets") 
    lObjDataTable.Columns.Add("CreatedAt") 

    Dim GetTimelineTweets = Timeline.GetUserTimeline(txtUserName.Text) 
    For Each lobjGetgetTweets In GetTimelineTweets 

     Dim drNew = lObjDataTable.NewRow 

     drNew("Tweets") = lobjGetgetTweets 
     drNew("CreatedAt") = lobjGetgetTweets.CreatedAt 
     lObjDataTable.Rows.Add(drNew) 

    Next 

    Return lObjDataTable 

End Function 

ответ

1

Такое поведение является конструкцией, в соответствии с API documentaion Twitter REST для GetUserTimeline(). В определении параметра подсчета ...

Определяет количество твитов, чтобы попытаться получить до максимума 200 в отдельной просьбе.

Чтобы получить все твиты, зарегистрируйтесь Working With Timelines на сайте разработчика Twitter.

0

Я создал образец для вас в документации: https://github.com/linvi/tweetinvi/wiki/Get-All-User-Tweets

RateLimit.RateLimitTrackerMode = RateLimitTrackerMode.TrackAndAwait; 

RateLimit.QueryAwaitingForRateLimit += (sender, args) => 
{ 
    Console.WriteLine($"Query : {args.Query} is awaiting for rate limits!"); 
}; 

long userId = <YOUR_USER_ID>; 
var lastTweets = Timeline.GetUserTimeline(userId, 200).ToArray(); 

var allTweets = new List<ITweet>(lastTweets); 
var beforeLast = allTweets; 

while (lastTweets.Length > 0 && allTweets.Count <= 3200) 
{ 
    var idOfOldestTweet = lastTweets.Select(x => x.Id).Min(); 
    Console.WriteLine($"Oldest Tweet Id = {idOfOldestTweet}"); 

    var numberOfTweetsToRetrieve = allTweets.Count > 3000 ? 3200 - allTweets.Count: 200; 
    var timelineRequestParameters = new UserTimelineParameters 
    { 
     // MaxId ensures that we only get tweets that have been posted 
     // BEFORE the oldest tweet we received 
     MaxId = idOfOldestTweet - 1, 
     MaximumNumberOfTweetsToRetrieve = numberOfTweetsToRetrieve 
    }; 

    lastTweets = Timeline.GetUserTimeline(userId, timelineRequestParameters).ToArray(); 
    allTweets.AddRange(lastTweets); 
} 

// `allTweets` now contains all the tweets that Twitter can return 
Смежные вопросы