読者です 読者をやめる 読者になる 読者になる

halka-tech

技術的なことを書きます

mixiエコーに文章をポストするスクリプトを書いた

ねえねえ!なんでmixiエコーネタばっかりなのー!うっせ!!!!!!
phpで書いたんですけれども、ぼちぼちrubyに移植というか、rubyでも書いてみたいなと思ったので書いてみました。
なんか、MSWIN版の1.9.1だといろいろとライブラリが対応していないみたいなので、1.8.7で実行しました。

#-*- encoding:utf-8 -*-
require 'rubygems'
require 'mechanize'
require 'kconv'

#mixiにログインするための情報
EMAIL=''
PASSWORD=''

#echoにポストするための何か。recent_echo.plのform辺りをみると<input type="hidden"で書いてます。
POST_KEY=''

#フッター
footer=''

#MSDOSプロンプトで走らせたので一応sjisにして表示
puts 'mixiエコーにポストします。'.tosjis

#入力
body=gets.chomp
encoded_body=(body+footer).toeuc

#ログイン
login_pm={'email'=>EMAIL,'password'=>PASSWORD,'next_url'=>'/home.pl'}
agent=WWW::Mechanize.new
agent.post('http://mixi.jp/login.pl',login_pm)

#ポスト
echo_pm={'body'=>encoded_body,'post_key'=>POST_KEY}
agent.post('http://mixi.jp/add_echo.pl',echo_pm)

ログインでコケたらまあ、投稿が反映されてないんじゃないですかねということでそこら辺の判定は書いてません。
mechanizeを使ったらこのくらいの行数で出来ました。postで渡すパラメータを直接引数に入れればいいと思います。
別にpostするだけならnet/httpでもいいんじゃないですかねえと思ったのでそのうち書きたいと思います。