On vuosi 2019. Olet kuullut botista. On chat -robotteja, sähköpostirobotteja, web -kaapimisrobotteja ja sosiaalisen median robotteja. Oletko jo luonut botin? Se on yllättävän helppoa. Luultavasti siksi niitä on kaikkialla. Ota vastaan bottiherrojamme liittymällä heidän arvoonsa.
Tässä artikkelissa näytän sinulle, kuinka voit hyödyntää Pythonia vuorovaikutuksessa Twitter-, Reddit- ja Instagram -tiliesi kanssa automaattisesti.
Työskentely Pythonin kanssa
Tämä läpikäynti käyttää Pythonia valitsemanaan kielenä. Pythonin helppokäyttöiset edut ovat suurempia kuin mahdolliset nopeusongelmat muihin kieliin verrattuna. Voit ladata Pythonin melkein mihin tahansa käyttöjärjestelmään. Käyttää valitsemasi editori .
Python -jakelut liittyvät apuohjelmaan nimeltä
jos hylkäät kaveripyynnön Facebookissa, voivatko he lisätä sinut uudelleen
pip
. Tätä kirjoitettaessa on ladattavissa yli 168 000 kirjastoa
pip
. Tänään luomiasi botteja varten tarvitaan vain kolme.
Komentoriviltä voit asentaa tarvittavat kirjastot käyttämällä näitä kolmea riviä.
pip install --upgrade InstagramAPI
pip install --upgrade tweepy pip install --upgrade praw
Nyt voit tuoda nämä kirjastot tarvittaessa.
Sovellusavainten ja salaisuuksien hankkiminen
Viisas filosofi sanoi kerran: 'Salaisuudet, salaisuudet eivät ole hauskaa. Salaisuudet, salaisuudet satuttavat jotakuta. '' Kunnioittavasti botit tarvitsevat salaisuuksia. Seuraava askel robotteja määritettäessä on antaa niille pääsy kunkin sivuston sovellusliittymään. Tätä varten tarvitset sovellusavaimen tai salaisuuden.
Kun keräät avaimia, salaisuuksia, tunnuksia ja paljon muuta (kuulostaa hauskalta peliltä!), Laita ne kaikki yhteen tiedostoon nimeltä credentials.py. Tämä tiedosto näyttäisi suunnilleen tältä:
# 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 = ''
Erittäin tärkeä tietosuojaehdotus: älä käytä tätä tiedostoa minkään lähteen hallintaan (esim. Git). Et halua kenenkään muun saavan näitä avaimia ja salaisuuksia. Niitä kutsutaan salaisuuksiksi syystä.
Twitter -käyttöoikeuden määrittäminen
Tutustu oppaaseemme Twitter -botin määrittämiseksi Node.js -palvelun avulla, kuinka voit luoda Twitter -sovelluksesi. Huomaa, että Twitterissä kestää jonkin aikaa vahvistaa tilisi ja varmistaa, ettet luo roskapostitiliä.
Kopioi näiden vaiheiden jälkeen kuluttaja -avain, kuluttajasalaisuus, käyttöoikeustunnus ja käyttöoikeustunnuksen salaisuus credentials.py -tiedostoosi.
Reddit Accessin määrittäminen
Reddit -asiakastunnuksen ja salaisuuden saaminen on hyvin samanlainen kuin Twitter. Sinun on rekisteröitävä sovellus Reddit -käyttäjäagentiksi. Tämän jälkeen sinun pitäisi ehdottomasti laittaa Reddit User Agent ansioluetteloosi.
Kirjaudu sisään valitsemallesi Reddit -tilille. Siirry kohtaan sovellusten asetussivu ja Napsauta Luo toinen sovellus . Nimeä käyttäjäagenttisi hyödylliseksi. Valitse käsikirjoitus sovellustasi varten. Tietoja -URL -osoite voidaan jättää tyhjäksi. Kirjoita mikä tahansa uudelleenohjausruudun osoite.
Kun olet Paina Luo sovellus , seuraava näyttö esitetään sinulle luettelo sovelluksistasi. Sovelluksesi nimen alla olevat numerot edustavat asiakastunnusta ja asiakkaan salaisuus sijaitsee sen alapuolella. Kopioi nämä arvot credentials.py -tiedostoosi.
Instagram -käyttöoikeuden määrittäminen
Instagram -käyttöoikeus eroaa Twitteristä ja Redditistä. Sovelluksen rekisteröinnin sijaan käytät käyttäjätunnustasi ja salasanaasi. Ehdotan, että luot erillisen julkisen tilin ja käytät näitä tietoja botillesi.
Redditin käyttäminen Prawilla
Praw: n käyttö on kaksivaiheinen prosessi. Ensinnäkin pääsyn määrittäminen on yksi funktion kutsu Reddit praw -menetelmään. Sitten alustusobjektin avulla alihakemisto etsitään käyttämällä uutta () -menetelmää.
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)
Muuta
sub_name
muuttuja, jos haluat saada viestejä eri subredditeistä. Sijasta
new()
, muita menetelmiä, kuten
hot()
ovat saatavilla saadaksesi viestejä.
Haku Instagram -hashtageista InstagramAPI: n kautta
Ensimmäinen vaihe Instagram -sovellusliittymän käytössä on objektin määrittäminen asiakastunnuksella ja salaisuudella. Välittömästi sen jälkeen soita login () -menetelmä loppuun.
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()
API: n käyttö on hieman monimutkaisempaa kuin sen Reddit -vastine. Tässä esimerkissä komentosarja käyttää getHashtagFeedia saadakseen erittäin suuren JSON -vastausobjektin Instagramista.
Kun etsit vastausta, käsikirjoitus etsii kuvatekstiä ja tulostaa sitten näytölle sen tarkastelua varten.
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)
Lisää kuvia sosiaaliseen mediaan
Jatkaessasi haluat ehkä, että käsikirjoituksesi saa kuvat tähän hashtag -syötteeseen. Voit tehdä tämän kiertämällä JSON -vastauksen läpi ja etsimällä jokaiseen viestiin liittyvän median. Tässä on toteutus tietojen poimimiseksi JSON -vastauksesta:
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
Tässä toiminnossa käytetään kahta aputoimintoa. Instagram lähettää luettelon kuva -ehdokkaista JSON -vastauksessa. Valitse näistä kuvista suurin, jotta media näytetään suurimmalla resoluutiolla.
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
Toiseksi, kun linkki kuvaan on löydetty, voit tallentaa kuvan paikallisesti kirjoittamalla sisällön tiedostoon. Käyttämällä
requests
kirjasto tekee tästä yksinkertaisen.
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
Median twiittaaminen Tweepyn avulla
Ensin sinun on määritettävä Twitter -käyttö salaisuuksillasi ja avaimillasi.
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)
Yleisen uudelleentwiittausbotin luominen tapahtuu vain muutamalla rivillä.
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
Tällä kirjastolla voi tehdä monia muita asioita. Voit lopettaa tämän läpikäynnin käyttämällä
get_images_from_hashtag
toiminto aiemmin Instagram -botista, jotta voit tweetata kuvia ja kuvatekstejä.
Lisäksi Twitter -robotti voi etsiä Redditistä uusia viestejä ja twiittaa myös ne. Molempien toimintojen yhdistäminen näyttää tältä:
# 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
Python-käyttöinen sosiaalisen median robotti on valmis!
Joten nyt sinulla on joukko koodia, joka vetää mediaa yhdeltä sivustolta ja lähettää viestejä toiselle. Voit myös sekoittaa ja yhdistää. Vedä twiitit ja lähetä Redditiin. Kerää Instagram -kuvia, jotta voit lähettää ne subredditsiin. Tee robotti ja ole osa todellista Internetiä.
Lopuksi, jotta voit automatisoida tämän prosessin kokonaan, haluat, että botit toimivat silmukassa palvelimella. Tämä voi tapahtua omalla tietokoneellasi, jossa on ajastin. Tai pyyhi pöly pois vanhasta Raspberry Pi: stä, joka on ollut kaapissasi, ja tutustu näihin makeisiin Twitter -bottiprojekteihin Pi: lle.
Jaa Jaa Tweet Sähköposti Tästä syystä FBI antoi varoituksen Hive Ransomware -ohjelmastaFBI antoi varoituksen erityisen ikävästä ransomware -kannasta. Tästä syystä sinun on oltava erityisen varovainen Hive -lunnasohjelmista.
Lue seuraava Liittyvät aiheet- Ohjelmointi
- Python
- Sosiaalisen median robotit
- Koodausoppaat
Tom on ohjelmistosuunnittelija Floridasta (huutaa Floridan miehelle), jolla on intohimo kirjoittamiseen, college-jalkapalloon (go Gators!), CrossFit ja Oxford-pilkut.
Lisää Tom Johnseniltatilaa uutiskirjeemme
Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia e -kirjoja ja ainutlaatuisia tarjouksia!
Klikkaa tästä tilataksesi