-
Extraccin de datos en Twitter mediante la API twitter4j
-
Tabla de contenido
0. INTRODUCCIN A SEARCH API Y STREAMING API ..................................................... 3
1. REGISTRAR UNA APLICACIN EN TWITTER ............................................................ 13
2. AUTENTICACIN MEDIANTE EL PROTOCOLO OAUTH PARA TWITTER ............ 14
3. OBTENER DATOS DE SEARCH API CON TWITTER4J ............................................... 15
4. OBTENER DATOS DE STREAMING API CON TWITTER4J ....................................... 16
5. ALMACENANDO LOS DATOS EXTRADOS EN MYSQL .............................................. 17
-
0. Introduccio n a Search API y Streaming API
El conjunto de Search y Streaming API que proporciona Twitter ofrecen a los desarrolladores una
amplia gama de mtodos para satisfacer diferentes necesidades, que van desde obtener el
timeline1 de un usuario, publicar un tweet hasta obtener acceso a la corriente mundial de tweets.
Como este tutorial no tiene el inters de detallar las funciones incluidas en cada API, se sugiere al
lector visitar la direccin electrnica https://dev.twitter.com/docs y revisar la documentacin de
ambas APIS.
Streaming API proporciona un acceso de baja latencia a la corriente mundial de datos de Twitter.
Se establece una conexin permanente con los servidores de Twitter y mediante una peticin http
se recibe un flujo continuo de tweets en formato json.
Search API suministra un conjunto de tweets correspondientes a una fecha no mayor a 7 das a
partir de la fecha actual.
Es posible filtrar los datos obtenidos de ambas APIS por palabras clave contenidas en el mensaje o
por usuario, lenguaje y localizacin. De Streaming API por otro lado se pude obtener todo el
caudal de tweets o slo los tweets que tienen enlaces o los tweets con retweets.
Estas APIs encapsulan los datos en cuatro bloques Tweets, Users, Entyties y Places, para dar
semntica a los datos que se originan desde la aplicacin. Estos bloques pueden ser vistos como
clases en los lenguajes orientados a objetos, como es el caso de Java.
Tweets es el bloque bsico de construccin de todas las cosas de Twitter, tambin conocida en la
documentacin como Status. En la siguiente tabla se muestra un listado de los atributos que
contiene Tweets, y para cada atributo se especifica el tipo de dato, descripcin y un ejemplo en
formato JSON.
Campo Tipo Descripcin Ejemplo
contributor Contributors Una coleccin de objetos de usuario (por lo general slo una) que indica a los usuarios que contribuyeron a la autora del tweet, en nombre del autor de Twitter oficial.
"contributors": [ { "id":819797, "id_str":"819797",
1
-
"screen_name":"episod" } ]
coordinates Coordinates Representa la ubicacin geogrfica de este Tweet segn lo informado por el usuario o la aplicacin cliente. La matriz de coordenadas internas se formatea como GeoJSON (Longitud, luego de latitud).
"coordinates": { "coordinates": [ -75.14310264, 40.05701649 ], "type":"Point" }
created_at String Hora UTC cuando este Tweet fue creado. "created_at":"Wed Aug 27 13:08:45 +0000 2008"
current_user_retweet
Object Detalles del Tweet ID del propio retweet del usuario (si existe) de este Tweet.
"current_user_retweet": { "id": 26815871309, "id_str": "26815871309" }
entities Entities Las entidades que han sido analizadas por el texto del tweet.
"entities": { "hashtags":[], "urls":[], "user_mentions":[] }
favorite_count Integer Indica aproximadamente cuntas veces este Tweet ha sido favorito por los usuarios de Twitter.
"favorite_count":1138
favorited Boolean Indica si este Tweet ha sido favorito por el usuario que se autentica.
"favorited":true
filter_level String Indica el valor mximo del parmetro filter_level que puede ser utilizado
"filter_level": "medium"
geo Object En desuso
id Int64 La representacin entera del identificador nico para este Tweet. Este nmero es mayor que 53 bits y algunos lenguajes de programacin puede tener dificultad / defectos en silencio en su interpretacin. El uso de un entero con signo de 64 bits para almacenar este identificador es seguro. Utilice id_str para buscar el identificador de una forma segura.
"id":114749583439036416
id_str String La representacin de cadena del identificador nico para este Tweet. Las implementaciones deben usar este en lugar del entero grande..
"id_str":"114749583439036416"
-
in_reply_to_screen_name
String Si el Tweet representado es una respuesta, este campo contiene el nombre de pantalla del autor original del Tweet.
"in_reply_to_screen_name":"twitterapi"
in_reply_to_status_id
Int64 Si el Tweet representado es una respuesta, este campo contiene la representacin entera del original Tweet ID.
"in_reply_to_status_id":114749583439036416
in_reply_to_status_id_str
String Si el Tweet representado es una respuesta, este campo contiene la representacin de cadena del original Tweet ID.
"in_reply_to_status_id_str":"114749583439036416"
in_reply_to_user_id
Int64 Si el Tweet representado es una respuesta, este campo contiene la representacin entera del autor original del Tweet ID. Esto no necesariamente siempre ser el usuario directamente mencionado en el Tweet.
"in_reply_to_user_id":819797
in_reply_to_user_id_str
String Si el Tweet representado es una respuesta, este campo contiene la representacin en cadena del autor original del Tweet ID. Esto no necesariamente siempre ser el usuario directamente mencionado en el Tweet.
"in_reply_to_user_id_str":"819797"
lang String Cuando est presente, indica un identificador BCP 47 de idioma correspondiente al lenguaje mquina detectado en el texto del Tweet, o " und "si no hay un lenguaje detectado. Nota: A partir del 15 de marzo 2013, este campo est disponible en REST pero no Streaming.
"lang": "en"
place Places Cuando est presente, indica que el tweet se asocia (pero no necesariamente se origina a partir de) un lugar.
"place": { "attributes":{}, "bounding_box": { "coordinates": [[ [-77.119759,38.791645], [-76.909393,38.791645], [-76.909393,38.995548], [-77.119759,38.995548] ]], "type":"Polygon" }, "country":"United States", "country_code":"US",
-
"full_name":"Washington, DC", "id":"01fbe706f872cb32", "name":"Washington", "place_type":"city", "url": "http://api.twitter.com/1/geo/id/01fbe706f872cb32.json" }
possibly_sensitive
Boolean El significado del campo no se refiere a los contenidos de Twitter en s, sino que es un indicador de que la direccin que figura en el tweet puede contener contenidos o medios identificados como contenido sensible.
"possibly_sensitive":true
scopes Object Un conjunto de pares clave-valor que indica la entrega contextual prevista de la que contiene un Tweet. Actualmente utilizado por los productos promocionados de Twitter.
"scopes":{"followers":false}
retweet_count Int Nmero de veces que ha sido retweeteado este Tweet.
"retweet_count":1585
retweeted Boolean Indica si este Tweet ha sido retweeteado por el usuario que se identifica.
"retweeted":false
retweeted_status
Tweet Los usuarios pueden ampliar la difusin de los tweets escritos por otros usuarios por un retweet . Retweets se pueden distinguir de los Tweets tpicos por la existencia de unretweeted_status atributo. Este atributo contiene una representacin del original Tweet que fue retweeteado. Tenga en cuenta que los retweets de retweets no muestran representaciones de los retweets intermedios, sino slo del tweet original.
source String Utilizado para publicar el tweet, como una cadena con formato HTML.
"source":"\u003Ca href=\"http:\/\/itunes.apple.com\/us\/app\/twitter\/id409789998?mt=12\" rel=\"nofollow\"\u003ETwitter for Mac\u003C\/a\u003E"
text String El actual texto UTF-8 de la actualizacin de estado.
"text":"Tweet Button, Follow Button, and Web Intents javascript now support SSL http:\/\/t.co\/9fbA0oYy ^TS"
truncated Boolean Parmetro Indica si el texto se ha truncado, por ejemplo, como resultado de un tweet superior a la longitud de 140 caracteres. Los textos truncados
"truncated":true
-
terminarn en puntos suspensivos, como este...
user Users El usuario que public este Tweet. Atributos de perspectiva incrustados dentro de este objeto son poco fiables.
"user":{"statuses_count":3080, "favourites_count":22, "protected":false, "profile_text_color":"437792", "profile_image_url":"...", "name":"Twitter API", "profile_sidebar_fill_color":"a9d9f1", "listed_count":9252, "following":true, "profile_background_tile":false, "utc_offset":-28800, "description":"The Real Twitter API. I tweet about API changes, service issues and happily answer questions about Twitter and our API. Don't get an answer? It's on my website.", "location":"San Francisco, CA", "contributors_enabled":true, "verified":true, "profile_link_color":"0094C2", "followers_count":665829, "url":"http:\/\/dev.twitter.com", "default_profile":false, "profile_sidebar_border_color":"0094C2", "screen_name":"twitterapi", "default_profile_image":false, "notifications":false, "display_url":null, "show_all_inline_media":false, "geo_enabled":true, "profile_use_background_image":true, "friends_count":32, "id_str":"6253282", "entities":{"hashtags":[], "urls":[], "user_mentions":[]}, "expanded_url":null, "is_translator":false, "lang":"en", "time_zone":"Pacific Time (US & Canada)", "created_at":"Wed May 23 06:01:13 +0000 2007", "profile_background_color":"e8f2f7", "id":6253282, "follow_request_sent":false, "profile_background_image_url_https":"...", "profile_background_image_url":"...", "profile_image_url_https":"..."}
-
withheld_copyright
Boolean Cuando est presente y se establece en "true", indica que esta pieza de contenido se ha retenido debido a una reclamacin de la DMCA.
"withheld_copyright": true
withheld_in_countries
Array of String
"withheld_in_countries": ["GR", "HK", "MY"]
withheld_scope String "withheld_scope": "status"
CAMPO Tipo Descripcin Ejemplo
contributors_enabled
Boolean Indica que el usuario tiene una cuenta en el "modo colaborador" activado, lo que permite Tweets emitidos por el usuario para ser coescrito por otra cuenta. Rara vez es cierta.
"Contributors_enabled": false
created_at String Fecha y hora UTC en que la cuenta de usuario se cre.
"Created_at": "Lun Nov 29 21:18:15 +0000 2010"
default_profile Boolean Cuando es true, indica que el usuario no ha alterado el tema o el fondo de su perfil de usuario.
"default_profile": false
default_profile_image
Boolean Cuando es true, indica que el usuario no ha subido su propio avatar y por defecto se utiliza un huevo como avatar.
"default_profile_image": false
description String Cadena (UTF-8) definida por el usuario que describe su cuenta.
"description":"The Real Twitter API."
entities Entities Entidades que han sido analizados de los campos url o descripcin definidos por el usuario.
"entities": { "url": { "urls": [ { "url": "http:\/\/dev.twitter.com", "expanded_url": null, "indices": [0, 22] } ] }, "description": {"urls":[] } }
favourites_count Int Numero de tweets del usuario que han sido favoritos.
"favourites_count": 13
follow_request_sent
Type Cuando es true, indica que el usuario que se identifica ha emitido una solicitud para
"follow_request_sent":false
-
seguir a esta cuenta de usuario protegida.
following Boolean Cuando es true, indica que el usuario que se identifica est siguiendo a este usuario. Algunos falsos negativos son posibles cuando se establece en "false", pero estos falsos negativos cada vez se representan como "nulo" en su lugar.
"following":true
followers_count Int Nmero de seguidores que esta cuenta tiene actualmente. Bajo ciertas condiciones de presin, este campo indicar temporalmente "0".
"followers_count": 21
friends_count Int Nmero de usuarios que esta cuenta est siguiendo. Bajo ciertas condiciones de presin, este campo indicar temporalmente "0".
"friends_count": 32
geo_enabled Boolean Cuando es true, indica que el usuario ha habilitado la posibilidad de geoetiquetado de sus Tweets. Este campo debe ser verdadero para el usuario actual para adjuntar los datos geogrficos utilizando POST statuses/update.
"geo_enabled": true
id Int64 Representacin entera del identificador nico para este usuario. Este nmero es mayor a 53 bits y algunos lenguajes de programacin puede tener dificultad / defectos en silencio en su interpretacin. El uso de un entero con signo de 64 bits para almacenar este identificador es seguro.
"id":6253282
id_str String La representacin de cadena del identificador nico para este usuario.
"id_str":"6253282"
is_translator Boolean Cuando es true, indica que el usuario es un participante en Twitter de translator community.
"is_translator": false
lang String El BCP 47 cdigo para el idioma de la interfaz de usuario. Puede o no tener nada que ver con el contenido de sus tweets.
"lang": "en" "lang": "msa" "lang": "zh-cn"
listed_count Int ---------------------------------- "listed_count":9274
location String Ubicacin definida por el usuario para el perfil de esta cuenta. No necesariamente se refiere a un lugar analizable. Este campo de vez en cuando es interpretado vagamente por el servicio de bsqueda.
"location":"San Francisco, CA"
-
name String El nombre del usuario, ya que hemos definido. No necesariamente se refiere al nombre de una persona. Por lo general un lmite de 20 caracteres, pero sujeta a cambios.
"name":"Twitter API"
notifications Boolean En desuso "profile_background_color":"e8f2f7"
profile_background_color
String El color hexadecimal elegido por el usuario para su fondo.
"profile_background_color":"e8f2f7"
profile_background_image_url
String Una direccin URL basada en HTTP que apunta a la imagen de fondo que el usuario ha subido a su perfil.
"profile_background_image_url": "http:\/\/a2.twimg.com\/profile_background_images\ /229557229\/twitterapi-bg.png"
profile_background_image_url_https
String Una direccin URL basada en HTTPS que apunta a la imagen de fondo que el usuario ha subido a su perfil.
"profile_background_image_url_https": "https:\/\/si0.twimg.com\/profile_background_images\ /229557229\/twitterapi-bg.png"
profile_background_tile
Boolean -------------------------------------------------------------------------------------
"profile_background_tile":false
profile_banner_url
String -------------------------------------------------------------------------------------
"profile_banner_url": "https://si0.twimg.com/profile_banners/819797/1348102824"
profile_image_url
String Una direccin URL basada en HTTP que apunta a la imagen del avatar del usuario.
"profile_image_url": "http:\/\/a2.twimg.com\/profile_images\/1438634086\ /avatar_normal.png"
profile_image_url_https
String Una direccin URL basada en HTTPS sealando imagen de avatar del usuario.
"profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/1438634086\ /avatar_normal.png"
profile_link_color
String Color hexadecimal que el usuario ha optado para mostrar los vnculos en su interfaz de usuario.
"profile_link_color":"0094C2"
profile_sidebar_border_color
String -------------------------------------------------------------------------------------
"profile_sidebar_border_color":"0094C2"
profile_sidebar_fill_color
String -------------------------------------------------------------------------------------
"profile_sidebar_fill_color":"a9d9f1"
profile_text_color
String El color hexadecimal que el usuario ha elegido para mostrar el texto en su interfaz de usuario.
"profile_text_color":"437792"
-
profile_use_background_image
Boolean -------------------------------------------------------------------------------------
"profile_use_background_image":true
protected Boolean Cuando es true, indica que el usuario ha optado por proteger a sus Tweets.
"protected": true
screen_name String El nombre de pantalla o alias con el que el usuario se identifica. screen_names son nicas, pero sujeta a cambios. Utilice id_strcomo un identificador de usuario siempre que sea posible.
"screen_name":"twitterapi"
show_all_inline_media
Boolean -------------------------------------------------------------------------------------
"show_all_inline_media": false
status Tweets -------------------------------------------------------------------------------------
"status": { "coordinates": null, "favorited": false, "truncated": false, "created_at": "Tue Apr 17 16:38:18 +0000 2012", "id_str": "192290904646754304", "entities": { "urls": [ ], "hashtags": [ ], "user_mentions": [ { "name": "Micah McVicker", "id_str": "166661446", "id": 166661446, "indices": [ 0, 14 ], "screen_name": "MicahMcVicker" } ] }, "in_reply_to_user_id_str": "166661446", "contributors": null, "text": "@MicahMcVicker make sure you're using include_rts=true and no other filters, then walking your timeline by since_id and max_id",
-
"retweet_count": 0, "in_reply_to_status_id_str": "192290470427246594", "id": 192290904646754304, "geo": null, "retweeted": false, "in_reply_to_user_id": 166661446, "place": null, "in_reply_to_screen_name": "MicahMcVicker", "source": "YoruFukurou", "in_reply_to_status_id": 192290470427246594 },
statuses_count Int Nmero de tweets (incluyendo retweets) emitido por el usuario.
"statuses_count": 42
time_zone String Una cadena que describe la zona horaria del este usuario declara a s mismos en su interior.
"time_zone":"Pacific Time (US & Canada)"
url String Un URL proporcionada por el usuario en asociacin con su perfil.
"url":"http:\/\/dev.twitter.com"
utc_offset Int Desplazamiento de GMT / UTC en cuestin de segundos.
"utc_offset": -18000
verified Boolean Cuando es true, indica que el usuario tiene una cuenta verificada.
"verified": false
withheld_in_countries
String Cuando est presente, indica una representacin textual de los cdigos de los pases de dos letras donde este usuario es retenido.
"withheld_in_countries": "GR, HK, MY"
withheld_scope String Cuando est presente, indica si el contenido que se est retenido es el de "estado" o "usuario".
"withheld_scope": "user"
-
1. Registrar una aplicacio n en Twitter
-
2. Autenticacio n mediante el protocolo OAuth para Twitter
-
3. Obtener datos de Search API con twitter4j
-
4. Obtener datos de Streaming API con twitter4j
-
5. Almacenando los datos extra dos en MySQL