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 lenguaje de elección 6 razones por las que Python es el lenguaje de programación del futuro¿Quieres aprender o ampliar tus 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

instagram viewer
pipa. Al momento de escribir, hay más de 168,000 bibliotecas disponibles para descargar usando pipa. 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.

Obteniendo 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 bots 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 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 crea tu aplicación de Twitter 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 tuitea 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.

Registrarse a la cuenta Reddit de su elección. Navega hasta el página de preferencias de aplicaciones y Haz clic en crear otra aplicación. Nombra a tu agente de usuario algo útil. Seleccionar guion 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 ti Presione 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 ().

importación de langostinos. desde credenciales import * my_reddit = praw. Reddit (client_id = reddit_client_id, client_secret = reddit_client_secret, user_agent = reddit_user_agent) sub_name = 'tecnología' max_posts = 10 para enviar en my_reddit.subreddit (sub_name) .new (limit = max_posts): print (submit.title)

Cambiar el sub_nombre variable para obtener publicaciones de diferentes subreddits. En lugar de nuevo(), otros métodos como caliente() están disponibles 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.

desde InstagramAPI importa InstagramAPI. desde credenciales 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: para el elemento en my_insta_api. LastJson ['items']: if 'caption' en item.keys () y 'text' en 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: devuelve imágenes para el elemento en my_insta_api. LastJson ['items']: if item ['media_type'] == 1 y 'image_versions2' en item.keys (): candidato = get_largest_image (item ['image_versions2'] ['candidatos']) # get image filename = self.save_image_from_candidate (candidato ['url']) if filename! = '': # get status, save as tuple caption = get_caption (item) images.append ((filename, caption)) if len (images)> = num_images: romper imágenes de retorno. 

Hay dos funciones auxiliares utilizadas en esta función. Instagram envía una lista de imágenes de "candidatos" 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 (candidatos): candidato = {} píxeles = 0 para cand en candidatos: # elige el más alto resolución uno res = cand ['altura'] * cand ['ancho'] if res> pixels: pixels = res candidato = cand return candidato. 

En segundo lugar, una vez que se encuentra el enlace a la imagen, puede guardar la imagen localmente escribiendo el contenido en un archivo. Utilizando la peticiones La biblioteca lo hace sencillo.

def save_image_from_candidate (url): filename = '' response = request.get (url) # verifique el código de estado de la respuesta, 200 significa bueno si response.status_code == 200: filename = url.split ("/") [- 1] .split ('?') [0] con open (filename, 'wb') como f: f.write (response.content ) regreso nombre del archivo. 

Tweetear medios con Tweepy

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

importar tweepy desde credenciales 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.

para tuitear en tweepy. Cursor (tw_api.search, q = 'MakeUseOf'). Items (10): try: tweet.favorite () tweet.retweet () time.sleep (2) excepto tweepy. TweepError como e: print (e.reason) excepto StopIteration: break. 

Se pueden hacer muchas otras cosas con esta biblioteca. Para concluir este recorrido, puede usar el get_images_from_hashtag función 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 / para la búsqueda de reddit. # y #para la búsqueda de instagram 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 = submit.title url = 'www.reddit.com {}'. format (submit.permalink) tweet_str = f'Reddit r / {sub} actualización: \ n \ n {título} # {sub} {url} 'tweet_str = trim_to_280 (tweet_str) tw_api.update (tweet_str) # tweet instagram medios de comunicación. media_info = get_images_from_hashtag (hashtag, num_posts) para (nombre de archivo, mensaje) en media_info: intente: tweet_str = trim_to_280 (mensaje) tw_api.update_with_media (nombre de archivo, estado = tweet_str) excepto tweepy. TweepError como e: print (e.reason) excepto 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 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 desempolva esa vieja Raspberry Pi que ha estado en tu armario y mira estos dulces Twitter bot proyectos para el Pi 10 mejores proyectos de bot de Twitter para Raspberry Pi Lee mas .

Tom es un ingeniero de software de Florida (agradecimiento a Florida Man) con una pasión por la escritura, el fútbol universitario (¡vaya Gators!), CrossFit y las comas de Oxford.