Thứ tư, 30/11/2016 | 00:00 GMT+7

Cách tạo Twitterbot bằng Python 3 và Thư viện Tweepy

Twitterbot là một chương trình tích hợp với nền tảng Twitter, tự động đăng, đăng lại, thích hoặc theo dõi user khác. Twitterbots có thể tỏ ra hữu ích thông qua việc cung cấp thông tin hoặc cập nhật thú vị và chúng cũng có thể vui nhộn hoặc hài hước.

Điều quan trọng là phải thực hiện cẩn thận khi tạo Twitterbots, vì không chỉ quấy rối và gửi thư rác không được phép mà còn khiến account Twitterbot của bạn bị tạm ngưng do vi phạm Điều khoản dịch vụ của Twitter. Trước khi tạo Twitterbot, bạn nên làm quen với các luật Tự động hóa của Twitter và các phương pháp hay nhất đảm bảo rằng Twitterbot của bạn là một thành viên tốt của cộng đồng Twitter.

Hướng dẫn này sẽ hướng dẫn bạn qua hai chương trình Twitterbot, một chương trình tweet từ file và một chương trình tweet lại, theo dõi và yêu thích . Ngoài ra, ta sẽ tiến hành lưu trữ thông tin đăng nhập của bạn trong một file chương trình riêng biệt và giữ cho Twitterbot chạy trên server . Mỗi bước trong số này là tùy chọn, nhưng chúng được trình bày theo thứ tự bạn sẽ thực hiện.

Yêu cầu

Mặc dù bạn có thể sử dụng máy tính local để cài đặt và chạy Twitterbot, nhưng nếu bạn muốn nó liên tục chạy, môi trường lập trình Python trên server sẽ lý tưởng cho dự án này.

Ngoài ra, bạn nên có account Twitter được liên kết với số điện thoại hợp lệ, bạn có thể thêm account này qua phần Di động của Cài đặt khi đăng nhập. Bạn cần tạo ứng dụng Twitter và cài đặt thư viện Python Tweepy , bạn có thể làm theo hướng dẫn “ Cách tạo ứng dụng Twitter ” của ta . Bạn nên có trong tay Khóa người tiêu dù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 trước khi bắt đầu hướng dẫn này.

Là một phần của dự án này, ta sẽ sử dụng Python để đọc file . Để tự làm quen với việc làm việc với các file văn bản trong Python, bạn có thể đọc hướng dẫn “ Cách xử lý các file văn bản thuần túy trong Python 3 của ta .

Lưu trữ thông tin đăng nhập

Bạn có thể giữ Khóa người tiêu dùng Twitter, 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 ở đầu file chương trình của bạn , nhưng đối với các phương pháp hay nhất, ta nên lưu trữ chúng trong một file Python riêng biệt mà (các) file chương trình chính của ta có thể truy cập . Bất kỳ ai có quyền truy cập vào các chuỗi này đều có thể sử dụng account Twitter của bạn, vì vậy bạn không muốn chia sẻ hoặc đặt chúng ở chế độ công khai. Ngoài bảo mật, việc giữ một file riêng biệt có thể cho phép ta dễ dàng truy cập thông tin đăng nhập của bạn trong mỗi file chương trình mà ta tạo.

Để bắt đầu, ta nên đảm bảo ta đang ở trong môi trường ảo với thư viện Tweepy được cài đặt. Với môi trường được kích hoạt, sau đó ta có thể tạo một folder cho dự án của bạn để giữ cho nó có tổ chức:

  • mkdir twitterbot
  • cd twitterbot

Tiếp theo, hãy mở một editor chẳng hạn như nano và tạo file credentials.py để lưu trữ những thông tin đăng nhập này:

  • nano credentials.py

