【问题标题】:Unable to Fetch twitter tweets无法获取推特推文
【发布时间】:2017-04-11 06:35:27
【问题描述】:

我现在每天都收到 twiiter 提要。我正在使用 tweetinvi Api,我的代码只获取最新的 200 个提要,我想要全部。

我的代码是 公共函数 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

【问题讨论】:

    标签: twitter tweetinvi


    【解决方案1】:

    此行为是设计使然,根据 GetUserTimeline() 的 Twitter REST API 文档。在count参数的定义中...

    指定尝试和检索的推文数量,最多为 每个不同的请求 200 个。

    要获取所有推文,请查看 Twitter 开发者网站上的 Working With Timelines

    【讨论】:

      【解决方案2】:

      我在文档中为您创建了一个示例: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
      

      【讨论】:

        猜你喜欢
        • 2022-11-24
        • 2015-08-27
        • 1970-01-01
        • 2021-06-24
        • 2016-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-26
        相关资源
        最近更新 更多