Weblog de Javier Arias

API Tuenti

PHPTUENTI: API no oficial de Tuenti

PHPtuenti es una API no oficial de Tuenti escrita en PHP siguiendo el paradigma de orientación a objetos.

Tabla de contenidos

  1. Requisitos
  2. Descargas
  3. Documentación
  4. Ejemplos
  5. Advertencia
  6. Responsabilidad
  7. Enlaces externos

Requisitos

  • PHP 5 con la librería cURL.
  • Tener una cuenta en Tuenti con el modo móvil activado.

Descargas

Versión 0.0.5, publicada el 27 de septiembre de 2009. Para el registro de cambios vea el archivo ChangeLog.


Documentación

Próximamente más detallada.

Clase tuentiapi

Estos son sus métodos principales:

bool login ( string $email, string $password )
Se identifica en Tuenti con los datos proporcionados.
Devuelve: true si la identificación es existosa, false en caso contrario.
bool logout ( )
Se desconecta de Tuenti.
Devuelve: true si la identificación es existosa, false en caso contrario.
array getMyFriends ( )
Devuelve un array de objetos de tipo tuenti_user con todos los amigos de la cuenta con la que se ha realizado la identificación. De cada amigo se obtiene: el ID, el nombre, la frase del estado y la URL de la imagen del perfil; para obtener más datos del usuario vea la función getUserInfo().
array getFriends ( int $uid )
Devuelve un array de objetos de tipo tuenti_user con todos los amigos del usuario con el ID pasado como parámetro. De cada amigo se obtiene: el ID, el nombre, la frase del estado y la URL de la imagen del perfil; para obtener más datos del usuario vea la función getUserInfo().
array getMyWall ( [int $limit] )
Devuelve los mensajes que el usuario identificado tiene en su tablón en un array de objetos de tipo tuenti_message. El parámetro opcional $limit indica el número de mensajes que se obtendrán; si es omitido se obtienen los 20 últimos mensajes.
array getWall ( int $uid [,int $limit] )
Devuelve los mensajes que el usuario cuyo identificador es $uid tiene en su tablón en un array de objetos de tipo tuenti_message. El parámetro opcional $limit indica el número de mensajes que se obtendrán; si es omitido se obtienen los 20 últimos mensajes.
tuenti_user getUserInfo ( int $uid )
Devuelve un objeto de tipo tuenti_user con varios datos del usuario cuyo identificador es $uid o null si el parámetro no es válido. Los datos que se obtienen son: el nombre, la frase del estado, la URL de la imagen del perfil, la fecha de cumpleaños, la ciudad, la provincia, el estado marital (soltero, con alguien, etc.) y el parentesco (amigo, amigo de amigo o fuera de mi red).
array getNotifications ( )
Devuelve las notificaciones (peticiones de amigo, mensajes, comentarios, etc.) del usuario con el que se realiza la identificación en un array de objetos de tipo tuenti_notification.
array getPhotoAlbums ( int $uid )
Devuelve un array de objetos de tipo tuenti_photo_album del usuario con el ID dado.
string downloadProfileImage ( int $uid [,int $size] )
Descarga la imagen que el usuario cuyo identificador es $uid, la guarda en la carpeta downloads y devuelve el path al archivo recién descargado. El parámetro opcional size permite indicar el tamaño de la imagen; los valores admitidos son:
phptuenti::BIG_SIZE, 500 pixeles de ancho.
phptuenti::MEDIUM_SIZE, 200 pixeles de ancho.
phptuenti::SMALL_SIZE, 75 pixeles de ancho.
phptuenti::MINI_SIZE, 30 pixeles de ancho.
Ejemplo:

$uid = 66554433;
downloadProfileImage ( $uid, phptuenti::MEDIUM_SIZE );

Nota: antes de descargar la imagen de un perfil es necesario obtener la información del usuario mediante la función getUserInfo(uid).

Clase tuenti_user

Estos son sus métodos principales:

