Growl連携 その2 (xyttr Advent Calendar 1日遅れの19日目)

この記事はxyttr Advent Calendar 2011の記事です。

6日目に続いて、xl-growlとの連携ネタ。

MacOSTwitterクライアントによくあるGrowlでの新着通知機能を作ってみます。

tweets-notifier.l

※ xl-growl ver.1.0.0にはnotify-with-socket-callbackにバグがあったのでNetInstallerより1.0.1をインストールしておいてください。

◆使い方

tweets-notifier.l は site-lisp等require可能な場所に置いて、下記のようなコードを.xyzzyか ~/.xyttr/config.l に書き込みます。

;;; xyzzy起動時に通知を開始するなら .xyzzy に
;;; xyttr起動時から通知を開始するなら ~/.xyttr/config.l に書く

(require "tweets-notifier")

;; Mentionを通知
(xyttr:define-notifier mentions
 :apifunc #'xyttr:api-mentions-async  ; timeline系API関数 (必ず非同期版を指定する事)
 :sticky t                            ; 通知ウィンドウをクリックorキー操作で閉じるまで表示し続ける
 :interval 300                        ; 新着取得間隔 (秒)
 :callback (lambda (tweet) (user::xyttr-mentions))) ; クリック時に実行するコールバック関数

;; "xyzzy -RT" の検索結果を通知
(xyttr:define-notifier search-xyzzy
 :apifunc #'xyttr:api-search-async
 :params (:lang "ja" :q "xyzzy -RT" :include_entities "true")  ; apifuncに渡すパラメータ
 :sticky t
 :interval 300
 :callback (lambda (tweet) (user::xyttr-search "xyzzy -RT")))

;; 通知開始
(xyttr:start-notifier mentions)
(xyttr:start-notifier search-xyzzy)

define-notiferマクロで通知設定を定義し、start-notifer(これもマクロ)で通知を開始します。
通知を開始すると初回に5件ツイートを表示し、以後指定した秒数ごとに新着ツイートを取得して表示します。

http://gyazo.com/1a315480736b11b35fb3935bfef97517.png

通知をクリックすると表示したツイートのデータを指定したコールバック関数に渡して実行します。
通知を止める時は (xyttr:stop-notifier name) もしくは xyttr:stop-all-notifiers を実行します。



以上Growlを使った新着表示の実装方法の紹介でした。