學習如何使用 Python 構建你自己的 Twitter 機器人
Twitter 允許用戶將博客帖子和文章分享給全世界。使用 Python 和 Tweepy 庫使得創建一個 Twitter 機器人來接管你的所有的推特變得非常簡單。這篇文章告訴你如何去構建這樣一個機器人。希望你能將這些概念也同樣應用到其他的在線服務的項目中去。
開始
tweepy 庫可以讓創建一個 Twitter 機器人的過程更加容易上手。它包含了 Twitter 的 API 調用和一個很簡單的介面。
下面這些命令使用 pipenv
在一個虛擬環境中安裝 tweepy。如果你沒有安裝 pipenv
,可以看一看我們之前的文章如何在 Fedora 上安裝 Pipenv。
$ mkdir twitterbot
$ cd twitterbot
$ pipenv --three
$ pipenv install tweepy
$ pipenv shell
Tweepy —— 開始
要使用 Twitter API ,機器人需要通過 Twitter 的授權。為了解決這個問題, tweepy 使用了 OAuth 授權標準。你可以通過在 https://apps.twitter.com/ 創建一個新的應用來獲取到憑證。
創建一個新的 Twitter 應用
當你填完了表格並點擊了「 創建你自己的 Twitter 應用 」的按鈕後,你可以獲取到該應用的憑證。 Tweepy 需要 用戶密鑰 和 用戶密碼 ,這些都可以在 「 密鑰和訪問令牌 」 中找到。
向下滾動頁面,使用「 創建我的訪問令牌 」按鈕生成一個「 訪問令牌 」 和一個「 訪問令牌密鑰 」。
使用 Tweppy —— 輸出你的時間線
現在你已經有了所需的憑證了,打開一個文件,並寫下如下的 Python 代碼。
import tweepy
auth = tweepy.OAuthHandler("your_consumer_key", "your_consumer_key_secret")
auth.set_access_token("your_access_token", "your_access_token_secret")
api = tweepy.API(auth)
public_tweets = api.home_timeline()
for tweet in public_tweets:
print(tweet.text)
在確保你正在使用你的 Pipenv 虛擬環境後,執行你的程序。
$ python tweet.py
上述程序調用了 home_timeline
方法來獲取到你時間線中的 20 條最近的推特。現在這個機器人能夠使用 tweepy 來獲取到 Twitter 的數據,接下來嘗試修改代碼來發送 tweet。
使用 Tweepy —— 發送一條推特
要發送一條推特 ,有一個容易上手的 API 方法 update_status
。它的用法很簡單:
api.update_status("The awesome text you would like to tweet")
Tweepy 拓展為製作 Twitter 機器人準備了非常多不同有用的方法。要獲取 API 的詳細信息,請查看文檔。
一個雜誌機器人
接下來我們來創建一個搜索 Fedora Magazine 的推特並轉推這些的機器人。
為了避免多次轉推相同的內容,這個機器人存放了最近一條轉推的推特的 ID 。 兩個助手函數 store_last_id
和 get_last_id
將會幫助存儲和保存這個 ID。
然後,機器人使用 tweepy 搜索 API 來查找 Fedora Magazine 的最近的推特並存儲這個 ID。
import tweepy
def store_last_id(tweet_id):
""" Stores a tweet id in text file """
with open('lastid', 'w') as fp:
fp.write(str(tweet_id))
def get_last_id():
""" Retrieve the list of tweets that were
already retweeted """
with open('lastid') as fp:
return fp.read()
if __name__ == '__main__':
auth = tweepy.OAuthHandler("your_consumer_key", "your_consumer_key_secret")
auth.set_access_token("your_access_token", "your_access_token_secret")
api = tweepy.API(auth)
try:
last_id = get_last_id()
except FileNotFoundError:
print("No retweet yet")
last_id = None
for tweet in tweepy.Cursor(api.search, q="fedoramagazine.org", since_id=last_id).items():
if tweet.user.name == 'Fedora Project':
store_last_id(tweet.id)
#tweet.retweet()
print(f'"{tweet.text}" was retweeted')
為了只轉推 Fedora Magazine 的推特 ,機器人搜索內容包含 fedoramagazine.org 和由 「Fedora Project」 Twitter 賬戶發布的推特。
結論
在這篇文章中你看到了如何使用 tweepy 的 Python 庫來創建一個自動閱讀、發送和搜索推特的 Twitter 應用。現在,你能使用你自己的創造力來創造一個你自己的 Twitter 機器人。
這篇文章的演示源碼可以在 Github 找到。
via: https://fedoramagazine.org/learn-build-twitter-bot-python/
作者:Clément Verna 選題:lujun9972 譯者:Bestony 校對:校對者ID
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive