Essayez ceci:
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)
appellent ensuite tweet('username', 'password', 'Hello twitter from Python3!')
. La fonction urlencode
prépare le message pour la demande HTTP POST
.
L'objet Request
utilise l'authentification HTTP comme expliqué ici: http://en.wikipedia.org/wiki/Basic_access_authentication
Les méthodes urlopen
envoie la demande au twitter. Lorsque vous lui transmettez des données, il utilise POST
, sinon GET
.
Ceci utilise uniquement des parties de la bibliothèque standard Python3. Cependant, si vous voulez travailler avec HTTP, vous devriez reconsidérer en utilisant des bibliothèques tierces. Ce Dive Into Python 3 chapter explique comment et pourquoi.
Fonction Comme un charme, - point de remarque pour quelqu'un d'autre l'essayant, si vous envoyez le même message deux fois, il lèvera une exception. – Andrew