Cách tạo Twitter, Instagram và Reddit Bots bằng Python

Cách tạo Twitter, Instagram và Reddit Bots bằng Python

Đó là năm 2019. Bạn đã nghe nói về bot. Có các chương trình trò chuyện, chương trình email, chương trình quét web và, các chương trình truyền thông xã hội. Bạn đã tạo bot chưa? Nó dễ dàng một cách đáng ngạc nhiên. Có lẽ tại sao chúng ở khắp nơi. Nắm lấy các lãnh chúa bot của chúng tôi bằng cách tham gia xếp hạng của họ.





Trong bài viết này, tôi sẽ chỉ cho bạn cách bạn có thể tận dụng Python để tự động tương tác với các tài khoản Twitter, Reddit và Instagram của mình.





Làm việc với Python

Buổi hướng dẫn này sử dụng Python làm ngôn ngữ lựa chọn của nó. Ưu điểm dễ sử dụng của Python vượt trội hơn mọi thiếu sót về tốc độ mà nó có so với các ngôn ngữ khác. Bạn có thể tải xuống Python cho hầu hết mọi hệ điều hành. Sử dụng biên tập viên của sự lựa chọn của bạn .





Các bản phân phối Python đi kèm với tiện ích được gọi là

nút wps trên bộ định tuyến của tôi là gì
pip

. Tại thời điểm viết bài, có hơn 168.000 thư viện có sẵn để tải xuống bằng cách sử dụng



pip

. Đối với các bot bạn sẽ tạo hôm nay, chỉ cần ba bot.

Từ dòng lệnh, bạn có thể cài đặt các thư viện cần thiết bằng cách sử dụng ba dòng này.





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

Bây giờ bạn sẽ có thể nhập các thư viện này nếu cần.

Nhận chìa khóa ứng dụng và bí mật

Một triết gia khôn ngoan đã từng nói 'Bí mật, bí mật không có gì vui. Bí mật, bí mật làm tổn thương ai đó. ' Trân trọng, các bot cần có bí mật. Bước tiếp theo trong việc thiết lập bot của bạn là cho phép chúng truy cập vào API của mỗi trang web. Để làm điều này, bạn sẽ cần khóa ứng dụng hoặc bí mật.





Khi bạn thu thập khóa, bí mật, mã thông báo và hơn thế nữa (nghe giống như một trò chơi thú vị!), Hãy đặt tất cả chúng vào một tệp duy nhất có tên là 'credentials.py.' Tệp này sẽ trông giống như sau:

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

Đề xuất bảo mật rất quan trọng: không gửi tệp này vào bất kỳ quyền kiểm soát nguồn nào (ví dụ: Git). Bạn không muốn bất kỳ ai khác có những chìa khóa và bí mật này. Chúng được gọi là bí mật là có lý do.

Thiết lập quyền truy cập Twitter

Xem hướng dẫn của chúng tôi để thiết lập bot Twitter với Node.js sẽ chỉ cho bạn cách tạo ứng dụng Twitter của mình. Lưu ý rằng Twitter sẽ mất một khoảng thời gian để xác minh tài khoản của bạn và đảm bảo bạn không tạo tài khoản spam.

Sau khi làm theo các bước đó, hãy sao chép khóa khách hàng, bí mật người tiêu dùng, mã thông báo truy cập và bí mật mã thông báo truy cập vào tệp tin credentials.py của bạn.

Thiết lập quyền truy cập Reddit

Lấy ID ứng dụng khách Reddit và bí mật của bạn rất giống với Twitter. Bạn sẽ cần đăng ký ứng dụng với tư cách là Đại lý người dùng Reddit. Sau khi làm điều này, bạn hoàn toàn nên đặt 'Reddit User Agent' vào sơ yếu lý lịch của mình.

Đăng nhập vào tài khoản Reddit mà bạn chọn. Điều hướng đến trang tùy chọn ứng dụngNhấp vào tạo một ứng dụng khác . Đặt tên cho tác nhân người dùng của bạn một cái gì đó hữu ích. Chọn tập lệnh cho mục đích của ứng dụng của bạn. URL giới thiệu có thể được để trống. Điền vào bất kỳ địa chỉ nào cho hộp chuyển hướng.

Sau bạn Nhấn tạo ứng dụng , màn hình sau sẽ hiển thị cho bạn danh sách các ứng dụng của bạn. Các chữ số dưới tên ứng dụng của bạn đại diện cho ID khách hàng và bí mật của khách hàng nằm bên dưới đó. Sao chép các giá trị này vào tệp tin credentials.py của bạn.

Thiết lập quyền truy cập Instagram

Truy cập Instagram khác với Twitter và Reddit. Thay vì đăng ký một ứng dụng, bạn sử dụng tên người dùng và mật khẩu của mình. Tôi khuyên bạn nên tạo một tài khoản công khai riêng và sử dụng những thông tin chi tiết đó cho bot của bạn.

