CotEditorからmixi,はてなダイアリー,社内SNSへ同時投稿するスプリクト

移転しました。

長年の夢(いやそこまででもないけど、)だったmixi,はてなダイアリー,社内SNSへの日記同時投稿の環境が整いました!!

これで何気ないことも、3つすべてにログが残る。残るとマズい記事もあるだろうけど。とりあえず、せっせとコピペを3回繰り返すことはなくなりそうです。


本屋で、Rubyクックブックを読んだかいがあった。むしろ買おうかと思った。
この日記はとりあえず、mixiはてなダイアリーに同時投稿してます。


ってこんなことしてるから、勉強する時間がなくなるんだよなぁ・・・


どういう仕組みになっているかというと、・・・
基本的には、CotEditorというエディターを使用し、スプリクトが実行できるというメリットを存分に生かして、記事を投稿しています。

Macテキストエディタ「CotEditor」
http://www.aynimac.com/p_blog/files/article.php?id=41

mixi

CotEditorからmixiに投稿するRubyスプリクト
http://koseki.caph.jp/2008/08/28/coteditor%E3%81%8B%E3%82%89mixi%E3%81%AB%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8Bruby%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88/

上のページを参考にまずは、mixiへの投稿スプリクトを作ります。

はてなダイアリー

次に、CotEditorからはてなダイアリーに投稿するRubyスプリクト
http://d.hatena.ne.jp/Watson/20080904/1220538723

このページを参考にはてなダイアリーへ投稿スプリクトを作ります。

社内SNS

これは、WWW::Mechanizeを使って、Webの操作をエミュレートさせます。普段のネットサーフィンを一つ一つプログラムに落とし込んでいくことで、その動作を再現できるというものらしいです。

最初、

agent.page.link_with(:text => "日記").click

の部分を

agent.page.links.text("日記").click

とやっていたんだけど、どうやら古いバージョンの使い方のようで、現バージョンじゃ使えなくなっていた。ここでかなりハマった。

#!/opt/local/bin/ruby
#
# %%%{CotEditorXInput=AllText}%%%

require 'rubygems'
require 'mechanize'
$KCODE = 'uft8'

$USERNAME = "hoge@hoge.com"
$PASSWORD = "hogehoge"

$SUBJECT = STDIN.gets.chomp
$BODY = STDIN.read

def login
  @agent = WWW::Mechanize.new
  login_page = @agent.get("http://hoge.hoge.jp/")   #会社のSNSのHP
  login_form = login_page.forms[0]
  login_form.username = $USERNAME
  login_form.password = $PASSWORD
  @agent.submit(login_form)

  edit_page = @agent.page.link_with(:text => "日記").click
  edit_form = edit_page.forms[0]
  edit_page = @agent.submit(edit_form)
end

def edit
  edit_form = @agent.page.forms[0]
  edit_form.subject = $SUBJECT        #ここが題名
  edit_form.body = $BODY           #ここが本文
  @agent.submit(edit_form)
  make = @agent.page.forms[0]
  @agent.submit(make)
end
  
login
edit

ってな感じで、作ってみました。

この3つのスプリクトをCotEditor上で実行すれば、あーら不思議3つ(ほぼ)同時投稿の完成w

今後の課題

画像も送りたい時どうするのか?
基本的にはてな記法はしょうがない?


ふぅ、疲れた。

追記

>|ruby| の部分から記事が投稿されなかった。特殊文字が入ったことで、これ以降受け付けなくなってしまった模様。さて、どうやって解決すべきか?