英語アカウントのつぶやきを日本語に翻訳してTwitterに投稿するスクリプト
そろそろ国際人になろうということで、英語ブログと Twitter の英語アカウントを準備してます。よろしく。
で、perl の練習ついでに英語アカウントでのつぶやきを翻訳 API 使って日本語にして日本語アカウントにつぶやくスクリプトを試作してみました。こんな感じで reply としてつぶやいてくれます。
"これは、自動翻訳のためのテストです。" (@riywo_en)
— Ryosuke Iwanaga (@riywo) April 7, 2012
自分のつぶやき取得は AnyEvent::Twitter::Stream で
stream api を使って取得してます。filter メソッドで follow に自分の英語アカウントの user_id を指定。これだと多分 update 以外も流れてくるので、適当に return して逃げてます。
翻訳 API は Bing API で
Google 翻訳 API は従量課金制になってたので、ふらふら探して Bing のやつを使ってみました。ちなみに、translate.google.co.jp の AJAX リクエストで UA 設定すれば叩けないことは無いみたいですが仕様変更とかだるいのでやめた方がいいでしょう。
上の記事っぽい感じで適当に登録して、AppId を取得したらおk。
http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId=AppID&from=en&to=ja&text=Hello
-> "こんにちは"
みたいに簡単に使えます。
投稿は AnyEvent::Twitter で
これも簡単に post で終了。ちょっと工夫として、翻訳したやつの元がなんだったのか分かりやすくするために、in_reply_to_status_id を指定しています。ただし、この場合元の投稿者への@username というのがつぶやきに入ってないと無視されるので追加しています。
できあがり
これらをちょっとずつ使って試していって、適当にがっちゃんこしてできあがり。メインスクリプトはこんな感じ。config は config_sample.pl をコピーして頑張って token とか設定してあげて下さい。
久々にこういうのやって楽しかった。
英語でもブログ書いてみた。