2010-05-11 69 views
3

我希望能夠發佈來自python 3.0的twitter消息。我沒有看到支持python 3.1的twitter API。由於後proceedure只需要這樣:已安裝庫的Python 3.1 twitter文章,

JSON: curl -u username:password -d status="your message here" http://api.twitter.com/1/statuses/update.json 

我想知道是否有可能與標準庫格式化這個這麼一個消息可能被髮送。我的頭說這應該是可能的。

回答

2

試試這個:

import urllib.request 
import urllib.parse 
import base64 

def encode_credentials(username, password): 
    byte_creds = '{}:{}'.format(username, password).encode('utf-8') 
    return base64.b64encode(byte_creds).decode('utf-8') 

def tweet(username, password, message): 
    encoded_msg = urllib.parse.urlencode({'status': message}) 
    credentials = encode_credentials(username, password) 
    request = urllib.request.Request(
     'http://api.twitter.com/1/statuses/update.json') 
    request.add_header('Authorization', 'Basic ' + credentials) 
    urllib.request.urlopen(request, encoded_msg) 

然後調用tweet('username', 'password', 'Hello twitter from Python3!')

urlencode函數爲HTTP POST請求準備消息。

Request的對象使用HTTP認證按此處的說明:http://en.wikipedia.org/wiki/Basic_access_authentication

urlopen方法將請求發送到鳴叫聲。當你傳遞一些數據時,它使用POST,否則爲GET

這隻使用Python3標準庫的一部分。但是,如果您想使用HTTP,則應重新考慮使用第三方庫。這Dive Into Python 3 chapter解釋如何和爲什麼。

+0

工程就像一個魅力, - 任何人試圖它的注意點,如果你發送相同的消息兩次,它會拋出一個異常。 – Andrew 2010-05-14 13:50:21