Manejando los datos de la API Twitter en Python [Parte 3]


Bueno hoy  voy a escribir 2 códigos, para seguir con la otra serie ya que la he dejado estancada y es la que mas fácil se me da :D, les comento que ha sido muy interesante el escribir el código que hoy les traigo, vamos a sacar a mano 25 mensajes de una cuenta y vamos a ver quien los escribe, cuantos seguidores tiene, el mensaje en texto y cuantas veces a sido retuiteado, con estos mismos datos mas adelante voy a hacer un estudio de 300 mensajes donde vamos a ver el léxico las hashtags usadas y cuantos retwits recibe cada mensaje y cada cuanto tiempo mas o menos se crean los mensajes para saber por que hay mas tendencia :D, claro eso es mas adelante….

Por lo pronto vamos a estudiar el siguiente código que es muy sencillo y vamos a sacar a mano 25 mensajes de una cuenta y vamos a ver quien los escribe, cuantos seguidores tiene, el mensaje en texto y cuantas veces a sido retuiteado(ya esto lo dije :D):

 

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]



    
i = 0
 
for contados in   range(0, contar_datos_de_statuses_home_timeline):
    diccionario_1_de_home_timeline = datos_de_statuses_home_timeline[i]
    hj = 0 # esto ya es un  mal habito para depurar de ser necesario
    for k,v in diccionario_1_de_home_timeline.items():
      
      if k == "user":
        f = {}
        f =dict(v)
        for k,v in f.items():
	    if k == "screen_name":
                usuario_escribe = v
            elif  k == "followers_count":
                seguidores = v
    
      
      
      
      elif k == "retweet_count":
	        Retuiteado = v
	        
      elif k == "text":
	        Texto = v
	        

	        
      hj += 1
      
      

    print "Esto:", Texto, "Lo escribio:", usuario_escribe, "Retuiteado:", Retuiteado , "Este usuario tiene:", seguidores ,"Seguidores"
                
    
  
  
    i += 1

La parte mas interesante de este código son sin duda los condicionales del bucle for que esta dentro del primer bucle for, fíjate que cuando “k” es igual a “user” el programa debe buscar 2 cosas dentro del diccionario “f” y son screen_name y followers_count luego busca cuantas veces ese mismo mensaje ha sido retuiteado y por ultimo deje el texto claro que podemos colocarlo en el orden que queramos 😀

Esta es la salida:

 

25
Esto: So Granit, which @Arsenal players have helped you settle in?

Full interview 👉 https://t.co/uoHonFRlFt
https://t.co/8guLqXvtpT Lo escribio: Arsenal Retuiteado: 0 Este usuario tiene: 7895201 Seguidores
Esto: #EnBuscaDe Coordinador de siniestros automotriz. Benito Juárez #CiudaddeMéxico $12,000 https://t.co/atynXlMfeS #empleo Lo escribio: empleogob_mx Retuiteado: 0 Este usuario tiene: 60900 Seguidores
Esto: ¡Pep ya podrá contar con él!

Claudio Bravo llegó a Manchester para fichar por el City: https://t.co/SNHWwcFSJ0 https://t.co/tTuoY1Oyg4 Lo escribio: futboltotal Retuiteado: 0 Este usuario tiene: 107846 Seguidores
Esto: ¡Bastian Schweinsteiger  no volverá a jugar en Europa!
☹☹☹
Este sería su próximo destino: https://t.co/dHIcRHTMq4 https://t.co/uEGZ6ckARn Lo escribio: futboltotal Retuiteado: 1 Este usuario tiene: 107846 Seguidores
Esto: ¡Fallece padre de Carlos Valderrama!

El progenitor del exfutbolista  sufrió un infarto: https://t.co/9WUeP0kh3R https://t.co/Uzk9r2FbZ4 Lo escribio: futboltotal Retuiteado: 0 Este usuario tiene: 107846 Seguidores
Esto: Vacante: Soporte administrativo (recién egresado) en Ciudad de México

https://t.co/fosIAMNOP4

#EmpleosTI Lo escribio: EmpleosTI Retuiteado: 0 Este usuario tiene: 25644 Seguidores
Esto: La Ciudad de Quebec busca: Técnico en prospección y en atracción de la inmigración Mexico.Biq@mri.gouv.qc.ca https://t.co/6I6yjgOdNU Lo escribio: empleogob_mx Retuiteado: 0 Este usuario tiene: 60900 Seguidores
Esto: #TipsEmpleo Las habilidades profesionales con más demanda en el mercado #laboral. https://t.co/AD8DUq9BQB Lo escribio: empleogob_mx Retuiteado: 0 Este usuario tiene: 60900 Seguidores
Esto: ¡Solo ellos faltan de hacerles daño!

Chivas, el gran pendiente de Rubens Sambueza: https://t.co/eL2EX4ISbJ https://t.co/E7reVxCFUd Lo escribio: futboltotal Retuiteado: 0 Este usuario tiene: 107846 Seguidores
Esto: Mañana #FeriaEmpleoMX para #Jóvenes en Toluca #EdoMex https://t.co/BCQTj4YON8 Lo escribio: empleogob_mx Retuiteado: 1 Este usuario tiene: 60900 Seguidores
Esto: ¡Listos los BOMBOS para el sorteo de Champions League 2016!
😁😁😁
Esto se va a descontrolar: https://t.co/EmRKQtjMpa https://t.co/6X9GeP02NH Lo escribio: futboltotal Retuiteado: 2 Este usuario tiene: 107846 Seguidores
Esto: ¡Ganará una millonada!

