以前のブログで上記スクリプトを使用してmixiボイスにマルチポストしていたのだが、たまたま中国語をpostしたときにこけたので場当たり的に修正した。
エラーメッセージは以下の通り
$ ruby twitter2mixivoice.rb
????
/home/jklryo/.gem/ruby/1.8/gems/mechanize-0.9.3/lib/www/mechanize/util.rb:40:in `iconv': "\350\260\242\350\260\242 from twit"... (Iconv::IllegalSequence)
何故こけたかというとEUC-JPに入っていない文字を入力したからじゃないかと思う。Twitter は UTF-8 だが Mixi は EUC-JP なのでポストするには変換しないといけないのだが、EUC-JPでは中国語は扱えないので変換時にエラーが出るのだろう。それならば例外処理を追加すればいいんじゃね?と思ってそれだけ(たった3行!)追加した。エラー出るようなポストは無視します。ちなみにRubyは全然知らない。以下抜粋
tweets =tweets.reverse
for i in 0...(tweets.size)
flag =true
for j in 0...(posted.size)
if tweets[i].gsub("\n","")==posted[j].gsub("\n","")
flag = false
break
end
end
if /^@/=~tweets[i]
flag =false
end
if flag ==true
begin # 追加
agent = WWW::Mechanize.new
page = agent.get("http://mixi.jp/")
form = page.forms.first
form["email"] = mixi_username
form["password"] = mixi_password
form.submit
page = agent.get('http://mixi.jp/recent_echo.pl')
form = page.forms[1]
f = form['body'] =tweets[i]+comment
puts tweets[i]
form.click_button
rescue #追加
end #追加
end
end