=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 = <
#{comment}
EOF return body.toutf8 end