回線の工事・故障情報を確認するため、RSSフィードを定期的に取得するスクリプト作ったよ
タイトルの通り作りました。
かなりガチャガチャしてますし、スクリプトの自動実行を仕込まないと動かないなど、まだまだやることはありますが、とりあえず骨子になるスクリプトの紹介。
早速のスクリプト。
require 'rss' require 'open-uri' require 'time' require 'rubygems' require 'twitter' require 'twitter_oauth' uri = URI.parse("http://hogehoge.rdf") rss = RSS::Parser.parse(uri.read) class Sabun def post uri = URI.parse("http://hogehoge.rdf") rss = RSS::Parser.parse(uri.read) nowtime = Time.now rss.items.each do |item| margin_time = item.date if nowtime - margin_time < 3600 then Tweet.new.tweet(item.title + item.date.strftime("%Y-%m-%d %H:%M:%S")) end # do something end end end class Tweet def tweet(str) t = TwitterOAuth::Client.new({ :consumer_key=>'hogehoge', :consumer_secret=>'hogehoge', :token=>'hogehoge', :secret=>'hogehoge' }) t.update"#{str}" end end Sabun.new.post
スクリプトが実行された3600秒の間に更新のあったフィードだけをPostします。
RSS::Parseや型変換などいろいろと勉強になることが多かったです。Tweetクラスのtweetメソッドの引数にはString型しか入れられないとか、そういった点にうまいことひっかかってしめしめと勉強してました。
自動実行や他のフィードの読み込みなども試して、使える障害管理Botに仕立てあげていけるといいな。なにより宣言してから間を置かずに作れたのは良かった。この程度のものはドンドン書いていきたい。