Solución Challenge 1

¡Que tal amigos! Volvemos con la solución al Challenge del último post, si no sabes muy bien de qué te hablo aquí te dejo la entrada para que vayas a consultarla, así tendrás más contexto 😁.

Tenemos que ganar esos boletos, asi que un script de python nos ayudará en esta misión (Esperemos que no se enteren las personas que proponen éstas dinámicas 😝).

Requisitos

  • 4 images o más donde se vean las canciones reproduciéndose.
  • Texto a incluir en nuestro tweet.

El Código

Empezamos por incluir las librerías, nuestro queridísimo Tweepy:

import tweepy 
from tweepy import OAuthHandler
import time

Ya con nuestras librerías importadas comencemos agregando nuestras llaves y tokens, recuerda que las puedes obtener del portal de desarrollador de Twitter:

access_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
access_token_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
consumer_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
consumer_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

Con nuestras llaves y tokens listos vamos a hacer la llamada al API para poder tener acceso a y poder utilizarlo:

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

# Llamada al API de twitter
api = tweepy.API(auth)

Una parte de nuestra meta es que el tweet tenga un texto el cual incluye un par de #Hashtags, así que vamos a almacenarlo en una variable.

# Este sera el texto que incluiremos
texto = "#HarryStylesConExa #HarryStylesEnMexico @ExaFM quiero ganar esos boletos!!"

Además del texto el tweet necesita tener 4 imágenes de canciones diferentes donde se observe que la estamos reproduciendo, asi que vamos a cargar las imagenes de nuestro folder y a cargarlas a Twitter utilizando el método media_upload().

# En un arreglo almacenamos nuestras imagenes para cargarlas utilizando media_upload()
imagenes = ['img1.png', 'img2.png', 'img3.png', 'img4.png']

# Creamos un arreglo vacio para almacenar nuestros ids de imagenes cargadas
media_ids = []

# Por cada imagen subimos con el metodo y agregamos el ID a nuestro arreglo
for imagen in imagenes:
     res = api.media_upload(imagen)
     media_ids.append(res.media_id)

El paso final, publicar nuestro tweet con las imagenes y nuestro texto.

# Finalmente publicamos el estatus con nuestro texto y las imagenes
api.update_status(status=texto, media_ids=media_ids)

Eso es todo, ahora tenemos nuestro tweet como lo pedía la dinámica, ojalá ganemos esos boletos… 🤩

Resultado

En este momento podemos ir a nuestro perfíl y tendremos un tweet como el siguiente…

Como vez tenemos nuestro tweet hecho con las características descritas en al dinámica, ahora solo debemos de hacerlo varias veces para ser los ganadores, ¿Cómo podemos hacer esto? incluyendo un for en donde publicamos nuestro tweet:

# Publicarlo varias veces podermos utilizar un while para que lo haga mientras el API nos lo permita
import time
for i in range(1, 24):
    api.update_status(status=texto, media_ids=media_ids)
    print(F"Tweet numero {i}")
    time.sleep(1)

Ten en cuenta que mientras el API nos permita publicar tweets nuestro script funcionará sin problemas, si no es así, el script se detendrá por una excepción no controlada, más adelante veremos algo más a detalle de las excepciones. Nota: Twitter permite hasta 2400 tweets por día, puede que menos tweets pero dejemos el límite en 2400.

Agregado del for, incluí un segundo de retraso entre cada publicación de tweet para que no tenga muchas llamadas en cola, este paáametro lo puedes modificar a tu gusto.

# Publicarlo varias veces podermos utilizar un while para que lo haga mientras el API nos lo permita

for i in range(1, 2400):
    api.update_status(status=texto, media_ids=media_ids)
    print(F"Tweet numero {i}")
    time.sleep(1)

¿Te imaginas ser el ganador de los boletos para el concierto? bueno ahora ya sabes que con un par de líneas en Python y algunos ajustes para que no se vea tan automatizado puedes estar en competencia para ser ganador de dinamicas como estas.

Como siempre, gracias por leer el post hasta éste párrafo, las referencias están a continuación, cualquier duda con gusto la responderé en los comentarios o en mi Twitter. Nos Leemos en la próxima.

Referencias

Publicando Tweets con Tweepy

Hola de nuevo a todos!, Regresamos con otra entrada de #Python y #Tweepy 😃, quizá esten pensando, porque sigues publicando cosa de Tweepy 🙄, y la respuesta es, no sé, quizá estoy en el ciclo de andar investigando que hacer con ésta librería y hasta que no encuentre alguna más (estoy abierto a recomendaciones) seguiremos con mucho python y tweepy.

Así que como ya lo viste en el título vamos a ver que mas podemos hacer para publicar en un tweet. Porque como la documentación lo dice, nuestro método update_status(), puede recibir un par de parámetros adicionales al texto que queremos publicar, veamos como aplicarlo.

Es necesario que pases rapidamente por el post anterior si aún no lo haz visto, puedes dar clic aqui.

Tweet como comentario

Como bien sabemos podemos responder o comentar un tweet, es algo que a veces es muy útil porque lo que queremos decir es un comentario del tweet original o en ocasiones es para continuar el texto del tweet original en casos donde los caracteres no son suficientes.

Con el parámetro in_reply_to_status_id podemos decir a que ID de tweet vamos a comentar, así que tomando el tweet que hicimos la última entrada lo comentaremos un un texto sencillo.

Para obtener el ID bastará con seleccionar el tweet y ver el número en la barra de direcciones:

Vamos a responder este tweet:

import tweepy
from tweepy import OAuthHandler 

# Agregamos llaves y tokens
consumer_key = "XXXXXXXXXXXXXXXXXXXXXX"
consumer_secret = "XXXXXXXXXXXXXXXXXXXXXX"
access_token = "XXXXXXXXXXXXXXXXXXXXXX"
access_token_secret = "XXXXXXXXXXXXXXXXXXXXXX"

# Configuracion de acceso con las credenciales
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
 
# Listos para hacer la conexion con el API
api = tweepy.API(auth)

# agregar un comentario a un tweet
api.update_status('haha vaya, vaya', in_reply_to_status_id="1141453669541584897")

Si vamos a Twitter en ese tweet ahora veremos la respuesta:

Así como el primer tweet esta respuesta fue publicada desde la aplicación PythonTweepyTuto, ahora veamos algo más elaborado como publicar una imagen en nuestro tweet.

Texto e imágen

En éste punto ya sabemos publicar un tweet con texto y hacer comentarios a un tweet, ahora vamos a publicar una imágen con texto, para eso elige una imagen, ya sea png o jpg.

Ahora vamos a necesitar un método adicional llamado media_upload(), con éste método vamos a cargar primero nuestra imagen a twitter quién nos regresará un ID de imagen que despues vamos a poder utilizar en nuestro método update_status().

img = open("python.png", 'rb')
id_imagen = api.media_upload(file=img)
print(id_imagen)

Como vez, he cargado una imagen llamada «python.png» que se encuentra en el mismo folder de donde se ejecuta el script y utilizamos el método media_upload(), finalmente se utiliza una variable para almacenar el resultado, al imprimirlo veremos algo como lo siguiente:

Ahora solamente utilizamos el método update_status() y agregaremos un parametro «media_ids» para agregar nuestra imagen.

api.update_status("pondré ésto por aquí...", media_ids=[id_imagen.media_id_string])

Y listo… tendremos nuestro tweet con una imagen 😎.

Con ésto terminamos la entrada del día de hoy, como han observado Tweepy es una librería muy buena para diversos casos, en la próxima entrada vamos a ir aplicando lo que hemos visto de Tweepy.

Gracias y nos leemos pronto Pythonistas que llegaron hasta ésta línea (Pensando seriamente en sortear algun premio a todos los que lleguen hasta el último párrafo antes de las referencias 🥳)

Referencias

Detectar si un tweet es irónico, ¿Qué ironía no?

¿Utilizar tweets?, ¿Para qué?

Twitter

En los últimos años hemos utilizado algunos recursos tecnológicos que han marcado nuestra vida para poder ayudarnos en algo, ya sea para tomar desiciones en algún negocio, en la posible detección de enfermedades o de accidentes o simplemente para poder «predecir».

Twitter siendo una red social inmensa con más de 560 millones de usuarios registrados (wikipedia) publicando tweets a cada segundo en miles de lugares al rededor del mundo, en distintos idiomas y con diferente contenido hacen de éste un diamante en bruto donde se puede explotar desde diferentes áreas.

¿Porque en el título del post escribí la palabra ironía?

  • Segun wikipedia, la ironía es la figura literaria usada cuando una ocurre alguna obviedad o estupidez.
  • Segun la RAE, la ironía es una burla fina y desimulada dicha en tono burlón

Perfecto, continuemos en lo que estabamos, en nuestro caso, el área es simple, no tan sencilla pero para completar la frase digamos que es «Simple y sencilla». La ironía es algo que no se enseña en la escuela o en algún curso (creo), sin embargo forma parte de nuestra vida cotidiana, en el trabajo, la escuela, con la familia y en donde casi no ocupamos la ironía, con los amigos (ésto es irónico).

Twitter como ya lo he dicho es un diamante en bruto, el cual podemos pulir con un par de lineas de código para sacarle brillo, hagamos una hipótesis, quizá alguien quiere saber como está funcionando su cafetería, si el servicio es bueno, si el café tiene buen sabor, el estacionamiento o los baños son buenos, ¿que tal el precio? ¿valdría la pena ir a tomarse un café con los amigos o con tu novia?. Con twitter y un par de lineas de código podemos recolectar información acerca de como es que los usuarios están hablando de tu cafetería, limpiar los tweets y ver las palabras positivas de cada texto, hacer un análisis del sentimiento de cada tweet y saber si hablan positivamente, negativamente o neutral de tu cefetería, pero que sucede si encontramos un tweet asi:

  • El servicio fue perfecto!!, me tardaron una hora en llevarme mi café!!

¿Crees que el servicio fue bueno? a mi punto de vista creo que no, es aquí donde entramos nosotros y la idea de detectar si un tweet es irónico, ya que no es un mensaje positivo sin embargo tendría toda la estructura para tener un mensaje positivo, por lo que nuestro análisis de sentimiento estaría fallando.

¿Podriamos detectar si estamos frente a un tweet irónico o no? creo que si, con un poco de Machine Learning podríamos tener una solución, este es nuestro trabajo de titulación, así que tenemos la meta de poder clasificar un tweet y saber si es irónico o no lo es, con la ayuda de nuestro Asesor, el Dr. Iván Vladimir Mesa Ruiz,  Técnico Academico en el IIMAS, UNAM podríamos tener una respuesta, así que en las proximas semanas trataré de escribir un resumen de lo que estamos realizando para resolver este problema.

Solo termino con una despedida corta y bien agradecida por la lectura de estas lineas. ¡Saludos!

PD: El trabajo que se desarrollará es en base a un trabajo similar hecho por Gabriela Jasso, así que la idea original fue de ella, nuestro trabajo es replicar el trabajo para obtener resultados similares a los de Gabriela.

PD2: La investigación y el desarrollo del proyecto lo estamos realizando en equipo, Fernanda Hernández y yo, investigando desde lo más sencillo hasta temas que nunca en nuestra vida creimos encontrar, Que divertido está el proyecto!!! (No fue ironía)

Enlaces de interés: