Twitterのポストをmixiボイスにも投稿するスクリプト書いた
先日のおれおれmixiボイスUtilを使って、TwitterのPOSTをボイスにも投稿するProxyを書いてみた。
主にTwitterクライアントのProxyに設定して使う感じです。
使ってみた感じは、mixiに投稿されていると思うと、うかうかと変な事を発言出来なかった。
そんな時は、handlerの中にフィルターなどを作ってボイスには投稿したくない発言を弾いてやればいいと思います。
ボイスへの投稿に若干時間がかかるため、スレッドを使用して処理を投げてます。
hndlerはサーバからのレスポンス戻ってから呼び出されるので送信前に処理が書けないのが残念。。
ボイスへの投稿時のエラー周りが甘いので直したいところです。
お好きに改変して使って下さい。
# -*- coding: utf-8 -*- require "uri" require "webrick" require "webrick/httpproxy" require "mixi_voice" $KCODE = "U" mixi_voice = Mixi_Voice.new("ID", "PASS") handler = Proc.new do |req, res| begin if req.host == "twitter.com" && req.request_method == "POST" && req.path == "/statuses/update.xml" req.body =~ /status=([^&]+)/ Thread.new($1) do |message| mixi_voice.post_message(URI.decode(message)) end end rescue Exception => e puts e end end conf = { :BindAddress => "127.0.0.1", :Port => 8080, :ProxyVia => false, :ProxyContentHandler => handler, :Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG) } proxy = WEBrick::HTTPProxyServer.new(conf) [:INT, :TERM].each do |sig| Signal.trap(sig) do Thread::list.each do |t| Thread::kill(t) if t != Thread::current end proxy.shutdown end end proxy.start
Webrick使うと簡単に出来ますね。