在我的應用程序中,我讓用戶發佈到twitter。現在我想讓他們更新媒體的狀態。Twython - 如何使用媒體網址更新狀態
在twython.py
我看到一個方法update_status_with_media
從文件系統讀取圖像並上傳到Twitter。我的圖像不在文件系統中,而在S3存儲桶中。
如何使這個工作與S3鬥網址?
傳遞file_
變量中的url,IO失敗,錯誤,沒有這樣的文件或目錄。
在UnicodeDecode錯誤時傳遞StringIO失敗。
通過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失敗。首先同樣發生了請求,因爲我使用'requests.get(...).text'的時候,我應該使用'requests.get(...)。content'。 – Neara 2013-05-14 06:43:13