string getBirthday ( )
Devuelve la fecha de nacimiento del usuario en formato dd/mm/aaaa.
string getCity ( )
Devuelve la ciudad del usuario. Si el usuario no ha rellenado este campo en su perfil se devolverá un string vacío.
string getFriends ( )
Devuelve todos los amigos del usuario en un array de objetos de tipo tuenti_user.
string getMaritalStatus ( )
Su estado civil: casado, soltero, con alguien, etc.
string getName ( )
Devuelve el nombre del usuario.
string getNotifications ( )
Devuelve las nuevas notificaciones del usuario (peticiones de amigo, nuevos mensajes, nuevos comentarios, etc.).
array getPhotoAlbums ( )
Devuelve un array de objetos de tipo tuenti_photo_album del usuario.
string getProfileImage ( [int $size] )
Devuelve la URL de la imagen del perfil del usuario. El parámetro opcional size permite indicar el tamaño de la imagen; los valores admitidos son:
phptuenti::BIG_SIZE, 500 pixeles de ancho.
phptuenti::MEDIUM_SIZE, 200 pixeles de ancho.
phptuenti::SMALL_SIZE, 75 pixeles de ancho.
phptuenti::MINI_SIZE, 30 pixeles de ancho.
Ejemplo: $img = getProfileImage(phptuenti::MEDIUM_SIZE);
string getProvince ( )
Devuelve la provincia del usuario.
string getRelationship ( )
Devuelve la relación entre el usuario y tú (amigo, amigo de amigo o fuera de tu red).
string getStatus ( )
Devuelve el estado del usuario (la frase “está…”).
int getUID ( )
Devuelve el ID del usuario.
array getWall ( )
Devuelve el muro del usuario, que no es más que un array de objetos de tipo tuenti_message.

Clase tuenti_photo_album

Representa un álbum de photos de tuenti. Estos son sus métodos principales:

string getName ( )
Devuelve el nombre del álbum de photos.
int getNumber ( )
Devuelve el número de fotos que contiene el álbum. Este valor siempre será mayor o igual que 1.

Clase tuenti_message

Representa un mensaje del tablón de un usuario de tuenti. Estos son sus métodos principales:

string getAuthor ( )
Devuelve el autor del mensaje.
string getMessage ( )
Devuelve el texto del mensaje.
string getTime ( )
Devuelve hace cuánto que el mensaje se escribió (“hace x días”, etc.).

Clase tuenti_notification

Representa una notificación de tuenti (peticiones de amigos, nuevos mensajes en el tablón, etc.). Estos son sus métodos principales:

string getNotification ( )
Devuelve la notificación. Ej: “1 nueva petición de amigo”
string getNotificationURL ( )
Devuelve la URL donde se puede ver la notificación. Para el ejemplo anterior: http://m.tuenti.com/?m=friends&func=view_friend_requests
string getLink ( )
Devuelve la notificación en forma de enlace HTML. Para el ejemplo anterior: <a href=”http://m.tuenti.com/?m=friends&func=view_friend_requests”>1 nueva petición de amigo</a>

Ejemplos de uso

Ejemplo 1

< ?php

/**
 *
 * Este ejemplo utiliza la API PHPtuenti para obtener los amigos del usuario
 * con el que se realiza la identificación y los imprime a consola.
 *
 */

require 'api/phptuenti.php';

$t = phptuenti::tuenti();

// nos identificamos
if ( !$t->login('micuenta@detuenti.com', 'contraseña') )
    die('Dirección de correo o contraseña inválidos.');

// obtenemos nuestros amigos
$myfriends = $t->getMyFriends();

if ( count($myfriends) == 0 ) {
    // no tenemos ningún amigo agregado
    echo "No tengo ningún amigo :(\n";
}
else {
    // mostramos de cada amigo su nombre, su UID, su estado y su imagen de perfil
    echo "Mis amigos son:\n";
    foreach ( $myfriends as $friend ) {
        // $friend es un objeto de tipo tuenti_user
        echo $friend->getName(), ' (' . $friend->getUID(), ")\n";
        echo '--> ', $friend->getStatus(), "\n";
        echo '--> ', $friend->getProfileImage(), "\n\n";
    }
    echo "Soy muy popular, tengo " . count($myfriends) . " amigos.\n";
}

// realizamos la desconexión de tuenti
$t->logout();

?>

La ejecución de este programa produce, si la identificación es exitosa, un resultado similar al que se muestra a continuación:

Armando Guerra Segura (11223344)
–> deseando que llegue el viernes!
–> http://imagenes9.tuenti.com/i40/i/1/200/m/0/iu9hk-xpuwrkx5Iuq9t.0.jpg

Luis Alfonso de Borbón (22334455)
–> preparándome para el mundial…
–> http://imagenes1.tuenti.com/i25/i/3/200/3/8/qWu8WUV8hm3HyO3kShwb.0.jpg

Soy muy popular, tengo 2 amigos.

Ejemplo 2

< ?php

/**
 *
 * Este ejemplo utiliza la API PHPtuenti para obtener las álbumes de fotos
 * del usuario con UID 6050403020 (ficticio). Para poder obtener los álbumes
 * el usuario con el $uid dado ha de existir y debes poder acceder a su perfil;
 * en caso contrario la función getPhotoAlbums() devolverá 0.
 *
 */

require 'api/phptuenti.php';

$t = phptuenti::tuenti();

// nos identificamos en tuenti
if ( !$t->login('micuenta@detuenti.com', 'contraseña') )
    die('Dirección de correo o contraseña inválidos.');

