[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: ウェブメ ールの自動取得



From: open@to.707.to <open@to.707.to> さん曰く
Subject: [emacs-w3m:07563] ウェブメールの自動取得
Message-ID: <culavi$s77$1@sea.gmane.org>
Date: Sun, 13 Feb 2005 01:32:37 +0900

> ウェブメールを自動的に取得することが出来ないかと考え、キーボードマクロ
> や w3m- から始まる関数を使った elisp を書いてみているのですが、どうも
> うまく行きません。
> 
> 「メールを利用する」というリンクを押すと、SSLでユーザー名、パスワード
> を入力する小さいボックスが出てくるようなHPで、emacs-w3mではミニバッファ
> で 「user: 」とか「password: 」とか尋ねられるような風になっています。
> ここで入力すれば、ちゃんとemacs-w3mでもログイン、ブラウズ出来ます。
> 
> しかし、この部分を通り抜けることが、キーボードマクロでは出来ないようで、
> 通りぬけた時のマクロを記録して再現しても、やはり聞かれてしまいます。

例としてですが、ぼくが mixi に自動でログインするのはこうやってい
ます。同じ方法で Yahoo だろうが excite だろうがログインできるの
でご参考まで。

w3m-my-post-insert() の第一引数は、その form の上で
M-x list-text-properties-at した 'w3m-form-field-id の値です。
(setq my-id (get-text-property (point) 'w3m-form-field-id))
などでも調べることができます。

# Passwd 書いちゃうので思いっ切り注意。
# (setq w3m-mixi-passwd nil) しておけば、paswd は手入力になりま
# す。

;; mixi に簡単に login してみる。
(defvar w3m-mixi-autologin t "*Use auto login.")
(defvar w3m-mixi-login "login-name" "*Mixi login name.")
(defvar w3m-mixi-passwd "passwd" "*Mixi passwd.")

(add-hook 'w3m-display-hook 'w3m-mixi-login)

(defun w3m-mixi-login (&optional url)
  "http://mixi.jp/ に自動で login する。"
  (interactive)
  (setq url (or url w3m-current-url))
  (when (and url
	     (string-match "^http://mixi\\.jp/$" url))
    (let (pos)
      (when w3m-mixi-login
	(w3m-my-post-insert "fid=2/type=text/name=email/id=8"
			    w3m-mixi-login))
      (when w3m-mixi-passwd
	(w3m-my-post-insert "fid=2/type=password/name=password/id=9"
			    w3m-mixi-passwd 'invisible))
      (setq pos (w3m-my-tp-any (point-min) (point-max)
			       'w3m-form-field-id
			       "fid=2/type=image/name=/id=11"))
      (when (and pos w3m-mixi-login w3m-mixi-passwd)
	(goto-char pos)
	(when w3m-mixi-autologin
	  (w3m-submit-form)
	  (message "Auto login..."))))))

(defun w3m-my-post-insert (fid str &optional invisible)
  (let (pos act)
    (when (setq pos (w3m-my-tp-any (point-min) (point-max)
				     'w3m-form-field-id fid))
      (goto-char pos)
      (when (setq act (w3m-action))
	(w3m-form-put (nth 1 act) (nth 2 act) (nth 3 act) str)
	(w3m-form-replace str invisible)))))

(defun w3m-my-tp-any (beg end prop value)
  (while (and beg (< beg end)
	      (not (equal value (get-text-property beg prop))))
    (setq beg (next-single-property-change beg prop nil end)))
  (if (eq beg end) nil beg))

-- 
白井秀行 (mailto:shirai@meadowy.org)