Subscribed unsubscribe Subscribe Subscribe

このまえの続き

mixi Ruby/Tk Mechanize ruby

Ruby/Tk、簡単だけど情報が少なくて探すの大変。
さてさて、この前のなんちゃってmixiボイスクライアントにGUIつけてみました。
単純にテキストエリアに出力されるだけです。

ところで、このクライアント「>>○○○」でのレスに対応してないようだ。
タグの中のXPathが拾ってないものね。今度直そう。
それとメールアドレス&パスワードをソースに直で書き込むのもあれだから入力フォームもうけようw
メールアドレスはTkEntryで良さそうだけど、パスワードはパスワード用の入力が****で表示されるやつのほうがいいな。そういうのあるのかな?

あ、あと投稿機能もなきゃだめね。

require 'rubygems'
require 'tk'
require 'mechanize'

class Voice

  def get
    agent = WWW::Mechanize.new

    response = agent.post("http://mixi.jp/login.pl", 
                          {'next_url' => '/home.pl', 
                            'email' => 'xxxxxxxxxx@xxxxx',
                            'password' => 'xxxxxxxxx'})

    agent.get("http://mixi.jp/recent_echo.pl")

    nicknamelist = []
    echolist = []

    agent.page.search('div/div/div/div/table/tr/td/div.echo_nickname').each{|nickname|
      nicknamelist.push nickname.inner_text
    }
    agent.page.search('div/div/div/div/table/tr/td/div.echo_body').each{|echo|
      echolist.push echo.inner_text
    }

    voice = []
    (0..24).each{|i|
      voice[i] = nicknamelist[i].to_s + ": " + echolist[i].to_s
    }

    voice

  end

end


voice = Voice.new.get

text = TkText.new(:height => 30).pack
voice.each{|v| text.insert 'end', v + "\n"}

TkButton.new{ 
  text "reload"
  command { 
    text.delete '1.0', 'end'
    voice.each{|v| text.insert 'end', v + "\n" }
  }
  pack(:side => 'left')
}

Tk.mainloop