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
Requisitos
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:truesi la identificación es existosa,falseen caso contrario. bool logout ( )- Se desconecta de Tuenti.
Devuelve:truesi la identificación es existosa,falseen caso contrario. array getMyFriends ( )- Devuelve un array de objetos de tipo
tuenti_usercon 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óngetUserInfo(). array getFriends ( int $uid )- Devuelve un array de objetos de tipo
tuenti_usercon 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óngetUserInfo(). 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$limitindica 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
$uidtiene en su tablón en un array de objetos de tipotuenti_message. El parámetro opcional$limitindica 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_usercon varios datos del usuario cuyo identificador es$uidonullsi 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_albumdel 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 carpetadownloadsy devuelve el path al archivo recién descargado. El parámetro opcionalsizepermite 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_albumdel usuario. string getProfileImage ( [int $size] )- Devuelve la URL de la imagen del perfil del usuario. El parámetro opcional
sizepermite 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.jpgLuis Alfonso de Borbón (22334455)
–> preparándome para el mundial…
–> http://imagenes1.tuenti.com/i25/i/3/200/3/8/qWu8WUV8hm3HyO3kShwb.0.jpgSoy 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&func=view_friend_requests">1 nueva petición de amigo</a></li>
* <li><a href="?m=profile&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:
- «tuenpy», una API escrita en Python.
- «API no oficial para TUENTI», por Juan Pablo Muñiz.
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
Javi escribió
Aún no es posible, pero espero hacerlo para la siguiente versión.
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.
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.
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!!
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.
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.
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.
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.
online-maris escribió
lo que yo queria, gracias
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.
Desarrollando plugin de Wordpress para integración de Tuenti | wiyarmir.es escribió
[...] 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 [...]
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.
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