簡體   English   中英

使用 Tweepy 檢索特定對話

[英]Retrieving specific conversations using Tweepy

我一直在嘗試使用 Tweepy 檢索對話線程,雖然該功能已添加到 Twitter api(conversation_id 是可選參數)中,但尚未添加到 Tweepy。 我想知道是否有人對 Tweepy 足夠熟悉以至於他們可能知道實現這一目標的方法?

這是我獲取對話 ID 並下載對話的代碼。 希望它可以幫助有類似問題的人。 我只包含了所需的功能而不是整個文件,所以我沒有列出請求和base64等所需的模塊,但它們應該很明顯。

獲取不記名令牌並創建 header 的代碼我從這里得到的 Twitter API 我如何使用不記名令牌重新發布參與端點的身份驗證,但為了方便起見,我在下面重新發布

# 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, headers=bearer_header, params=params)
   return resp.json()

Tweepy 尚不支持 API 的 v2 版本,盡管在來年有此計划

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM