Jugando con la API de Twitter [Extrayendo Datos de Contactos]

in #spanish8 years ago

Hola no es habitual que escriba sobre el mismo tema tan seguido pero lo haré por lo menos en esta serie "Jugando con las API de las redes sociales", y próximamente "Jugando con la API  de SPN" para que aquellas personas que les gustan algunos números que no salen en los periódicos tengan acceso a estos... claro voy a terminar primero con la mayor parte de las redes sociales antes de comenzar otra serie.

Comencemos, si entramos a la pagina https://dev.twitter.com/rest/public encontraremos toda la información disponible sobre la API de Twitter, y qui en este blog vamos a ver hoy que contienen 3 de estas librerías, voy a elegir 3 comunes ...  ojo esta entrada sera un poco larga pero me voy a enfocar en el código usted puede correr el código y ver la salida, ademas en cada pagina de la API podrá ver los datos comunes a nuestra salida.... aunque no es muy larga la salida puede resultar interesante :D... El codigo de hoy es el siguiente:


import twitter, json

CONSUMER_KEY = 'Datos de A'

CONSUMER_SECRET = 'Datos de B'

OAUTH_TOKEN = 'Datos de C'

OAUTH_SECRET = 'Datos de D'

auth = twitter.oauth.OAuth( OAUTH_TOKEN , OAUTH_SECRET, CONSUMER_KEY , CONSUMER_SECRET )

twitter_api = twitter.Twitter(auth=auth)

q = '@futboltotal' 

count = 25

search_results = twitter_api.search.tweets(q=q, count =count)

datos_de_statuses_home_timeline = twitter_api.statuses.home_timeline(q=q, count =count)

print len(datos_de_statuses_home_timeline) 
contar_datos_de_statuses_home_timeline =  len(datos_de_statuses_home_timeline) 
diccionario_1_de_home_timeline = datos_de_statuses_home_timeline[0]


for k,v in diccionario_1_de_home_timeline.items(): 
    print "########################################################"
    print "########################################################"
    print "Esta es la Keys: ",k # Recuerda que k es la Clave del diccionario Ademas son 20 y estamos usando la 1 tuit = mundo[0]
    print "_______________________________________________________-"
    print "y el Valor: ", v
    print "--------------------------------------------------------"

He elegido 3 métodos del API de twitter para repasar un poco aquí como lo son statuses/home_timeline, users/search y statuses/user_timeline, aquí les dejo una pequeña síntesis de lo que en la api dice de cada una...

GET users/search


Proporciona una interfaz de búsqueda simple, basada en la relevancia de las cuentas de usuario públicas en Twitter. Trate de consultar por el interés tópico, nombre completo, nombre de la empresa, la ubicación, u otros criterios.


Se le puede pasar un argumento "q" que se refiere a el nombre del usuario Twitter en la Base de Datos de Twitter, también se puede especificar la pagina, por defecto busca los últimos 20 resultados sobre un twitter pero se le puede pasar como argumento "count" que es el numero de resultados que queremos obtener teniendo como máximo 1000 :D por ejemplo:


q = '@futboltotal' 

count = 25

search_results = twitter_api.search.tweets(q=q, count =count)

Si no le pasamos el argumento count obtendremos los últimos 20 mensajes.... Mas información en  https://dev.twitter.com/rest/reference/get/users/search 

Podríamos tener interés en otros 2 métodos de la API como son:


GET statuses/user_timeline

Devuelve una colección de las más recientes tweets publicados por el usuario indicado por el SCREEN_NAME o parámetros user_id.


Sólo se solicitarán líneas de tiempo de los usuarios que pertenecen a usuarios protegidos cuando el usuario autenticado ya sea "dueño" de la línea de tiempo o es un seguidor aprobada del propietario.


La línea de tiempo devuelto es el equivalente a la que se ve cuando se ve el perfil de un usuario en twitter.com.


Este método sólo se puede devolver hasta 3.200 Tweets (Nada mas jajaja) más recientes de un usuario. retweets nativos de otros estados por el usuario se incluyen en este total, independientemente de si include_rts se establece en false al solicitar este recurso.


Mas información en  https://dev.twitter.com/rest/reference/get/statuses/user_timeline https://dev.twitter.com/rest/reference/get/statuses/user_timeline.


GET statuses/home_timeline


Devuelve una colección de las más recientes tweets y retweets publicado por el usuario de autenticación y los usuarios que siguen. La línea de tiempo en casa es fundamental para ver la forma en la mayoría de los usuarios interactúan con el servicio de Twitter.


Hasta 800 tweets se pueden obtener en la línea de tiempo en casa. Es más volátil para los usuarios que siguen muchos usuarios o siguen a los usuarios que twitean con frecuencia.


Mas información en   https://dev.twitter.com/rest/reference/get/statuses/user_timeline

Ahora vamos a ver 1 código mas y en la siguiente entrada vamos a desmenuzar la información y vamos a obtener mas datos:


import twitter, json

CONSUMER_KEY = 'Datos de A'

CONSUMER_SECRET = 'Datos de B'

OAUTH_TOKEN = 'Datos de C'

OAUTH_SECRET = 'Datos de D'

auth = twitter.oauth.OAuth( OAUTH_TOKEN , OAUTH_SECRET, CONSUMER_KEY , CONSUMER_SECRET )

twitter_api = twitter.Twitter(auth=auth)

