【Python】TwitterのAPI を利用してBotを作る その①

この記事は約6分で読めます。

 

 

TwitterでBotを作る

 

今回はTwitterで一定時間ごとにツイートしたりするBotを作っていきたいと思います。Botを作るためにはTwitterが公開しているAPIを使うと簡単にできます。

 

 

 

 

TwitterのAPI管理サイト(https://apps.twitter.com/)にアクセスし、対象のアカウントでログインしましょう。ログインすると、Create New App(新しいアプリケーションを作成する)ボタンが表示されるのでクリックします。

 

 

 

 

必須情報の入力を求められますが、適当で問題ありません。(ただ2018年以降はアカウントに携帯電話番号を紐づけないとAPI鍵が作成できないみたいです。)そして下部のCreate your Twitter applicationボタンをクリックします。

 

 

アクセストークンの発行

 

初期では、Access TokenとAccess Token Secretは発行されていないので、同ページ下部のCreate my access tokenボタンをクリックして、生成する必要があります。つまり、Twitter API の OAuth 認証を行うには以下の4つの key が必要ということになります。

 

Consumer key
Consumer secret
Access token
Access token secret

 

 

 

スポンサーリンク

TwitterのAPIを触るのに必須なライブラリ

 

今回使うのはrequestsrequests-oauthlibというライブラリです。requestはスクレイピングとかしている人にはお馴染みのAPI操作ライブラリで、requests-oauthlibはoauth認証を簡単にするためのライブラリです。

 

 

 

 

ツイートを投稿

 

from requests_oauthlib import OAuth1Session
CK = 'XXXXXXXXXXXXXXXXXXXXXX' # Consumer Key
CS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Consumer Secret
AT = 'XXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Access Token
AS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Accesss Token Secert


# ツイート投稿用のURL
url = "https://api.twitter.com/1.1/statuses/update.json"

# ツイート本文
params = {"status": "Hello, World!"}

# OAuth認証で POST method で投稿
twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.post(url, params = params)

# レスポンスを確認
if req.status_code == 200:
    print ("OK")
else:
    print ("Error: %d" % req.status_code)

https://qiita.com/yubais/items/dd143fe608ccad8e9f85より引用

 

 

タイムラインの取得

 

# タイムライン取得用のURL 
url = "https://api.twitter.com/1.1/statuses/home_timeline.json"

# とくにパラメータは無い
params = {}

# タイムラインを取得する
twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.get(url, params = params)

if req.status_code == 200:
    # レスポンスはJSON形式なので parse する
    timeline = json.loads(req.text)
    # 各ツイートの本文を表示
    for tweet in timeline:
        print(tweet["text"])
else:
    # エラーの場合
    print ("Error: %d" % req.status_code)

 

 

あとはURLとparamsを書き換えればほぼ何でも出来るみたいです。提供されているAPIの一覧はこちら。(英語)→https://dev.twitter.com/docs/api/1.1

 

 

API制限

 

APIを使う場合はサーバーに負荷をかけ過ぎないようにアクセス頻度を制限されることがありTwitterの場合は15分に15回という設定になっているので注意しましょう。

 

 

ここから何ができるか

 

  • 検索APIを使って特定キーワードのツイートを蓄積する
  • user_timeline で特定ユーザーのツイートを集めて並べて愉しむ
  • crontab で定期ツイート投稿してbotを作る

 

これらを駆使するとびよーんみたいな非公式クライアントアプリが作れたりします。

 

 

関連記事:【Python】Tweepyで検索に引っかかったツイートを自動ファボ

関連記事:【Python】Tweepyで相互フォローの確認&フォロバとリムーブ

関連記事:【2019年版】Python+Seleniumでツイッターに自動ログインする

 

 

 

 

 

参考:https://qiita.com/yubais/items/dd143fe608ccad8e9f85

 

コメント

  1. […]  暇人の研究室PythonでTwitter API を利用してBotを作る その①https://tkstock.site/2018/05/27/post-309/TwitterでBotを作る今回はTwitterで一定時間ごとにツイートしたりするBotを作っていきたいと思い […]

タイトルとURLをコピーしました