consultar el API de búsqueda de Twitter y procesar la respuesta recibida en formato XML mediante PHP.
El nombre de esta API es Twitter Search API y funciona básicamente enviando consultas a URL en las que indicamos los filtros de la búsqueda mediante parámetros en GET.
Mediante las direcciones de búsqueda obtendremos un archivo JSON o XML. En este artículo usaremos el XML que se obtiene al acceder a URL como la de este enlace, ya que nos será muy fácil de tratar mediante PHP.
Entendiendo cómo funciona la API de búsqueda de Twitter
Solicitar una URL de la API nos devolverá el XML que podremos usar en PHP. Los parámetros que pasaremos por GET ofrecerán instrucciones a esta API con las que indicar qué buscas, cuántos resultados quieres, etc.
El archivo XML está estructurado de manera que cada tweet encontrado está en un tag ENTRY y a su vez, dentro encontramos varias etiquetas o tags con diversas otras informaciones como AUTOR para el autor, TWITTER:GEO para la geolocalización, CONTENT para el contenido del tweet en cuestión, etc.
Generando el archivo que necesitemos
Para generar el archivo deseado, lo que haremos es escribir la URL http://search.twitter.com/search.atom y luego añadirle los parámetros necesarios con tal de filtrar nuestra búsqueda.Veamos las variables importantes que usa por GET esta API, con las cuales podremos trabajar para generar nuestro XML personalizado.
q: Sirve para definir que es lo que buscamos.
- Buscar una palabra cualquiera: q=Mipalabra
- Buscar una frase: q=Mi%20Palabra%20a%20Buscar (%20 equivale a un espacio)
- Buscar una mención: q=@deswebcom
- Buscar un hashtag: q=%23Desarrolloweb (%23 equivale a un #)
- Estructura: geocode=latitud,longitud,radio
- Filtrar en kilómetros: geocode=45.3,-29.23,2km
- Filtrar en millas: geocode=45.3,-29.23,2mi
- Búsqueda en español: lang=es
- Búsqueda en catalán: lang=ca
- Búsqueda en inglés: lang=en
- Ejemplo: rpp=50
- Ejemplo de uso: page=3
Nota: Por ejemplo, si quisiéramos ir buscando todas las páginas, podríamos generar un XML con page=1 y que fuera creciendo mediante un contador (por ejemplo, si trabajamos en PHP) hasta que no nos retornara más tweets (CONTENT vacío).
- Mixto: result_type=mixed o no poner nada. (Incluye los resultados populares y los recientes en tiempo real).
- Reciente: result_type=recent (Incluye los resultados recientes en tiempo real).
- Popular: result_type=popular (Incluye los resultados populares).
- Estructura: until=AAAA-MM-DD.
- Ejemplo: until=2012-02-30.
Recogiendo mediante PHP la información necesaria
Para recoger la información, usaremos la función simpleXML_load_file(), de la cual ya hablamos en el artículo del API de Youtube. En resumen, a esta función le pasas archivo con formato XML y te devuelve un objeto cuyas propiedades son los datos que hay en el archivo.Ejemplo práctico
En este ejemplo vamos a ver cómo generar un archivo XML que nos va a buscar tweets hasta la fecha del 27/07/2012 que contengan la palabra "Desarrollo", que estén en español y con un máximo de 1 tweet.Seguidamente los recogeremos en PHP y mostraremos su autor y el tweet en nuestro documento.
La URL que usaremos es: search.twitter.com/search.atom?until=2012-07-27&q=Desarrollo&lang=es&rpp=1
En mi caso me ha generado este código XML, en vuestro caso os debería dar un código igual al mío, pero como es lógico con unos tweets diferentes (os muestro el XML a partir del ENTRY).
<entry>
<id>tag:search.twitter.com,2005:228517867493142528</id>
<published>2012-07-26T15:51:19Z</published>
<link type="text/html" href="http://twitter.com/ToniNrStinson/statuses/228517867493142528" rel="alternate"/>
<title>RT @ToniJC_N: Cuba es el único país del mundo que cumple los requisitos de la WWF de desarrollo sostenible. #Paraisocomunista</title>
<content type="html">RT @ToniJC_N: Cuba es el único país del mundo que cumple los requisitos de la WWF de desarrollo sostenible. #Paraisocomunista</content>
<updated>2012-07-26T15:51:19Z</updated>
<link type="image/png" href="http://a0.twimg.com/profile_images/2159161467/twitter_normal.jpg" rel="image"/>
<twitter:geo></twitter:geo>
<twitter:metadata>
<twitter:result_type>recent</twitter:result_type>
</twitter:metadata>
<twitter:source>Twitter for Android</twitter:source>
<twitter:lang>es</twitter:lang>
<author>
<name>ToniNrStinson (Toni Nuñez Rodriguez)</name>
<uri>http://twitter.com/ToniNrStinson</uri>
</author>
</entry>
Ahora voy a tratar con PHP este resultado
//funcion que extrae los comentarios de Twitter sobre un hastag
$datos = simpleXML_load_file("http://search.twitter.com/search.atom?until=2012-07-27&q=Desarrollo&lang=es&rpp=1");
//Imprimo todos los tweets y su autor (en mi ejemplo solo 1 tweet)
foreach($datos->entry as $tweet){
echo "<div><h3>".$tweet->author->name."</h3><span>".$tweet->content."</span><br><br></div>";
}
Enrique Fernandez Guerra
Desarrollador web Frontend, especializado en Javascript y TypeScript. Trabaja ac...