Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Usar Medios Sociales para Localizar Testigos Oculares: la API de Twitter

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Using Social Media to Locate Eyewitnesses.
Using Social Media to Locate Eyewitnesses to Important Events

Spanish (Español) translation by Javier Salesi (you can also view the original English article)

Tweet about President Obama taking the stage at Selma

Ésta es la segunda de una serie de dos partes sobre el uso de medios sociales para localizar testigos oculares de eventos importantes. En la primera parte, te mostré cómo usar la API de Instagram para encontrar testigos oculares de una grabación de un video de Macklemore en Seattle. En ésta parte, usaremos la API de Twitter para encontrar asistentes del discurso del Presidente Obama en el Puente Edmund Pettus en Selma.

Puedes descargar código para ambos episodios al usar el enlace al respositorio en Github en la barra lateral. También pudieras estar interesado en mi serie de Tuts+, Creando con la API de Twitter.

Las capacidades de geobúsqueda de Twitter son más limitadas y por lo tanto requieren utilizar un código poco más detallado. Publicaciones geoetiquetadas en Twitter solo se pueden encontrar desde los últimos siete días. Y son solo buscables por fecha (no por hora), así que tienes que filtrar los resultados de la API para fines de precisión.

Yo sí participo en las discusiones de la sección de abajo. Si tienes una pregunta o sugerencia de algún tópico, por favor publica un comentario abajo. También puedes contactarme en Twitter @reifman o mandarme un correo electrónico directamente.

Lo que Cubrimos en la Parte Uno

Los teléfonos que cargamos en nuestros bolsillos graban cada uno de nuestros movimientos, compartiéndolos con proveedores de teléfonía celular y con frecuencia compañías de software de terceros cuyas motivaciones generalmente se enfocan en las ganancias.

Muchas personas no se dan cuenta que han dejado  geoetiquetas en sus aplicaciones de medios sociales, publicando totalmente su ubicación con cada publicación en medios sociales. Ésto incluye al congresista del Partido Republicano Aaron Schock. La AP utilizó las geoetiquetas de su cuenta de Instagram para exponer su uso de fondos de contribuyentes para vuelos privados extravagantes y otras actividades de lujo.

Congressman Aaron Schock in South America

Así que, el geoetiquetado puede ser usado para bien. En ésta serie, exploraremos como los periodistas o las fuerzas del orden podrían localizar a potenciales testigos oculares de eventos importantes, tales como un crimen o un accidente usando medios sociales.

Sin embargo, el geoetiquetado también puede ser usado de forma abusiva. Científicos de informática y educadores de Berkeley crearon la aplicación Ready or Not? para mostrar cómo el geoetiquetado en Twitter e Instagram registra cada movimiento.

Aquí esta la cuenta de Twitter de Steve Wozniak, cofundador de Apple en la app:

Ready or Not App Steve Wozniak Twitter Geolocation History

El geoetiquetado en Instagram y Twitter es lo suficientemente exacto para permitir a alguien determinar fácilmente su residencia, lugar de trabajo e itinerario de viaje.

En éste episodio, te guiaré usando la API de Twitter. He proporcionado un repositorio en Github (el enlace está en la barra lateral) para que lo descargues y pruebes el código. Mi aplicación "Eyewitness app" está escrita en el Framework Yii para PHP, del que puedes aprender más en mi serie Programando con Yii2 para Tuts+.

Si no deseas compartir tu ubicación para que la vea el público-o dejar un rastro histórico de tus viajes-la aplicación Ready or Not? ofrece enlaces y guías para desactivar éstas características (observa el enlace en su página de inicio). Francamente, he desactivado la mía y te animo a que lo hagas tú también.

Si eres un miembro de una agencia de las fuerzas del orden o una entidad de medios de comunicación que quisiera más información, no dudes en contactarme directamente. Estaría interesado también en cualquier uso exitoso de éste código (para bien)-harían una interesante nota posterior.

Lo que Hicimos con Instagram

En el último episodio, utilizamos la API de Instagram para encontrar testigos de la grabación del video de Mackemore en el 2013 para White Cadillac. Muy fácilmente, logramos encontrar la foto del miembro de Instagram Joshua Lewis captando a Macklemore saliendo de su vehículo (¿magnífico no?):

Macklemore Arrives Found with the Instagram API

Ahora, comencemos a usar la API de Twitter.

Usar la API de Twitter

Al igual que en Instagram, necesitas ingresar a tu cuenta de Twitter y registrar una aplicación de desarrollador. Deberías registrar una aplicación como ésta:

Twitter App Registration

Twitter te mostrará los detalles de tu aplicación:

Twitter App Eyewitness Details

Aquí esta la página de configuración:

Twitter App Details

Aquí están las claves y los tokens de acceso para la aplicación. Toma nota de éstos.

Twitter App Keys and Access Tokens

Luego, desplázate hacia abajo y crea tokens de acceso para tu cuenta. Toma nota de éstos también.

Twitter App Account Access Tokens

Agrega las cuatro claves y secretos de ésta configuración a tu archivo /var/secure/eyew.ini:

Posteriormente, crearemos una migración de Active Record para crear nuestro modelo de Twitter. Ésto almacenará los tuits que recibimos de las llamadas API.

Igual que lo hicimos en la parte uno, necesitas ejecutar la migración:

Después, usé el generador de código de yii2, Gii, para crear el modelo y los controladores CRUD para el modelo de Twitter. Si obtienes el código del más reciente repositorio en Github usando el enlace de la barra lateral en éste tutorial, tendrás el código también.

Crea un Momento Nuevo

