Python 3.1 twitter post with installed library,
Try this:
import urllib.requestimport urllib.parseimport base64def 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)
Then call tweet('username', 'password', 'Hello twitter from Python3!')
.
The urlencode
function prepares the message for the HTTP POST
request.
The Request
object uses HTTP authentication as explained here: http://en.wikipedia.org/wiki/Basic_access_authentication
The urlopen
methods sends the request to the twitter. When you pass it some data, it uses POST
, otherwise GET
.
This uses only parts of the Python3 standard library. However, if you want to work with HTTP, you should reconsider using third-party libraries. This Dive Into Python 3 chapter explains how and why.