J'ai tweeté correctement sur Twitter avec Python 2.7 et python-twitter Dans certains cas, vous devrez peut-être également installer oauth2
En guise de préparation, installez la bibliothèque de manière appropriée avec
pip install twitter oauth2```
Obtenir des informations sur le client sur la page des développeurs
C'est bon sans cela, mais créez un xml pour le réglage
Comme ça
config.xml
<?xml version="1.0" ?>
<config>
<consumer_key>Clé client du client Twitter</consumer_key>
<consumer_secret>Client client Twitter_SecretKey</consumer_secret>
</config>
Écrivez un script pour vous authentifier Si vous ne créez pas de xml à l'étape précédente, il vous sera demandé au premier démarrage Si vous lancez une erreur, la bibliothèque est manquante ou le XML est incorrect, supprimez-le ou réécrivez-le.
oauthing.py
import oauth2,urlparse
import webbrowser
import os
import xml.etree.ElementTree as XML
from xml.dom import minidom
#Analyseur
def pretty(elem):
rough_string = XML.tostring(elem,'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=' ')
#Destination de stockage
CONSUMER_KEY = ''
CONSUMER_SECLET = ''
#Nom du fichier de configuration à lire
CONFIG_FILE = 'config.xml'
#Contrôle d'existence
if os.path.isfile(CONFIG_FILE):
# read consumerkey as config.xml
tree = XML.parse(CONFIG_FILE)
root = tree.getroot()
CONSUMER_KEY = root.find('.//consumer_key').text
CONSUMER_SECLET = root.find('.//consumer_secret').text
else:
# read input as write file
top = XML.Element('config')
con_key = XML.SubElement(top,'consumer_key')
print 'request Consumer Key ? '
con_key.text = raw_input()
CONSUMER_KEY = con_key.text
con_secret = XML.SubElement(top,'consumer_secret')
print 'request Consumer Secret Key ? '
con_secret.text = raw_input()
CONSUMER_SECLET = con_secret.text
with open(CONFIG_FILE,'w') as f:
f.write(pretty(top))
consumer = oauth2.Consumer(key='{0}'.format(CONSUMER_KEY),secret='{0}'.format(CONSUMER_SECLET))
client = oauth2.Client(consumer)
resp,content = client.request('https://api.twitter.com/oauth/request_token','GET')
d = dict(urlparse.parse_qsl(content) )
url ='https://api.twitter.com/oauth/authorize?oauth_token={0}'.format(d['oauth_token'])
webbrowser.open(url)
#Authentification PIN avec le navigateur ici
print 'request pin'
pin = raw_input()
token = oauth2.Token(d['oauth_token'],d['oauth_token_secret'] )
client = oauth2.Client(consumer,token)
resp,content = client.request('https://api.twitter.com/oauth/access_token',
'POST',
body='oauth_verifier={0}'.format(pin)
)
d2 = dict(urlparse.parse_qsl(content) )
#Exportez les informations utilisateur ici si authentifié avec succès
newroot = XML.Element('config')
tree = XML.parse(CONFIG_FILE)
root = tree.getroot()
CONSUMER_KEY = root.find('.//consumer_key').text
CONSUMER_SECLET = root.find('.//consumer_secret').text
con_key = XML.SubElement(newroot,'consumer_key');
con_key.text = CONSUMER_KEY
con_secret = XML.SubElement(newroot,'consumer_secret')
con_secret.text = CONSUMER_SECLET
oauth = XML.SubElement(newroot,'oauth_token')
oauth.text = d2['oauth_token']
oauth_secret = XML.SubElement( newroot ,'oauth_token_secret')
oauth_secret.text = d2['oauth_token_secret']
with open(CONFIG_FILE,'w') as f:
f.write(pretty(newroot))
Si le compte tweet et le compte de développement du client utilisé sont identiques oauthing.py Ignorer et écrire du XML
config.xml
<?xml version="1.0" ?>
<config>
<consumer_key>Clé client du client Twitter</consumer_key>
<consumer_secret>Client client Twitter_SecretKey</consumer_secret>
<oauth_token>Client Twitter oauth_Token</oauth_token>
<oauth_token_secret>Client Twitter Oauth_Token_SecretKey</oauth_token_secret>
</config>
Si vous pouvez vous authentifier, cela suffit
tweet.py
import twitter
import commands
import os
import platform
import urllib
import xml.etree.ElementTree as XML
def check_None(elem,key):
res = None
res = elem.find(key)
if res == None:
res = ''
else:
res = res.text
return res
CONFIG_FILE = 'config.xml'
CONSUMER_KEY = ''
CONSUMER_SECLET = ''
ACCESS_TOKEN_KEY = ''
ACCESS_TOKEN_SECLET = ''
#oauthing.Extraire les informations du XML créé avec py
if os.path.isfile(CONFIG_FILE):
tree = XML.parse(CONFIG_FILE)
root = tree.getroot()
CONSUMER_KEY = check_None(root,'consumer_key')
CONSUMER_SECLET = check_None(root,'consumer_secret')
ACCESS_TOKEN_KEY = check_None(root,'oauth_token')
ACCESS_TOKEN_SECLET = check_None(root,'oauth_token_secret')
else:
exit()
api = twitter.Api(
consumer_key = CONSUMER_KEY,
consumer_secret = CONSUMER_SECLET,
access_token_key = ACCESS_TOKEN_KEY,
access_token_secret = ACCESS_TOKEN_SECLET,
cache=None
)
#Essayez de tweeter l'adresse IP globale
ip = None
if platform.system() == 'Windows':
sock = urllib.urlopen('http://ipcheck.ieserver.net')
ip = sock.read()
sock.close()
elif platform.system() == 'Linux':
ip = commands.getoutput('wget -q -O - ipcheck.ieserver.net')
if ip == None:
exit()
#En fait, tweeter
status = api.PostUpdate('{0}'.format(ip))
Veuillez le modifier de manière appropriée à la fin
J'ai créé oauthing.py parce que je voulais utiliser un compte distinct du compte de développement d'application.
Si vous utilisez cron, il peut être préférable d'utiliser le chemin complet de la partie `` CONFIG_FILE ''.
Recommended Posts