Paano Bumuo ng Twitter, Instagram, at Reddit Bots Gamit ang Python

Paano Bumuo ng Twitter, Instagram, at Reddit Bots Gamit ang Python

Ito ay 2019. Narinig mo ang tungkol sa mga bot. Mayroong mga chat bot, email bot, web scraping bot, at, mga social media bot. Nakalikha ka na ba ng bot? Ito ay nakakagulat na madali. Marahil kung bakit nasa buong lugar sila. Yakapin ang aming mga overlord ng bot sa pamamagitan ng pagsali sa kanilang ranggo.





Sa artikulong ito, ipapakita ko sa iyo kung paano mo magagamit ang Python upang makipag-ugnay sa iyong mga Twitter, Reddit, at Instagram account na awtomatiko.





Paggawa Sa Python

Ang walk-through na ito ay gumagamit ng Python bilang piniling wika nito. Ang mga kalamangan na madaling magamit ng Python ay mas malaki kaysa sa anumang mga kakulangan sa bilis na inihambing nito sa ibang mga wika. Maaari mong i-download ang Python para sa halos anumang OS. Gamitin ang editor na iyong pinili .





Ang mga pamamahagi ng sawa ay nauugnay sa tinatawag na utility

ang pagbubukod ng system thread ay hindi pinangasiwaan ang pag-update ng windows 10
pip

. Sa oras ng pagsulat, mayroong higit sa 168,000 mga library na magagamit para sa pag-download gamit ang



pip

. Para sa mga bot na lilikhain mo ngayon, tatlo lamang ang kinakailangan.

Mula sa linya ng utos, maaari mong mai-install ang mga aklatan na kinakailangan gamit ang tatlong mga linya.





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

Ngayon ay magagawa mong i-import ang mga aklatan na ito kung kinakailangan.

Pagkuha ng Mga Susi at Lihim ng Application

Sinabi ng isang pantas na pilosopo na 'Mga lihim, ang mga lihim ay hindi nakakatuwa. Ang mga sikreto, sikreto ay nakasakit sa isang tao. ' Magalang, ang mga bot ay nangangailangan ng mga lihim. Ang susunod na hakbang sa pagse-set up ng iyong mga bot ay upang payagan silang mag-access sa API ng bawat site. Upang magawa ito, kakailanganin mo ang isang application key o lihim.





Habang nangongolekta ka ng mga susi, lihim, token, at higit pa (parang isang kasiya-siyang laro!), Ilagay ang lahat sa isang solong file na tinatawag na 'mga kredensyal.py.' Magmumukhang ganito ang file na ito:

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

Napakahalagang mungkahi sa privacy: huwag gawin ang file na ito ng anumang kontrol sa mapagkukunan (hal. Git). Hindi mo nais na may ibang tao na magkaroon ng mga susi at lihim na ito. Tinatawag silang mga lihim sa isang kadahilanan.

Pagse-set up ng Access sa Twitter

Suriin ang aming gabay sa pag-set up ng isang bot sa Twitter kasama ang Node.js ay magpapakita sa iyo kung paano lumikha ng iyong Twitter app. Tandaan na magtatagal ang Twitter upang ma-verify ang iyong account at matiyak na hindi ka lumilikha ng isang spam account.

Matapos sundin ang mga hakbang na iyon, kopyahin ang susi ng consumer, lihim ng consumer, token sa pag-access, at lihim na pag-access sa token sa iyong mga kredensyal.py file.

Pagse-set up ng Reddit Access

Ang pagkuha ng iyong Reddit client ID at lihim ay halos kapareho ng Twitter. Kakailanganin mong magparehistro ng isang app bilang isang Reddit User Agent. Pagkatapos gawin ito, dapat mong ganap na ilagay ang 'Reddit User Agent' sa iyong resume.

Mag-sign in sa Reddit account na iyong pinili. Mag-navigate sa pahina ng mga kagustuhan sa apps at I-click ang lumikha ng isa pang app . Pangalanan ang iyong ahente ng gumagamit ng isang bagay na kapaki-pakinabang. Piliin ang script para sa layunin ng iyong app. Ang tungkol sa URL ay maaaring iwanang blangko. Punan ang anumang address para sa redirect box.

Pagkatapos mong Pindutin ang lumikha ng app , ang sumusunod na screen ay ipapakita sa iyo ng isang listahan ng iyong mga app. Ang mga digit sa ilalim ng iyong pangalan ng aplikasyon ay kumakatawan sa client ID at ang lihim ng kliyente ay matatagpuan sa ibaba nito. Kopyahin ang mga halagang ito sa iyong mga kredensyal.py file.

Pag-set up ng Pag-access sa Instagram

Ang pag-access sa Instagram ay naiiba mula sa Twitter at Reddit. Sa halip na magparehistro ng isang app, ginagamit mo ang iyong username at password. Iminumungkahi kong lumikha ng isang hiwalay na pampublikong account at gamitin ang mga detalyeng iyon para sa iyong bot.

