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を触るのに必須なライブラリ
今回使うのはrequestsとrequests-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
コメント
[…] 暇人の研究室PythonでTwitter API を利用してBotを作る その①https://tkstock.site/2018/05/27/post-309/TwitterでBotを作る今回はTwitterで一定時間ごとにツイートしたりするBotを作っていきたいと思い […]
[…] ミナピピンの研究室【Python】TwitterのAPI を利用してBotを作る その①https://tkstock.site/2018/05/27/post-309/ TwitterでBotを作る 今回はTwitterで一定時間ごとにツイートしたりするBotを作っ […]
[…] 関連記事:PythonでTwitter API を利用してBotを作る その① […]