Cara Membuat Bot Twitter, Instagram, dan Reddit Menggunakan Python

Cara Membuat Bot Twitter, Instagram, dan Reddit Menggunakan Python

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 Ransomware

FBI 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
Tentang Penulis Tom Johnsen(3 Artikel Diterbitkan)

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 Johnsen

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan