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

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

更新日:2018.07.15 作成日:2009.10.07

長年の夢(いやそこまででもないけど、)だったmixi,はてなダイアリー,社内SNSへの日記同時投稿の環境が整いました!!これで何気ないことも、3つすべてにログが残る。残るとマズい記事もあるだろうけど。とりあえず、せっせとコピペを3回繰り返すことはなくなりそうです。 本屋で、Rubyクックブックを読んだかいがあった。むしろ買おうかと思った。

この日記はとりあえず、mixiとはてなダイアリーに同時投稿してます。

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

どういう仕組みになっているかというと、・・・

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

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

mixi

CotEditorからmixiに投稿するRubyスプリクト

CotEditorからmixiに投稿するRubyスクリプト – CAPH TECH

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

はてなダイアリー

次に、CotEditorからはてなダイアリーに投稿するRubyスプリクト

CotEditorからはてなダイアリーに投稿するRubyスクリプト - Watsonのメモ

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

社内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 = "[email protected]"
$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| の部分から記事が投稿されなかった。特殊文字が入ったことで、これ以降受け付けなくなってしまった模様。さて、どうやって解決すべきか?

Related contents