Script Caza Unfollowers de Twitter
Las reacciones ante un unfollow en Twitter suelen ser diversas, desde la acción recíproca inmediata (cosa que no logro entender ¿has dejado de ver el telediario porque el presentador no se dirija a ti en persona? pues eso…) hasta la más absoluta indeferencia. A mi más bien me mueve la curiosidad, saber si ha sido la posible reacción ante un tuit concreto, el perfil de la persona que deja de seguirme, etc…
Aquí os traigo un pequeño script que he hecho para enterarme de esto. Sé que hay por ahi muchos servicios que hacen lo mismo, los he probado y todos me han parecido una chusta, publicidad, desfase en la notificación y en general nada que cumpla bien algo tan simple como esto. Por eso he acabado tirando unas líneas de código para tenerlo en mi propio servidor y hacer exáctamente lo que espero, que es muy sencillo: recibir un email cada vez que alguien deje de seguirme en Twitter. A continuación explico algunos detalles de esta mini aplicación que podéis descargar desde github.

Lo primero aclarar que obviamente no es una aplicación de uso general, por las siguientes peculiaridades:
- Aunque fácilmente modificable, hace únicamente lo que yo necesito, explicado al principio
- Está limitada a 5000 followers (por defecto el límite de la API de Twitter si no se utiliza paginación), cuando sobrepase esa cifra ya lo modificaré ;)
- Utiliza un fichero para almacenar los followers y arrays para comparar, lo cual con un número elevado de ellos no sé cómo rendirá
Al turronaco. El único requerimiento es la extensión curl de PHP, que se utiliza para llamar a las APIs de Twitter. La gestión de errores es como un martillo, si no hay curl o alguna API devuelve un error el script termina, no necesito nada más sofisticado.
La única personalización necesaria está en el fichero twitter_unfollowers.php, para los campos del email que recibiremos:
11 12 13 14 15 16 17 18 | // fichero donde se guardan los followers para posteriormente compararlos con los actuales define('FIC_GUARDADO', 'twitter_followers_{USUARIO}.db'); // poner a 0 si no quieres recibir un email con la lista de unfollowers define('ENVIAR_EMAIL', '1'); define('EMAIL_DIRECCION', 'xxxx@yyyy.com'); define('EMAIL_ASUNTO', '[TWITTER] Te ha(n) desfollogüeado {NUM} usuario(s)'); // dirección válida en el servidor donde se ejecuta el script para que el email no se vaya al spam define('EMAIL_REMITENTE', 'iiii@jjjj.com'); |
Podemos utilizar esta clase en un simple script que se pondría en el cron, como por ejemplo:
1 2 3 4 5 6 7 8 9 10 11 | <?php require('twitter_unfollowers.php'); $tuiter = new Twitter_unfollowers('<id_usuario_twitter>'); $tuiter->check_unfollow(); echo 'fin'; ?> |
Twitter Unfollowers [v1.2]
Changelog
v1.0 – Desarrollo inicial
v1.1 – Eliminada la necesidad de autenticarse con OAuth para utilizar las APIs
v1.2 – Arreglados problemas de codificación y control de errores de la API

Hola, que buena solucion, pero dónde ejecuto este script en el cronjobs de un cPanel? gracias por el script!
No conozco cpanel, pero probablemente tenga un asistente para el cron. El comando a ejecutar debe incluir la ruta completa al intérprete PHP y al script (ambas dependerán del hosting que uses), por ejemplo:
/usr/local/bin/php /home/pepito/cron/twitter_unfollowers_cron.php
Que tal tio!
No me he puesto a investigar como va esto de la api de twitter. Pero te cuento lo que me pasa. Todo el tiempo me sale el siguiente mensaje :”error de parseo de followers”.
Hago un print_r de print_r($lista_followers->error); que es lo que se comprueba antes de que de ese error y la api me devuelve el siguiente mensaje: “Rate limit exceeded. Clients may not make more than 150 requests per hour”, el tema es… si solo lo ejecuto una vez al dia!?? wtf!? Si tienes este error localizado bien, sino ya me buscaré la vida…
Un saludo!
Te pasa lo que a mi, compartir servidor e IP con miles de mandriles y sus webs en nuestros hostings, así que con que uno de ellos tenga un script que accede a la API cada 5 segundos ya te ha jodido el tuyo (el límite se aplica por IP).
La putada es que no se puede hacer nada. Yo en el que tengo online está un poco más controlado el tema (tengo que actualizar el de github), pero vamos, escribo un log y veo que a veces accede y hace lo que tiene que hacer, pero la gran mayoría de veces suelta ese error…
ahh! vaya es por eso! Gracias por la respuesta man! Pues que putada.Que le vamos a hacer..si se me ocurre alguna idea o solución ya te cuento.