[Memo] Tweet sur Twitter avec Python

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

fichier de configuration

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.

Fichier d'authentification Oauth

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

Fichier à tweeter

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

[Memo] Tweet sur Twitter avec Python
Mémo graphique Twitter avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Je veux tweeter Twitter avec Python, mais j'y suis accro
Obtenez la chronologie Twitter avec Python
Utiliser l'API Twitter avec Python
Tweet avec image en Python
Messages Twitter dans Python 3 etc.
Rechercher des tweets Twitter avec Python
Explorez l'URL contenue dans le tweet Twitter avec python
Suivi automatique sur Twitter avec python et sélénium! (RPA)
Mémo Python
mémo python
mémo python - Spécifiez les options avec getopt
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
Mémo Python
Mémo de construction de l'environnement Python sur Mac
Publiez plusieurs images Twitter avec python
mémo python
Mémo Python
Notes sur l'utilisation de rstrip avec python.
Publiez facilement sur Twitter avec Python 3
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Mémo Python
Collecter des informations sur Twitter avec Python (API Twitter)
Obtenez des informations sur les retards sur Twitter et tweet
Convertir un mémo à la fois avec Python 2to3
Exécutez le servo avec Python sur ESP32 (Windows)
Créez wordcloud à partir de votre tweet avec python3
"Commerce du système à partir de Python3" lecture du mémo
Tweet à l'aide de l'API Twitter en Python
Carte des informations de location sur une carte avec python
Chase des applications actives sur Mac avec Python
Remarques sur la réalisation de l'OCR japonais avec Python
Si scipy est python 2.7.8, l'installation de pip trébuche
Télécharger des fichiers sur le Web avec Python
Créer un environnement Python avec Anaconda sur Mac
Analyse des tweets avec Python, Mecab et CaboCha
Faisons un bot Twitter avec Python!
Installation de PIL avec Python 3.x sur macOS
Travailler avec le GPS en Python pour Raspberry Pi 3
[Python] Mémo sur le dictionnaire
FizzBuzz en Python3
Grattage avec Python
mémo débutant python (9.2-10)
Statistiques avec python
Python sur Windows
Grattage avec Python
mémo débutant python (9.1)
Twilio avec Python
Intégrer avec Python
Essayez de tweeter le flux RSS d'arXiv sur Twitter avec python de Raspeye
Jouez avec 2016-Python
AES256 avec python
★ Mémo ★ Python Iroha
python commence par ()
python sur mac
Mémo opérateur Python 3
Bingo avec python