如何使用 tweepy 中的图像 url 使用图像更新 twitter 状态?
Posted
技术标签:
【中文标题】如何使用 tweepy 中的图像 url 使用图像更新 twitter 状态?【英文标题】:How to update twitter status with image using image url in tweepy? 【发布时间】:2015-10-23 06:24:32 【问题描述】:这是我用过的代码,
#Twitter credentials
access_token = config.get('twitter_credentials', 'access_token')
access_token_secret = config.get('twitter_credentials', 'access_token_secret')
consumer_key = config.get('twitter_credentials', 'consumer_key')
consumer_secret = config.get('twitter_credentials', 'consumer_secret')
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = API(auth)
img = "http://animalia-life.com/data_images/bird/bird1.jpg"
api.update_with_media(img, status="Nice one")
这是我遇到的错误
No such file or directory
我知道我必须通过上述命令使用本地目录中的文件。有没有办法在使用 update_with_media 时使用 URL?
【问题讨论】:
【参考方案1】:您需要使用本地文件通过 tweepy 上传。我建议先使用requests
之类的库来下载文件。
import requests
import os
def twitter_api():
access_token = config.get('twitter_credentials', 'access_token')
access_token_secret = config.get('twitter_credentials', 'access_token_secret')
consumer_key = config.get('twitter_credentials', 'consumer_key')
consumer_secret = config.get('twitter_credentials', 'consumer_secret')
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = API(auth)
return api
def tweet_image(url, message):
api = twitter_api()
filename = 'temp.jpg'
request = requests.get(url, stream=True)
if request.status_code == 200:
with open(filename, 'wb') as image:
for chunk in request:
image.write(chunk)
api.update_with_media(filename, status=message)
os.remove(filename)
else:
print("Unable to download image")
url = "http://animalia-life.com/data_images/bird/bird1.jpg"
message = "Nice one"
tweet_image(url, message)
【讨论】:
工作正常。操作完成后有什么方法可以删除临时下载的文件。 是的!只需使用os.remove(filename)
。我将编辑我的帖子以反映这一点。【参考方案2】:
Twython 版本 3.4.0
photo = open('/path/to/file/image.jpg', 'rb') 响应 = twitter.upload_media(媒体=照片) twitter.update_status(status='查看这张很酷的图片!', media_ids=[response['media_id']])
【讨论】:
【参考方案3】:为什么不在状态更新中包含链接?
img = "http://animalia-life.com/data_images/bird/bird1.jpg"
api.status(status="%s Nice one" % img)
【讨论】:
也试过了。 Twitter 只是将其显示为纯文本 注意:URL 将计入您的推文字符限制以上是关于如何使用 tweepy 中的图像 url 使用图像更新 twitter 状态?的主要内容,如果未能解决你的问题,请参考以下文章
如何从服务器下载图像如果使用Asynctask存储在ArrayList中的URL?
如何使用 Firebase 数据库中存储的 url 作为 UIImageView 中的图像