RSSをチェック

rssのurlが縦に並べられているcsv/txtファイルを読み取り、更新を記録する

[rssのurl][記事数][日付1]...[日付n](nが最新


main

csvをrequireして、ReadRSS_moduleinclude&require

CSV.foreach(FILE) do |line|
  temp << readRSS(line)
end

tempをファイル保存するときは
temp.each do |line|
  fp << CSV.generate_line(line)
end

で、簡単にできる。
foreachとgenerate_lineが大切。


ReadRSS_module

require 'rss'

module ReadRSS_module
  def readRSS(line)
    temp_line = Array.new
    temp_line << line[2..line.size-1] if line.size !=1
    temp_line.flatten!

    rss = RSS::Parser.parse(open(line[0]).read)

    rescue OpenURI::HTTPError #例外が発生した時
      if not line[line.size-1].include?('Not_Found')
        temp_line.unshift(line[0], temp_line.size)
        temp_line.push("#{Time.now.strftime("%Y/%m/%d-%H:%M")}_Not_Found")
      else
        temp_line.unshift(line[0], temp_line.size-1)
      end
      return temp_line
    else  #例外が発生しなかった時
      rss.items.reverse.each do |item|
        temp_line << item.date.strftime("%Y/%m/%d-%H:%M")
      end
      temp_line.sort!
      temp_line.uniq!
      temp_line.unshift(line[0], temp_line.size)
      return temp_line
    end
end

反省と今後
・Not_foundではなく別ページに飛ばされる、認証を要求されるなどの処理ができていない、要するにエラー処理がダメ
・DBを使うべき
・urlを入れたら、ソースからrssのurlを読み取るようにする
csvの扱い方を勉強する CSV.parse_line(line)は便利