皆様、あけましておめでとうございます。
今年もよろしくお願い致します。
今回(も)、0時0分にあけおめツイートしようと思ったのですが、ただスタンバイするだけだと面白くないと思い、31日23時からあけおめ用のツイートスクリプトをrubyで書きました。
今回、単純に0分ジャストを狙ってツイートするだけだと面白く無いと思い、スクリプトでツイートすることを思いついたのですが、最近だとruby等を使えば結構すぐに出来るので、なら時間制限を設けて作ろうと思い31日の23時から書き始めました。(思いついたのも当日の18時ぐらいですが)
結果としては無事、あけおめツイートをすることが出来ました。(通信のタイムラグ等で2秒遅いですが)
あけましておめでとうございます!
— ik-fib (@ik11235) December 31, 2014
タイマー自体はcronで動かすことをこのネタを思いついた時に決めていたので、後の仕様としては以下の様なことを考えて作りました。
- あけおめ固定ではなく、ツイートを簡単に指定できる。
- ツイートだけでなくCUIのtwitterツールとして拡張できるようにする
- cronで動かすのでコマンドライン引数でツイート等を指定できる
こういった形を考えていたので、基本的にコマンドライン引数で動作を指定して、動作させるプログラムとして作成しました。(今回はツイートだけですが)
そして最終的に以下の様なプログラムになりました。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
require 'twitter' | |
require 'optparse' | |
require './token' | |
def cmdline | |
args = {} | |
OptionParser.new do |parser| | |
parser.on('-m string', '–message string', '投稿文を指定') {|v| args[:mes] = v} | |
parser.parse!(ARGV) | |
end | |
args | |
end | |
client = Twitter::REST::Client.new do |config| | |
config.consumer_key = $consumer_key | |
config.consumer_secret = $consumer_secret | |
config.access_token = $access_token | |
config.access_token_secret = $access_token_secret | |
end | |
args = cmdline | |
client.update(args[:mes]) |
これを0時0分に動作するようにcronで以下のように設定しました。
0 0 1 1 * /usr/local/bin/rbenv exec ruby /path/to/twitter-cui/main.rb -m "あけましておめでとうございます!"
実際、プログラム自体は結構すんなりと作成出来たのですが、どちらかと言うとrubyをあまりメインで触っていないため、たまに動かすときのバージョンアップやそれにともなうbundlerのアップデート忘れやrbenvを使っていたのでgem install してもデフォルトのrubyに反映されないなど、プログラムよりも環境の方で手間取り、そちらのほうが時間がかかりました。
せっかくなので、機会を見つけて自分向けのCUIのツイッターツールとして機能追加等してきたいと思います。
それではあらためて、今年も1年よろしくお願い致します。