Медиа Twitter / загрузить изображение по его веб-URL
Я следовал за шагами в СМИ / загрузке. Я написал эту функцию в Python
def upload_media(self,access_token,image_url):
client = self.get_client(access_token)
message = {'media' : image_url}
encoded_status = urllib.urlencode(message)
url = "https://upload.twitter.com/1.1/media/upload.json?"+ encoded_status
resp, content = client.request(url,'post')
return content
И я получил это:
{"request":"\/1.1\/media\/upload.json","error":"media type unrecognized."}
1 ответ
Насколько я могу судить, ошибка в попытке загрузить URL. API Twitter требует, чтобы вы загрузили изображение в кодировке base64.
Смотрите: https://dev.twitter.com/rest/reference/post/media/upload
Таким образом, вместо URL изображения, это должен быть контент файла:
with open('example.jpg', 'rb') as f:
data = f.read()
message = {'media':data}
По желанию (я до сих пор не выяснил, требуется ли это или нет, поскольку разные люди дают разные ответы), вы можете кодировать изображение в кодировке base-64:
with open('example.jpg', 'rb') as f:
data = f.read()
data = data.encode('base64')
message = {'media':data}