mixiからはてなにリンク移行する為、mixi過去日記をバックアップしてみた。
mixiの既存の日記はpraggerで保存しておいた。(公開してないけど)
ねくろんさんの以下のエントリからmixi用のプラグインを取得してきてちょい弄ってみた。
http://www.necron-web.com/tdiary/?date=20071002
def get_mixi_new_diary_rss(config, data) require 'rubygems' require 'mechanize' require 'kconv' require 'rss/maker' require 'hpricot' # require 'logger' debug = true username = config['user_id'] password = config['password'] urls = config['url'] || ['http://mixi.jp/new_friend_diary.pl','http://mixi.jp/new_comment.pl'] agent = WWW::Mechanize.new {|a| # a.log = Logger.new('access.log') # a.log.level = Logger::DEBUG } page = agent.get('http://mixi.jp/') form = page.forms[0] form.fields.find {|f| f.name == 'email'}.value = username form.fields.find {|f| f.name == 'password'}.value = password form.fields.find {|f| f.name == 'next_url'}.value = '/home.pl' page = agent.submit(form, form.buttons.first) if /url=([^"])"/ =~ page.body link = 'http://mixi.jp' + $1.to_s agent.get(link) end data = [] urls.each do |url| diarylist = agent.get(url) diarylist.links.each do |link| diaryurl = link.href # => 'view_diary.pl?id=12345&owner_id=2345' p link.text.toutf8 == "続きを読む" if /view_diary.pl\?id/ =~ diaryurl && link.text.toutf8 == "続きを読む" p "diaryurl #{diaryurl}" if debug item = "" page = agent.get(diaryurl) body = Hpricot(page.body.toutf8) mydescription = (body/"div#diary_body").inner_html (body/"div.diaryMainArea02//dl.commentList01").each do |comment| mydescription += "<br>--<br>[#{(comment/"span.commentTitleName").inner_text}]" mydescription += "<br><br>#{(comment/"dd").inner_html}<br>--<br>" end p "mydescription #{mydescription}" if debug item.instance_eval do @description = mydescription def description @description end end mytitle = (body/"title").inner_text item.instance_eval do @title = mytitle def title @title end end str = (body/"div.listDiaryTitle//dd").inner_text.toutf8 p str str =~ Regexp.new("(\\d{4})(\\d{2}).+?(\\d{2}).+?(\\d{2}).+?(\\d{2})") mydate = $1 item.instance_eval do @date = mydate def date @date end end mylink = 'http://mixi.jp/' + diaryurl item.instance_eval do @link = mylink def link @link end end data << item sleep 3 end end end return data end
基本は複数受信できる様にしてるだけ。
後、自分の日記のところは、3箇所リンクがあったので「もっと見る」のリンクだけ
拾うように変更して、1箇所しかリンクとって来ないようにしてる。
それと、3秒ずつ間空けてmixiから怒られない様に対応CHU。
config.yaml
- module: get_mixi_new_diary_rss config: user_id: ACCOUNT@EMAIL.COM password: PASSWORD url: - http://mixi.jp/list_diary.pl?page=1 - http://mixi.jp/list_diary.pl?page=2 - http://mixi.jp/list_diary.pl?page=3 - http://mixi.jp/list_diary.pl?page=4 - http://mixi.jp/list_diary.pl?page=5 - http://mixi.jp/list_diary.pl?page=6 - http://mixi.jp/list_diary.pl?page=7 - http://mixi.jp/list_diary.pl?page=8 - http://mixi.jp/list_diary.pl?page=9 - http://mixi.jp/list_diary.pl?page=10 - http://mixi.jp/list_diary.pl?page=11 - http://mixi.jp/list_diary.pl?page=12 - http://mixi.jp/list_diary.pl?page=13 - http://mixi.jp/list_diary.pl?page=14 - http://mixi.jp/list_diary.pl?page=15 - module: RSS::save config: filename: mixi.rdf link: http://mixi.jp title: mixi
15ページって多いな……。