Cara Membina Twitter, Instagram, dan Reddit Bots Menggunakan Python

Cara Membina Twitter, Instagram, dan Reddit Bots Menggunakan Python

Ini 2019. Anda pernah mendengar bot. Terdapat bot sembang, bot e-mel, bot pengikis web, dan bot media sosial. Adakah anda sudah membuat bot? Ia sangat mudah. Mungkin mengapa mereka berada di semua tempat. Rangkul tuan bot kami dengan menyertai pangkat mereka.





Dalam artikel ini, saya akan menunjukkan kepada anda bagaimana anda dapat memanfaatkan Python untuk berinteraksi dengan akaun Twitter, Reddit, dan Instagram anda secara automatik.





Bekerja dengan Python

Panduan ini menggunakan Python sebagai bahasa pilihannya. Kelebihan kemudahan penggunaan Python mengatasi kekurangan kelajuan yang dibandingkan dengan bahasa lain. Anda boleh memuat turun Python untuk hampir semua OS. Gunakan penyunting pilihan anda .





Pengedaran Python dikaitkan dengan utiliti yang dipanggil

kehabisan penjualan perniagaan berhampiran saya 2020
pip

. Pada masa penulisan, terdapat lebih dari 168,000 perpustakaan yang tersedia untuk dimuat menggunakan



pip

. Untuk bot yang akan anda buat hari ini, hanya tiga yang diperlukan.

Dari baris arahan, anda boleh memasang perpustakaan yang diperlukan menggunakan ketiga baris ini.





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

Kini anda dapat mengimport perpustakaan ini jika diperlukan.

Mendapatkan Kunci dan Rahsia Permohonan

Seorang ahli falsafah yang bijak pernah berkata 'Rahsia, rahsia tidak menyenangkan. Rahsia, rahsia menyakiti seseorang. ' Dengan hormatnya, bot memerlukan rahsia. Langkah seterusnya dalam mengatur bot anda adalah membiarkan mereka mengakses ke API setiap laman web. Untuk melakukan ini, anda memerlukan kunci atau rahsia aplikasi.





Semasa anda mengumpulkan kunci, rahsia, token, dan banyak lagi (terdengar seperti permainan yang menyeronokkan!), Masukkan semuanya ke dalam satu fail yang dipanggil 'credentials.py.' Fail ini akan kelihatan 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 = ''

Cadangan privasi yang sangat penting: jangan melakukan kawalan sumber fail ini (mis. Git). Anda tidak mahu orang lain mempunyai kunci dan rahsia ini. Mereka dipanggil rahsia kerana suatu alasan.

Menyiapkan Akses Twitter

Lihat panduan kami untuk menyediakan bot Twitter dengan Node.js akan menunjukkan cara membuat aplikasi Twitter anda. Perhatikan bahawa Twitter akan mengambil sedikit masa untuk mengesahkan akaun anda dan memastikan anda tidak membuat akaun spam.

Setelah mengikuti langkah-langkah tersebut, salin kunci pengguna, rahsia pengguna, token akses, dan akses rahsia token ke dalam fail credentials.py anda.

Menyiapkan Akses Reddit

Mendapatkan ID dan rahsia pelanggan Reddit anda sangat serupa dengan Twitter. Anda perlu mendaftarkan aplikasi sebagai Ejen Pengguna Reddit. Setelah melakukan ini, anda mesti meletakkan 'Reddit User Agent' pada resume anda.

Log masuk ke akaun Reddit pilihan anda. Navigasi ke halaman pilihan aplikasi dan Klik buat aplikasi lain . Namakan ejen pengguna anda sesuatu yang berguna. Pilih skrip untuk tujuan aplikasi anda. URL mengenai boleh dibiarkan kosong. Isi sebarang alamat untuk kotak ubah hala.

Selepas anda Tekan buat aplikasi , skrin berikut akan diberikan kepada anda senarai aplikasi anda. Digit di bawah nama aplikasi anda mewakili ID pelanggan dan rahsia pelanggan terletak di bawahnya. Salin nilai-nilai ini ke fail credentials.py anda.

Menyiapkan Akses Instagram

