=begin # mixi_get_new_friend_diary mixiのログインユーザのマイミクシィの最新日記一覧を取得する。 ## 参考 ログイン部分の処理で利用させてもらいました。 設定ファイルも流用しているため、mixi_auth.yamlが必須 http://bmky.net/product/pragger/#mixi_get_diary_list =end require 'rubygems' require 'mechanize' require 'rss' require 'kconv' def mixi_get_new_friend_diary(config, data) mixi_login(config) rss_new_diary = get_mixi_rss("http://mixi.jp/atom/updates/r=1/member_id=#{@auth["id"]}/-/diary") rss_new_comment = get_mixi_rss("http://mixi.jp/atom/updates/r=1/member_id=#{@auth["id"]}/-/comment") items = Array.new items += generate_items(rss_new_diary) begin items += generate_items(rss_new_comment) rescue items += items.push "最近コメントした日記はありません" end return items end def mixi_login(config) @agent = WWW::Mechanize.new @auth = YAML.load( File.read( config['authfile'] ) ) page = @agent.get( 'http://mixi.jp/' ) form = page.forms[0] form.fields.find { |f| f.name == 'email' }.value = @auth["email"] form.fields.find { |f| f.name == 'password' }.value = @auth["password"] form.fields.find { |f| f.name == 'next_url' }.value = '/home.pl' @agent.submit( form, form.buttons.first ) end def get_mixi_rss(url) html = @agent.get_file(url) feed = RSS::Parser.parse(html) rss = convert_rss_from_atom(feed) return rss end def convert_rss_from_atom(feed) rss = feed.to_rss("2.0") do |maker| maker.channel.description ||= "no description" end return rss end def generate_items(rss) items = Array.new rss.items.each do |item| item = get_diary(item) items.push item end return items end def get_diary(item) page_diary = @agent.get(item.link) begin item.title = item.title + ' - ' + page_diary.parser.at('div.diaryTitleFriend').inner_text.strip.toutf8 rescue end begin item.description << page_diary.parser.at('div#diary_body').inner_html.toutf8 rescue end page_diary.parser.search('div.diaryCommentbox').each do |commentbox| item.description << parse_comment(commentbox) end return item end def parse_comment(commentbox) user_name = commentbox.at('span.commentTitleName').inner_text user_name_link = commentbox.at('span.commentTitleName').at(:a)["href"] begin date = commentbox.at('span.commentTitleDate').inner_text.gsub('?','') rescue end comment = commentbox.at('dd').inner_html body = < #{user_name} ---- #{date}

#{comment}

EOF return body.toutf8 end