PythonでTwitterAPIを使って色々遊んでみたので記録。
今回は、
・ツイートの投稿
・特定のユーザーのツイート取得
・指定したキーワードを含むツイートの自動いいね
の3つのプログラムを作った。
もくじ
TwitterAPIの使い方
例によってAPIの登録方法に関しては、わかりやすくまとめてくれてる記事があるので割愛!
参考記事はこちら。
PythonでTwitter API を利用していろいろ遊んでみる
公式はこちら。
残念ながらLINEMessagingAPIほどドキュメントはわかりやすくなかった。
Twitter Developer Platform
どうやらTwitterAPIはOAuth1.0で認証を行っているらしい。
GoogleAPIは2.0だったので、ちょっと古いのかな?
OAuth認証に関しては理解が浅いので詳細は割愛。
このサイトでかなり詳細に解説してくれてるので、今度じっくり読む予定・・・。
・・・ほんとに読むよ!
ほらね、動くもの作る前に基礎理論理解しようとすると挫折するしね。
ざっくり、URLやら何やらをまとめて暗号化して送信することで、他人に乗っ取られたりさせないための仕組み?程度の理解で先に進む!
TwitterAPIの制限
さぁTwitterAPIで遊ぼう!
と、その前に。
どうやらTwitterAPIには、アクションごとに回数制限があるようなのでそれを先に確認しておく。
こちらの早見表が便利。
レート制限: 早見表
まぁでも個人で遊ぶ分にはあんまり関係なさそう。
ツイートの投稿
まずはツイート投稿のコードから。
これは正直PythonでTwitter API を利用していろいろ遊んでみるの丸コピなので、もしかしたらあんまりよろしくないかも。
この後のコードとの比較としてどうしても載せたかった。
こっちは、TwitterAPIとの接続にrequests_oauthlibを用いてる。
これより、次のコードで使ってるTweepyの方がずっと使いやすくて便利なのでおすすめ。
コードの解説は割愛。詳細は参考サイトに。
from flask import Flask, request, abort, render_template,redirect from requests_oauthlib import OAuth1Session import requests app = Flask(__name__) CK = 'Consumer Key' CS = 'Consumer Secret' AT = 'Access Token' AS = 'Accesss Token Secer' # ツイート投稿用のURL url = "https://api.twitter.com/1.1/statuses/update.json" @app.route('/') def main(): # ツイート本文 params = {"status": "このツイートはPythonとtwitterAPIを用いてツイートしてます。"} # 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) if __name__ == '__main__': main()
特定のユーザーのツイート取得
こっちのコードはTweePyで実装。
Tweepyは、PythonでTwitterを扱うためのモジュール。
とっても使いやすくてわかりやすいドキュメントに感動した。
公式ドキュメントはこちら。
Tweepy Documentation
from flask import Flask, request, abort, render_template,redirect import tweepy app = Flask(__name__) CK = 'Consumer Key' CS = 'Consumer Secret' AT = 'Access Token' AS = 'Accesss Token Secer' @app.route('/') def main(): auth = tweepy.OAuthHandler(CK, CS) auth.set_access_token(AT, AS) api = tweepy.API(auth) tweets = api.user_timeline(id='ID',count=10) for tweet in tweets: print(tweet.text) if __name__ == '__main__': main()
上のコードは、IDで指定したユーザーの投稿を取得して表示する。
これで有益なツイートしてくれる人の投稿だけテキストファイルにしたり、BOTで転送したりできるね!
このコードのままだとメンションもすべて拾ってしまうので何か対策は必要だろうけど。
指定したキーワードを含むツイートの自動いいね
最後は、今回作った中で一番役に立ってるプログラム。
指定したキーワードを含むツイートを自動でふぁぼってくれる便利プログラム。
今はチャットボットに組み込んで、LINEからキーワード入力を行っている。
なんと、昨日これを作ってから一日でフォロワーが30人くらい増えた。
驚き。
有益なのでなんとか配れる形にしたいんだけど、規約とか大丈夫なんかな?
もしいけるならElectronかLINEBotでみんなが使えるようにして配布する予定。
from flask import Flask, request, abort, render_template,redirect import tweepy from time import sleep app = Flask(__name__) CK = 'Consumer Key' CS = 'Consumer Secret' AT = 'Access Token' AS = 'Accesss Token Secer' @app.route('/') def main(): auth = tweepy.OAuthHandler(CK, CS) auth.set_access_token(AT, AS) api = tweepy.API(auth) i = 1 tweets = api.search(q='Progate',count=100) for tweet in tweets: tweet_id = tweet.id try: api.create_favorite(tweet_id) except: next sleep(0.3) return"ok" if __name__ == '__main__': main()
まとめ
とりあえず今回は3つのプログラムを作って遊んでみた。
TwitterAPIの勉強始めてから数時間で色々作れた。
相変わらずPythonは何でも簡単に作れるなぁ。
プログラミングとても楽しい。
とはいえ、もっと基礎理論とかも学んでいきたい。
開発に逃げるなー、って感じだ。
そろそろ次のステップを意識しよう。
自動ふぁぼ機能使いたいです
公開は出来そうですか?
返信遅くなりました!
機能自体はできてるので公開可能です!
記事化したらまたこちらに返信しますね!
お待たせしました…!
こちらでWEBアプリとして公開してますので、よければ使ってください。
日本一シンプルなTwitterBOT
[…] Twitterで自動ふぁぼ!PythonでTwitterBOTをつくる。 […]