emergentの日記

2007-03-21

ごあいさつ 01:23 ごあいさつ - emergentの日記 を含むブックマーク はてなブックマーク - ごあいさつ - emergentの日記 ごあいさつ - emergentの日記 のブックマークコメント

自分のはてダに書いたソースコードとかを転載していきます。

はてダ以外にもメモ的要素が多くなりそうですがよろしくです。

[] mixi投稿プラグイン:mixi_diary_writer.rb 01:21  mixi投稿プラグイン:mixi_diary_writer.rb - emergentの日記 を含むブックマーク はてなブックマーク -  mixi投稿プラグイン:mixi_diary_writer.rb - emergentの日記  mixi投稿プラグイン:mixi_diary_writer.rb - emergentの日記 のブックマークコメント

ソースコード

# mixi_diary_writer.rb
# this requires WWW:Mechanize

class MixiDiaryWriter
  require 'rubygems'
  require 'mechanize'
  require 'kconv'

  def initialize username=nil, password=nil
    @id = nil
    @username = username
    @password = password
    @agent = WWW::Mechanize.new
  end

  def login username=@username, password=@password
    if username == nil || password == nil
      return
    else
      @username = username
      @password = password
    end
    @agent.post('http://mixi.jp/login.pl',
                { 'email' => @username,
                  'password' => @password,
                  'next_url' => '/home.pl' })
    @home_page = @agent.get('http://mixi.jp/home.pl')
  end

  def edit title, content
    if /add_diary\.pl\?id=(\d+)/ =~ @home_page.body
      @id = $1
    end

    @edit_page = @agent.get('http://mixi.jp/add_diary.pl?id='+@id)

    edit_form = @edit_page.forms.name("diary").first
    edit_form['diary_title'] = title.toeuc
    edit_form['diary_body'] = content.toeuc
    confirm_page = @agent.submit(edit_form)

    conf_form = confirm_page.forms[0] # select 'hai'
    @agent.submit(conf_form)
  end
  OK_TAGS = 'a|p|strong|em|u|del|blockquote'
  def striptags str
    str.gsub!(/<br.*?>/, "\n")
    str.gsub!(/<[\/]{0,1}(?!(?:(?:#{OK_TAGS})(?:\s|>)))\w+[\s]{0,1}.*?>/, '')
    str
  end
end

def mixi_diary_writer(config, data)
  title = config['title'] || data[0].title
  content = ''

  if config['merge_feeds'] #.to_i == 1
    data.each {|item|
      content << ('- <a href="'+item.link+'">'+item.title+"</a>\n"+item.description+"...\n\n" rescue item.to_s)
    }
  else
    content = data[0].content_encoded.to_s
  end

  # delete line feed and space at the top of content
  content.sub!(/^(?:\s+)/, '')

  mdw = MixiDiaryWriter.new(config['username'], config['password'])
  mdw.login
  mdw.edit title, mdw.striptags(content)
end

使い方

ブログ日記を書いてそれをmixi転載する
- module: load_rss
  config:
    url: http://d.hatena.ne.jp/emergent/rss
- module: publish::mixi_diary_writer
  config:
    username: test@test.com
    password: ********
フィードを一覧にしてmixiに投稿
- module: load_rss
  config:
    url: http://d.hatena.ne.jp/emergent/rss
- module: publish::mixi_diary_writer
  config:
    username: test@test.com
    password: ********
    title: "自分の日記一覧"
    merge_feeds: 1

参考

DangeloDangelo2007/05/08 14:03http://f45e85f9d8ac587106810bd89ebe7bc3-t.gf7tiuy9.info <a href="http://f45e85f9d8ac587106810bd89ebe7bc3-h.gf7tiuy9.info">f45e85f9d8ac587106810bd89ebe7bc3</a> [url]http://f45e85f9d8ac587106810bd89ebe7bc3-b1.gf7tiuy9.info[/url] [url=http://f45e85f9d8ac587106810bd89ebe7bc3-b2.gf7tiuy9.info]f45e85f9d8ac587106810bd89ebe7bc3[/url] [u]http://f45e85f9d8ac587106810bd89ebe7bc3-b3.gf7tiuy9.info[/u] b8c211221d19f4c8bbabc2332ed541f5

LyndaLynda2012/10/26 05:46That's an expert answer to an interesting qetuison

xkiuwnuurxkiuwnuur2012/10/26 23:42pIvQZG <a href="http://zxtbbrxlfxyt.com/">zxtbbrxlfxyt</a>

dxtmitcpfoxdxtmitcpfox2012/10/28 01:16JcWgsg , [url=http://ihzrthmeyipb.com/]ihzrthmeyipb[/url], [link=http://hzfketgalspq.com/]hzfketgalspq[/link], http://gumjktnuqkyb.com/

mnfrkqmamwmnfrkqmamw2012/10/28 16:18QATsRE <a href="http://pupaduaxtclv.com/">pupaduaxtclv</a>