RSSをチェック
rssのurlが縦に並べられているcsv/txtファイルを読み取り、更新を記録する
[rssのurl][記事数][日付1]...[日付n](nが最新
main
csvをrequireして、ReadRSS_moduleをinclude&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)は便利
・