微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Tweepy 检索特定对话

如何解决使用 Tweepy 检索特定对话

我一直在尝试使用 Tweepy 检索对话线程,尽管该功能添加到 Twitter api(con​​versation_id 是可选参数),但尚未添加到 Tweepy。我想知道是否有人对 Tweepy 足够熟悉以至于他们可能知道实现这一目标的方法

解决方法

这是我获取conversation_id并下载对话的代码。希望它可以帮助有类似问题的人。我只列出了需要的函数,而不是整个文件,所以我没有列出需要的模块,比如 requests 和 base64,但它们应该很明显。

获取不记名令牌并创建我从这里获得的标头的代码with the Twitter API - how can I get authentication for the engagement endpoint using a bearer token,但为了方便起见,我在下面重新发布

# returns a bearer_header to attach to requests to the Twitter api v2 enpoints which are 
# not yet supported by tweepy 
def get_bearer_header():
   uri_token_endpoint = 'https://api.twitter.com/oauth2/token'
   key_secret = f"{twitter_creds.consumer_key}:{twitter_creds.consumer_key_secret}".encode('ascii')
   b64_encoded_key = base64.b64encode(key_secret)
   b64_encoded_key = b64_encoded_key.decode('ascii')

   auth_headers = {
       'Authorization': 'Basic {}'.format(b64_encoded_key),'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
       }

   auth_data = {
       'grant_type': 'client_credentials'
       }

   auth_resp = requests.post(uri_token_endpoint,headers=auth_headers,data=auth_data)
   bearer_token = auth_resp.json()['access_token']

   bearer_header = {
       'Accept-Encoding': 'gzip','Authorization': 'Bearer {}'.format(bearer_token),'oauth_consumer_key': twitter_creds.consumer_key 
   }
   return bearer_header

# Returns the conversation_id of a tweet from v2 endpoint using the tweet id
def getConversationId(id):
   uri = 'https://api.twitter.com/2/tweets?'

   params = {
       'ids':id,'tweet.fields':'conversation_id'
   }
   
   bearer_header = get_bearer_header()
   resp = requests.get(uri,headers=bearer_header,params=params)
   return resp.json()['data'][0]['conversation_id']

# Returns a conversation from the v2 enpoint  of type [<original_tweet_text>,<[replies]>]
def getConversation(conversation_id):
   uri = 'https://api.twitter.com/2/tweets/search/recent?'

   params = {'query': f'conversation_id:{conversation_id}','tweet.fields': 'in_reply_to_user_id','tweet.fields':'conversation_id'
   }
   
   bearer_header = twitter_auth.get_bearer_header()
   resp = requests.get(uri,params=params)
   return resp.json()

,

Tweepy 尚不支持 API 的 v2,尽管有 plans for this in the coming year

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。