La idea de TwittNot es recopilar todos los mensajes de lo que no estás haciendo. Ya sean negaciones del momento, planes frustrados, cosas que no has logrado y te lo quieres recordar para realizarlo. Hemos conocido a personas muy interesante en la comunidad de Twitter gracias a la viralidad que se ha generado.

Twittnot

Nosotros no quisimos hacer otro-clon-de-twitter, sino aprovechar toda la comunidad de usuarios que twitter ya tiene y trabajar su API. Resulta mucho más cómodo a los usuarios usar su misma cuenta de siempre, que ir a otro sitio más donde registrase y recordarse de usar.

Algunas cosas que se hicieron

  • Seguimos la public_timeline varias veces por minuto para leer todo lo que lleve un “#not” (se agrego el #no para español). El único problema aquí es que hay tantos updates por minuto que no puedes llegar a todos ellos.
  • Si detectamos un #not en algún usuario desconocido, el usuario @twittnot lo seguirá automáticamente.
  • Si ingresas por ejemplo twittnot/nombre-usuario vamos a ir a leer los últimos tweets de dicho usuario para verificar si no tiene algún #not. Si lo tiene, tomamos el dato y también seguiremos a dicho usuario.
  • La única limitante de lo anterior es que tengas los updates protegidos. En ese caso nos tendrías que seguir para que se haga el scan del usuario.

Algunas cosas que aprendimos

Los avatares de Twitter están alojados en S3 de Amazon y no tienen una relación real con el nombre del usuario. Cada vez que el usuario actualiza su avatar, cambia la dirección de esta imagen, así que lo más recomendado es copiar esas imágenes a tu servidor y estar pendiente a actualizaciones del usuario para actualizar tu copia (Gracias a Luis por el tip).

El dato de la fecha de envío es complicado de entender, principalmente por la diferencia en la zona horaria.

La limitación de 70 peticiones por hora en la API de Twitter, será un problema muy importante cuando sigas muchos usuarios. Sabiendo que con cada lectura del friend_timeline obtienes los últimos 20 updates de tus amigos, el máximo de update que podrás leer son 1400 updates por hora (sin usar peticiones para otras tareas). Si necesitas más que esto, considera usar Jabber en vez de enviar peticiones a la API.

Hacer un Bot de Twitter no es complicado, depende mucho de como funcionará. Puedes elegir entre usar el friend_timeline, las respuestas al Bot o mensajes directos; con estos últimas dos opciones podrás manejar más usuarios, pero el friend_timeline siempre resultará más cómodo a los usuarios.

¿Cómo funciona TwittNot?

En TwittNot estamos enviando peticiones al friend_timeline, por ahora lo hacemos cada dos minutos cuando la demanda crezca más aumentaremos la frecuencia a un minuto. Aunque el script que lee el public_timeline solo se ejecuta una vez por minuto con ayuda de cronjob, logramos hacer varias peticiones por minuto con ayuda de la función sleep():

for ($i=0; $i<11; $i++) {
    $statuses = $twitter->getpublictime();
    parsetimeline($statuses);
	
    sleep(4);
}

Para procesar los datos de la API estamos usando XML, aprovechando que en PHP5 contamos con SimpleXML resulta muy cómodo trabajar XML con esta extensión.

Para detectar el hashtag #not o #no, se hace con ayuda de expresiones regulares. La clave está en plantear como van a aparecer los hashtag: al inicio, en medio o al final; y saber que caracteres son los que se permiten después del hashtag para que este sea válido:

if ( preg_match("/^#not[^a-z0-9]{1}|\s#not[^a-z0-9]{1}|\s#not$/i", $text) 
|| preg_match("/^#no[^a-z0-9]{1}|\s#no[^a-z0-9]{1}|\s#no$/i", $text)) {

La mayor parte del código detrás de TwittNot es para el frontend, manejar las pretty URLs y la base de datos, el código necesario para trabajar con la API de Twitter no son más de 150 líneas. Estamos viendo de compartir el código fuente de TwittNot en unos días.

¿Cuál será el futuro del proyecto?

Arrancamos con este proyecto por diversión y con el objetivo de conocer a fondo el API de Twitter. Misión cumplida, pero sobre todo, muchas nuevas ideas en el tintero. Vamos a hacer tiempo para generar un próximo Mashup de Twitter.

Nos interesa mucho trabajar en herramientas para administrar de mejor forma tus contactos (followers, following) y además construir estadísticas sobre la comunidad que manejas en tu cuenta. Si alguien está interesado en colaborar que avise y ya los mantendremos al tanto de novedades.

Gracias!

Muchas gracias a esTwitter, Av-Pag, dotpod y jlori, pisotres, sonsomar, ibirque, masque, ivarsmas, Scarlet, micronauta y RobertoRiquelme por la difusión del proyecto.