Acerca de
Curriculum Vitae
Blog
Artículos


Actualizar Estatus de Twitter desde la línea de Comandos (y desde Autohotkey)
Introducción

Recientemente la empresa en donde trabajo bloqueo el acceso a la página de Twitter, en realidad no actualizo mi estatus en Twitter muy seguido, y aunque en mi circulo mas cercano de conocidos todavia no lo utiliza tan seguido como yo quisiera, pienso seguir usandolo , me gusta bastante todo el concepto de Microbloging.

Asi que buscando en Internet me encontre con estas dos ligas:

Command Line Twitter Client
Scripting Twitter with cURL

en las cuales se explica como actualizar el estatus de Twitter desde la línea de comandos, utilizando el comando de Linux curl y el API de Twitter

Actualizando estatus con curl desde la línea de comandos

Basicamente lo que hay que hacer es invocar la URL http://twitter.com/statuses/update.json con cURL enviandole el parametro status y validando el nombre de usuario y contraseña

La instrucción es la siguiente:



$ curl --basic --user "twitter_username:twitter_password" --data-ascii "status=Probando Twitter desde la linea de comandos con curl" "http://twitter.com/statuses/update.json"

No voy a explicar aqui todas las opciones de curl porque la herramienta es muy extensa, pero a grandes rasgos lo que estamos haciendo es validando el nombre de usuario y contraseña y posteriormente un post a http://twitter.com/statuses/update.json (parte del API de Twitter)

El problema de utilizar este enfoque es que si lo hago desde mi equipo, curl se intentara conectar por http y ese servicio es el que esta bloqueado desde mi PC, pero lo que si puedo hacer, es conectarme a un servidor remoto a traves del puerto 22 y ejecutar la instrucción desde el servidor.
Una opción sería conectarme al servidor cada vez que quiera actualizar mi estatus o alternativamente puedo utilizar la herramienta plink con la cual puedo ejecutar comandos en el servidor remoto. De tal forma que para poder conectarme al equipo remoto y ejecutar la instrucción curl en una sola línea tendría que ejecutar:



$ plink -v -pw remote_password remote_user@direccion_IP "curl --basic --user \"twitter_username:twitter_password\" --data-ascii \"status=Desde Plink tambien se puede ejecutar el comando de forma remota \" \"http://twitter.com/statuses/update.json\" "

Utilizando AutoHotkey como GUI

Ahora cada vez que quiera actualizar mi estatus tendría que estar ejecutando una linea de comando muy larga, sería mucho mas comodo si pudieramos ejecutar el comando desde una interfaz grafica, una forma muy rapida de hacerlo es utilizar las funciones para GUI del AutoHotkey.
A continuación un script muy sencillo de AutoHotkey para hacer el post:


;TwitterPost.ahk - Script para actualización de estatus de Twitter con curl y GUI de AutoHotkey

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
Gui, Add, Edit, Limit140 vEstatus,
Gui, Add, Button, default, OK
Gui, Show
return

GuiClose:
ButtonOK:
Gui, Submit Run, c:\plink -v -pw PASSWORD user@DIRECCION_IP "curl --basic --user \"twitter_username:twitter_password\" --data-ascii \"status=%Estatus% \" \"http://twitter.com/statuses/update.json\" "
ExitApp




Post a Twitter con GUI
Actualizar estatus de Twitter con GUI

Por último si queremos leer el timeline de Twitter desde la línea de comandos:


$ curl -u twitter_username:twitter_password http://twitter.com/statuses/friends_timeline/twitter_username.rss | grep description

Y el respectivo cliente de AutoHotkey:

;TwitterRead.ahk - Script para leer estatus de Twitter de un usuario en particular
SendMode Input
SetWorkingDir %A_ScriptDir%

RunWait, %comspec% /c c:\plink -v -pw remote_password remote_user@direccion_IP "curl -u twitter_username:twitter_password http://twitter.com/statuses/friends_timeline/marioalberto.rss | grep description" > c:\twitt.txt, , min
FileRead, FileContents, C:\twitt.txt
Gui, Add, Text, W540 R30 vMyEdit
GuiControl,, MyEdit, %FileContents%
Gui, Add, Button, default, OK
Gui, Show
return

GuiClose:
ButtonOK:
ExitApp


Leyendo el Timeline de Twitter con GUI
Leyendo el Timeline de Twitter con GUI


Notese que los resultados de twitter son entregados en formato RSS y que no estoy haciendo ningun parseo del RSS, unicamente obtengo las lineas con los mensajes utilizando un grep.
Para probar el código no olvides cambiar todo lo que esta en negritas por tus propios datos.

2 Comentario(s)
killko-2009-08-31 18:06:13
Me parece un manual exelente, lleno de informacion valioza, gracias por compartirla

Mario-2009-09-01 15:20:55
Que bueno que te sirvio.

Saludos


Agregar Comentarios:
Nombre/Alias:
Email:
Url:
Comentarios:
Escribe las palabras (es para evitar spam):
© Copyright Mario Alberto Ramirez, todos los derechos reservados