¿Quieres construir tus propios bots de redes sociales?  Aquí se explica cómo publicar automáticamente actualizaciones en Twitter, Instagram y Reddit usando Python.

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

Anuncio Es 2019. Has oído hablar de los bots. Hay bots de chat, bots de correo electrónico, bots de raspado web y bots de redes sociales. ¿Ya has creado un bot? Es sorprendentemente fácil. Probablemente por qué están por todos lados. Abraza a nuestros señores bot uniéndose a su rango. En este artículo, le mostraré cómo puede aprovechar Python para interactuar con sus cuentas de Twitter, Reddit e Instagram automáticamente. Trabajando

Anuncio

Es 2019. Has oído hablar de los bots. Hay bots de chat, bots de correo electrónico, bots de raspado web y bots de redes sociales. ¿Ya has creado un bot? Es sorprendentemente fácil. Probablemente por qué están por todos lados. Abraza a nuestros señores bot uniéndose a su rango.

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

Trabajando con Python

Este tutorial utiliza Python como su lenguaje de elección 6 razones por las que Python es el lenguaje de programación del futuro 6 razones por las que Python es el lenguaje de programación del futuro ¿Quiere aprender o ampliar sus habilidades de programación? He aquí por qué Python es el mejor lenguaje de programación para aprender este año. Lee mas . Las ventajas de facilidad de uso de Python superan cualquier deficiencia de velocidad que tenga en comparación con otros idiomas. Puede descargar Python para casi cualquier sistema operativo. Utiliza el editor de tu elección.

Las distribuciones de Python vienen asociadas con la utilidad llamada pip . Al momento de escribir, hay más de 168, 000 bibliotecas disponibles para descargar usando pip . Para los bots que creará hoy, solo se necesitan tres.

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

 pip install --upgrade InstagramAPI pip install --upgrade tweepy pip install --upgrade praw 

Ahora podrá importar estas bibliotecas donde sea necesario.

Obtención de claves de aplicación y secretos

Un filósofo sabio dijo una vez: "Los secretos, los secretos no son divertidos. Los secretos, los secretos lastiman a alguien ”. Respetuosamente, los robots necesitan secretos. El siguiente paso en la configuración de sus bots es permitirles el acceso a la API de cada sitio. Para hacer esto, necesitará una clave de aplicación o secreto.

A medida que recopila claves, secretos, fichas y más (¡suena como un juego divertido!), Póngalos todos en un solo archivo llamado "credentials.py". Este archivo se vería así:

 # keys 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 = '' 

Sugerencia de privacidad muy importante: no confirme a este archivo ningún control de origen (por ejemplo, Git). No desea que nadie más tenga estas claves y secretos. Se llaman secretos por una razón.

Configurar el acceso a Twitter

Consulte nuestra guía para configurar un bot de Twitter con Node.js que le mostrará cómo crear su aplicación de Twitter Cómo construir una foto Twitter Twitter Bot con Raspberry Pi y Node.js Cómo construir una foto Twitter Twitter Bot con Raspberry Pi y Node.js ¡Comienza con Node.js y crea un bot de Twitter que tuitee fotos e información usando solo un Raspberry Pi! Lee mas . Tenga en cuenta que Twitter tardará un tiempo en verificar su cuenta y asegurarse de que no está creando una cuenta de spam.

Después de seguir estos pasos, copie la clave del consumidor, el secreto del consumidor, el token de acceso y el secreto del token de acceso en su archivo credentials.py.

Configurar el acceso a Reddit

Obtener su ID de cliente y secreto de Reddit es muy similar a Twitter. Deberá registrar una aplicación como Agente de usuario de Reddit. Después de hacer esto, absolutamente debe poner "Agente de usuario de Reddit" en su currículum.

Inicie sesión en la cuenta Reddit que elija. Vaya a la página de preferencias de aplicaciones y haga clic en crear otra aplicación . Nombra a tu agente de usuario algo útil. Seleccione script para el propósito de su aplicación. La URL acerca de puede dejarse en blanco. Complete cualquier dirección para el cuadro de redireccionamiento.

Reddit App Bot Python

Después de presionar crear aplicación, la siguiente pantalla se le presentará con una lista de sus aplicaciones. Los dígitos debajo del nombre de su aplicación representan la ID del cliente y el secreto del cliente se encuentra debajo de eso. Copie estos valores a su archivo credentials.py.

Reddit App API Secret Python

Configurar el acceso a Instagram

El acceso a Instagram difiere de Twitter y Reddit. En lugar de registrar una aplicación, usa su nombre de usuario y contraseña. Sugiero crear una cuenta pública separada y usar esos detalles para su bot.

Accediendo a Reddit con Praw

