Ini tahun 2019. Anda pernah mendengar tentang bot. Ada bot obrolan, bot email, bot web scraping, dan, bot media sosial. Udah buat bot belum? Ini sangat mudah. Mungkin mengapa mereka ada di mana-mana. Rangkullah tuan bot kami dengan bergabung dengan peringkat mereka.
Dalam artikel ini, saya akan menunjukkan kepada Anda bagaimana Anda dapat memanfaatkan Python untuk berinteraksi dengan akun Twitter, Reddit, dan Instagram Anda secara otomatis.
Bekerja dengan Python
Panduan ini menggunakan Python sebagai bahasa pilihannya . Keuntungan kemudahan penggunaan Python lebih besar daripada kekurangan kecepatan yang dimilikinya dibandingkan dengan bahasa lain. Anda dapat mengunduh Python untuk hampir semua OS. Menggunakan editor pilihan Anda .
Distribusi Python dikaitkan dengan utilitas yang disebut
kode kesalahan pusat bantuan disney plus 83
pip
. Pada saat penulisan, ada lebih dari 168.000 perpustakaan yang tersedia untuk diunduh menggunakan
pip
. Untuk bot yang akan Anda buat hari ini, hanya diperlukan tiga.
Dari baris perintah, Anda dapat menginstal pustaka yang diperlukan menggunakan tiga baris ini.
pip install --upgrade InstagramAPI
pip install --upgrade tweepy pip install --upgrade praw
Sekarang Anda dapat mengimpor perpustakaan ini jika diperlukan.
Mendapatkan Kunci dan Rahasia Aplikasi
Seorang filsuf bijak pernah berkata 'Rahasia, rahasia tidak menyenangkan. Rahasia, rahasia menyakiti seseorang.' Dengan hormat, bot membutuhkan rahasia. Langkah selanjutnya dalam menyiapkan bot Anda adalah mengizinkan mereka mengakses API setiap situs. Untuk melakukan ini, Anda memerlukan kunci atau rahasia aplikasi.
Saat Anda mengumpulkan kunci, rahasia, token, dan lainnya (terdengar seperti permainan yang menyenangkan!), masukkan semuanya ke dalam satu file bernama 'credentials.py.' File ini akan terlihat seperti ini:
# 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 = ''
Saran privasi yang sangat penting: jangan lakukan file ini pada kontrol sumber apa pun (mis. Git). Anda tidak ingin orang lain memiliki kunci dan rahasia ini. Mereka disebut rahasia karena suatu alasan.
Menyiapkan Akses Twitter
Lihat panduan kami untuk menyiapkan bot Twitter dengan Node.js akan menunjukkan cara membuat aplikasi Twitter Anda. Perhatikan bahwa Twitter akan membutuhkan waktu untuk memverifikasi akun Anda dan memastikan Anda tidak membuat akun spam.
Setelah mengikuti langkah-langkah tersebut, salin kunci konsumen, rahasia konsumen, token akses, dan rahasia token akses ke file kredensial.py Anda.
Menyiapkan Akses Reddit
Mendapatkan ID klien dan rahasia Reddit Anda sangat mirip dengan Twitter. Anda harus mendaftarkan aplikasi sebagai Agen Pengguna Reddit. Setelah melakukan ini, Anda harus benar-benar meletakkan 'Agen Pengguna Reddit' di resume Anda.
Masuk ke akun Reddit yang Anda pilih. Navigasikan ke halaman preferensi aplikasi dan Klik buat aplikasi lain . Beri nama agen pengguna Anda sesuatu yang berguna. Pilih skrip untuk tujuan aplikasi Anda. Tentang URL dapat dikosongkan. Isi alamat apapun untuk kotak redirect.
Setelah kamu Tekan buat aplikasi , layar berikut akan disajikan kepada Anda dengan daftar aplikasi Anda. Digit di bawah nama aplikasi Anda mewakili ID klien dan rahasia klien terletak di bawahnya. Salin nilai-nilai ini ke file kredensial.py Anda.
Menyiapkan Akses Instagram
Akses Instagram berbeda dari Twitter dan Reddit. Alih-alih mendaftarkan aplikasi, Anda menggunakan nama pengguna dan kata sandi Anda. Saya sarankan membuat akun publik terpisah dan menggunakan detail tersebut untuk bot Anda.
Mengakses Reddit Dengan Praw
Menggunakan udang adalah proses dua langkah. Pertama, mengatur akses adalah panggilan fungsi tunggal ke metode Reddit dari praw. Kemudian, dengan menggunakan objek yang diinisialisasi, pencarian subreddit dilakukan menggunakan metode 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)
Mengubah
sub_name
variabel untuk mendapatkan posting dari subreddit yang berbeda. Dari pada
new()
, metode lain seperti
hot()
tersedia untuk mendapatkan posting.
Mencari Hashtag Instagram Melalui InstagramAPI
Langkah pertama dalam menggunakan API Instagram adalah menyiapkan objek dengan ID klien dan rahasia. Langsung setelah itu, panggil metode login() untuk menyelesaikan penyiapan.
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()
Menggunakan API sedikit lebih rumit daripada rekan Reddit-nya. Dalam contoh ini, skrip menggunakan getHashtagFeed untuk mendapatkan objek respons JSON yang sangat besar dari Instagram.
Mencari melalui respons, skrip mencari teks teks dan kemudian mencetak ke layar untuk melihatnya.
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)
Tambahkan Gambar Ke Media Sosial
Ke depan, Anda mungkin ingin skrip Anda mendapatkan gambar di umpan tagar ini. Untuk melakukan ini, ulangi respons JSON dan temukan media yang terkait dengan setiap postingan. Berikut adalah implementasi untuk mengekstrak informasi dari respons 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
Ada dua fungsi pembantu yang digunakan dalam fungsi ini. Instagram mengirimkan daftar 'kandidat' gambar dalam respons JSON. Pilih yang terbesar dari gambar-gambar ini sehingga media ditampilkan dalam resolusi tertinggi.
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
Kedua, setelah tautan ke gambar ditemukan, Anda dapat menyimpan gambar secara lokal dengan menulis konten ke file. Menggunakan
requests
perpustakaan membuat ini mudah.
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
Menge-Tweet Media Dengan Tweepy
Pertama, Anda harus mengatur akses Twitter menggunakan rahasia dan kunci Anda.
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)
Membuat bot retweet generik dilakukan hanya dalam beberapa baris.
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
Banyak hal lain yang bisa dilakukan dengan perpustakaan ini. Untuk mengakhiri panduan ini, Anda dapat menggunakan
get_images_from_hashtag
fungsi dari bot Instagram yang dibuat sebelumnya untuk men-tweet gambar dan keterangan.
Selain itu, bot Twitter Anda dapat mencari Reddit untuk posting baru dan tweet yang keluar juga. Untuk menggabungkan kedua fungsi ini terlihat seperti ini:
# 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
Bot Media Sosial Bertenaga Python Anda Sudah Siap!
Jadi, sekarang Anda memiliki banyak kode yang menarik media dari satu situs dan memposting ke situs lainnya. Bisa mix and match juga. Tarik tweet dan posting ke Reddit. Kumpulkan gambar Instagram untuk diposting ke subreddits. Buat bot dan jadilah bagian dari internet yang sebenarnya.
Terakhir, untuk sepenuhnya mengotomatiskan proses ini, Anda ingin bot Anda berjalan dalam satu lingkaran di server. Ini bisa di komputer Anda sendiri dengan penjadwal waktu. Atau, bersihkan Raspberry Pi lama yang ada di lemari Anda, dan lihat proyek bot Twitter manis ini untuk Pi .
Membagikan Membagikan Menciak Surel Inilah Mengapa FBI Mengeluarkan Peringatan untuk Hive RansomwareFBI mengeluarkan peringatan tentang jenis ransomware yang sangat jahat. Inilah mengapa Anda harus sangat waspada terhadap ransomware Hive.
Baca Selanjutnya Topik-topik yang berkaitan- Pemrograman
- Python
- Bot Media Sosial
- Tutorial Pengkodean
Tom adalah Software Engineer dari Florida (berteriak ke Florida Man) dengan hasrat untuk menulis, sepak bola perguruan tinggi (go Gators!), CrossFit, dan koma Oxford.
More From Tom JohnsenBerlangganan newsletter kami
Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!
Klik di sini untuk berlangganan