Как я могу получить сообщение о статусе пользователей Google Talk

StackOverflow https://stackoverflow.com/questions/3831641

  •  26-09-2019
  •  | 
  •  

Вопрос

Я хотел бы получить возможность извлечь пользователей Google Talk Talk Test Message с Python, это действительно трудно найти документацию о том, как использовать некоторые из библиотек.

Это было полезно?

Решение

У меня нет ничего, что нужно для передачи XMPP, но вот какой-то старый код, который я лежал, это может помочь вам. Вы захотите обновить имя пользователя / пароль к своим собственным значениям для тестовых целей.

Что к примечанию. Вам нужно выделить пользователь, вошел в систему с Gmail или клиента GTALK из тестовой программы. Следовательно, код ищет через пользовательские пользователи.

Кроме того, если вы прочитаете статус сразу после входа в систему, вы, вероятно, ничего не получите. Есть задержка в коде, потому что требуется некоторое время для статуса, чтобы стать доступным.

"""Send a single GTalk message to myself"""

import xmpp
import time

_SERVER = 'talk.google.com', 5223
USERNAME = 'someuser@gmail.com'
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?")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top