Usar praw es un proceso de dos pasos. Primero, configurar el acceso es una llamada de función única al método Reddit de praw. Luego, usando el objeto inicializado, la búsqueda de un subreddit se realiza usando el método new ().

 import praw from credentials import * my_reddit = praw.Reddit(client_id=reddit_client_id, client_secret=reddit_client_secret, user_agent=reddit_user_agent) sub_name = 'technology' max_posts = 10 for submission in my_reddit.subreddit(sub_name).new(limit=max_posts): print(submission.title) 

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

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

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

 from InstagramAPI import InstagramAPI from credentials import instagram_client_id, instagram_client_secret my_insta_api = InstagramAPI(instagram_client_id, instagram_client_secret) my_insta_api.login() 

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

Al buscar a través de la respuesta, el script busca el texto del título y luego lo imprime en la pantalla para verlo.

 get_hashtag = my_insta_api.getHashtagFeed(hashtag) if get_hashtag != False: for item in my_insta_api.LastJson['items']: if 'caption' in item.keys() and 'text' in item['caption'].keys(): caption = item['caption']['text'] print(caption) 

Agregar imágenes a las redes sociales

En el futuro, es posible que desee que su script obtenga las imágenes en esta fuente de hashtag. Para hacer esto, recorra la respuesta JSON y encuentre los medios asociados con cada publicación. Aquí hay una implementación para extraer la información de la respuesta JSON:

 def get_images_from_hashtag(hashtag, num_images): images = [] get_hashtag = my_insta_api.getHashtagFeed(hashtag) if get_hashtag == False: return images for item in my_insta_api.LastJson['items']: if item['media_type'] == 1 and 'image_versions2' in item.keys(): candidate = get_largest_image(item['image_versions2']['candidates']) # get image filename = self.save_image_from_candidate(candidate['url']) if filename != '': # get status, save as tuple caption = get_caption(item) images.append((filename, caption)) if len(images) >= num_images: break return images 

Hay dos funciones auxiliares utilizadas en esta función. Instagram envía una lista de "candidatos" de imágenes en la respuesta JSON. Elija la mayor de estas imágenes para que los medios se muestren en su resolución más alta.

 def get_largest_image(candidates): candidate = {} pixels = 0 for cand in candidates: # pick the highest resolution one res = cand['height']*cand['width'] if res > pixels: pixels = res candidate = cand return candidate 

En segundo lugar, una vez que se encuentra el enlace a la imagen, puede guardar la imagen localmente escribiendo el contenido en un archivo. El uso de la biblioteca de requests hace que esto sea sencillo.

 def save_image_from_candidate(url): filename = '' response = requests.get(url) # check the response status code, 200 means good if response.status_code == 200: filename = url.split("/")[-1].split('?')[0] with open(filename, 'wb') as f: f.write(response.content) return filename 

Tweetear medios con Tweepy

Primero, deberá configurar el acceso a Twitter usando sus secretos y claves.

 import tweepy from credentials import * 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 de retweet genérico se realiza en unas pocas líneas.

 for tweet in tweepy.Cursor(tw_api.search, q='MakeUseOf').items(10): try: tweet.favorite() tweet.retweet() time.sleep(2) except tweepy.TweepError as e: print(e.reason) except StopIteration: break 

Se pueden hacer muchas otras cosas con esta biblioteca. Para concluir este recorrido, puede usar la función get_images_from_hashtag del bot de Instagram creado anteriormente para tuitear imágenes y subtítulos.

Además, su bot de Twitter puede buscar en Reddit nuevas publicaciones y twittearlas también. Para poner ambas funcionalidades juntas se ve así:

 # use r/ for reddit search # and # for instagram search hashtag = 'technology' num_posts = 5 # tweet reddit info reddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts) for submission in reddit_posts: title = submission.title url = 'www.reddit.com{}'.format(submission.permalink) tweet_str = f'Reddit r/{sub} update:\n\n{title} #{sub} {url}' tweet_str = trim_to_280(tweet_str) tw_api.update(tweet_str) # tweet instagram media media_info = get_images_from_hashtag(hashtag, num_posts) for (filename, message) in media_info: try: tweet_str = trim_to_280(message) tw_api.update_with_media(filename, status=tweet_str) except tweepy.TweepError as e: print(e.reason) except StopIteration: break 

¡Tu bot de redes sociales con tecnología Python está listo!

Entonces, ahora tienes un montón de código que extrae contenido multimedia de un sitio y publica en otro. También puedes mezclar y combinar. Tire de los tweets y publíquelos en Reddit. Recopila imágenes de Instagram para publicar en subreddits. Crea un bot y sé parte de Internet real.

Por último, para automatizar completamente este proceso, querrás que tus bots se ejecuten en un bucle en un servidor. Esto podría estar en su propia computadora con un programador de tiempo. O desempolve esa vieja Raspberry Pi que ha estado en su armario, y eche un vistazo a estos dulces proyectos de bot de Twitter para los 10 mejores proyectos de bot de Twitter para Raspberry Pi 10 Mejores proyectos de bot de Twitter para Raspberry Pi Leer más.

Explore más sobre: ​​Tutoriales de codificación, Python, Social Media Bots.