$uid = 6050403020;
// obtenemos los albumes del usuario
$albums = $t->getPhotoAlbums($uid);

if ( count($albums) == 0 ) {
    // no tiene fotos subidas (o el usuario $uid no existe o no se puede acceder a su página de fotos)
    echo "Mi amigo #$uid no tiene álbumes de fotos :(\n";
}
else {
    echo "Mi amigo #$uid tiene estos álbumes de fotos:\n";
    foreach ( $albums as $albumtemp ) {
        // $albumtemp es un objeto de tipo tuenti_photo_album
        echo "Nombre: " . $albumtemp->getName() . "\n";
        echo "Número de fotos: " . $albumtemp->getNumber() . "\n";
    }
}

// realizamos la desconexión de tuenti
$t->logout();

?>

Ejemplo 3

< ?php

/**
 *
 * Este ejemplo utiliza la API PHPtuenti para obtener las notificaciones
 * del usuario con el que se realiza la identificación.
 *
 * Genera un código HTML similar al siguiente:
 *
 * <h1>Novedades en mi tuenti
 * <ul>
 * <li><a href="?m=friends&amp;func=view_friend_requests">1 nueva petición de amigo</a></li>
 * <li><a href="?m=profile&amp;func=my_wall">1 nuevo comentario en tu tablón</a></li>
 * <li><a href="?m=messaging">1 mensaje nuevo</a></li>
 * </ul>
 *
 */

require 'api/phptuenti.php';

$t = phptuenti::tuenti();

// nos identificamos en tuenti
if ( !$t->login('micuenta@detuenti.com', 'contraseña') )
   die('Dirección de correo o contraseña inválidos.');

// obtenemos las novedades
$notificaciones = $t->getNotifications();

if ( count($notificaciones) == 0) {
    // no hay nada nuevo
    echo "No tengo novedades en mi tuenti";
}
else {
    // hay novedades! las mostramos por pantalla
    ?>
    <h1>Novedades en mi tuenti</h1>
    <ul>
    < ?
        foreach ( $notificaciones as $notif ) {
            // $notif es un objeto de tipo tuenti_notification
            echo "<li>" . $notif->getLink() . "\n";
        }
    ?>
    </ul>
< ?
}

// realizamos la desconexión de tuenti
$t->logout();

?>

Advertencia

Esta API se encuentra en estado de desarrollo muy temprano, de manera que pueden ocurrir fallos o no funcionar como se espera.


Responsabilidad

El programador de esta API no tiene ninguna relación con Tuenti y no se responsabiliza del uso indebido de la misma ni de los daños que pueda ocasionar. La API, que se encuentra en estado de desarrollo, se proporciona «tal cual», sin ningún tipo de garantía expresa ni implícita. Úsala bajo tu responsabilidad.


Enlaces externos

Otros proyectos de API para Tuenti:

