Hola, hoy vamos a aprender cómo podemos publicar Tweets con imagen usando Python con la API de Twitter v2.

Lo primero que tenemos que hacer es crear una APP Twitter, para ello consulta alguno de los tutoriales anteriores.
Vamos a instalar las librerías necesarias:
pip install python-dotenv pip install requests python-dotenv pip install requests
Una vez creada, vamos a un editor de texto y añadimos:
import os
import json
import requests
from requests_oauthlib import OAuth1Session
from dotenv import load_dotenv
def enviar_tweet_con_imagen(texto, url_remota_imagen):
# Cargar las variables de entorno desde un archivo .env
load_dotenv()
CONSUMER_KEY = os.getenv("TWITTER_API_KEY")
CONSUMER_SECRET = os.getenv("TWITTER_API_SECRET_KEY")
ACCESS_TOKEN = os.getenv("TWITTER_ACESS_TOKEN")
ACCESS_TOKEN_SECRET = os.getenv("TWITTER_ACESS_TOKEN_SECRET")
# Crear una instancia de OAuth1Session con tus claves y tokens
twitter_auth = OAuth1Session(CONSUMER_KEY, client_secret=CONSUMER_SECRET,
resource_owner_key=ACCESS_TOKEN,
resource_owner_secret=ACCESS_TOKEN_SECRET)
# Subir la imagen a Twitter y obtener el media_id
media_url = url_remota_imagen
media_response = requests.get(media_url)
if media_response.status_code != 200:
return {"error": "No se pudo descargar la imagen"}
files = {
'media': ('media.jpg', media_response.content)
}
media = twitter_auth.post("https://upload.twitter.com/1.1/media/upload.json",
files=files)
if media.status_code != 200:
return {"error": "No se pudo subir la imagen"}
print (media.text)
media_id = json.loads(media.text)["media_id"]
# Publicar el tweet con la imagen
url = "https://api.twitter.com/2/tweets"
payload = {
"text": texto,
"media": {"media_ids": [str(media_id)]}
}
response = twitter_auth.post(url, json=payload, headers={'Content-Type': 'application/json'})
return response.json()
# Ejemplo de uso
texto_tweet = "¡Mi imagen en Twitter!"
imagen_url = (
"https://images.quierolibros.com/images/articles/literature/50389_image01.jpg"
)
resultado = enviar_tweet_con_imagen(texto_tweet, imagen_url)
print(resultado)
Este código obtiene una imagen de una URL y la sube a Twitter para luego adjuntarla al Tweet publicado.
Para ejecutarlo tendremos que invocar a la función de esta forma:
enviar_tweet("Hola mundo", "https://images.quierolibros.com/images/articles/literature/50389_image01.jpg")
En este ejemplo subiríamos la imagen de QuieroLibros.

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.