В моем приложении я разрешаю пользователям публиковать сообщения в твиттере. Теперь я хотел бы позволить им обновить свой статус с помощью средств массовой информации.
В twython.py
я вижу метод update_status_with_media
, который считывает изображение из файловой системы и загружает его в твиттер. Мои изображения находятся не в файловой системе, а в корзине S3.
Как заставить это работать с URL-адресами корзины S3?
Передача URL-адреса в переменной file_
завершается ошибкой ввода-вывода, такого файла или каталога нет.
Передача StringIO завершается ошибкой UnicodeDecode.
Прохождение urllib.urlopen(url).read()
дает file() argument 1 must be encoded string without NULL bytes, not str
.
Я также пытался использовать метод post
и получил 403 Forbidden from twitter api, Ошибка при создании статуса.
Просто решил
Ба, наконец-то заработало! Может быть, это поможет кому-то еще сэкономить несколько часов, которые стоили мне.
twitter = Twython(
app_key=settings.TWITTER_CONSUMER_KEY, app_secret=settings.TWITTER_CONSUMER_SECRET,
oauth_token=token.token, oauth_token_secret=token.secret
)
img = requests.get(url=image_obj.url).content
tweet = twitter.post('statuses/update_with_media',
params={'status': msg},
files={'media': (image_obj.url,
BytesIO(img))})