【问题标题】:How to get a count of followers from Twitter API and trendline如何从 Twitter API 和趋势线获取关注者数量
【发布时间】:2022-01-07 08:43:51
【问题描述】:

我正在为 Twitter 编写一些关于随时间推移的追随者数量的报告,但是经过大量搜索和反复试验后,我无法获得随时间推移的追随者数量 - 特别是过去的追随者数量.

我知道有一个 API 可以获取关注者的个人 userId,但这对于我需要的东西来说太过分了,我必须每天都调用它。理想情况下,如果我可以传递一个日期并且它可以返回关注者的数量,那就太好了。

有没有人有这方面的经验以及 API 可能是什么!

谢谢

【问题讨论】:

    标签: twitter


    【解决方案1】:

    虽然没有直接的 API 来获取趋势线,但获取关注者数量相当容易,通过 URL 访问:

    http://api.twitter.com/1/users/show.json?user_id=12345
    

    文档里都有@https://dev.twitter.com/docs/api/1/get/users/show

    要获得趋势线,我似乎需要每天查询它!

    更新到 Twitter API v1.1

    https://api.twitter.com/1.1/users/show.json?user_id=12345
    

    https://dev.twitter.com/docs/api/1.1/get/users/show的文档

    2018 年 5 月 31 日更新

    新的 API 端点位于

    https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-users-show
    

    【讨论】:

    • 这个速率有限制吗?如果有一种方法可以不受速率限制地获得特定用户的关注者数量,有人可以详细说明吗?我注意到我可以在没有身份验证的情况下访问 v1 - 但很快就会被废弃?
    • 您可以每 15 分钟访问每个 api 端点有限的次数。一些端点允许每个时间窗口 100 个请求,而另一些则更多。请注意,此限制是针对您拥有的每个用户令牌,因此允许的查询数量相当大。
    • 费率为180/ 15分钟
    • 当你进行更新时,把最新的放在最上面,因为它是新人首先看到的
    • 请更新到 V2
    【解决方案2】:

    这是一个使用 CURL 的简单 PHP 示例,不涉及任何库,使用 v2 API 和不记名令牌(不记名令牌是访问公共数据的某种简化方法)获取所选个人资料(此处为 @TwitterFrance)的 Followers_count通过 OAuth 2.0 API)

    $authorization = "Authorization: Bearer YOUREXTRALONGBEARERYOUREXTRALONGBEARERYOUREXTRALONGBEARERYOUREXTRALONGBEARERYOUREXTRALONGBEARERYOUREXTRALONGBEAR";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $authorization));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, "https://api.twitter.com/2/users/by/username/TwitterFrance?user.fields=public_metrics");
    $result = curl_exec($ch);
    curl_close($ch);
    if (is_string($result)) {
        echo (json_decode($result)->data->public_metrics->followers_count);
        die();
    }
    

    【讨论】:

      【解决方案3】:

      我知道这是一个老问题,但我想为那些仍在寻找另一种方法来获取 Twitter 关注者人数的人提供一个答案。在我花了一些时间在文档上之后,我发现您需要通过 Developer Portal 申请提升访问权限,才能获得更多基本信息。您需要在开发者门户中为此访问级别申请额外访问权限。您可以从这里查看访问级别。

      https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-level

      经过一番谷歌搜索,我找到了这个。不需要身份验证,但我不能保证将来不会删除它。只需提供您想要的任何帐户的 screen_name。例如

      https://cdn.syndication.twimg.com/widgets/followbutton/info.json?screen_names=binance

      ...这会给你这样的东西:

      [
          {
              "following": false,
              "id": "877807935493033984",
              "screen_name": "binance",
              "name": "Binance",
              "protected": false,
              "followers_count": 6959348,
              "formatted_followers_count": "6.96M followers",
              "age_gated": false
          }
      ]
      

      【讨论】:

      • 二月初还在工作:-D
      • 它确实有一个速率限制,虽然我不确定这个限制到底是什么
      【解决方案4】:

      在 Swift 4.2 和 Xcode 10.1 中获取 twitter followers_count

      这里您需要将 twitter SDK 集成到您的应用中,并遵循集成细节https://github.com/twitter/twitter-kit-ios

      //This is complete url 
      https://api.twitter.com/1.1/users/show.json?screen_name=screenName
      
      func getStatusesUserTimeline(accessToken:String) {
      
          let userId = "109*************6"
          let twitterClient = TWTRAPIClient(userID: userId)
          twitterClient.loadUser(withID: userId) { (user, error) in
              print(userId)
              print(user ?? "Empty user")
              if user != nil {
                  var request = URLRequest(url: URL(string: "https://api.twitter.com/1.1/users/show.json?screen_name=screenName")!)
      
                  request.httpMethod = "GET"
                  request.setValue("Bearer "+accessToken, forHTTPHeaderField: "Authorization")
                  print(request)
      
                  let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data, error == nil else { // check for fundamental networking error
                      print("error=\(String(describing: error))")
                      return
                      }
      
                      if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
                          print("statusCode should be 200, but is \(httpStatus.statusCode)")
                          print("response = \(String(describing: response))")
                      }
      
                      do {
                          let response = try JSONSerialization.jsonObject(with: data, options: []) as! Dictionary<String,Any>
                          print(response)
                          // print((response["statuses"] as! Array<Any>).count)
      
                      } catch let error as NSError {
                          print(error)
                      }
                  }
      
                  task.resume()
      
              } else {
                  print(error?.localizedDescription as Any)
              }
          }
      
      }
      

      【讨论】:

        【解决方案5】:

        使用 Python:

        import tweepy
        twitter = tweepy.Client(bearer_token="your bearer token")
        

        单用户:

        print(twitter.get_user(username="twitter username", user_fields=["public_metrics"]).data.public_metrics['followers_count'])
        

        多个用户:

        for i in twitter.get_users(usernames=twitterProfiles, user_fields=["public_metrics"]).data:
          print(i.public_metrics['followers_count'])
        

        【讨论】:

          猜你喜欢
          • 2013-07-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-14
          • 2021-11-25
          • 2017-10-09
          • 1970-01-01
          • 2011-05-22
          • 2018-04-01
          相关资源
          最近更新 更多