#:g1: chirpの紹介

Posted 2014-12-24 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の359日目です。

chirpとはなにか

 chirpは、Nicolas Hafner氏作のCommon LispからTwitterを利用するためのライブラリです。

パッケージ情報

パッケージ名chirp
Quicklisp
ドキュメントサイトChirp - About
CLiKiCLiki: Chirp
Quickdocschirp | Quickdocs
CL Test Grid: ビルド状況chirp | CL Test Grid

インストール方法

(ql:quickload :chirp)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 使い方はドキュメントサイトにも書いてありますが、クライアントを登録すればCommon LispからTwitterを利用できるようになります。
クライアントを登録するところからの説明はドキュメントにあるので、既にキーを取得している場合について書いてみますが、

((consumer-key "madaltohalitodialko")
 (consumer-secret "loktofeitodiostiltowaito")
 (access-key "loktofeitomahalitomadalto")
 (access-secret "maporficlahalitomakanito"))

というような内容の~/.twitter-oauth.lispがあったとすれば、

(defun chirp-init ()
  (let ((keys (with-open-file (in "~/.twitter-oauth.lisp")
                (read in))))
    (setq chirp-extra:*oauth-api-key*
          (second (assoc 'consumer-key keys))
          chirp-extra:*oauth-api-secret*
          (second (assoc 'consumer-secret keys))
          chirp-extra:*oauth-access-secret*
          (second (assoc 'access-secret keys))
          chirp-extra:*oauth-access-token*
          (second (assoc 'access-key keys))))
  (chirp:account/verify-credentials))

(chirp-init)

こんな感じで認証ができて、

(chirp:statuses/update "Charpからつぶやき。cl-twitterさよなら")

こんな感じでつぶやけます。
また、chirpは、streaming apiにも対応

(chirp:stream/user (lambda (message)
                     (when message
                       (format T
                               "~&STREAM: ~a~%"
                               (when (typep message 'chirp-objects:status)
                                 (chirp-objects:text message))))
                     T))
;>> STREAM: NIL
;>> STREAM: しかし眠い…時差ぼけ?
;...

まとめ

 今回は、chirpを紹介してみました。
自分は、Twitterは、SLIME経由で利用していますが、以前は、cl-twitterを使ってみたりしていました。
しかし、cl-twitterは、Twitter側のアップデートに追従できずに使えなくなってしまうことが多く、しょうがないのでcl-oauthを直に使ってみたりしていました。
Twitter側のAPIの変更も落ち着いたようですし、chirpはcl-twitterに比べてほど良くまとまっている感じなので使い易そうですね。

comments powered by Disqus