【问题标题】:How to update twitter status with image using image url in tweepy?如何使用 tweepy 中的图像 url 使用图像更新 twitter 状态?
【发布时间】: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?

【问题讨论】:

    标签: python twitter tweepy


    【解决方案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 将计入您的推文字符限制
      猜你喜欢
      • 1970-01-01
      • 2018-01-16
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      相关资源
      最近更新 更多