目標
- 自分用のニコ生アラートの作成
- 以前からニコ生アラート(βα)がCPUを1つ占有しアラートを再起動せざるを得なくなったり最近ではニコ生アラート(本家)が気づくと落ちていたりしたことがあったのがその理由
ニコ生アラートの基本機能
- アラートサーバから配信情報を受信
- デスクトップ上に通知を表示
- 通知をクリックし配信をブラウザで開く
付加的な(欲しい)機能
- βαにあったような配信毎のレベル分け
- 通知が表示されるだけだったり音が鳴ったり自動で配信を開いたり
- 通知するのに本家アラートのようにコミュに入る必要がない
省略可能な機能
- キーワード検索機能
- ON AIR情報の管理
- βαの場合RSS情報を使ってON AIR情報を管理しているようだ
- 終了後の配信についてON AIRのままとなったりすることがある
- 番組終了を検知できずリストが膨大になると処理が重くなるらしい
- ON AIRかそうでないかは番組URLを開けば分かるので省略可と判断
改善したい機能
- アラート(本家)では公式配信がすべて通知されてしまう
- ユーザIDでのアラート
新たに欲しい機能
- メモ機能
- 簡単なメモをコミュIDあるいはユーザID毎に付けられるようにする
基本機能の実現
- アラートサーバから配信情報を受信
- libnama/alertapi.rbを手直しして利用予定
- デスクトップ上に通知を表示
- 通知をクリックし配信をブラウザで開く
- 同一マシン上でアラートとGrowlを動かす場合はcallbackを設定しruby_gntpで通知してやればよい
- 異なるマシン上からアラート情報を飛ばす場合はruby_gntpではできない(ようだ)
- 私の理解ではcallbackはあくまでも情報を送った方が処理するためのものなので
- GNTPには通知クリック時にデフォルトブラウザを開くことのできるURL Callback機能がある
- 調べ方が悪いだけかもしれないがどうもruby_gntpでは扱えないように見受けられた
- urlを引数に加えNotification-Callback-Targetヘッダを追加することでうまく通知できるようだ
*** /var/lib/gems/1.9.1/gems/ruby_gntp-0.3.4/lib/ruby_gntp.rb 2010-10-11 01:33:52.000000000 +0900
--- ruby_gntp.rb 2010-10-24 14:35:12.000000000 +0900
***************
*** 101,106 ****
--- 101,107 ----
text = params[:text]
icon = params[:icon] || get_notification_icon(name)
sticky = params[:sticky]
+ url = params[:url]
callback_context = params[:callback_context]
callback_context_type = params[:callback_context_type]
***************
*** 108,114 ****
@binaries = []
! message = notify_header(app_name, name, title, text, sticky, icon)
message << output_origin_headers
if callback || callback_context
message << "Notification-Callback-Context: #{callback_context || '(none)'}\r\n"
--- 109,115 ----
@binaries = []
! message = notify_header(app_name, name, title, text, sticky, icon, url)
message << output_origin_headers
if callback || callback_context
message << "Notification-Callback-Context: #{callback_context || '(none)'}\r\n"
***************
*** 204,210 ****
#
# outputs the notification header
#
! def notify_header(app_name, name, title, text, sticky, icon)
message = "#{get_gntp_header_start('NOTIFY')}\r\n"
message << "Application-Name: #{@app_name}\r\n"
message << "Notification-Name: #{name}\r\n"
--- 205,211 ----
#
# outputs the notification header
#
! def notify_header(app_name, name, title, text, sticky, icon, url)
message = "#{get_gntp_header_start('NOTIFY')}\r\n"
message << "Application-Name: #{@app_name}\r\n"
message << "Notification-Name: #{name}\r\n"
***************
*** 212,217 ****
--- 213,219 ----
message << "Notification-Text: #{text}\r\n" if text
message << "Notification-Sticky: #{sticky}\r\n" if sticky
message << "#{handle_icon(icon, 'Notification')}\r\n" if icon
+ message << "Notification-Callback-Target: #{url}\r\n" if url
message
end
進捗状況
- 鋭意作成中
- 最終的にはnamarecoとcielchanとアラートを統合したものが出来上がる予定
- 以下のファイルを中心に結構大規模に書き換え中とあらかじめ予告
- namareco/scripts/{commandline.rb,scheduler.rb}, libnama/alertapi.rb
- もしも何らかのパッチを作成していただいている方がいらっしゃったら申し訳ないので