[Ruby]Mixiへの日記投稿スクリプト[Mechanize]

[Ruby]Mixiへの日記投稿スクリプト[Mechanize]


参考URL : http://ruby.g.hatena.ne.jp/emergent/20070321/1174494118


Mechanizeのインストール


下記でインストール



gem install mechanize

Ruby Mechanizeを利用して作成。


Railsから利用することを想定しているので、下記ソースを
[RAILS_ROOT]/lib/mixi_web_agent.rbという名前で保存する。



class MixiWebAgent
require 'rubygems'
require 'mechanize'
require 'kconv'

# Mixiにおいて使用可能なタグの一覧です。
OK_TAGS = 'a|p|strong|em|u|del|blockquote'

#== コンストラクタ
def initialize(username, password)
@id = nil
@username = username
@password = password
@agent = Mechanize.new
@agent.user_agent_alias = 'Mac Safari'
end

#== 日記の投稿を行います。
def write_diary(title, content)
begin
self.login
self.write(title, MixiWebAgent.striptags(content))
return true
rescue => e
p e
end

return false
end

def login
@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 write(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.form_with(:name => "diary")
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

#== HTMLタグを置換します
def self.striptags str
str.gsub!(//, "\n")
str.gsub!(/<[\/]{0,1}(?!(?:(?:#{OK_TAGS})(?:\s|>)))\w+[\s]{0,1}.*?>/, '')
str
end
end

UnitTest


[RAILS_ROOT]/test/unit/mixi_weg_agent_test.rbという名前で以下へを保存。
なお、MIXI_MAIL, MIXI_PASSはenviroments/test.rbへ記載。
実際にログインできるメールアドレスとパスワードを入力すること。



require 'test_helper'

class MixiWebAgentTest < ActiveSupport::TestCase

test "should_success_write" do
mixi_agent = MixiWebAgent.new(MIXI_MAIL, MIXI_PASS)
message = "Rubyから投稿テスト #{Time.now}"
title = "Test From Ruby Mechanize #{Time.now}"
assert mixi_agent.write_diary(title, message)
end
end
スポンサーサイト

[FlashDevelop]FlexUnitTestを使ってみたい。

[FlashDevelop]FlexUnitTestを使ってみたい


FlexのUnitテストを使いたいのです。


使いたいのはadobeのOpenSourceに登録されているorg.flexunitです。


FlexUnit 4.1 Beta 1を使ってみたいナーと思っています。
上記URLからダウンロードして解凍してみたらflex3でのデモが入っていましたので、とりあえずこれで試してみたいなと思っています。


プロジェクト構造


解凍したら以下のようなプロジェクト構造でした。



├─html-template
│ └─history
├─libs
└─src
├─main
│ └─flex
│ └─org
│ └─flexunit
│ └─demo
└─test
└─flex
└─org
└─flexunit
└─demo

JavaのUnitテストと同様な形ですごく使いやすそうでした。
Flex Builder使えばいいんだけどさ...
今度FlashDevelopでも使えるか試してみたいと思います。
今日は覚書のみです。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。