【问题标题】:Problem with getting user.fields from Twitter API 2.0从 Twitter API 2.0 获取 user.fields 的问题
【发布时间】:2021-06-11 10:03:14
【问题描述】:

我想从 Twitter API 2.0 端点加载推文并尝试获取标准字段(作者、文本、...)和一些扩展字段,尤其是。用户字段。 端点和参数的定义工作没有错误。 在生成的 json 中,我只找到标准字段,而不是必需的 user.fields(用户名、指标)。

示例代码sn-p:

from datetime import datetime, timedelta
import requests
import json
import pandas as pd

# read bearer token for authentication
with open('bearer_token.txt') as fp:
    BEARER_TOKEN = fp.read()

query_string = '("TSLA") (lang:en)'
    
# setup the API request
endpoint = 'https://api.twitter.com/2/tweets/search/recent'
headers = {'authorization': f'Bearer {BEARER_TOKEN}'}
params = {
    'query': query_string,
    'max_results': '100',
    'tweet.fields': 'created_at,lang,text,author_id,public_metrics',
    # that doesn't work
    'user.fields': 'name,username,public_metrics'
    #'expansions': 'attachments.media_keys'
}

response = requests.get(endpoint,
                            params=params,
                            headers=headers)  # send the request

print(json.dumps(response.json(), indent=3, sort_keys=True))

生成的 json 显示了这一点(我缺少用户字段:名称、用户名、public_metrics):

    {
   "data": [
      {
         "author_id": "33286321",
         "created_at": "2021-03-13T16:25:02.000Z",
         "id": "1370772902769999874",
         "lang": "en",
         "public_metrics": {
            "like_count": 0,
            "quote_count": 0,
            "reply_count": 0,
            "retweet_count": 0
         },
         "text": "Try our Option Swing Trading service built for individuals who want to trade around their full-time careers. Take a free 10-day trail No Credit Card  $AAPL $TSLA $FB $MSFT"
      },
      {
         "author_id": "1142453041364385794",
         "created_at": "2021-03-13T16:24:41.000Z",
         "id": "1370772813469130756",
         "lang": "en",
         "public_metrics": {
            "like_count": 0,
            "quote_count": 0,
            "reply_count": 0,
            "retweet_count": 28
         },
         "text": "RT @Stalingrad_Poor: With bitcoin trading at $60k, TSLA has now made more money on its bitcoin investment and selling regulatory credits th\u2026"
      },
      {
         "author_id": "1349496824650989568",
         "created_at": "2021-03-13T16:24:35.000Z",
         "id": "1370772791411245056",
         "lang": "en",
         "public_metrics": {
            "like_count": 0,
            "quote_count": 0,
            "reply_count": 0,
            "retweet_count": 3
         },
         "text": "RT @VolaarRide: $OZSC By teaming up with the GEMM Network, we can now provide our customers with additional services such as Project Financ\u2026"
      },

问题: 我需要做什么才能在回复中获取这些信息?

【问题讨论】:

    标签: python json twitter


    【解决方案1】:

    根据documentation,要使用user.fields参数,必须在expansions参数中包含author_id

    【讨论】:

      【解决方案2】:

      这里根据@Patriot 的回答调整了代码。

      from datetime import datetime, timedelta
      import requests
      import json
      import pandas as pd
      
      # read bearer token for authentication
      with open('bearer_token.txt') as fp:
          BEARER_TOKEN = fp.read()
      
      query_string = '("TSLA") (lang:en)'
          
      # setup the API request
      endpoint = 'https://api.twitter.com/2/tweets/search/recent'
      headers = {'authorization': f'Bearer {BEARER_TOKEN}'}
      params = {
          'query': query_string,
          'max_results': '100',
          'expansions': 'author_id',
          'tweet.fields': 'created_at,lang,text,author_id,public_metrics',
          'user.fields': 'name,username,public_metrics'
      }
      
      response = requests.get(endpoint,
                                  params=params,
                                  headers=headers)  # send the request
      
      print(json.dumps(response.json(), indent=3, sort_keys=True))
      

      【讨论】:

        猜你喜欢
        • 2021-08-23
        • 2022-01-19
        • 2020-06-20
        • 2022-11-28
        • 2017-10-07
        • 2015-11-12
        • 1970-01-01
        • 1970-01-01
        • 2013-07-27
        相关资源
        最近更新 更多