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ページって多いな……。