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.