Twittering-modeにおける新着ツイートの到来を合成音声で通知する

はじめに

前記事と同様に,Emacs上で音声合成する応用のひとつとして提案するものである.

Emacs上で動作するTwitterクライアントとして,Twittering-modeがある.
今回はTwittering-modeにおける新着ツイートの到来をを合成音声で通知するということをやってみたわけである.

設定

以下を設定ファイルに追記する.

(eval-after-load "speech-synth"
  '(progn
     (defun speech-synth-new-tweets ()
       (when (not (eq (length (twittering-current-timeline-data
                               twittering-new-tweets-spec))
                      twittering-new-tweets-count))
         (let* ((buf-name (buffer-name (current-buffer)))
                (num_new_tweets (+ (or (cadr (assq (get-buffer buf-name)
                                                   twittering-unread-status-info)) 0)
                                   (length twittering-rendered-new-tweets))))
           (when (>= num_new_tweets 1)
             (cond ((string= ":home" buf-name)
                    (speech-synth-execute-synthesis
                     (format "新着ツイートが%d件来ましたよ." num_new_tweets))))))))

     (add-hook 'twittering-new-tweets-rendered-hook
               #'(lambda () (speech-synth-new-tweets)))))

あらかじめ拙作speech-synth.elをインストールしておく.

上記は":home"バッファ(メインのタイムライン)に新たに到着したツイートの数を合成音声で通知する設定である.
この場合は比較的頻繁に合成音声が鳴らされるので,うるさく思う人も多かろう.
":mentions"にすれば自分へのメンションが来たときのみ通知してくれるので,こちらにしてもよいだろう.
ちなみにツイートを取得する時間間隔はtwittering-timer-intervalで指定可能である.
また取得するツイート数自体はtwittering-number-of-tweets-on-retrievalで指定可能である.

おわりに

合成音声を鳴らす場面は任意であり,今回はそれがTwittering-modeにおけるツイート取得のタイミングであった.
メジャーモードやマイナーモードでhook系変数が用意されているときは,それに引っ掛ける形になる.

謝辞

Twittering-modeのメンテナである@cvmat氏のアドバイスに感謝したい.
また本記事で紹介したコードの一部はこの記事を参考にしており,合わせて感謝申し上げる.