twitterからmixiボイスにポストするスクリプトがこけたから自分用に修正した。

シェアする

以前のブログで上記スクリプトを使用して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
Sponsored Link

シェアする

フォローする