Truy cập Reddit với Praw

Sử dụng tôm là một quá trình gồm hai bước. Đầu tiên, thiết lập quyền truy cập là một lệnh gọi hàm duy nhất đến phương thức Reddit của praw. Sau đó, bằng cách sử dụng đối tượng đã khởi tạo, việc tìm kiếm một subreddit được thực hiện bằng phương thức 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)

Thay đổi

sub_name

biến để nhận các bài đăng từ các subreddits khác nhau. Thay vì

new()

, các phương pháp khác như

hot()

có sẵn để nhận bài viết.

Tìm kiếm Hashtags Instagram Qua InstagramAPI

Bước đầu tiên trong việc sử dụng API Instagram là thiết lập một đối tượng với ID khách hàng và bí mật. Trực tiếp sau đó, gọi phương thức login () để hoàn tất thiết lập.

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

Sử dụng API phức tạp hơn một chút so với đối tác Reddit của nó. Trong ví dụ này, tập lệnh sử dụng getHashtagFeed để lấy một đối tượng phản hồi JSON rất lớn từ Instagram.

Tìm kiếm thông qua phản hồi, tập lệnh sẽ tìm văn bản phụ đề và sau đó in ra màn hình để xem.

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)

Thêm hình ảnh vào mạng xã hội

Trong tương lai, bạn có thể muốn tập lệnh của mình nhận được các hình ảnh trong nguồn cấp thẻ bắt đầu bằng # này. Để thực hiện việc này, hãy lặp lại phản hồi JSON và tìm phương tiện được liên kết với mỗi bài đăng. Đây là cách triển khai để trích xuất thông tin từ phản hồi 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

Có hai chức năng trợ giúp được sử dụng trong chức năng này. Instagram gửi danh sách các 'ứng cử viên' hình ảnh trong phản hồi JSON. Chọn hình ảnh lớn nhất trong số những hình ảnh này để phương tiện được hiển thị ở độ phân giải cao nhất.

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

Thứ hai, sau khi tìm thấy liên kết đến hình ảnh, bạn có thể lưu hình ảnh cục bộ bằng cách ghi nội dung vào tệp. Sử dụng

requests

thư viện làm cho điều này trở nên đơn giản.

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

Tweet ra phương tiện với Tweepy

Trước tiên, bạn sẽ cần thiết lập quyền truy cập Twitter bằng cách sử dụng bí mật và khóa của mình.

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)

Tạo một bot retweet chung được thực hiện chỉ trong vài dòng.

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

Nhiều thứ khác có thể được thực hiện với thư viện này. Để kết thúc phần hướng dẫn này, bạn có thể sử dụng

get_images_from_hashtag

chức năng từ bot Instagram được tạo trước đó để tweet hình ảnh và chú thích.

Ngoài ra, bot Twitter của bạn có thể tìm kiếm trên Reddit các bài đăng mới và tweet những bài đăng đó. Để đặt cả hai chức năng này lại với nhau trông như thế này:

# 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 truyền thông xã hội được hỗ trợ bởi Python của bạn đã sẵn sàng!

Vì vậy, bây giờ bạn đã có một loạt mã kéo phương tiện từ một trang web và đăng bài lên một trang khác. Bạn cũng có thể kết hợp và kết hợp. Kéo tweet và đăng lên Reddit. Thu thập hình ảnh Instagram để đăng lên subreddits. Tạo bot và trở thành một phần của Internet thực.

Cuối cùng, để hoàn toàn tự động hóa quá trình này, bạn sẽ muốn các bot của mình chạy trong một vòng lặp trên một máy chủ. Điều này có thể là trên máy tính của riêng bạn với một bộ lập lịch thời gian. Hoặc, phủi bụi Raspberry Pi cũ đã có trong tủ quần áo của bạn và kiểm tra các dự án bot Twitter thú vị này dành cho Pi.

Đăng lại Đăng lại tiếng riu ríu E-mail Đây là lý do tại sao FBI ban hành cảnh báo cho Hive Ransomware

FBI đã đưa ra cảnh báo về một loại ransomware đặc biệt khó chịu. Đây là lý do tại sao bạn cần phải đặc biệt cảnh giác với ransomware Hive.

Đọc tiếp
Chủ đề liên quan
  • Lập trình
  • Python
  • Bots trên mạng xã hội
  • Hướng dẫn viết mã
Giới thiệu về tác giả Tom Johnsen(3 bài báo đã xuất bản)

Tom là một Kỹ sư phần mềm đến từ Florida (xin gửi lời cảm ơn đến Florida Man) với niềm đam mê viết lách, bóng đá đại học (go Gators!), CrossFit và dấu phẩy Oxford.

Xem thêm từ Tom Johnsen

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký