Archive for the 'Linux' Category

Consultando Crunchbase con Python

Por mi trabajo, siempre estoy pendiente de lo que sucede en Crunchbase (de hecho, estoy suscripto a su feed de páginas recientes). Con tantas empresas y personas yendo y viniendo por Twitter, se transformó en una fuente de consulta permanente.

¿Puedo consultar Crunchbase con Python? La respuesta es obvia :-)

Crunchbase tiene una API muy interesante que devuelve resultados en formato JSON. Pueden encontrar documentación sobre su uso en crunchbase-api.

Para este programa estoy usando la librería simplejson (sudo apt-get install python-simplejson)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import sys, urllib, simplejson
 
api = 'http://api.crunchbase.com/v/1/search.js?%s'
 
def main():
    if len(sys.argv) >= 2:
        q = ' '.join(sys.argv[1:])
        source = urllib.urlopen(api % urllib.urlencode({'query': q}))
        results = simplejson.loads(source.read())
        if results['results']:
            for r in results['results']:
                name = r.get('name')
                if not name:
                    name = ' '.join([w.capitalize() \
                        for w in r['permalink'].split('-')])
                print '%s (%s): %s' % (
                    name.strip(),
                    r['namespace'].capitalize(),
                    r['crunchbase_url'],
                )       
        else:
            print 'No results for "%s"' % q
    else:
        print 'Usage: python %s <keyword(s)>' % sys.argv[0]
 
if __name__ == '__main__':
    main()

Aquí tienen algunos resultados:

mahadeva@blue:~$ python crunchbase.py
Usage: python crunchbase.py
mahadeva@blue:~$ python crunchbase.py popego
Popego (Company): http://www.crunchbase.com/company/popego
Santiago Siri (Person): http://www.crunchbase.com/person/santiago-siri

El programa en sí no es muy cómodo de usar (para eso existen los add-ons de de Firefox ;-) ), pero es un buen punto de partida para utilizar, por ejemplo, como una aplicación de Django, o un bot que interactúe con Twitter.

You’ve got email! (versión Python)

Acá les muestro un simple notificador de correo con Python.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys, libgmail
 
def main():
    if len(sys.argv) >= 3:
        g = libgmail.GmailAccount(sys.argv[1], sys.argv[2])
        try:
            g.login()
        except libgmail.GmailLoginFailure:
            print 'Login incorrecto'
        else:
            unread = g.getUnreadMsgCount()
            if unread:
                import pynotify, gtk
                pynotify.init('Gmail notify')
                pynotify.Notification('Gmail', '%d mensajes sin leer' % unread,
                    gtk.STOCK_DIALOG_INFO).show()
 
if __name__ == '__main__':
    main()

En la primera línea estoy importando el módulo libgmail porque uso Gmail. Si usan Ubuntu, pueden instalar esta librería con sudo apt-get install python-libgmail.

Alternativamente pueden obtener un XML en formato Atom a través de https://mail.google.com/mail/feed/atom (van a necesitar algo como urllib2.HTTPPasswordMgrWithDefaultRealm).

Como es un script que se ejecuta desde la línea de comandos, sys.argv[1] será mi nombre de usuario y sys.argv[2] mi contraseña.

Si en mi cuenta hay correo no leído (línea 12), importo pynotify y gtk (porque uso Gnome) para mostrar un mensaje en mi pantalla:

notificacion

Dos cosas a tener en cuenta:

  • En el ejemplo utilizo sys.argv para obtener el nombre de usuario y la contraseña, pero tengan en cuenta que esa información queda almacenada en ~/.bash_history o en otros logs del sistema. Es preferible definir dos variables dentro del script
  • Pueden hacer que el script corra periódicamente utilizando cron. Por ejemplo: */1 * * * * /usr/bin/python2.5 /path/al/script.py usuario@gmail.com contraseña

Extremists in the free software world

There are ‘extremists’ in the free software world, but that’s one major reason why I don’t call what I do ‘free software’ any more. I don’t want to be associated with the people for whom it’s about exclusion and hatred.

Linus Torvalds, en Linux Magazine




This work by Patricio Molina is licensed under a Creative Commons Attribution-ShareAlike 2.5 Argentina.