如何使用 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?

如何从 Flutter 中的 url 裁剪和下载图像?

如何使用 Firebase 数据库中存储的 url 作为 UIImageView 中的图像

如何从 Node 中的图像 url 将图像上传到 Google Cloud Storage?

使用 tweepy 发送多种媒体

如何使用重定向 url 加载网络图像?