Real Madrid renueva a Gareth Bale: https://t.co/XiOJi1UeOp https://t.co/TXjE4hd7Gv Lo escribio: futboltotal Retuiteado: 2 Este usuario tiene: 107846 Seguidores
Esto: ¡Eso sí calienta! 
😂😂😂
Anota gol y trollea al arquero: https://t.co/S4itK88Zj6 https://t.co/ohTydPOqIL Lo escribio: futboltotal Retuiteado: 4 Este usuario tiene: 107846 Seguidores
Esto: Tu reputación profesional en línea va ligado a lo que conoces y sabes hacer. #Jóvenes Lo escribio: empleogob_mx Retuiteado: 1 Este usuario tiene: 60900 Seguidores
Esto: Oros inéditos, récord anotador, prórrogas sin goles... ¿Qué más nos ha dejado #Rio2016 ? https://t.co/Il39I3pOpL https://t.co/LOd30Lnaah Lo escribio: fifacom_es Retuiteado: 11 Este usuario tiene: 4211292 Seguidores
Esto: ¡Todo para el juego ante Chivas!

América reserva jugadores para el Clásico: https://t.co/3ZCWx2xuCf https://t.co/vSXHnB6gvA Lo escribio: futboltotal Retuiteado: 0 Este usuario tiene: 107846 Seguidores
Esto: RT @EmpleoSnever: EN DIRECTO en #Periscope: feria se empleo Xalapa https://t.co/i8Kv6iizMo Lo escribio: empleogob_mx Retuiteado: 2 Este usuario tiene: 60900 Seguidores
Esto: We're speaking to @6_LKOSCIELNY tomorrow and we want YOUR questions for him. Send them in using #AskLaurent now https://t.co/yrWBRRPSYu Lo escribio: Arsenal Retuiteado: 112 Este usuario tiene: 7895201 Seguidores
Esto: #DíganleAlDeJuntoQue debe hacer antes de redactar su CV. https://t.co/GztoPeu4Tg Lo escribio: empleogob_mx Retuiteado: 0 Este usuario tiene: 60900 Seguidores
Esto: ⚽️☝️🇵🇹

@Cristiano: "Es uno de los mejores años de mi carrera."

👉 https://t.co/Hf2mUU0rJe

#HalaMadrid https://t.co/DViJjVzAen Lo escribio: realmadrid Retuiteado: 642 Este usuario tiene: 20418578 Seguidores
Esto: ¡BOOOOM, se la aplicó!
😂💣😂💣
Oribe Peralta “trollea” a un aficionado: https://t.co/B17H2Ntani https://t.co/eRQkmzT1eK Lo escribio: futboltotal Retuiteado: 1 Este usuario tiene: 107846 Seguidores
Esto: Vacante:  Desarrollador .NET/Azure en Ciudad de México

https://t.co/3OtjEE0x9Q

#EmpleosTI https://t.co/iyy6tEpRcT Lo escribio: EmpleosTI Retuiteado: 0 Este usuario tiene: 25644 Seguidores
Esto: 🎂🎉🏀
 https://t.co/VcIzCsHebC Lo escribio: FCBarcelona_cat Retuiteado: 13 Este usuario tiene: 5310015 Seguidores
Esto: ¡Identidad robada en el futbol!

Plagio entre clubes: https://t.co/lRahj1675M https://t.co/ZzWXkYnFEG Lo escribio: futboltotal Retuiteado: 0 Este usuario tiene: 107846 Seguidores
Esto: 🎂🎉🏀
 https://t.co/pO5Vf2Nzwz Lo escribio: FCBarcelona Retuiteado: 93 Este usuario tiene: 18381878 Seguidores

Es muy fea por lo que cree el siguiente trozo de código:

 

 

import twitter, json, random

from collections import Counter

from prettytable import PrettyTable

from matplotlib.pylab import hist, show

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]



    
i = 0
   
lista_usuario_escribe =[]   # creamos las listas
lista_Retuiteado = []  
lista_Texto =[]  
lista_seguidores = []  
for contados in   range(0, contar_datos_de_statuses_home_timeline):
    diccionario_1_de_home_timeline = datos_de_statuses_home_timeline[i]
    hj = 0
    for k,v in diccionario_1_de_home_timeline.items():
      
      if k == "user":
        f = {}
        f =dict(v)
        for k,v in f.items():
	    if k == "screen_name":
                usuario_escribe = v
                lista_usuario_escribe.append(usuario_escribe)
            elif k == "followers_count":
                seguidores = v
                lista_seguidores.append(seguidores)

	        
      
      elif k == "retweet_count":
	        Retuiteado = v
                lista_Retuiteado.append(Retuiteado)

      elif k == "text":
	        Texto = v
                lista_Texto.append(Texto)

	        
      hj += 1
      
      

    print "Esto:", Texto, "Lo escribio:", usuario_escribe, "Retuiteado:", Retuiteado , "Este usuario tiene:", seguidores ,"Seguidores"
                
    
  
  
    i += 1
    
usuario_escriben = len(lista_usuario_escribe)

table = PrettyTable(["Escrito por", "Nro de Seguidores", "Texto Escrito", "Retuiteado"])
for i in range(0,usuario_escriben):
    table.add_row([lista_usuario_escribe[i], lista_seguidores[i], lista_Texto[i], lista_Retuiteado[i]])

print table.get_string(sortby=("Nro de Seguidores"), reversesort=True)

Bueno si que hay algunas maneras mas rápidas de hacer las cosas pero prefiero explicar con mi código 😀

Recuerda esto se pone mejor en las próximas entradas, Dios es Bueno todo el Tiempo. Gracias Saludos y espero disfrutes de estas entradas 😀

 

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s