developer's diary

最近はc#のエントリが多いです

秀丸からRubyを実行する。〜秀丸からの連投を目指して〜

WWW::Mechanizeでログイン〜日記を投稿の一連の流れ。

ID = 'IDを記述'
PASSWORD = 'パスワードを記述'

require 'mechanize'
agent = WWW::Mechanize.new
agent.post("https://www.hatena.ne.jp/login", "name" => ID, "password" => PASSWORD)
agent.get("http://d.hatena.ne.jp/#{ID}/edit")
agent.page.forms[0].fields.name('body').value = "*rubyより投稿を試みる。\n詳細は後で・・・"
agent.page.forms[0].submit

とりあえず上記でこんな感じに投稿ができました。

続いて、上記ファイルに本文を渡す部分と、秀丸から投稿アプリを起動する部分の作成。

ID = 'IDを記述'
PASSWORD = 'パスワードを記述'

require 'IDを記述'
require 'Kconv'

agent = WWW::Mechanize.new

agent.post("https://www.hatena.ne.jp/login", "name" => ID, "password" => PASSWORD)
agent.get("http://d.hatena.ne.jp/#{ID}/edit")

body = Kconv.toeuc(agent.page.forms[0].fields.name('body').value)
body << Kconv.toeuc("\n")
body << Kconv.toeuc(File.read(ARGV[0]))
agent.page.forms[0].fields.name('body').value = body
agent.page.forms[0].submit

上記ファイルをCディレクトリ直下に置く*1

そして、Ruby起動マクロを一部修正

run "ruby " + $ruby_file + " > con";

を下記のように変更。

run "ruby -Ks 'C:\\hatena.rb' " + $ruby_file + " > con";

マウスで選択した箇所又は、文章すべてがマクロを起動することで、はてなダイアリーに投稿できるようになりました。

一連の流れをおさらい。

  1. (秀丸)秀丸で日記を書く。
  2. (秀丸)秀丸で書いた日記を選択し、マクロを起動。
    1. (マクロ)選択された部分をテンポラリファイルとして作成。
    2. (マクロ)作成したテンポラリファイルを引数として、はてな投稿のRubyを実行。
      1. (Ruby)引数として受け取ったファイルを開いて、中身をはてなダイアリーに投稿

といった感じになりました。

秀丸マクロと、Rubyのコラボで連投が可能*2になりました。
上記ファイルの二つをテンプレートとして少し修正すればmixiとかもできるんだろな。。。最近mixi全然ログインしてないや。。。

*1:仮である。今回"C:\hatena.rb"とした。

*2:文字数に制限があります。