q = '@futboltotal' 

count = 25

#  Datos para USERS/SEARCH
search_results = twitter_api.search.tweets(q=q, count =count)


#  Datos para Statuses/home_timeline

datos_de_statuses_home_timeline = twitter_api.statuses.home_timeline(q=q, count =count)

#  Datos para Statuses/user_timeline

datos_de_statuses_user_timeline = twitter_api.statuses.user_timeline(q=q, count =count)


### Luego de aqui podemos hacer muchas cosas, si aun no entiendes pytho o la API de twitter
### Te recomiendo cambiar el nombre de datos_de_statuses_user_timeline por datos_de_statuses_home_timeline o search_results 
### Segun vayas probando y asi te haras una idea de o que contienen

print len(datos_de_statuses_user_timeline) 
contar_datos_de_statuses_home_timeline =  len(datos_de_statuses_user_timeline) 
diccionario_1_de_home_timeline = datos_de_statuses_user_timeline[0]



for k,v in diccionario_1_de_home_timeline.items(): 
    print "########################################################"
    print "########################################################"
    print "Esta es la Keys: ",k # Recuerda que k es la Clave del diccionario Ademas son varios y estamos usando el 0
    print "_______________________________________________________-"
    print "y el Valor: ", v
    print "--------------------------------------------------------"


Este código es para user/search y Statuses/user_timeline ten en cuenta que diccionario_1_user_search=datos_de_statuses_home_timeline[0] es el primer diccionario y que los otros diccionarios tienen la misma estructura que este puedes correr el primer código y obtener algo como esto:

10
########################################################
########################################################
Esta es la Keys: contributors
_______________________________________________________-
y el Valor: None
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: truncated
_______________________________________________________-
y el Valor: False
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: text
_______________________________________________________-
y el Valor: #tourdespertar16 Pero el SEÑOR me dijo: Jeremias 7 —No digas: “Soy un muchacho”; porque a todos a quienes yo te envíe tú irás ....
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: is_quote_status
_______________________________________________________-
y el Valor: False
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: in_reply_to_status_id
_______________________________________________________-
y el Valor: None
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: id
_______________________________________________________-
y el Valor: 765939344075030528
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: favorite_count
_______________________________________________________-
y el Valor: 0
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: source
_______________________________________________________-
y el Valor: <a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: retweeted
_______________________________________________________-
y el Valor: False
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: coordinates
_______________________________________________________-
y el Valor: None
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: entities
_______________________________________________________-
y el Valor: {u'symbols': [], u'user_mentions': [], u'hashtags': [{u'indices': [0, 16], u'text': u'tourdespertar16'}], u'urls': []}
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: in_reply_to_screen_name
_______________________________________________________-
y el Valor: None
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: in_reply_to_user_id
_______________________________________________________-
y el Valor: None
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: retweet_count
_______________________________________________________-
y el Valor: 0
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: id_str
_______________________________________________________-
y el Valor: 765939344075030528
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: favorited
_______________________________________________________-
y el Valor: False
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: user
_______________________________________________________-
y el Valor: {u'follow_request_sent': False, u'has_extended_profile': True, u'profile_use_background_image': True, u'default_profile_image': True, u'id': 624808389, u'profile_background_image_url_https': u'https://abs.twimg.com/images/themes/theme1/bg.png', u'verified': False, u'profile_text_color': u'333333', u'profile_image_url_https': u'https://abs.twimg.com/sticky/default_profile_images/default_profile_2_normal.png', u'profile_sidebar_fill_color': u'DDEEF6', u'entities': {u'description': {u'urls': []}}, u'followers_count': 10, u'profile_sidebar_border_color': u'C0DEED', u'id_str': u'624808389', u'profile_background_color': u'C0DEED', u'listed_count': 0, u'is_translation_enabled': False, u'utc_offset': None, u'statuses_count': 10, u'description': u'Nada', u'friends_count': 22, u'location': u'', u'profile_link_color': u'0084B4', u'profile_image_url': u'http://abs.twimg.com/sticky/default_profile_images/default_profile_2_normal.png', u'following': False, u'geo_enabled': False, u'profile_background_image_url': u'http://abs.twimg.com/images/themes/theme1/bg.png', u'screen_name': u'cesaraugusto003', u'lang': u'es', u'profile_background_tile': False, u'favourites_count': 0, u'name': u'cesaraugusto000', u'notifications': False, u'url': None, u'created_at': u'Mon Jul 02 14:50:41 +0000 2012', u'contributors_enabled': False, u'time_zone': None, u'protected': False, u'default_profile': True, u'is_translator': False}
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: geo
_______________________________________________________-
y el Valor: None
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: in_reply_to_user_id_str
_______________________________________________________-
y el Valor: None
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: lang
_______________________________________________________-
y el Valor: es
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: created_at
_______________________________________________________-
y el Valor: Wed Aug 17 15:52:24 +0000 2016
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: in_reply_to_status_id_str
_______________________________________________________-
y el Valor: None
--------------------------------------------------------
########################################################
########################################################
Esta es la Keys: place
_______________________________________________________-
y el Valor: None
--------------------------------------------------------


Hasta aquí vamos  a dejar esta entrada, que Dios te bendiga

Mas tarde Posteare algo un poco mas interesante y en las próximas entradas vamos a seguir con PrettyTables y con Los gráficos,ademas estoy buscando la manera de crear grafos :D