どうも、こちょすです。
今回はTwitter Bot(ボット)の作り方について書いていきます!
みなさんすでにご存知の方も多いと思いますが、
このブログはえるさんとの共同ブログとして運営しています。
/
実はTwitterで「これおブログ専用の公式アカウント」が存在することを知っていますか?(笑)
知らなかったという人は要チェック!新しい記事がでたらこのアカウントでお知らせしています!
👇👇👇
\
基本的には各々のアカウントでつぶやいているのですが、
・公式アカウントを作成したからには公式でも呟きたい!
・でも2回ツイートするのはめんどくさい!
というえるさんのご要望があったわけです。
ブログ記事を満を持して公開したら、ツイッターで告知したいですよね?
(だって見てもらいたいじゃないですか笑)
そこで僕は、情報を拡散していきたい!となったら、自動で個人アカウントのツイートをリツイートしてくれたらとても便利なのでは???と思いました。
というわけで、今回はpythonのライブラリ、Tweepyを使って、自動リツイートをしてくれるtwitter botを作って行こうと思います。
目次
やりたいことの整理
まずはやりたいことの整理から!
1 特定のキーワードを含むツイートを検索する
2 検索にヒットしたツイートをリツイートする
この2つが実装できればOKとしましょう!
Tweepyとは?
一言で言えば、
「pythonでtwitterを扱うライブラリ」
です。
これを使うことで、簡単にtwitterに対して処理を行うことができます。他にもtwitter関連のライブラリはありますが、今はtweepyがもっともポピュラーといえるでしょう。
【STEP0】 TwitterAPIへの登録
Step0があるから4Stepやないかーい!と思った方、大正解です、すみません、、、笑
ただしStep0はすぐに終わりますので、ぜひこのまま読み進めていただければと思います!!🙏
まず第一歩はTwitterAPIへの登録をしましょう!
APIとは?
APIってなに?聞いたことあるけどよくわからない、、、という方も多いと思うので、まずはそこから少し説明します!
色々イメージを探して見たのですが、これがわかりやすいかなと思い、引用させていただきました!(英語ですがびびらなくても大丈夫です!)
普通はユーザの私たちは「Webサーバにリクエスト(GET)を投げる」と、HTMLファイルを返してくれます。
すると、なんかいい感じにレンダリング(整形)されて、
ページが表示されるわけですが、APIの場合にはRawデータが返されます。
Rawというのは「生の」という意味で、つまりデータだけが返されます!
データの形式は色々で、jsonだったり、csvだったりxmlだったりなので、使いたいAPIがどんな形式を返すのかは確認するようにしましょう!
というわけで、botの作成にとりかかりましょう!
やるべきSTEPは大きく3つ!
1 Twitter Developer アカウントの作成
2 API上でアプリ登録
3 pythonコーディング
たったのこれだけ!実はすごーく簡単なのです!
【STEP1】 Twitter Developer アカウントの作成
まず自分のアプリケーションからTwitterを操作するために、Twitterに申請する必要があります。
普段自分が呟いているアカウントとは別のアカウント(アプリ開発者としてのアカウント)が必要なので、まだ登録していない人は登録しましょう!
まずTwitterのDevloperサイトに行きます。
この右上のApplyボタンを押します。
次に、この中央にある「Apply for a developer account」を押しましょう。
ボタンを押すと目的を聞かれるので、
今回は「Making a bot」を選んで右下の青ボタン「Next」を押します。
※次のページでは自分の普段使っているアカウントが聞かれます。あっているか確認した上で、もし複数アカウント持っていて、変更したい場合には「Switch @username」から変更しましょう。
下の方には自分の住んでいる国と、自分の呼称(名前)を書くところがあるので埋めてください。
今回は「Japan/kochos」としています。
次のページでは、アンケートのようなものを書いて行きます。
英語で書く必要があるので注意が必要ですが、簡単なもので構いません。
(英語が苦手な人はグーグル翻訳でOK)
ここまで終わると、以下のような画面に遷移するので、左下のチェックを入れて提出しましょう。
注意点:
Server error - application not submitted User must have verified email on file prior to submitting application
のようなエラーがでる場合があります。これはTwitterのアカウントにメールアドレスが登録されていない場合に出るので、メールアドレスを別ブラウザで設定上で、サイドボタンを押してみてください!
これで以下のような画面が出れば申請は完了です!
メールが来るので、メールを確認して、有効化したら完了です。
【STEP2】 API上でアプリ登録
次はAPLの登録です。
1の登録がうまくいくと、トップページから、自分のアカウントで「Apps」が見れるようになります。これを押しましょう。
遷移先の画面の右上にあるCreate Appsを押します。
ポイント:
Website URLとCallback URLというところに何を登録すればいいの??という方もいると思いますが、ここは自分のtwitterアカウントのトップページのURLでも登録しておけばOKです。
登録が完了すると、以下のようにAPIkeyが発行されます。
アクセストークンのところにあるGenerateを押します。するとトークンが発行されます。
注意:
ここで発行されるトークンはメモをしておきましょう!
もしも忘れてしまったとしてもregenerateで再発行すればOKです。
これでこの手順は完了です。
【STEP3】 pythonコーディング
では次はようやくPythonコードを書いていきましょう!
3-1 tweepyのインストール
今回はtweepyというライブラリを使うので、pipでインストールしましょう。
pip install tweepy
3-2 APIの設定
先ほど取得したAPIのキーを使って、tweepyオブジェクトを生成します。
command import tweepy print('this is koleoblog twitter bot!') CONSUMER_KEY = 'XXXXXYiFiTXPTXUVl0efXXXXX' CONSUMER_SECRET = 'XXXXXWKLErbF3O9bmU4xj3CG3mZ9kbSRqdCBCDgj3hLyzXXXXX' ACCESS_KEY = 'XXXXX09209594048514-PmotsMH5u929Vv5OmIukl5xA0XXXXX' ACCESS_SECRET = 'XXXXXTXKM5S0gdN9M1WfZ8dI2P9H5RbsJRStWtDGXXXXX' auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) api = tweepy.API(auth, wait_on_rate_limit=True)
最後のapiのところで指定している「wait_on_rate_limit=True」は、大量データを処理するときに、「APIの利用制限に引っかかった時に、必要時間だけ待機してくれる」という設定になります。
今回使うtwitterAPIは15分につき15回という制限があります。
そのため、この制限にかかってしまった場合に備えて指定しています。
3−3 ロジックのコーディング
では今回やりたいことをコーディングしていきましょう!
改めて、今回やりたいことは以下の2点でした。
1 特定のキーワードを含むツイートを検索する
2 検索にヒットしたツイートをリツイートする(またはLikeする)
実はとっても簡単なんです!
こんな感じ!↓ ↓ (今回はLikeするように実装しています)
keyword = 'javascript'
tweet_count = 3
for tweet in tweepy.Cursor(api.search, keyword).items(tweet_count):
try:
print('Tweet liked')
tweet.favorite()
time.sleep(10)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break
command
検索したいワードを変数に入れ、それをtweepyAPIのsearch関数に渡してあげるだけ!
あとはforで回して、見つかったツイートをお気に入り(tweet.favorite())をしています。
リツイートがしたい場合には、tweet.retweet()
とすればOKです!
また、今回はキーワード検索をしていますが、ある特定のユーザのツイートをお気に入りやリツイートしたい場合には
keywordの部分にユーザID(@無し)で指定し、api.searchの代わりにuser_timelineを使えばOKです!
あとはターミナルから、以下のコマンドを打てば自動的に動いてくれます。
command
python twitter_bot.py