Pag-access sa Reddit Sa Praw

Ang paggamit ng praw ay isang dalawang hakbang na proseso. Una, ang pagse-set up ng pag-access ay isang solong pag-andar na tawag sa pamamaraang Reddit ng kalokohan. Pagkatapos, gamit ang inisyal na bagay, ang paghahanap ng isang subreddit ay tapos na gamit ang bagong () pamamaraan.

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)

Baguhin ang

sub_name

variable upang makakuha ng mga post mula sa iba't ibang mga subreddits. Sa halip na

new()

, iba pang mga pamamaraan tulad ng

hot()

ay magagamit upang makakuha ng mga post.

Paghahanap sa Instagram Hashtags Sa pamamagitan ng InstagramAPI

Ang unang hakbang sa paggamit ng Instagram API ay ang pagse-set up ng isang object gamit ang client ID at lihim. Direkta pagkatapos nito, tawagan ang paraan ng pag-login () upang makumpleto ang pag-set up.

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()

Ang paggamit ng API ay medyo mas kumplikado kaysa sa katapat nitong Reddit. Sa halimbawang ito, gumagamit ang script ng getHashtagFeed upang makakuha ng isang napakalaking object ng pagtugon ng JSON mula sa Instagram.

Naghahanap sa pamamagitan ng tugon, ang script ay naghahanap ng teksto ng caption at pagkatapos ay i-print sa screen upang makita ito.

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)

Magdagdag ng Mga Larawan Sa Social Media

Sumusulong, baka gusto mong makuha ng iyong script ang mga imahe sa feed ng hashtag na ito. Upang magawa ito, mag-loop sa tugon ng JSON at hanapin ang media na nauugnay sa bawat post. Narito ang isang pagpapatupad para sa pagkuha ng impormasyon mula sa tugon ng 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

Mayroong dalawang mga pagpapaandar na tumutulong sa pagpapaandar na ito. Nagpapadala ang Instagram ng isang listahan ng mga 'kandidato' ng imahe sa tugon ng JSON. Piliin ang pinakamalaki sa mga larawang ito upang maipakita ang media sa pinakamataas na resolusyon nito.

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

Pangalawa, kapag nahanap ang link sa imahe, maaari mong i-save ang imahe nang lokal sa pamamagitan ng pagsulat ng nilalaman sa isang file. Gamit ang

requests

ginagawa itong prangka ng silid-aklatan.

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 Out Media Sa Tweepy

Una, kakailanganin mong i-set up ang pag-access sa Twitter gamit ang iyong mga lihim at key.

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)

Ang paglikha ng isang pangkalahatang bot ng retweet ay tapos na sa ilang mga linya lamang.

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

Maraming iba pang mga bagay na maaaring magawa sa library na ito. Upang tapusin ang walk-through na ito, maaari mong gamitin ang

get_images_from_hashtag

pagpapaandar mula sa bot ng Instagram na ginawa kanina upang mag-tweet ng mga imahe at kapsyon.

Bilang karagdagan, ang iyong bot sa Twitter ay maaaring maghanap sa Reddit para sa mga bagong post at i-tweet din ang mga iyon. Upang pagsamahin ang pareho sa mga pag-andar na ito ay ganito ang hitsura:

# 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

Ang iyong Python-Powered Social Media Bot Ay Handa na!

Kaya, ngayon mayroon kang isang bungkos ng code na kumukuha ng media mula sa isang site at nai-post sa isa pa. Maaari mo ring ihalo at itugma din. Hilahin ang mga tweet at i-post sa Reddit. Kolektahin ang mga larawan sa Instagram para sa pag-post sa mga subreddits. Gumawa ng isang bot at maging bahagi ng totoong internet.

Panghuli, upang ganap na ma-automate ang prosesong ito, gugustuhin mong tumakbo ang iyong mga bot sa isang loop sa isang server. Maaari itong nasa iyong sariling computer na may tagapagsulat ng oras. O, alisin ang alikabok sa matandang Raspberry Pi na nasa iyong aparador, at suriin ang mga kaibig-ibig na proyekto ng bot ng Twitter para sa Pi.

Magbahagi Magbahagi Mag-tweet Email Narito Bakit Naglabas ang FBI ng Babala para sa Hive Ransomware

Nag-isyu ang FBI ng isang babala tungkol sa isang partikular na hindi magandang pagsasama ng ransomware. Narito kung bakit kailangan mong maging maingat lalo na sa Hive ransomware.

Basahin Susunod
Mga Kaugnay na Paksa
  • Programming
  • Sawa
  • Mga Bot ng Social Media
  • Mga Tutorial sa Coding
Tungkol sa May-akda Tom Johnsen(3 Artikulo Nai-publish)

Si Tom ay isang Software Engineer mula sa Florida (sumigaw sa Florida Man) na may pagkahilig sa pagsusulat, football sa kolehiyo (go Gators!), CrossFit, at Oxford comma.

Higit pa Mula kay Tom Johnsen

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe