RubyでTwitterに投稿してみた
もうあらゆるところで解説されまくってる感じのネタだけど、やってみた。
自分のTwitterアカウントにツイートを投稿するだけなら超カンタン。
目標
自分のTwitterアカウントにRubyプログラムからツイートを投稿する。だけ。なので例えば以下のようなことは今回はしない。
- サービスとして公開して任意のTwitterアカウントと連携
- 指定した時刻での自動投稿
ツイート内容は(なんでもいいんだけど)、その日の年における通算日付にする(RubyのTime#yday
。2/1なら32日目)。簡単に実装できて、日付ベースだから今後毎日自動投稿とかにしたときに相性がよさそう。
環境
アプリを登録する
以下のページの[Create New App]からアプリ登録する。
Twitter Application Management
Name, Description, Websiteを入れて、利用規約に同意して登録。
自分のTwitterアカウントへのアクセストークンを生成する
アプリを登録したあとのページの、[Keys and Access Tokens]タブから。
Gemのインストール
$ gem install twitter
プログラムを書く
書いたプログラムが以下。余分な部分が多いけど、ツイートに最低限必要なのはrequire
とconfig
のところと末尾の2行だけ。メソッド二つはツイートを組み立てるためのただのヘルパー。
keyやtokenは上記アプリ登録後のページで確認する。
ライブラリの詳細な使い方は上記GitHubページを参照。
require 'twitter' config = { consumer_key: 'YOUR_CONSUMER_KEY', consumer_secret: 'YOUR_CONSUMER_SECRET', access_token: 'YOUR_ACCESS_TOKEN', access_token_secret: 'YOUR_ACCESS_SECRET', } def percent_of_day(day) ((day.to_f / 365) * 100).round end def buildTweet now = Time.now origin = Time.new(now.year, 4, 1) yday = now.yday day_from_origin = yday - origin.yday yday_percent = percent_of_day(yday) day_from_origin_percent = percent_of_day(day_from_origin) "#{now.month}月#{now.day}日は#{now.year}年の#{yday}日目(#{yday_percent}%)\n" + "4月1日から#{day_from_origin}日目(#{day_from_origin_percent}%)\n" + "今日もそれなりにがんばろう" end client = Twitter::REST::Client.new(config) client.update(buildTweet)
せっかくなので自分を鼓舞するメッセージを入れた☆
メソッドの命名がひどい気はしている。
まとめ
ライブラリのおかげで超簡単だった。
他の機能でもいろいろ遊んでみたい。あとherokuとか使って自動投稿したい。