Debido a que Twitter limita las búsquedas de geolocalización a la semana pasada, eventualmente elegí el discurso del Presidente Obama por el 50 Aniversario de un hecho sangriento en el Puente Edmund Pettus en Selma

Utilicé Google Maps de nuevo para obtener las coordenadas GPS para el puente:

Edmund Pettus Bridge Selma Alabama Geolocation

Luego, creé un Momento para buscar el discurso. Lo actualicé varias veces para modificar el radio geográfico de la búsqueda (es un puente) y el rango de tiempo:

Edmund Pettus Bridge Selma Alabama Geolocation Moment

Buscar usando la API de Twitter

Las limitaciones de la API de Twitter son que solo te permite buscar por fecha, ejemplo 2015-03-07, mientras que Instagram es indexado por Tiempo Unix preciso. Por lo tanto, tenemos que comenzar nuestra búsqueda en Twitter un día completo por anticipado y buscar hacia atrás.

Ya que probablemente obtendremos muchos tuits afuera de nuestro deseado rango de tiempo, tenemos que hacer llamadas reiteradas a la API de Twitter. Twitter regresa hasta 100 tuits por petición de la API, y permite 180 peticiones cada 15 minutos.

Voy a utilizar la Librería de la API de Twitter para PHP de James Mallison. Aquí está como configuramos la librería para efectuar las llamadas:

Inicialmente, solicitamos 100 resultados de Twitter en nuestras coordenadas GPS hasta una fecha específica.

Sólo registramos tuits dentro de nuestro rango de tiempo preciso, ignorando los otros resultados. Mientras procesamos éstos, tomamos nota del más bajo ID de tuit recibido.

Luego iteramos, haciendo peticiones reiteradas a Twitter (hasta 179 veces más), solicitando registros adicionales que son más antiguos del ID más bajo del tuit del lote previo. En otras palabras, en peticiones subsecuentes, en lugar de consultar una fecha específica, consultamos el max_id del más bajo ID del tuit que hemos recibido.

Paramos cuando sean regresados menos de 100 registros o cuando los tuits regresados sean anteriores a nuestro rango actual.

Si necesitas accesar a más de 18,000 tuits, necesitarás implementar una tarea en segundo plano para llamara a la API de Twitter, como lo hicimos en nuestra otra serie de la API de Twitter.

Mientras procesamos los resultados de la API, necesitamos filtrar tuits, solamente registrando esos que caen dentro de nuestro tiempo de inicio y tiempo final.

Nota: la API de Twitter tiene muchas peculiaridades frustrantes que hacen la paginación más difícil de lo que debería ser. Muy frecuentemente Twitter no regresa resultados sin un código de error. Otras ocasiones, encontré que regresaba un número pequeño de resultados, pero eso no significaba que otra petición no regresaría más. No hay maneras muy claras de saber cuando Twitter termina de regresarte resultados. Es inconsistente. Así, puedes notar que mi código tiene tiene interesantes soluciones para ello, por ejemplo examina $count_max_repeats.

Uno de los primeros resultados regresados incluyeron el tuit de abajo de Fred Davenport mostrando al Presidente Obama en el escenario:

The First Results for Selma 50th via the Twitter Search API

Aquí está en Twitter:

President Obama in Selma via the Twitter API

Luego, mientras navegas por más resultados, puedes encontrar mucha más gente presente tuiteando sobre Obama-incluyendo medios de comunicación:

More Selma Twitter API Results

Ahora, hagamos una búsqueda más local.

Una Segunda Búsqueda más local

Key Arena es el recinto para conciertos y eventos deportivos más grande en Seattle. Éste último fin de semana fue sede del Torneo Femenil de Basquetbol Pac-12:

Key Arena Calendar of Events

Obtengamos nuestras coordenadas GPS para la Key Arena de Google Maps:

Key Arena Geolocation on Google Maps

Posteriormente, creé y modifiqué un momento para encontrar un rango de tiempo más largo para el fin de semana de tuits:

Create a moment to search Key Arena Basketball Tournament

Y, aquí están algunos de los resultados. Mi favorito es:

"Quiero irme de éste juego de basquetbol. Odio el basquetbol."
Twitter Search Results for Key Arena Tournament

Para la mayor parte, me parece que la API de Instagram es mucho más poderosa que la de Twitter y arroja generalmente resultados más intrigantes. Sin embargo, depende de la clase de persona que estás buscando. Si solo quieres identificar personas que estuvieron ahí, cualquier API funciona bien.

Lo que Hemos aprendido

Espero que hayas disfrutado ésta serie. La encontré fascinante y estuve impresionado con los resultados. Y resalta la preocupación que deberíamos tener sobre nuestro nivel de privacidad en ésta era digital interconectada.

Las APIs de Instagram y Twitter son servicios increíblemente poderosos para encontrar usuarios de medios sociales que estuvieron cerca de ciertos lugares a una cierta hora. Ésta información puede ser usada para bien y se puede abusar de ella. Probablemente deberías considerar desactivar la publicación de tu geolocalización-seguir los enlaces en la aplicación Ready or Not?.

También pudieras querer revisar mi serie Creando con la API de Twitter, también en Tuts+.

Por favor, con toda confianza publica tus preguntas y comentarios abajo. También puedes contactarme en Twitter @reifman o mandarme un correo electrónico directamente. Agradeceria especialmente escuchar de periodistas y miembros de las fuerzas del orden que hagan uso de éstos ejemplos.

También puedes navegar por mi página de instructor en Tuts+ para ver otros tutoriales que he escrito.

Enlaces Relacionados

¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.