Como construir bots no Twitter, Instagram e Reddit usando Python

Como construir bots no Twitter, Instagram e Reddit usando Python

É 2019. Você já ouviu falar de bots. Existem bots de bate-papo, bots de e-mail, bots de web scraping e bots de mídia social. Você já criou um bot? É surpreendentemente fácil. Provavelmente porque eles estão por todo o lugar. Abrace nossos overlords bot, juntando-se a eles.





Neste artigo, vou mostrar como você pode aproveitar o Python para interagir com suas contas do Twitter, Reddit e Instagram automaticamente.





Trabalhando com Python

Este passo a passo usa Python como linguagem de escolha. As vantagens de facilidade de uso do Python superam quaisquer deficiências de velocidade que ele tenha em comparação com outras linguagens. Você pode baixar Python para quase qualquer sistema operacional. Usar o editor de sua escolha .





Distribuições Python vêm associadas ao utilitário chamado

melhor lugar para comprar camisas online
pip

. No momento em que este artigo foi escrito, havia mais de 168.000 bibliotecas disponíveis para download usando



pip

. Para os bots que você criará hoje, apenas três são necessários.

Na linha de comando, você pode instalar as bibliotecas necessárias usando essas três linhas.





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

Agora você poderá importar essas bibliotecas quando necessário.

Obtendo chaves e segredos de aplicativos

Um sábio filósofo disse certa vez: 'Segredos, segredos não são divertidos. Segredos, segredos machucam alguém. Respeitosamente, os bots precisam de segredos. A próxima etapa na configuração de seus bots é permitir que eles acessem a API de cada site. Para fazer isso, você precisará de uma chave ou segredo de aplicativo.





Conforme você coleta chaves, segredos, tokens e muito mais (parece um jogo divertido!), Coloque-os todos em um único arquivo chamado 'credentials.py'. Este arquivo seria mais ou menos assim:

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

Sugestão de privacidade muito importante: não comprometa este arquivo com nenhum controle de origem (por exemplo, Git). Você não quer que ninguém mais tenha essas chaves e segredos. Eles são chamados de segredos por um motivo.

Configurando o acesso ao Twitter

Confira nosso guia para configurar um bot do Twitter com Node.js e mostrará como criar seu aplicativo do Twitter. Observe que o Twitter levará algum tempo para verificar sua conta e garantir que você não esteja criando uma conta de spam.

Depois de seguir essas etapas, copie a chave do consumidor, o segredo do consumidor, o token de acesso e o segredo do token de acesso em seu arquivo credentials.py.

Configurando o acesso ao Reddit

Obter seu ID de cliente e segredo do Reddit é muito semelhante ao Twitter. Você precisará registrar um aplicativo como um agente de usuário do Reddit. Depois de fazer isso, você deve colocar absolutamente 'Reddit User Agent' em seu currículo.

Entrar para a conta do Reddit de sua escolha. Navegue até o página de preferências de aplicativos e Clique em criar outro aplicativo . Nomeie seu agente de usuário com algo útil. Selecione o script para o propósito de seu aplicativo. O URL sobre pode ser deixado em branco. Preencha qualquer endereço para a caixa de redirecionamento.

Depois de você Pressione criar aplicativo , a tela a seguir será apresentada a você com uma lista de seus aplicativos. Os dígitos sob o nome do seu aplicativo representam o ID do cliente e o segredo do cliente está localizado abaixo dele. Copie esses valores para seu arquivo credentials.py.

Configurando o acesso ao Instagram

O acesso ao Instagram difere do Twitter e do Reddit. Em vez de registrar um aplicativo, você usa seu nome de usuário e senha. Eu sugiro criar uma conta pública separada e usar esses detalhes para o seu bot.

Acessando Reddit com Praw

Usar o camarão é um processo de duas etapas. Primeiro, configurar o acesso é uma única chamada de função para o método Reddit de camarão. Então, usando o objeto inicializado, a pesquisa de um subreddit é feita usando o 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)

Mudar o

sub_name

variável para obter postagens de diferentes subreddits. Ao invés de

new()

, outros métodos, como

hot()

estão disponíveis para obter postagens.

Pesquisando Hashtags do Instagram via InstagramAPI

A primeira etapa no uso da API do Instagram é configurar um objeto com o ID do cliente e o segredo. Logo depois disso, chame o método login () para completar a configuração.

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 a API é um pouco mais complicado do que sua contraparte no Reddit. Neste exemplo, o script usa getHashtagFeed para obter um objeto de resposta JSON muito grande do Instagram.

Ao pesquisar a resposta, o script procura o texto da legenda e, em seguida, imprime na tela para visualizá-lo.

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)

Adicionar imagens às redes sociais

Seguindo em frente, você pode querer que seu script obtenha as imagens neste feed de hashtag. Para fazer isso, faça um loop pela resposta JSON e encontre a mídia associada a cada postagem. Esta é uma implementação para extrair as informações da resposta 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

Existem duas funções auxiliares usadas nesta função. O Instagram envia uma lista de 'candidatos' a imagens na resposta JSON. Escolha a maior dessas imagens para que a mídia seja exibida em sua resolução mais 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

Em segundo lugar, assim que o link para a imagem for encontrado, você pode salvar a imagem localmente, gravando o conteúdo em um arquivo. Usando o

requests

biblioteca torna isso simples.

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

Tweeting a mídia com Tweepy

Primeiro, você precisará configurar o acesso ao Twitter usando seus segredos e chaves.

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)

A criação de um bot de retuíte genérico é feita em apenas algumas linhas.

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

Muitas outras coisas podem ser feitas com esta biblioteca. Para concluir este passo a passo, você pode usar o

get_images_from_hashtag

função do bot do Instagram criado anteriormente para tweetar imagens e legendas.

Além disso, o seu bot do Twitter pode pesquisar no Reddit por novas postagens e tweetá-las também. Para colocar essas duas funcionalidades juntas fica assim:

# 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:
{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

Seu bot de mídia social movido a Python está pronto!

Então, agora você tem um monte de código que puxa mídia de um site e posta em outro. Você também pode misturar e combinar. Puxe tweets e poste no Reddit. Colete imagens do Instagram para postar em subreddits. Faça um bot e faça parte da verdadeira internet.

Por último, para automatizar totalmente esse processo, você desejará que seus bots sejam executados em um loop em um servidor. Isso pode ser em seu próprio computador com um programador de tempo. Ou tire a poeira daquele velho Raspberry Pi que está em seu armário e confira esses lindos projetos de bot do Twitter para o Pi.

Compartilhado Compartilhado Tweet O email Veja por que o FBI emitiu um aviso para Hive Ransomware

O FBI emitiu um alerta sobre uma cepa particularmente desagradável de ransomware. Veja por que você precisa ser especialmente cauteloso com o ransomware Hive.

Leia a seguir
Tópicos relacionados
  • Programação
  • Pitão
  • Bots de mídia social
  • Tutoriais de codificação
Sobre o autor Tom Johnsen(3 artigos publicados)

Tom é um engenheiro de software da Flórida (grite para Florida Man) com uma paixão por escrever, futebol americano universitário (vamos Gators!), CrossFit e vírgulas Oxford.

Mais de Tom Johnsen

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever