В моем приложении я позволяю пользователям публиковать сообщения в твиттере. Теперь я хочу, чтобы они обновили свой статус на носителях.Twython - Как обновить статус с помощью медиа-url
В twython.py
я вижу метод update_status_with_media
, который считывает изображение из файловой системы и загружает его в твиттер. Мои изображения не находятся в файловой системе, а в ведре S3.
Как сделать эту работу с URL-адресами S3?
Передача url в file_
переменная, сбой при IO Ошибка, нет такого файла или каталога.
Передача StringIO завершается с ошибкой UnicodeDecode.
Передача urllib.urlopen(url).read()
file() argument 1 must be encoded string without NULL bytes, not str
.
Я также пробовал использовать метод post
и получил 403 Запрещено из 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))})
на самом деле это то, что дало мне представление о том, как его решить. Я видел это во время поисков после ответа. Но я столкнулся с проблемами, используя 'urllib.urlopen(). Read()' вместе с 'StringIO', продолжал сбой на' UnicodeDecodeError'. То же самое произошло сначала с запросами, потому что я отправился на 'request.get (...). Text', когда я должен был использовать' request.get (...). Content'. – Neara