Linux中國

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

向下滾動頁面,使用「 創建我的訪問令牌 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_idget_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 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國