viernes, 29 de octubre de 2010

Script para dejar de seguir a alguien si ha publicado cierta frase en Twitter. (PHP)



Después del rollo que me aventé en el título de esta entrada paso a explicar:

En Twitter hay frases o temas que se ponen de moda, algunos son graciosos, otros interesantes, probablemente haya los que nos parezcan tan molestos que quisieramos dejar de seguir a aquellos que escriban sobre él. Respecto a lo anterior, cierto día leí a una persona que comentaba en tono de broma que sería buena idea que hubiera un script que pudiera "dar unfollow" a quienes escribieran cierta frase en su estatus; a mí en lo personal me hizo gracia ya que en verdad hay momentos en que parece que sí hace falta algo así, por lo que me dí a la tarea de empezar a escribir unas líneas al respecto hasta que salió este script.

Antes que nada debo aclarar, que el verdadero fin de realizar este ejemplo no es dar unfollow a diestra y siniestra (para eso no sigo a nadie desde un principio), sino para ver el uso de Oauth y de la API de twitter, puede que un segmento de este código le sirva a alguien en un futuro:

Ahora sí manos a la obra. Como ya sabrán antes hacer una actualización a twitter era relativamente fácil con PHP (y con cualquier otro lenguaje), sin embargo hace unos meses solo se puede hacer mediante Oauth. Afortunadamente almas caritativas han hecho el trabajo sucio por nosotros y han escrito las librerías que facilitan nuestra tarea.

Para que nuestro script funcione necesitamos crear una aplicación: "logueados" en nuestra cuenta de Twitter desde esta página.

Llenamos los datos:

En Application Name, Description, Application Website y Organization escribe lo que desees.
En Application Type selecciona Client.
Callback URL déjala en blanco.
Default Access type: Read & Write.
Por último si quieres adórnala con ícono.

Una vez registrada nuestra aplicación necesitaremos los siguientes datos:

Consumer Key y Consumer Secret.

Además

Access Token (oauth_token) y Access Token Secret (oauth_token_secret).

Estos últimos los obtenemos dando click en el botón My Access Token que esta a la derecha.


El código es el siguiente:


#! /usr/bin/php

require('twitteroauth.php');

// Oauth settings: llenar segun datos al crear tu aplicacion

$consumerKey= 'XXXXXXXXXXXXXXXXXXXXX';
$consumerSecret = 'XXXXXXXXXXXXXXXXXXXXX';
$oauthToken = 'XXXXXXXXXXXXXXXXXXXXX';
$oauthTokenSecret = 'XXXXXXXXXXXXXXXXXXXXX';

// crea el objeto.
$conexion = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthTokenSecret);

$path = 'statuses/home_timeline';

$parametros = array('count'=> 6, 'page'=> 1,);


if(isset($argv[1])){
$i = 1;
while(isset($argv[$i])){
$cadena = $cadena.$argv[$i]." ";
$i++;
}

$cadena = chop($cadena);

$timeline = $conexion->get($path,$parametros);

if ($conexion->http_code == 200) {

foreach($timeline as $tweet){

$texto = $tweet->text;
// se obtiene un objeto con los datos de usuario
$user = $tweet->user;

$usuario = $user->screen_name;

// si esta el texto, hace el unfollow
if(strstr($texto,$cadena)){
echo"BYE BYE $usuario ahora sigue a @driverInside :D";
$conexion->post('friendships/destroy', array('screen_name' => $usuario));
}

}

} else {
echo"\n Error de conexion \n";
}

}else{
echo"\nDebes ingresar la cadena a buscar.\n";
echo"Uso: php unfollow.php [cadena]\n";
echo"Ejemplo: php unfollow.php #SigueAdriverInside";
}

?>

Un ejemplo de uso es php unfollow.php Un ejemplo de mensaje

Notas:

Necesitas obviamente tener php.

http://windows.php.net/download/
apt-get install php5-cli

También necesitas curl:

apt-get install php5-curl
(en el instalador de php en Windows deberás seleccionar que se instale curl).

Como puedes ver en la línea "require('twitteroauth.php');" el programa utiliza otros archivos para funcionar, estos son twitteroauth.php y Oauth.php escritos por Abraham Williams ( http://abrah.am ) los cuales debes poner en la misma carpeta que tu aplicación.

Aquí los archivos:

http://generadoresfree.com/wc/manuales/aptelmex.zip
http://www.fileden.com/files/2010/10/29/3004194//aptelmex.zip


Y lo más importante, es multiplataforma (bueno lo he probado en Ubuntu 10.10, Ubuntu 9.10, Windows 7 y Windows XP; en Mac todavía no :3).

Sin más les deseo felices líneas y feliz día de muertos.

No hay comentarios: