TwiProwl を Pushalot 対応にする
前置き
いろんなスマートフォン向けOSに興味があるので、Lumia 920(Windows Phone), iPhone5(iOS), RAZR M(Android), Xperia SX(Android)を普段から持ち歩いています。
タブレットもICONIA W3-810(Windows), iPad(iOS), Nexus 7(Android)を外出時はかばんに入れておいています。
同時に、3,4年ほど前まではTwitterも1日に平均500件程度つぶやく、軽度のツイ廃でした。
今でこそ1日に0~50件弱程度の健全なTwitter生活をしていますが、それでもなんとなくエゴサーチはしておきたいものです。
そんな自分にTwiProwlは欠かせないツールです。
このツールを使うがためだけにServersMan@VPSのEntry(税込みで月約500円)を契約した程度にはTwitter使ってます。
ただ、TwiProwlが標準で対応しているNotificationサービスは
- Prowl for iPhone ( http://www.prowlapp.com/ )
- Notify My Android ( http://www.notifymyandroid.com/ )
- Growl ( http://growl.info/ )
の3つのみです。
ご覧の通り、標準で対応しているモバイルプラットフォームはiOSとAndroidのみとなっています。
一応Growlを通してWindows Phoneに通知を送れる仕組みは作れるようですが、個人的によくGrowlの仕組みを理解できていません。
そこでググっていたところ、どうやらPushalotというWindowsプラットフォームのみを対象とした稀有なNotificationサービスがあるようです。
丁度それを説明していたブログ記事があったので、参考にさせていただきました。
あれ: Pushalot - WindowsPhoneにPush通知
本題
さて、TwiProwlはGitHubで公開されているオープンソースのRubyアプリケーションです。
takuo/TwiProwl · GitHub
TwiProwlのセットアップについては本エントリでは扱わないので、とりあえず使いたいだけの人はググるなりREADME.md
読むなりしてください。
前書きに書いた通り、コードを参考にさせて頂いているので改めて書く必要がどの程度あるかは謎ですが、追加したコードは以下の通りです。
※以下の編集を行った後のファイルは下の方に置いてあります。書き換えがめんどくさいという方はどうぞお好きに持って行ってください。
コード冒頭、TwiProwl
クラスの定数宣言部で
PUSHALOT_API_SENDMESSAGE = "https://pushalot.com/api/sendmessage"
360行目辺り、同クラス中のprowl
メソッドやnma
メソッドが定義してある辺りの直後に
def pushalot( icon, params={}, user = nil ) pushalot_params = { :AuthorizationToken => @@conf['Pushalot']['APIKey'], :Title => params[:event], :Body => params[:description], :Source => params[:application] } pushalot_params[:Link] = params[:url] if params[:url] begin info "Notify with Pushalot..." uri = URI.parse( PUSHALOT_API_SENDMESSAGE ) http = http_new( uri ) request = Net::HTTP::Post.new( uri.request_uri ) request.content_type = "application/x-www-form-urlencoded" query = pushalot_params.map do |key, val| "#{key}=#{post_escape(val.to_s)}" end res = http.request( request, query.join( '&' ) ) debug "Pushalot Response: #{res.code}" rescue error "Error while Prowling: #{$!}" end end
params[:url]
については、Pushalot対応とは別のカスタマイズで、通知にURLが追加されるようにした時のものです。
mentionが来たりRTされたりするとそのtweet urlが付いてきます。
この辺の改造は、TwiProwlのフォークとして配布されているEgoProwlを参考にしています。
私と同じような改造をしなくても、if文で記述してあるので、無いなら無いで誤動作することはないと思います。
以上の変更*1を施したtwiprowl-mod
を下記に置いておきます。
https://www.dropbox.com/s/ignuagwqu6s84jg/twiprowl-mod
ライセンス的に問題はないと思っていますが、ヤバければ取り下げます。
さて、設定ファイルの方も書き換えねばいけません。
設定ファイルは~/.twiprowl.conf
、またはtwiprowl
と同ディレクトリのconfig.yml
です。
あるいは-c
スイッチを使っている場合はそのパスのものです。
ここに
Prowl: APIKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx NMA: APIKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Growl: Sticky: 0 # lowest priority to enable stikcy option
とあるので、直後に
Pushalot: APIKey: yourkey
を追加します(yourkeyは取得したAPIキー)
また、
NotifyMethods: - "prowl" # Prowl for iPhone # - "nma" # Notify My Android for Android # - "growl" # use growlnotify, it requires growl.gem and growlnotify
の直後にも
- "pushalot"
を追加します。
コード追加後、TwiProwlディレクトリ内で
$ ./twiprowl -q $ ./twiprowl
として、TwiProwlのプロセスを立て直してください。