最近の @hatebu のツイートがホットな話題じゃないので新しい BOT を作ってみた
BOT 作ってみた
2015年12月版。 ruby で BOT を作ってみたのでそのログを。
twitter と @hatebu
みなさんは twitter で公式のはてなブックマーク ホットエントリー @hatebu をフォローされてるでしょうか?
僕は以下の理由でフォローしていました。
- twitter をそもそもよく使う
- 公式アプリを使ってザッピングするまでではない
- twitter 上で勝手に情報が流れてくる便利さ
- 自分のタイムラインが最新であれば、はてブの内容も新しい物が流れてくる
そこまで「全部見なきゃ!」って思うほどじゃないので、 twitter 追うくらいで適度なんです。
ところが【●年前の話題】 が最近出てきた
twitter で追ってる便利さがあったわけだったのですが、まさかですよ。
最新のツイートに【10年前の話題】とか出てきて、それ開いてもプログラミング系の話題は全然有益じゃないし、はてブのヘビーユーザだった学生の時に見ていた記事が出てくるんです。 Hotentry っていう名前でやってるのに 古い話題ってホットなんでしょうか?
そんなことを沸々とここ数日くらい思っていました。
それだったら、 NG ワード機能でいいんじゃない?
公式の twitter アプリ では NG ワード設定ができたりします。
でもウェブから見る時には使えないし(よね?)、Chrome の拡張機能としても逆にアプリからは見えるので別途設定する必要があるし…
だったら、「どこから見ても同じでフォローするだけでいい BOT 作っちゃえばいいんじゃないか」ってことで いつの間にか @hatebu の最新の話題だけをリツイートする BOT を作っていました。
「リツイートじゃなくてもツイートすればいいのでは」となると、パクツイになってしまうのであまり良くないですね…
※もっといいアイディアあれば教えて下さい
ということで、久々に BOT を作ってみたのでそのログを。
探せばある情報ばかりですが一応。
※ github にベースとなるコードをアップしているのでこちらを参考に。
※ ruby がインストールされている前提
https://github.com/ma3tk/retweeter
1. まずは twitter で BOT 用アカウントを作る
2. その BOT アカウントで以下のサイトでアプリケーションを作る
アプリケーションの作成。
Create New App -> 必須項目を適当に埋めて 作成。
Keys and Access Tokens から、
Consumer Key、Consumer Secret をメモ。
Create my access token で Access Token、Access Token Secret を作成し、メモ。
3. ソースコードダウンロードして準備
https://github.com/ma3tk/retweeter
$ cd ~ $ git clone https://github.com/ma3tk/retweeter.git $ cd retweeter $ bundle install
4. ファイルをいじる
$ vim retweet.rb
diff --git a/retweet.rb b/retweet.rb index 45f575e..e80e03f 100644 --- a/retweet.rb +++ b/retweet.rb @@ -1,14 +1,14 @@ require 'twitter' # Set specific screen_name -screen_name = "" +screen_name = "hatebu" # Input yours client = Twitter::REST::Client.new( - consumer_key: '', - consumer_secret: '', - access_token: '', - access_token_secret: '', + consumer_key: '先ほどメモった consumer key', + consumer_secret: '先ほどメモった consumer secret', + access_token: '先ほどメモった access token', + access_token_secret: '先ほどメモった access token secret', ) # Get since_id from text file @@ -38,13 +38,10 @@ # timeline.each{|tl| -=begin # If you want not to retweet that includes specific word - if !tl.text.index("") then + if !tl.text.index("年前の話題】") then client.retweet(tl) end -=end - client.retweet(tl) }
こんな感じで直します。
7. サーバの crontab に 5分おきくらいで登録します
$ crontab -e
*/5 * * * * cd /home/hoge/retweeter; ruby retweet.rb
フォルダは適宜変えてください。
やっていること
- crontab で 5分おきにプログラムを実行
- since_id.txt に前回まで見たツイートのIDを取得し、使い終わったら更新する
- twitter から 特定のユーザ(@hatebu) のツイートを取得し、特定の文字列が入っていないツイートだけリツイートする
実際に運用し始めたアカウント
注意
今回のコードは BOT がリツイートすることになるので、
- ブロックされるとリツイートできなくなる
- リツイート通知が該当のアカウントに行く
- サーバが止まるとリツイートがされなくなる
といったリスクもあります。注意して使ってください。
最後に
久々に BOT 作ってみましたが、たまには初心に帰ってこういう BOT 作るのもいいですよね。 ほしい時にこのコード書くの大変だったので github に up しておいてまた将来困ったときに使えるといいなと思っています。
これを応用して
- 100RT とかで似たようなツイートを見ないようにする
- 【定期】とか入ってるツイートが見えなくなる
とかもできますね。
この記事と BOT がどなたかのお役に立てれば。