プログラミング的なSomething

読者です 読者をやめる 読者になる 読者になる

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

回線の工事・故障情報を確認するため、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に仕立てあげていけるといいな。なにより宣言してから間を置かずに作れたのは良かった。この程度のものはドンドン書いていきたい。