Ta sẽ tạo các biến cho từng khóa, bí mật và mã thông báo mà ta đã tạo (nếu bạn cần tạo các biến đó, hãy làm theo các bước sau . Thay thế các mục trong dấu ngoặc kép bằng chuỗi duy nhất của bạn từ trang web ứng dụng Twitter (và giữ nguyên các dấu ngoặc kép) .

credentials.py
consumer_key = 'your_consumer_key' consumer_secret = 'your_consumer_secret' access_token = 'your_access_token' access_token_secret = 'your_access_token_secret' 

Ta sẽ gọi các biến này trong các file chương trình khác của ta . Việc tạo file tin credentials.py riêng biệt này cũng cho phép ta thêm nó vào file .gitignore của ta trong trường hợp ta định phát hành mã của bạn thông qua Git.

Twitterbot mà Tweet từ một file

Ta có thể sử dụng khả năng của Python để xử lý và đọc từ các file để cập nhật trạng thái Twitter của bạn . Đối với ví dụ này, ta sẽ sử dụng file đã tồn tại, nhưng bạn có thể cần tạo file của riêng mình hoặc sửa đổi file hiện có.

Cài đặt file chương trình

Hãy bắt đầu bằng cách tạo file chương trình của ta , sử dụng editor chẳng hạn như nano:

  • nano twitterbot_textfile.py

Tiếp theo, hãy cài đặt thông tin đăng nhập Twitter của ta bằng cách thêm chúng vào đầu file của ta hoặc nhập những gì ta đã lưu trữ trong file tin credentials.py mà ta đã cài đặt trong phần trên . Ta cũng sẽ thêm 3 dòng để tương tác với các biến thông tin xác thực thông qua thư viện Tweepy.

twitterbot_textfile.py
# Import our Twitter credentials from credentials.py from credentials import *  # Access and authorize our Twitter credentials from credentials.py auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) 

Để tìm hiểu thêm về cách cài đặt này, hãy nhớ xem “ Cách tạo ứng dụng Twitter ”. Để tìm hiểu thêm về OAuth, bạn có thể đọc phần giới thiệu của ta .

Lấy một file văn bản để đọc từ

Đối với Twitterbot này, ta cần một file văn bản để đọc, vì vậy hãy download một file từ Project Gutenberg, một dự án tình nguyện cung cấp ebook miễn phí (chủ yếu trong domain công cộng) cho người đọc. Hãy lưu bản dịch tiếng Anh của Twenty Thousand Leagues under the Sea của Jules Verne dưới dạng file có tên là verne.txt với curl :

  • curl http://www.gutenberg.org/cache/epub/164/pg164.txt --output verne.txt

Ta sẽ sử dụng các khả năng xử lý file của Python, trước tiên để mở file , sau đó đọc các dòng từ file và cuối cùng để đóng file .

Mở và đọc file bằng Python

Với file của ta đã download , ta có thể tạo các biến và thêm các chức năng có liên quan bên dưới các dòng ta vừa cài đặt để xử lý thông tin đăng nhập.

twitterbot_textfile.py
from credentials import *  auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)  # Open text file verne.txt (or your chosen file) for reading my_file = open('verne.txt', 'r')  # Read lines one by one from my_file and assign to file_lines variable file_lines = my_file.readlines()  # Close file my_file.close() 

Với cài đặt này, bây giờ ta có thể làm việc thêm mã để làm cho các dòng này xuất ra dưới dạng cập nhật trạng thái cho account Twitter của ta .

Dòng Tweet từ file văn bản

Với các dòng trong file của ta được lưu trữ trong một biến, ta đã sẵn sàng cập nhật account Twitterbot của bạn .

Ta sẽ sử dụng thư viện Tweepy để tương tác với API Twitter, vì vậy ta nên nhập thư viện vào chương trình của bạn .

Ta cũng sẽ tự động hóa Tweet của bạn theo cách dựa trên thời gian, vì vậy ta nên nhập time module . Đối với mục đích của ta , ta sẽ chỉ sử dụng hàm sleep() , vì vậy ta sẽ chỉ nhập phương thức cụ thể đó.

twitterbot_textfile.py
# Add all import statements at top of file import tweepy from time import sleep from credentials import * ... 

Cập nhật trạng thái của account Twitter của ta sẽ đến từ các dòng từ verne.txt mà ta đã gán cho biến file_lines . Các dòng này cần được lặp lại, vì vậy ta sẽ bắt đầu bằng cách tạo một vòng lặp for . Để đảm bảo mọi thứ đang hoạt động, hãy sử dụng hàm print() để in các dòng đó ra:

twitterbot_textfile.py
import tweepy from time import sleep from credentials import *  auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)  my_file=open('verne.txt','r') file_lines=my_file.readlines() my_file.close()  # Create a for loop to iterate over file_lines for line in file_lines:     print(line) 

Nếu bạn chạy chương trình tại thời điểm này với lệnh python twitter_textfile.py , bạn sẽ thấy toàn bộ kết quả file verne.txt trên cửa sổ terminal của bạn vì ta không có mã nào khác hoặc yêu cầu dừng nó.

Thay vì nhận kết quả trong cửa sổ terminal , ta muốn mỗi dòng trở thành một tweet mới. Để làm điều này, ta cần sử dụng hàm api.update_status() . Điều này được sử dụng để cập nhật trạng thái của user đã xác thực, nhưng sẽ chỉ cập nhật nếu trạng thái là: 1) không trùng lặp hoặc 2) 140 ký tự trở xuống.

Hãy thêm hàm đó và chuyển biến line vào nó:

twitterbot_textfile.py
import tweepy from time import sleep from credentials import *  auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)  my_file=open('verne.txt','r') file_lines=my_file.readlines() my_file.close()  for line in file_lines:     print(line)     api.update_status(line) 

Bây giờ chương trình của ta được cài đặt để tweet dòng vào account của ta .

Xử lý ngoại lệ và thời gian Tweet

Với một chương trình đang làm việc tại thời điểm này, nếu ta chạy mã, dòng đầu tiên sẽ in ra. Tuy nhiên, ta sẽ không đi được xa trước khi nhận được lỗi:

Output
... tweepy.error.TweepError: [{'code': 170, 'message': 'Missing required parameter: status.'}]

Điều này là do dòng thứ hai trong file là một dòng trống không thể được sử dụng làm trạng thái. Để xử lý sự cố này, hãy chỉ in dòng nếu nó không phải là dòng trống. Ta sẽ thêm một if tuyên bố rằng trông như sau:

if line != '\n': 

Trong Python, \nký tự thoát cho các dòng trống, vì vậy câu lệnh if của ta đang cho chương trình biết, nếu dòng không bằng ( != ) Với một dòng trống, thì ta nên tiếp tục và in nó. Nếu không, Python sẽ bỏ qua dòng. Ta sẽ xem xét tuyên bố trong ngữ cảnh ngay bên dưới.

Một điều nữa ta nên bổ sung là sleep() đảm bảo rằng các tweet này không bị tắt cùng một lúc. Hàm sleep() hoạt động với đơn vị đo thời gian là giây, vì vậy nếu ta muốn một giờ giữa các tweet, ta nên viết hàm là sleep(3600) vì có 3.600 giây trong một giờ.

Đối với mục đích thử nghiệm của ta (và chỉ cho mục đích thử nghiệm của ta ), hãy sử dụng 5 giây để thay thế. Khi ta đang chạy Twitterbot thường xuyên, ta sẽ muốn tăng đáng kể thời gian giữa các tweet.

Bạn có thể thử với nơi bạn thêm sleep(5) - nơi ta đã đặt nó bên dưới sẽ gây ra độ trễ nhiều hơn một chút giữa các tweet vì sẽ có độ trễ ngay cả khi dòng trống.

twitterbot_textfile.py
import tweepy from time import sleep from credentials import *  auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)  my_file=open('verne.txt','r') file_lines=my_file.readlines() my_file.close()  for line in file_lines:   print(line)  # Add if statement to ensure that blank lines are skipped   if line != '\n':       api.update_status(line)  # Add an else statement with pass to conclude the conditional statement   else:       pass  # Add sleep method to space tweets by 5 seconds each   sleep(5) 

Khi bạn chạy chương trình tại thời điểm này - nếu bạn chưa chạy chương trình trước đó - bạn sẽ bắt đầu nhận được kết quả trên terminal của các dòng đầu tiên của file . Những dòng này cũng sẽ đăng lên account Twitter đã xác thực của bạn.

Tuy nhiên, nếu bạn đã chạy chương trình, bạn có thể nhận được lỗi sau:

Output
tweepy.error.TweepError: [{'code': 187, 'message': 'Status is a duplicate.'}]

Bạn có thể khắc phục điều này bằng cách xóa tweet trước đó khỏi account Twitter hoặc xóa dòng đầu tiên của file verne.txt và lưu nó.

Để ngăn chương trình xuất cập nhật trạng thái cho account Twitter của bạn, hãy nhấn giữ CTRL (hoặc CTRL control ) và phím C trên bàn phím để làm gián đoạn quá trình trong cửa sổ terminal của bạn.

Đến đây, chương trình của bạn có thể chạy, nhưng hãy xử lý lỗi mà ta gặp phải khi trạng thái trùng lặp. Để làm được điều đó, ta sẽ thêm một try ... except khối vào mã của ta và để console in ra lý do gây ra lỗi.

twitterbot_textfile.py
import tweepy from time import sleep from credentials import *  auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)  my_file=open('verne.txt','r') file_lines=my_file.readlines() my_file.close()  for line in file_lines: # Add try ... except block to catch and output errors     try:         print(line)         if line != '\n':             api.update_status(line)         else:             pass     except tweepy.TweepError as e:         print(e.reason)     sleep(5) 

Chạy chương trình ngay bây giờ sẽ xử lý các ngoại lệ để bạn có thể tiếp tục chạy chương trình. Bạn có thể sửa đổi thời gian giữa các tweet thành 15 phút, bằng cách sửa đổi chức năng sleep(5) thành sleep(900) .

Cải tiến Chương trình Twitterbot

Để tiếp tục cải thiện chương trình của bạn , bạn có thể xem xét việc xác định một số khối mã này dưới dạng hàm và thêm các hàm sleep() bổ sung để xử lý các tình huống khác nhau, như trong:

twitterbot_textfile.py
... # Tweet a line every 15 minutes def tweet():     for line in file_lines:         try:              print(line)              if line != '\n':                  api.update_status(line)                  sleep(900)              else:                 pass         except tweepy.TweepError as e:             print(e.reason)             sleep(2)  tweet() 

Khi bạn tiếp tục làm việc với các file bằng Python, bạn có thể tạo các tập lệnh riêng biệt để chia nhỏ các dòng của file theo cách có ý nghĩa hơn đối với bạn, lưu ý đến giới hạn 140 ký tự của tweet.

Đến đây, ta có một Twitterbot đầy đủ chức năng để tweet từ một file nguồn. Trong phần tiếp theo, ta sẽ xem xét một Twitterbot thay thế có chức năng retweet, theo dõi và yêu thích. Bạn cũng có thể bỏ qua phần Tiếp tục hoạt động của Twitterbot .

Twitterbot có lượt Retweets, Theo dõi và Yêu thích

Bằng cách sử dụng thư viện Tweepy, ta có thể cài đặt một Twitterbot có thể tweet lại và yêu thích các tweet của người khác, cũng như theo dõi những user khác. Trong ví dụ của ta , ta sẽ căn cứ vào các hành vi này để truy vấn một cụm từ tìm kiếm dưới dạng thẻ bắt đầu bằng #.

Cài đặt file chương trình

Để bắt đầu, hãy tạo một file Python có tên twitterbot_retweet.py . Ta nên thêm thông tin đăng nhập của bạn vào đầu file hoặc thêm các câu lệnh nhập và quyền truy cập vào từng khóa, bí mật và mã thông báo của ta thông qua file tin credentials.py mà ta đã tạo trong phần Lưu trữ thông tin đăng nhập ở trên. Ta cũng sẽ thêm 3 dòng để tương tác với các biến thông tin xác thực thông qua thư viện Tweepy.

twitterbot_retweet.py
# Import Tweepy, sleep, credentials.py import tweepy from time import sleep from credentials import *  # Access and authorize our Twitter credentials from credentials.py auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) 

Để tìm hiểu thêm về cách cài đặt này, hãy nhớ xem “ Cách tạo ứng dụng Twitter ”. Để tìm hiểu thêm về OAuth, bạn có thể đọc phần giới thiệu của ta .

Tìm Tweet dựa trên Truy vấn

Tiếp theo, ta sẽ tạo một vòng lặp for có thể lặp lại các tweet. Ta sẽ xem xét các tweet có thẻ #ocean, vì vậy ta sẽ sử dụng q='#ocean' để chạy truy vấn đó như một phần của các tham số của ta . Để bắt đầu, hãy để terminal của ta in ra tên user được liên kết với các tweet sử dụng thẻ #ocean và sau đó cũng giới hạn số lượng mục (hoặc tweet) được trả về là 10 để kết quả của ta không tiếp diễn trong thời gian dài:

# For loop to iterate over tweets with #ocean, limit to 10 for tweet in tweepy.Cursor(api.search,q='#ocean').items(10):  # Print out usernames of the last 10 people to use #ocean     print('Tweet by: @' + tweet.user.screen_name) 

Có rất nhiều tham số bổ sung mà ta có thể thêm vào vòng lặp for của bạn , bao gồm:

  • phạm vi ngày sử dụng sinceuntil (mặc dù lưu ý do các hạn chế của API, các tweet không được sớm hơn tuần trước)
  • một geocode lý sẽ tính theo vĩ độ, kinh độ và bán kính nhất định xung quanh vị trí đó tính bằng km
  • một ngôn ngữ cụ thể bằng cách sử dụng lang và đặt nó thành mã ISO 639-1 gồm 2 chữ cái cho ngôn ngữ bạn muốn chỉ định

Mặc dù kịch bản cụ thể này không thực sự mang lại bất kỳ kết quả nào , nhưng hãy giữ nguyên truy vấn của ta về #ocean, sau đó chỉ định khung thời gian là hai ngày để truy xuất các tweet, giới hạn vị trí của ta trong phạm vi 100km quanh Singapore và yêu cầu các tweet bằng tiếng Pháp. Để chơi xung quanh, bạn nên swap từng chuỗi để nhận được kết quả có ý nghĩa đối với bạn.

for tweet in tweepy.Cursor(api.search,                            q='#ocean',                            since='2016-11-25',                            until='2016-11-27',                            geocode='1.3552217,103.8231561,100km',                            lang='fr').items(10):     print('Tweet by: @' + tweet.user.screen_name) 

Để tìm hiểu thêm về các tham số khác nhau mà bạn có thể chuyển qua hàm này và các hàm Tweepy khác, hãy tham khảo Tài liệu tham khảo API Tweepy .

Đối với chương trình ví dụ của ta ở đây, ta sẽ chỉ tìm kiếm truy vấn #ocean. Bạn có thể để mở phương thức .items() , nhưng bạn có thể nhận được lỗi sau vì đã thực hiện quá nhiều yêu cầu và làm cạn kiệt tài nguyên:

Output
tweepy.error.TweepError: Twitter error response: status code = 429

Tất cả các mã lỗi và phản hồi đều có sẵn qua API Tweepy .

Xử lý ngoại lệ

Để cải thiện mã của ta , thay vì chỉ in tên user Twitter được liên kết, hãy sử dụng một số xử lý lỗi bằng cách try ... except khối. Ta cũng sẽ thêm một ngoại lệ StopIteration sẽ phá vỡ vòng lặp for.

twitterbot_retweet.py
import tweepy from time import sleep from credentials import *  auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)  for tweet in tweepy.Cursor(api.search, q='#ocean').items():     try:        print('Tweet by: @' + tweet.user.screen_name)      except tweepy.TweepError as e:         print(e.reason)      except StopIteration:         break 

Bây giờ ta có thể bắt đầu yêu cầu Twitterbot của bạn thực hiện một số hành động dựa trên dữ liệu đang được thu thập.

Đăng lại, yêu thích và theo dõi

Đầu tiên ta sẽ có các tweet tweet lại .retweet() . Ta cũng sẽ cung cấp phản hồi cho Terminal về những gì ta đã làm và thêm \n ngắt dòng để tổ chức kết quả này tốt hơn một chút:

twitter_retweet.py
import tweepy from time import sleep from credentials import *  auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)  for tweet in tweepy.Cursor(api.search, q='#ocean').items():     try:         # Add \n escape character to print() to organize tweets         print('\nTweet by: @' + tweet.user.screen_name)          # Retweet tweets as they are found         tweet.retweet()         print('Retweeted the tweet')          sleep(5)      except tweepy.TweepError as e:         print(e.reason)      except StopIteration:         break 

Trong khi chương trình đang chạy, bạn nên mở trình duyệt để kiểm tra xem những tweet lại này có đang đăng lên account Twitterbot của bạn hay không. Tài khoản của bạn sẽ bắt đầu được điền bởi lượt retweet và trông giống như sau:

Tài khoản Twitter hiển thị Retweets

Nếu bạn chạy chương trình nhiều lần, bạn có thể thấy rằng Twitterbot đang tìm lại các tweet tương tự, nhưng do xử lý ngoại lệ tweepy.TweepError , Twitterbot của bạn sẽ không retweet những điều này và thay vào đó cung cấp kết quả sau:

Output
[{'message': 'You have already retweeted this tweet.', 'code': 327}]

Ta có thể thêm chức năng để Twitterbot yêu thích tweet được tìm thấy và theo dõi user đã tạo ra tweet đó. Điều này được thực hiện theo một cú pháp và kiểu tương tự với định dạng để đăng lại.

twitterbot_retweet.py
import tweepy from time import sleep from credentials import *  auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)  for tweet in tweepy.Cursor(api.search, q='#ocean').items():     try:         print('\nTweet by: @' + tweet.user.screen_name)          tweet.retweet()         print('Retweeted the tweet')          # Favorite the tweet         tweet.favorite()         print('Favorited the tweet')          # Follow the user who tweeted         tweet.user.follow()         print('Followed the user')          sleep(5)      except tweepy.TweepError as e:         print(e.reason)      except StopIteration:         break 

Bạn có thể nhận thấy rằng việc xử lý lỗi Tweepy không chiếm cho user đã được theo sau, vì vậy ta có thể giới thiệu một if tuyên bố trước .user.follow() chức năng:

...         if not tweet.user.following:             # Don't forget to indent             tweet.user.follow()             print('Followed the user') ... 

Bạn có thể tiếp tục sửa đổi mã này theo ý thích của bạn và giới thiệu thêm các cách xử lý các tình huống khác nhau.

Bây giờ ta hãy tìm hiểu cách giữ cho Twitterbot này chạy trên server của ta .

Giữ cho Twitterbot hoạt động

Bởi vì Twitterbots thực hiện các việc liên tục và tự động, bạn có thể cần chương trình tiếp tục chạy ngay cả khi máy tính của bạn đang ngủ hoặc đã tắt. Với một server , bạn có thể giữ cho chương trình của bạn hoạt động bao lâu tùy thích.

Trong ví dụ này, ta sẽ sử dụng twitter_retweet.py file , nhưng bạn cũng có thể sử dụng twitterbot_textfile.py file , hoặc bất kỳ file Twitterbot khác mà bạn đã tạo. Đảm bảo rằng tất cả các file được liên kết có sẵn trong cùng một folder của server .

Lưu ý: Trước khi giữ cho một trong những chương trình này chạy, tốt nhất bạn nên sửa đổi chương trình của bạn để dành nhiều thời gian hơn cho các chức năng sleep() có liên quan vì Twitterbot của bạn sẽ chạy 24/7 cho đến khi bạn dừng nó theo cách thủ công (hoặc cho đến khi file văn bản bạn vượt qua nó là hoàn thành). Hãy nhớ lại rằng hàm sleep() mất vài giây làm tham số của nó, vì vậy sleep(3600) sẽ tính thời gian cho các tweet của bạn xuất hiện mỗi giờ, sleep(7200) sẽ tính thời gian cho các tweet của bạn xuất hiện hai giờ một lần, v.v. Bạn tweet càng thường xuyên, đặc biệt là với một thẻ bắt đầu bằng # nhất định, Twitterbot của bạn càng có nhiều khả năng nhận được sự chú ý không mong muốn và làm phiền những user khác khiến account của bạn bị khóa. , hãy tham khảo các luật Tự động hóa của Twitter và các phương pháp hay nhất nếu bạn không chắc chắn về cách tốt nhất để sử dụng Twitterbot của bạn .

Để giữ cho chương trình Twitterbot của ta tiếp tục chạy, ta sẽ sử dụng lệnh nohup bỏ qua tín hiệu gác máy (HUP). Bằng cách sử dụng nohup , kết quả thường xuất hiện trong cửa sổ terminal thay vào đó sẽ in ra file có tên nohup.out .

Đảm bảo rằng bạn đang ở trong môi trường Python của bạn với quyền truy cập vào thư viện Tweepy và trong folder chứa file chương trình Python của bạn và nhập lệnh sau:

  • nohup python twitterbot_retweet.py &

