timeline-draw-statuses (xyttr Advent Calendar 22日目分)

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

関数xyttr::timeline-draw-statusesを使った小ネタを2つ。

- *function* timeline-draw-statuses (buf statuses &key (point 0))

    ツイートデータを整形してバッファに出力します。

    * buf -- 出力先バッファ
    * statuses -- ツイートデータのリスト
    * point -- 出力先位置

◆ 栞を挟む

(in-package :xyttr)

;; ツイートデータ生成
(defun make-tweet (status-id name text)
  `(("id" . ,status-id)
    ("user" ("screen_name" . ,name))
    ("text" . ,text)
    ("created_at" . ,(format-date-string "%a %b %d %H:%M:%S %Z %Y"))))

;; カーソル下のツイートの1つ前に栞を挟む
(defun kokomadeyonda2 ()
  (interactive)
  (when (eq buffer-mode 'xyttr-timeline-mode)
    (let ((p (1- (entry-point)))
          (tw (make-tweet nil "xyttr_shiori"
                          (format nil "~V@{◇◆~}"
                                  (ash (window-columns) -2) t))))
      (w/buffer-modifying ()
        (timeline-draw-statuses (selected-buffer) (list tw) :point p)))))

(define-key *xyttr-timeline-keymap* '(#\C-k #\C-m) 'kokomadeyonda2)

http://gyazo.com/81afadeac789639f2089865ebaf30262.png
好きな模様を作って使おう。

◆ トレンドを表示

13日目に紹介したtrends apiを使います。

(define-api trends (woeid exclude)
  :path (format nil "/1/trends/~A.json" woeid))

(defun show-trend ()
  (interactive)
  (when (eq buffer-mode 'xyttr-timeline-mode)
    (let ((buf (selected-buffer)))
      (api-trends-async
       :woeid +woeid-tokyo+
       :onsuccess
       (lambda (res)
         (w/json (trends) (car res)
           (let* ((text (format nil "trends:~{ ~A~}"
                                (mapcar #'(lambda (tr) (json-value tr name))
                                        trends)))
                  (tw (make-tweet nil "xyttr_trend_info" text)))
             (save-excursion
               (set-buffer buf)
               (w/buffer-modifying ()
                 ;; バッファ先頭へ出力
                 (timeline-draw-statuses buf (list tw))
                 (refresh-screen))))))))))

(define-key *xyttr-timeline-keymap* #\t 'show-trend)

http://gyazo.com/f94527999d086b92ee3c8f7b8dacac58.png

トレンドの使い途イマイチ分からん