twitter-modeへのパッチ
twitter-modeつかっててとっても便利!なんだけど、自分の使い方でひとつ足りないものが。それは「送信したダイレクトメッセージ」が見れないこと。
そんなに使わないんだけど、「あれ?どういう内容送ったっけ?」ってなった時にいちいちWebで確認するのもあほらしい。ので既存のコードを切り貼りしていじくって、送信したダイレクトメッセージを表示できるようにした。
ただし、自分がjson指定でしか使ってないので、api-xml.lには手を入れていない。あしからず。
--- api-json.l.org Mon Mar 23 13:46:26 2009 +++ api-json.l Fri Jun 05 14:58:48 2009 @@ -301,6 +301,11 @@ (concat *api-url-root* "direct_messages.json")) +(defun url-direct_messages_sent () + (concat *api-url-root* + "direct_messages/" + "sent.json")) + (defun url-friends (&optional target) (concat *api-url-root* "statuses/" --- api.l.org Mon Mar 23 14:00:55 2009 +++ api.l Fri Jun 05 15:03:00 2009 @@ -272,6 +272,22 @@ (t (values nil status (read-error)))))))) +(defun statuses-direct_messages_sent (username password &optional force) + (let* ((url (url-direct_messages_sent)) + (tmpfile (local-file url username)) + (headers (create-request-headers username password))) + (multiple-value-bind (status response-headers) + (http-download-file url tmpfile force :headers headers) + (progn + (twdebug "~S~%~S~%~S~%~{~S~%~}" url tmpfile status response-headers) + (when (file-exist-p tmpfile) + (setq data + (parse-file tmpfile))) + (cond ((equal status "200") + (values t status (parse-direct_messages data))) + (t + (values nil status (read-error)))))))) + (defun statuses-friends (username password &optional force target) (let* ((url (url-friends target)) (tmpfile (local-file url username)) --- summary.l.org Mon Mar 23 22:23:25 2009 +++ summary.l Fri Jun 05 15:07:01 2009 @@ -67,6 +67,7 @@ (define-key *summary-map* #\f 'summary-load-statuses-friends) (define-key *summary-map* #\r 'summary-load-statuses-replies) (define-key *summary-map* #\d 'summary-load-statuses-direct) + (define-key *summary-map* #\D 'summary-load-statuses-direct-sent) (define-key *summary-map* #\s 'summary-load-statuses-user) (define-key *summary-map* #\p 'summary-load-statuses-public) (define-key *summary-map* #\i 'summary-load-friends) @@ -125,6 +126,12 @@ #'(lambda () (if *summary-target-user* :disable))) (add-menu-item menu + 'summary-load-statuses-direct-sent + "Direct Messages Sent(&D)" + 'summary-load-statuses-direct-sent + #'(lambda () + (if *summary-target-user* :disable))) + (add-menu-item menu 'summary-load-friends "Followings(&i)" 'summary-load-friends) @@ -326,6 +333,7 @@ ('summary-load-statuses-friends "Recent") ('summary-load-statuses-replies "Replies") ('summary-load-statuses-direct "Direct Messages") + ('summary-load-statuses-direct-sent "Direct Messages Sent") ('summary-load-friends "Followings") ('summary-load-followers "Followeres") (t nil) @@ -512,6 +520,20 @@ (summary-buffer-prepare) (summary-print statuses) (summary-history-add 'summary-load-statuses-direct clear-forward)) + (summary-error status statuses))))) + +(defun summary-load-statuses-direct-sent (&optional force (clear-forward t)) + (interactive "p") + (when *summary-target-user* + (error "ユーザーを指定して実行することはできません")) + (long-operation + (multiple-value-bind (result status statuses) + (statuses-direct_messages_sent *username* *password* force) + (if result + (progn + (summary-buffer-prepare) + (summary-print statuses) + (summary-history-add 'summary-load-statuses-direct-sent clear-forward)) (summary-error status statuses))))) (defun summary-load-friends (&optional force (clear-forward t))