我请求 Twitter API v2 获取推文的详细信息并使用身份验证所需的客户端对象。
import tweepy, config
client = tweepy.Client(bearer_token=config.BEARER_TOKEN, consumer_key=config.API_KEY, consumer_secret=config.API_SECRET, access_token=config.ACCESS_TOKEN,access_token_secret=config.ACCESS_TOKEN_SECRET,wait_on_rate_limit=False)
x = client.get_tweet(id =1490880839844233218,tweet_fields="lang", expansions = ["author_id","attachments.media_keys"], media_fields = ["type","url","media_key"] )
print(x)
但我没有得到 url 媒体字段。
Response(data=<Tweet id=1490880839844233218 text=Android 12's February security patches are ready to rollout! https://mobile.twitter.com/EvolutionXROM/status/1490880839844233218>, includes={'media': [<Media media_key=3_1490880836576550914 type=photo>], 'users': [<User id=1106906709786656768 name=Evolution X username=EvolutionXROM>]}, errors=[], meta={})
但如果我用curl请求同样的事情:
curl --request GET 'https://api.twitter.com/2/tweets/1490880839844233218?&tweet.fields=lang&expansions=author_id,attachments.media_keys&media.fields=media_key,type,url' --header 'Authorization: Bearer $TOKEN'
我得到这个回应。
{"data":{"lang":"en","author_id":"1106906709786656768","text":"Android 12's February security patches are ready to rollout! https://mobile.twitter.com/EvolutionXROM/status/1490880839844233218","attachments":{"media_keys":["3_1490880836576550914"]},"id":"1490880839844233218"},"includes":{"media":[{"media_key":"3_1490880836576550914","type":"photo","url":"https://pbs.twimg.com/media/FLCsOMqVIAI_Emf.jpg"}],"users":[{"id":"1106906709786656768","name":"Evolution X","username":"EvolutionXROM"}]}}
正如您在此处所看到的,如果我使用curl 请求,媒体 URL 将显示为媒体字段。
尽管我找到了使用 Twitter API v1 的解决方法get_status
方法,我想使用最新的 API v2 来让它工作。
使用 Twitter API v1 :
import tweepy, config
auth = tweepy.OAuth2BearerHandler(bearer_token = config.BEARER_TOKEN)
api = tweepy.API(auth=auth)
status = api.get_status(tweet_id,tweet_mode='extended')
print(status)
回复 :
Status(_api=<tweepy.api.API object at 0x71bd8b3580>, _json={'created_at': 'Tue Feb 08 02:51:06 +0000 2022', 'id': 1490880839844233218, 'id_str': '1490880839844233218', 'full_text': "Android 12's February security patches are ready to rollout! https://mobile.twitter.com/EvolutionXROM/status/1490880839844233218", 'truncated': False, 'display_text_range': [0, 60], 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': [], 'media': [{'id': 1490880836576550914, 'id_str': '1490880836576550914', 'indices': [61, 84], 'media_url': 'http://pbs.twimg.com/media/FLCsOMqVIAI_Emf.jpg', 'media_url_https': 'https://pbs.twimg.com/media/FLCsOMqVIAI_Emf.jpg',......
我不会在这里发布完整的回复,因为它太大了。