Akses Instagram berbeza dengan Twitter dan Reddit. Daripada mendaftarkan aplikasi, anda menggunakan nama pengguna dan kata laluan anda. Saya cadangkan membuat akaun awam yang berasingan dan menggunakan butiran tersebut untuk bot anda.

Mengakses Reddit Dengan Praw

Menggunakan praw adalah proses dua langkah. Pertama, mengatur akses adalah panggilan fungsi tunggal ke kaedah Reddit praw. Kemudian, menggunakan objek yang diinisialisasi, mencari subreddit dilakukan menggunakan kaedah baru ().

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)

Tukar

sub_name

pemboleh ubah untuk mendapatkan catatan dari subreddit yang berbeza. Bukannya

new()

, kaedah lain seperti

hot()

ada untuk mendapatkan jawatan.

Mencari Hashtag Instagram Melalui InstagramAPI

Langkah pertama dalam menggunakan API Instagram adalah menyiapkan objek dengan ID dan rahsia klien. Langsung selepas itu, panggil kaedah 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 rakannya Reddit. Dalam contoh ini, skrip menggunakan getHashtagFeed untuk mendapatkan objek respons JSON yang sangat besar dari Instagram.

Mencari melalui respons, skrip mencari teks kapsyen 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)

Tambah Imej Ke Media Sosial

Melangkah ke hadapan, anda mungkin mahu skrip anda mendapatkan gambar dalam suapan hashtag ini. Untuk melakukan ini, cari jawapan JSON dan cari media yang berkaitan dengan setiap siaran. Berikut adalah pelaksanaan untuk mengekstrak maklumat 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

Terdapat dua fungsi pembantu yang digunakan dalam fungsi ini. Instagram menghantar senarai gambar 'calon' dalam respons JSON. Pilih gambar yang paling besar sehingga media dipaparkan 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 pautan ke gambar dijumpai, anda boleh menyimpan gambar secara tempatan dengan menulis kandungan ke fail. Menggunakan

requests

perpustakaan menjadikan 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

Mengeluarkan Media Dengan Tweepy

Pertama, anda perlu menyediakan akses Twitter menggunakan rahsia 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 perkara lain boleh dilakukan dengan perpustakaan ini. Untuk membuat kesimpulan ini, anda boleh menggunakan

get_images_from_hashtag

berfungsi dari bot Instagram yang dibuat sebelumnya untuk tweet gambar dan kapsyen.

Selain itu, bot Twitter anda dapat mencari Reddit untuk mendapatkan catatan baru dan tweet juga. Untuk menggabungkan kedua-dua fungsi ini kelihatan 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 Berkuasa Python Anda Sedia!

Jadi, sekarang anda mempunyai banyak kod yang menarik media dari satu laman web dan menghantar ke laman web yang lain. Anda juga boleh mencampurkan dan memadankan. Tarik tweet dan hantar ke Reddit. Kumpulkan gambar Instagram untuk disiarkan ke subreddits. Buat bot dan jadikan bahagian internet sebenar.

Terakhir, untuk mengotomatisasi sepenuhnya proses ini, anda mahu bot anda berjalan dalam satu pusingan pada pelayan. Ini mungkin ada di komputer anda sendiri dengan penjadual waktu. Atau, hapuskan Raspberry Pi lama yang ada di dalam almari anda, dan lihat projek bot Twitter manis ini untuk Pi.

Berkongsi Berkongsi Tweet E-mel Inilah Sebabnya FBI Mengeluarkan Amaran untuk Hive Ransomware

FBI mengeluarkan amaran mengenai jenis ransomware yang sangat jahat. Inilah sebabnya mengapa anda perlu berhati-hati terhadap Hive ransomware.

Baca Seterusnya
Topik-topik yang berkaitan
  • Pengaturcaraan
  • Python
  • Bot Media Sosial
  • Tutorial Pengekodan
Mengenai Pengarang Tom Johnsen(3 Artikel Diterbitkan)

Tom adalah Jurutera Perisian dari Florida (berteriak kepada Florida Man) dengan minat menulis, bola sepak kolej (pergi Gators!), CrossFit, dan koma Oxford.

Lagi Dari Tom Johnsen

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan