當前位置:
首頁 > 知識 > 學習如何使用 Python 構建你自己的 Twitter 機器人

學習如何使用 Python 構建你自己的 Twitter 機器人

學習如何使用 Python 構建你自己的 Twitter 機器人


編譯自: https://fedoramagazine.org/learn-build-twitter-bot-python/

作者: Clément Verna

譯者: Bestony

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 應用(Create your Twitter application)」的按鈕後,你可以獲取到該應用的憑證。 Tweepy 需要 用戶密鑰(API Key)和 用戶密碼(API Secret),這些都可以在 「 密鑰和訪問令牌(Keys and Access Tokens)」 中找到。

學習如何使用 Python 構建你自己的 Twitter 機器人

向下滾動頁面,使用「 創建我的訪問令牌(Create my access token)」按鈕生成一個「 訪問令牌(Access Token)」 和一個「 訪問令牌密鑰(Access Token Secret)」。


使用 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

本文由 LCTT 原創編譯, Linux中國 榮譽推出

點擊「了解更多」可訪問文內鏈接

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux技術 的精彩文章:

IT 自動化的下一步是什麼:6 大趨勢
調試器到底怎樣工作

TAG:Linux技術 |