Instagram

Cómo construir Twitter, Instagram y Reddit Bots usando Python

Es 2019 has oído hablar de los robots. Hay robots de chat, robots de correo electrónico, robots de raspado de web y robots de medios sociales. ¿Ya has creado un bot? Es sorprendentemente fácil. Probablemente por eso están por todas partes. Acepta a nuestros señores de los bots uniéndote a tu rango.

En este artículo, te mostraré cómo puedes aprovechar Python para interactuar con tus cuentas de Twitter, Reddit e Instagram automáticamente.

Trabajando con Python

Instagram

Este recorrido utiliza Python como tu idioma preferido. Las ventajas de la facilidad de uso de Python superan cualquier deficiencia de velocidad que tenga en comparación con otros idiomas. Puedes descargar Python para casi cualquier sistema operativo. Utiliza el editor de tu elección.

Las distribuciones Python vienen asociadas con la utilidad llamada pip. En el momento de escribir este artículo. Hay más de 168.000 bibliotecas disponibles para tu descarga mediante el uso de pip. Para los bots que creará hoy, sólo se necesitan tres.

Desde la línea de comandos. Puedes instalar las bibliotecas necesarias utilizando estas tres líneas.

pip install –upgrade InstagramAPI
pip install –upgrade tweepy pip install –upgrade praw

Ahora podrás importar estas bibliotecas donde sea necesario.

Obtención de claves y secretos de la aplicación

Los robots necesitan secretos. El siguiente paso para configurar tus bots es permitirles el acceso a la API de cada sitio. Para ello, necesitarás una clave de aplicación o un secreto.

A medida que recojas llaves, secretos, fichas y mucho más (¡suena como un juego divertido!), ponlos todos en un solo archivo llamado «credentials.py». Este archivo se vería algo así:

Teclas

twitter_consumer_key = »’.
twitter_consumer_secret = »’.
twitter_access_token = ‘
twitter_access_token_secret = »’.

reddit_client_id = »’.
reddit_client_secret = »’.
reddit_user_agent = »’.

instagram_client_id = »’.
instagram_client_secret = »’.

Una sugerencia de privacidad muy importante. No confirmes este archivo con ningún control de origen (por ejemplo, Git). Tú no quieres que nadie más tenga estas llaves y secretos. Se llaman secretos por una razón.

Configuración del acceso a Twitter

Ten en cuenta que Twitter tardará algún tiempo en verificar tu cuenta y asegurarse de que no estás creando una cuenta de spam.

Después de seguir estos pasos. Copia la clave del consumidor, el secreto del consumidor, el token de acceso y el secreto del token de acceso en tu archivo credencial.py.

Configuración de Reddit Access

Obtener tu ID de cliente de Reddit y tu secreto es muy similar a Twitter. Deberás registrar una aplicación como agente de usuario de Reddit. Después de hacer esto, deberías poner absolutamente «Reddit User Agent» en tu currículum.

Accede a la cuenta Reddit de tu elección. Navega hasta la página de preferencias de aplicaciones y haz clic en Crear otra aplicación. Nombra a tu agente de usuario algo útil. Selecciona el script para el propósito de tu aplicación. La URL about puede dejarse en blanco. Rellena cualquier dirección de la casilla de redirección.

Después de pulsar crear una aplicación. Se te presentará la siguiente pantalla con una lista de tus aplicaciones. Los dígitos bajo el nombre de tu aplicación representan el ID de cliente y el secreto del cliente se encuentra debajo de él. Copia estos valores a tu archivo credentials.py file.

lient_id=reddit_client_id, client_secret=reddit_client_secret, user_agent=reddit_user_agent)

sub_name = ‘tecnología
max_posts = 10

para enviar en mi_reddit.subreddit(sub_nombre).new(limit=max_posts):
print(submission.title)

Cambiar la variable sub_name para obtener mensajes de diferentes subreddits. En lugar de new(), hay otros métodos como hot() disponibles para obtener mensajes.

Búsqueda de Hashtags de Instagram a través de InstagramAPI

El primer paso en el uso de la API Instagram es configurar un objeto con el ID de cliente y secreto. Inmediatamente después, llame al método login() para completar la configuración.

De la importación InstagramAPI InstagramAPI.

Desde credenciales importar instagram_client_id, instagram_client_secret.

my_insta_api = InstagramAPI(instagram_client_id,instagram_client_secret)
my_insta_api.login()

El uso de la API es un poco más complicado que u contraparte de Reddit. En este ejemplo, el script utiliza getHashtagFeed para obtener un objeto de respuesta JSON muy grande de Instagram.

Al buscar en la respuesta, el script busca el texto de los subtítulos y luego los imprime en la pantalla para visualizarlos.

get_hashtag = my_insta_api.getHashtagFeed(hashtag)

if get_hashtag != Falso:

para el artículo en my_insta_api.LastJson[‘artículos’]:
if ‘caption’ en item.keys() y ‘text’ en item[‘caption’].keys():
caption = item[‘caption’][‘text’]
print(caption)

Agregar imágenes a los medios sociales

Siguiendo adelante, es posible que desees que tu script obtenga las imágenes en este feed hashtag. Para hacer esto, haz un bucle a través de la respuesta de JSON y encuentra los medios asociados con cada mensaje. Aquí hay una implementación para extraer la información de la respuesta de JSON:

def get_images_from_hashtag(hashtag, num_images):
imágenes = []
get_hashtag = my_insta_api.getHashtagFeed(hashtag)

if get_hashtag == Falso:
    devolver imágenes

para el artículo en my_insta_api.LastJson['artículos']:
    si el ítem['media_type'] == 1 y 'image_versions2' en el ítem.keys():
        candidato = get_largest_image(item['image_versions2']['candidatos'])
        # get image 
        nombre_de_archivo = self.save_image_from_candidate(candidate['url'])
        si nombre de archivo!= '':
            # Obtener estatus, guardar como tupla
            caption = get_caption(item)
            images.append((nombre de archivo, pie de foto))
        if len(images) >= num_images:
            romperse

Devolver imágenes

En esta función se utilizan dos funciones de ayuda. Instagram envía una lista de imágenes «candidatas» en la respuesta de JSON. Elija la más grande de estas imágenes para que el medio se muestre en su máxima resolución.

def get_largest_image(candidates):
candidato = {}
píxeles = 0
para cand en los candidatos:
# Elige la de más alta resolución
res = cand[‘height’]*cand[‘width’]
si es res > píxeles:
píxeles = res
candidato = cand
candidato de regreso

En segundo lugar, una vez que se encuentra el enlace a la imagen, puedes guardar la imagen localmente escribiendo el contenido en un archivo. El uso de la biblioteca de peticiones lo hace más sencillo.

def save_image_from_candidate(url):
nombre de archivo = »’.
respuesta = requests.get(url)
# Comprueba el código de estado de la respuesta, 200 significa bueno. si response.status_code == 200:
nombre de archivo = url.split(«/»)[-1].split(‘?’)[0]
con open(nombre de archivo, ‘wb’) como f:
f.write(response.content)
nombre de archivo de retorno

Tweet Out Media con Tweepy

En primer lugar, tendrás que configurar el acceso a Twitter utilizando tus secretos y claves.

importar tweepy
de la importación de credenciales

*tw_auth = tweepy.OAuthHandler(twitter_consumer_key, twitter_consumer_secret)
tw_auth.set_access_token(twitter_access_token, twitter_access_token_secret)
tw_api = tweepy.API(tw_auth)

La creación de un bot retweet genérico se realiza en unas pocas líneas.

Para tweet en tweepy.Cursor(tw_api.search,q=).items(10):

tweet.favorite()
tweet.retweet()
tiempo.sueño(2)
excepto tweepy.tweepError como e:
print(e.reason)
excepto StopIteration:
romperse

Se pueden hacer muchas otras cosas con esta biblioteca. Para concluir este recorrido, puedes utilizar la función get_images_from_hashtag del bot Instagram realizado anteriormente para twittear imágenes y pies de foto.

Además, tu bot de Twitter puede buscar en Reddit nuevos mensajes y twittearlos también. Para poner ambas funcionalidades juntas, el aspecto es el siguiente:

hashtag = ‘tecnología
num_posts = 5

tweet reddit info

reddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts)
para enviar en reddit_posts:
title = submission.title
url = ‘www.reddit.com{}’.format(submission.permalink)
tweet_str = f’Reddit r/{sub} update:\n{title} # </ i> </ i> </ i&gt.
tweet_str = trim_to_280(tweet_str)
tw_api.update(tweet_str)

tweet instagram media

media_info = get_images_from_hashtag(hashtag, num_posts)
para (nombre de archivo, mensaje) en media_info:
Inténtalo:
tweet_str = trim_to_280(mensaje)
tw_api.update_with_media(nombre_de_archivo, status=tweet_str)
excepto tweepy.tweepError como e:
print(e.reason)
excepto StopIteration:
romperse

Tu robot de medios sociales potenciado por Python está listo!

Así que ahora tienes un montón de códigos que tiran de los medios de un sitio y los publica en otro. También puedes mezclar y combinar. Tira de los tweets y envíalos a Reddit. Recopilar imágenes Instagram para su publicación en subredits. Haz un bot y forma parte de la Internet real.

Por último, para automatizar completamente este proceso. Querrá que tus bots se ejecuten en un bucle en un servidor. Esto podría ser en tu propia computadora con un programador de tiempo.


¿Tienes alguna pregunta o problema relacionado con el tema del artículo? Queremos ayudarte.

Deja un comentario con tu problema o pregunta. Leemos y respondemos todos los comentarios, aunque a veces podamos tardar un poco debido al volumen que recibimos. Además, si tu consulta inspira la escritura de un artículo, te notificaremos por email cuando lo publiquemos.
*Moderamos los comentarios para evitar spam.

¡Gracias por enriquecer nuestra comunidad con tu participación!

Deja un comentario