gpt4 book ai didi

python - 使用 twython 中的图像更新 Twitter 状态,不断收到 API 错误?

转载 作者:太空宇宙 更新时间:2023-11-03 15:23:38 25 4
gpt4 key购买 nike

编辑:更新了代码。只是不断收到 API 错误。

如何使用 twython 和 python 3x 将带有状态更新的 URL 图像发布到 Twitter?我已经阅读了文档,但它只概述了在目录中打开本地文件,并且我查看了一些关于SO的线程。这是我到目前为止所得到的,我收到错误代码,但我不知道如何解决。

我需要更改什么才能发布此图片?这给了我twython.exceptions.TwythonAuthError: Twitter API returned a 401 (Unauthorized), Could not authenticate you.当它击中的那一刻twitter.upload

from twython import Twython, TwythonError
import os
try:
from StringIO import StringIO
except ImportError:
from io import StringIO

import urllib
import requests

CONSUMER_KEY = os.environ['CONSUMER_KEY']
CONSUMER_SECRET = os.environ['CONSUMER_SECRET']
ACCESS_TOKEN = os.environ['ACCESS_TOKEN']
ACCESS_TOKEN_SECRET = os.environ['ACCESS_TOKEN_SECRET']
twitter = Twython(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
twitter.verify_credentials()

url = "https://farm2.staticflickr.com/1127/4605090363_4a96e64ff1.jpg"

response = requests.get(url)
photo = requests.get(response.url).content
response = twitter.upload_media(media=photo)
twitter.update_status(status='Checkout this cool image!', media_ids=[response['media_id']])

此解决方案:twitter.post('/statuses/update_with_media', params = {'status': 'Testing New Status'}, files = {'media': StringIO(photo)})

给我一​​个 TypeError: initial_value must be str or None, not bytes

我无法让它工作。我不知道为什么。它是一个主要帐户。我没有使用“使用 Twitter 登录”,它不是网络应用程序。只是一个 worker 机器人。

我很困惑,我不知道我做错了什么。它会很好地发布文本状态,我可以搜索、获取用户时间线、发送 DMS 等。我做错了什么?

最佳答案

事实证明,这对于 twithon 在上传媒体时所期望的内容而言是一个类型错误。远程拉取图像并调用其上的内容会为我们提供一个 bytes,但 twython 需要一个 io 对象。

堆栈跟踪中出现 401 是一个转移注意力的事情,但我们可以通过添加 io 并将请求内容读取到 BytesIO 中来满足 twithon 的需求。

from twython import Twython, TwythonError
from io import BytesIO
import os

import urllib
import requests

CONSUMER_KEY = os.environ['CONSUMER_KEY']
CONSUMER_SECRET = os.environ['CONSUMER_SECRET']
ACCESS_TOKEN = os.environ['ACCESS_TOKEN']
ACCESS_TOKEN_SECRET = os.environ['ACCESS_TOKEN_SECRET']
twitter = Twython(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
twitter.verify_credentials()

url = "https://farm2.staticflickr.com/1127/4605090363_4a96e64ff1.jpg"

response = requests.get(url)
photo = BytesIO(response.content)
response = twitter.upload_media(media=photo)
twitter.update_status(status='Checkout this cool image!', media_ids=[response['media_id']])

关于python - 使用 twython 中的图像更新 Twitter 状态,不断收到 API 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43302982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com