emacsからtwitterに投稿する何か

emacsのミニバッファからtwitterに記事を投稿するしか機能がないインタラクティブ関数.

今日はVersion 0.1位

ポイント

  • シンプル.
  • らくちん

注意点(と,今後改善したいこと)

  • 入力がUTF-8である事が前提
  • 投稿が失敗したか成功したかわからん(確認する関数を書いていない)

コード

(defun read-from-minibuffer/maxlength (prompt maxlength)
  (interactive)
  (let ((msg (read-from-minibuffer prompt)))
    (while (> (length msg) maxlength)
      (setq msg (read-from-minibuffer (concat "less than "
					      (format "%d" maxlength)
					      " : "))))
    msg))
  
(defun postwittit ()
  "update twitter with emacs"
  (interactive)
  (let ((buf (get-buffer-create "postwittit-results"))
	(proc nil)
	(msg (w3m-url-encode-string
	      (read-from-minibuffer/maxlength "message (less than 140) : " 140)
	      'utf-8)))
    (setq proc (open-network-stream
		"postwittit-results"
		buf
		"twitter.com"
		80))
    (process-send-string
     proc
     (concat
      "POST /statuses/update.xml?status="
      msg
      " HTTP/1.0\r\n"
      "MIME-Version: 1.0\r\n"
      "Authorization: Basic "
      (base64-encode-string (concat (car postwittit-user)
				    ":"
				    (car (cdr postwittit-user))))
      "\r\n\r\n"))))

使いかた

(事前にw3mをインストールしておくこと)

適当なところに貼付けて,読み込ませる.

で,.emacs

(require 'w3m)
(setq postwittit-user '("ユーザ名" "パスワード"))

を書いておく.

あとは,M-x postwittitで呼び出す.

ミニバッファにメッセージの入力を促されるので入力.

投稿が成功しようが失敗しようが何もでないのは仕様です.

課題

バッファに応答が戻ってくるんだけど,どうやって応答を読み込もうかな.

応答の完了をイベントみたいに通知してくれる仕組みとかあるのかな?