J'aimerais pouvoir récupérer un message d'état Google Talk avec Python, il est très difficile de trouver de la documentation sur l'utilisation de certaines bibliothèques.Comment puis-je récupérer un message d'état des utilisateurs de Google Talk
Répondre
Je n'ai rien à faire avec xmpp installé, mais voici un ancien code que j'ai traîné qui pourrait vous aider. Vous devrez mettre à jour le NOM D'UTILISATEUR/MOT DE PASSE à vos propres valeurs à des fins de test. À noter: les utilisateurs connectés à Google Talk obtiennent une chaîne de présence au hasard sur leur userid: cela n'a pas d'importance si vous essayez d'obtenir le statut d'un autre utilisateur, mais si vous voulez écrire du code voulez communiquer avec vous-même, vous devez distinguer l'utilisateur connecté depuis GMail ou un client GTalk du programme de test. D'où le code recherche à travers les userids. En outre, si vous lisez l'état immédiatement après vous être connecté, vous n'obtiendrez probablement rien. Il y a un retard dans le code car il faut un peu de temps pour que le statut soit disponible.
"""Send a single GTalk message to myself"""
import xmpp
import time
_SERVER = 'talk.google.com', 5223
USERNAME = '[email protected]'
PASSWORD = 'whatever'
def sendMessage(tojid, text, username=USERNAME, password=PASSWORD):
jid = xmpp.protocol.JID(username)
client = xmpp.Client(jid.getDomain(), debug=[])
#self.client.RegisterHandler('message', self.message_cb)
if not client:
print 'Connection failed!'
return
con = client.connect(server=_SERVER)
print 'connected with', con
auth = client.auth(jid.getNode(), password, 'botty')
if not auth:
print 'Authentication failed!'
return
client.RegisterHandler('message', message_cb)
roster = client.getRoster()
client.sendInitPresence()
if '/' in tojid:
tail = tojid.split('/')[-1]
t = time.time() + 1
while time.time() < t:
client.Process(1)
time.sleep(0.1)
if [ res for res in roster.getResources(tojid) if res.startswith(tail) ]:
break
for res in roster.getResources(tojid):
if res.startswith(tail):
tojid = tojid.split('/', 1)[0] + '/' + res
print "sending to", tojid
id = client.send(xmpp.protocol.Message(tojid, text))
t = time.time() + 1
while time.time() < t:
client.Process(1)
time.sleep(0.1)
print "status", roster.getStatus(tojid)
print "show", roster.getShow(tojid)
print "resources", roster.getResources(tojid)
client.disconnect()
def message_cb(session, message):
print ">", message
sendMessage(USERNAME + '/Talk', "This is an automatically generated gtalk message: did you get it?")
Vous pouvez consulter la liste des API Google. –