Mis amigos, usando Python
Hace un tiempo que vengo con un pequeño proyectito por trabajo que parecía ser una pavada, pero resultó ser un dolor de hígado bastante, bastante fuerte.
La idea es obtener la lista de amigos de varios contextos distintos, entre ellos Gtalk y Facebook. Ambos, por suerte, usan xmpp como protocolo para manejar las aplicaciones de chat. En PHP logré hacer (en parte) lo que quería, pero con todas las librerías que probe tuve problemas de velocidad, tamaño, timeout, hacian una parte y no la otra.
Asi fue que pedí permiso para probar con python y por suerte al cliente le gustó. Buscando no más de 10 minutos encontré la librería xmpppy, y ésto me hizo recordar porque python es TAN lindo.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import xmpp class FacebookClient(object): def __init__(self, user, password): self._cl = xmpp.Client('chat.facebook.com') self._con = self._cl.connect() self._auth = self._cl.auth(user, password) self._roster = self._cl.getRoster() self._nameAndJid = {} for user in self._roster.getItems(): self._nameAndJid[user] = self._roster.getName(user) def getNamesAndJid(self): return self._nameAndJid |
Y modificandolo un poco para Gtalk
1 2 3 4 5 6 7 8 9 10 11 | class GtalkClient(object): def __init__(self, user, password): self._cl = xmpp.Client('gmail.com') self._con = self._cl.connect(server=('talk.google.com',5222)) self._auth = self._cl.auth(user, password) self._roster = self._cl.getRoster() self._nameAndJid = {} for user in self._roster.getItems(): self._nameAndJid[user] = self._roster.getName(user) def getNamesAndJid(self): return self._nameAndJid |
Para probarlo:
1 2 3 | if __name__ == "__main__": # print FacebookClient('','').getNamesAndJid() print GtalkClient('','').getNamesAndJid() |
Y así fue que en menos de 20 minutos tengo lo que buscaba, el roster (lista de contactos) de facebook y gtalk/gmail/orkut lista para usar en lo que sea que lo necesite.
Además si hubiese querido, xmpppy me permite chatear o lo que sea me permite xmpp, porque es una libreria con el api completo..
Que lindo es volver a escribir python.