Ich habe mit Python 2.7 und Python-Twitter richtig auf Twitter getwittert In einigen Fällen müssen Sie möglicherweise auch oauth2 installieren
Installieren Sie zur Vorbereitung die Bibliothek entsprechend mit `` `pip install twitter oauth2```
Abrufen von Kundeninformationen auf der Entwicklerseite
Ohne ist es in Ordnung, aber erstellen Sie eine XML-Datei zum Einstellen
So was
config.xml
<?xml version="1.0" ?>
<config>
<consumer_key>Twitter Client Consumer Key</consumer_key>
<consumer_secret>Twitter-Client Verbraucher_SecretKey</consumer_secret>
</config>
Schreiben Sie ein Skript zur Authentifizierung Wenn Sie in der vorherigen Phase keine XML-Datei erstellt haben, werden Sie beim ersten Start gefragt Wenn Sie einen Fehler auslösen, fehlt die Bibliothek oder die XML ist falsch. Löschen oder schreiben Sie sie daher neu.
oauthing.py
import oauth2,urlparse
import webbrowser
import os
import xml.etree.ElementTree as XML
from xml.dom import minidom
#Parser
def pretty(elem):
rough_string = XML.tostring(elem,'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=' ')
#Speicherziel
CONSUMER_KEY = ''
CONSUMER_SECLET = ''
#Konfigurieren Sie den zu lesenden Dateinamen
CONFIG_FILE = 'config.xml'
#Existenzprüfung
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)
#PIN-Authentifizierung mit dem Browser hier
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) )
#Exportieren Sie hier Benutzerinformationen, wenn diese erfolgreich authentifiziert wurden
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))
Wenn das Tweet-Konto und das Entwicklungskonto des verwendeten Clients identisch sind oauthing.py XML ignorieren und schreiben
config.xml
<?xml version="1.0" ?>
<config>
<consumer_key>Twitter Client Consumer Key</consumer_key>
<consumer_secret>Twitter-Client Verbraucher_SecretKey</consumer_secret>
<oauth_token>Twitter-Client oauth_Token</oauth_token>
<oauth_token_secret>Twitter-Client Oauth_Token_SecretKey</oauth_token_secret>
</config>
Wenn Sie sich authentifizieren können, reicht dies aus
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.Informationen aus mit py erstelltem XML abrufen
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
)
#Versuchen Sie, die globale IP zu twittern
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()
#Eigentlich twittern
status = api.PostUpdate('{0}'.format(ip))
Bitte ändern Sie es am Ende entsprechend
Ich habe oauthing.py erstellt, weil ich ein vom App-Entwicklungskonto getrenntes Konto verwenden wollte.
Wenn Sie cron verwenden, ist es möglicherweise besser, den vollständigen Pfad für den Teil `` `CONFIG_FILE``` zu verwenden.
Recommended Posts