Hatena::ブログ(Diary)

* *scrap*

2011-12-27

投稿モードバッファ (xyttr Advent Calendar 25日目分)

| 01:31 |  投稿モードバッファ (xyttr Advent Calendar 25日目分)のブックマークコメント

3日遅れでxyttr Advent Calendar 2011の最終記事です。

xyttrはあまりツイートしない人間が作ってる事もあって投稿機能に力が入ってないのですが、もうちょっと何かあった方が良いよなーという事で今後のために投稿用バッファプロトタイプを作ってみました。

hatena-haiku-modeの投稿画面を参考にしています。

https://gist.github.com/1522725

このファイルをロードすると投稿系のキーバインド(u, @, S-@, r u, r r)が下図のような投稿用バッファを開くコマンドに変更されます。

http://gyazo.com/885210cbda66ae1d9d67c0c41e60b635.png

C-c C-cで罫線以下のテキストが投稿されます。

今の所特殊な編集機能はありませんが、ミニバッファでの操作制限(undo等)がなくなっただけでも結構便利になったかと思います。というか今までが不自由すぎたか…

年末・年始で色々試して、次のリリースまでに本体へ組み込みたいと思います。

2011-12-26

xyttrで画像投稿 (xyttr Advent Calendar 24日目分)

| 01:34 |  xyttrで画像投稿 (xyttr Advent Calendar 24日目分)のブックマークコメント

完全に遅刻ですがxyttr Advent Calendar 2011の記事です。

xyttrでやる意味あるの? というと利便性上ほとんど意味ないですが、出来てしまった物はしかたがない。

https://gist.github.com/1521515

xyttr::tweet-with-photoを適当なキーに割り当てるか、M-x xyttr::tweet-with-photoで実行します。

http://gyazo.com/e80dbf64a31d31055ac9428682a307d7.png

実装ですが、connect関数使ってベタで書いてるのはxhrだとこの辺の問題で投稿が失敗(500)してしまうため。

Msxml2.XMLHTTP.6.0を使うようxhrを書き換えて試してみましたが、タイムライン系api等のapi.twitter.comへのリクエストは問題なかったものの画像アップロードは403でした。

ちゃんとパケット調べてないけどやはり余計な0x00で問題起きてそう。

2011-12-25

read it laterをxyttrで見る (xyttr Advent Calendar 23日目分)

| 15:24 |  read it laterをxyttrで見る (xyttr Advent Calendar 23日目分)のブックマークコメント

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

14日目のタイムラインコマンド自作の応用で、read it laterに貯め込んだURLをxyttrで表示してみます。

read it later viewer for xyttr — Gist

ロード後、M-x readitlaterで実行します。

http://gyazo.com/7994e8701b5c3204ad3e776792792469.png

URLの上でmキーを押すと既読マークを付けます、が手抜きなのでステータスバーにメッセージが出るだけで見た目変わりません。起動しなおすとエントリーが消えてます。

もう1つ、read it laterにURLを登録するコマンド ril-focused-url を用意してあります。このコードではr-i-lというキーシーケンスに割り当ててますが適当に変更してお使い下さい。

2011-12-23

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

| 02:05 |  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

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

2011-12-22

xyttr起動用anything source (xyttr Advent Calendar 1日遅れの21日目)

| 03:11 |  xyttr起動用anything source (xyttr Advent Calendar 1日遅れの21日目)のブックマークコメント

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

ランチャーとして使えるxyttr専用のanything sourceを作ってみました。

xyttrの各種コマンド起動用 anything source — Gist

※ .xyzzyかsite-lispからロードして下さい。

xyzzy用anythingは配布元のサイト(http://ottt.x0.com/)が死んでるっぽいので、ミラーとして下記URLに配布ファイルをアップしておきました。

http://dl.dropbox.com/u/215714/xyzzy/ottt-mirror/anything0.1.5.lzh

未インストールの場合このファイルをDLして手動でインストールしてください。

M-x anything-xyttr で起動します。

http://gyazo.com/da615a6b7e4b6b038f1b24c99bcfa382.png

グループの順番変えられないのがちょっと残念。

しかしanythingのカスタムソース表示は色々応用が効きそう。リスト選択とかのUIとして組み込んでしまいたい。

wwWWwwWwwvwwWWWwWWWwvwWWwWwvwWw