50 comentarios para “API Tuenti”

  1. Andrea escribió

    ¿Es posible leer los mensajes privados de una cuenta propia a partir de tu API? La he probado para el tablón, etc pero me preguntaba si sería posible para los mensajes privados.

    Muchas gracias y buen trabajo!!

    Andrea

  2. Rubén Díaz escribió

    ¡Muy útil! Me codee una en su día pero estaba bastante incompleta. Una pena que esté algo desactualizada, pero si actualizas… ya sabes que seremos muchos los que te lo agradeceremos ;-)

    Gracias por tu trabajo. Un saludo.

    • Javi escribió

      Me gustaría poder actualizarla, pero últimamente apenas tengo algo de tiempo para dedicarme a ella, lo siento. A ver si para el mes que viene…
      Te recomiendo que te suscribas por RSS a los comentarios de esta entrada para que estés informado de las futuras actualizaciones.

  3. Leif Ferreira escribió

    Tio me encanta esto!! tiene muy buena pinta :D, una pregunta: ¿Con esta api podria comentar un mensaje a todos mis amigos de forma automatica? seria como un twitter, entonces estaria de lujo poder hacer de una tirada un post en twitter y a todos mis amigos en tuenti jajaja :D

    Un saludo grande!! te sigo tio!

    • Javi escribió

      Hola Leif, gracias por el comentario. Lamento decirte que la API está pensada para obtener datos de tu cuenta de Tuenti (comentarios en tu muro, álbumes de fotos, datos de tus amigos, etc.). Nunca habilitaré la posibilidad de enviar datos a Tuenti, salvo, a lo sumo, para actualizar tu perfil.

  4. Leif Ferreira escribió

    jajajaj y eso?? muchas maldades podrian hacerse?? ufff la verdad es que pensándolo un poco si…, bueno la menos con tu respuesta se que si que se podría, voy a intentar empoyarme la api a ver como funciona y todo eso y a ver que experimentos puedo hacer con ella.

    A mi la api me viene de lujo por que quiero empezar un nuevo proyecto y en tuenti se puede hacer bastante “publicidad” en el sentido en que si tu publicas algo muchos amigos tuyos se van a enterar, en españa es mucho mas útil para transmitir datos que el twitter.

    Por cierto!! que edad tienes?? estas hecho un crack!! :D

    Sigo atento tio!!

  5. viviz02 escribió

    He estado mirando la api y he intentado mostrar una lista con todos mis amigos, pero no consigo hacer que me muestre todos. Lo he probado en mi cuenta de tuenti con 296 amigos y solo me muestra la informacion de 59, y lo he probado en otra con 13 amigos y muestra la informacion de 3 amigos solo. No se si estoy haciendo algo mal o es que esta mal la visualizacion de amigos.
    Gracias por tu trabajo.

  6. viviz02 escribió

    ya he solucionado el problema. Lo unico que he hecho a sido quitar unos caracteres del patron de la linea 108 en phptuenti.php

    Antes:

    preg_match_all("#([^<]*)(?: est\W* ([^<]*))?#U", $content, $result);

    Ahora:

    preg_match_all("#([^<]*)(\W* ([^<]*))?#U", $content, $result);

    (Para el que no lo vea e quitado ?: est)

    No se muy bien que era lo que hacia esos caracteres pero al quitarlos ya me muestra todos mis amigos.

  7. ninguno escribió

    Lamentablemente muchos de los sitios con API’s no oficiales de tuenti están siendo avisados por la propia empresa. Por mucho mal que se pueda causar no estás haciendo mas que conectarte a tu cuenta y sacar tus datos, como lo haces de normal con tu browser. Que triste.

  8. nacho escribió

    Hola, no puedo lograr loguearme con la api. Está funcionando actualmente la versión 0.0.4?

    Saludos, y gracias por el desarrollo!

    • Javi escribió

      Nola Nacho. Efectivamente la versión 0.0.4 había dejado de funcionar por cambios realizados en la página. Acabo de publicar una nueva versión que arregla el problema del login.

  9. online-maris escribió

    lo que yo queria, gracias

  10. Pablo gomez escribió

    Hola a todos!
    me baje la libreria y copie y pegue el primer ejemplo. sin embargo cuando lo ejecuto me imprime por pantalla el phptuenti.php y me saca este error: Fatal error: Class ‘phptuenti’ not found in C:\xampp\htdocs\tuenti.php

    Alguien sabe por que puede ser? muchas gracias

    Un saludo! tiene muy buena pinta!

    • Javi escribió

      Hola Pablo.

      No sé exactamente por qué te da ese error, aunque sospecho de que es porque estás ejecutando los ejemplos desde un sistema Windows. Modifica el ejemplo y cambia la línea:
      require ‘api/phptuenti.php’;
      por:
      require ‘api\\phptuenti.php’; (ojo, dos barras invertidas)

      En general, esto será así en cualquier sitio en el que se haga referencia a una ruta.

      Confírmame que con el cambio funciona y así lo tendré en cuenta en futuras versiones.

      Saludos.

  11. [...] eso, aprovechando la API que he encontrado en el blog de Javier Arias, voy a echar un ratillo a ver qué consigo hacer. La idea es tener un pequeño widged al estilo [...]

  12. tuentiAlert escribió

    Seria posible hacer una api de la versión completa de tuenti?
    Casi no conozco php y menos cURL y nose si seria posible debido a la utilizacion de js en la version completa. Si es posible me gustaria saberlo para intentar modificar tu api y acerla full.
    Un saludo.

  13. ox escribió

    ola he ojeado esto de la api pero al igual que a pablo gomez me da el error

    Fatal error: Class ‘phptuenti’ not found in C:\xampp\htdocs\TuentiProject\tuenti.php on line 5

    e probado con lo de las dos barritas \\ pero me lo sigue diciendo , la verdad es que soy un poco novatillo en esto de php pero realmente nose en que me estoy equivocando ,

    como puedo solucionarlo???

    gracias de antemano y saludos

  14. asasd escribió

    Se ve que los programadores usuarios de PHPTuenti tienen el mismo nivel intelectual que los propios usuarios de Tuenti… por cierto, PHPTuenti viola uno de los términos de la licencia PHP: http://www.php.net/license/index.php#faq-lic

    • requerido escribió

      Esta clase no incluye código fuente de PHP, está escrita en PHP (que no es lo mismo), así que no viola absolutamente nada.

      Por lo visto tú también eres usuario de Tonti ;)

Escribe un comentario

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>