Bạn sẽ nhận được kết quả với một số trong dấu ngoặc ( [1] nếu đây là quá trình đầu tiên bạn bắt đầu) và một chuỗi số:

Output
[1] 21725

Đến đây, hãy xác minh Twitterbot của bạn đang chạy bằng cách kiểm tra trang Twitter của account của bạn. Ít nhất một tweet mới nên được đăng trước khi chương trình chuyển sang chức năng sleep() của bạn. Nếu tweet mới không có ở đó, bạn có thể xem file nohup.out bằng editor văn bản như nano:

  • nano nohup.out

Kiểm tra xem có lỗi không và thực hiện các sửa đổi đối với chương trình nếu cần, kết thúc quá trình, sau đó chạy lại lệnh nohup và kiểm tra account Twitter của bạn để tìm tweet mới.

Khi bạn đã xác minh Twitterbot của bạn đang chạy, hãy sử dụng logout để đóng kết nối với server của bạn.

  • logout

Nếu bạn giữ tiến trình của bạn chạy trong một thời gian dài mà không giám sát nó và tùy thuộc vào dung lượng server của bạn, nohup.out có thể lấp đầy dung lượng ổ đĩa của bạn. Khi muốn hoặc cần, bạn có thể dừng Twitterbot của bạn bằng cách đăng nhập lại vào server và sử dụng lệnh kill . Bạn sẽ sử dụng lệnh này với chuỗi số đã được tạo ở trên. Trong ví dụ của ta , ta sẽ sử dụng kill 21725 . Vì bạn có thể không còn có sẵn số đó nữa, bạn có thể dễ dàng truy xuất chuỗi số bằng cách chạy lệnh ps cho trạng thái quy trình và cờ -x để bao gồm tất cả các quy trình không được gắn vào terminal :

  • ps -x

Bạn sẽ nhận được kết quả trông giống như sau:

Output
PID TTY STAT TIME COMMAND 21658 ? Ss 0:00 /lib/systemd/systemd --user 21660 ? S 0:00 (sd-pam) 21725 ? S 0:02 python twitterbot_retweet.py 21764 ? S 0:00 sshd: sammy@pts/0 21765 pts/0 Ss 0:00 -bash 21782 pts/0 R+ 0:00 ps xw

Bạn sẽ thấy chương trình Python của bạn đang chạy, trong trường hợp của ta là ID của nó là 21725 , ở dòng thứ ba. Bây giờ ta có thể dừng quá trình:

  • kill 21725

Nếu bạn chạy lại lệnh ps -x , quá trình của Twitterbot Python sẽ không còn ở đó nữa.

Kết luận

Hướng dẫn này đã hướng dẫn cách cài đặt và chạy hai version Twitterbots khác nhau để tự động tương tác với nền tảng mạng xã hội Twitter. Còn nhiều việc khác mà bạn có thể làm với API Twitter và với các thư viện như Tweepy giúp các nhà phát triển dễ dàng sử dụng Twitter.

Từ đây, bạn cũng có thể đi sâu hơn vào thư viện Tweepy và API Twitter để tạo danh sách, thêm user vào danh sách, tương tác với tin nhắn trực tiếp và phát trực tuyến với Twitter để download các tweet trong thời gian thực. Bạn cũng có thể cân nhắc kết hợp chức năng của hai Twitterbots mà ta đã tạo ở trên. Ngoài việc tạo các Twitterbot tương tác, bạn cũng có thể khai thác dữ liệu đáng kể bằng cách sử dụng API Twitter.


Tags:

Các tin liên quan

Cách tạo ứng dụng Twitter bằng Python
2016-11-23
Cách tạo ứng dụng Twitter bằng Python
2016-11-23
Hiểu Logic Boolean trong Python 3
2016-11-17
Cách tạo chương trình máy tính bằng Python 3
2016-11-16
Cách tạo chương trình máy tính bằng Python 3
2016-11-16
Cách sử dụng các phương thức danh sách trong Python 3
2016-11-11
Các hàm Python 3 tích hợp để làm việc với các số
2016-11-08
Cách vẽ dữ liệu trong Python 3 bằng matplotlib
2016-11-07
Hiểu danh sách trong Python 3
2016-11-02
Cách làm Toán bằng Python 3 với Toán tử
2016-11-01