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