«前の日記(2009-11-13) 最新 次の日記(2009-11-15)» 編集

会長@腹部日記


2009-11-14 [長年日記]

_ かかりつけ小児科のお知らせページをスクレイピングすることにしました

新型インフルエンザ予約に出遅れたため、対策としてお知らせを定期的に監視して、メール通知することとしました。

レンタルサーバ借りておいてよかった。便利な時代になったものです。

小児科の先生は多忙なので

ホームページ更新は、朝方と夜中と思い、以下の時間にしかけます。

0,30 0,6,7,8,22,23 * * * /home/hoge/bin/notify.rb

Ruby1.8.6とcronで動かします

 require 'open-uri'
 require 'yaml/store'
 current_path = File::dirname(__FILE__)
 require "#{current_path}/jmail" # どっかから拾ってきた
 
 URL = "http://byouin.com/info"
 
 #
 # Mail
 #
 smtp_server = "smtp.server.dayo"
 from = "mail@smtp.server.dayo"
 
 #
 # parse contents
 #
 def contents(url_suffix)
   text = ""
   begin
     text = open("#{URL}#{url_suffix}").read.scan(/<p>(.*)<\/p>/).flatten.first.toutf8
   rescue
     text = ""
   end
   text
 end
 
 #
 # read cache
 #
 yaml_path    = File::join(current_path, 'cache.yaml')
 cache_urls = YAML::load(File::read(yaml_path))
 
 #
 # parse url
 # 
 latest_urls = open(URL).read.scan(/(information\/\d+.html)/).flatten.sort
 
 # tenuki
 (latest_urls - cache_urls).each_with_index do |new_url, index|
   @jmail ||= JMail.new(smtp_server, from)
   @jmail.send("Topic #{index+1}", contents(new_url), "hoge@foo.com")
 end

Tags: family Ruby

_ きょうのつぶやき : 60回