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

あらたにす & Google Mobile Proxy サポート



気分が emacs-w3m 向けの状態なので、~/.emacs から二点ほど commit
しました。日本語書きたかったし。。。

(1)「あらたにす」サポート
 読売・朝日・日経の記事を読み比べられる http://allatanys.jp/ で
 すが、そこいら中

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- リダイレクトページ -->
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	</head>
	<body onload="window.top.location.replace('http://www.asahi.com/politics/update/0418/TKY200804180192.html?ref=any');">
	</body>
</html>

 なコードだらけで、emacs-w3m/w3m では真っ白なページしか表示でき
 ません。なので、filter 機能を使って refresh を使って飛べるよう
 にしました。ついでに新聞案内人さんたちの経歴も読めるようにして
 あります。
 
# 本当は、産経と毎日の記事を読み比べたかったかも ;-p

 良く知らないのだけど、<body onload=... は結構汎用的なテクニック
 らしいので、他にも有用なサイトがあるかもしれませんが、有害なも
 のもありそうなテクニックのような気がするので allatanys だけで有
 効にしてあります。

(2) Google Mobile Proxy で next-url/pre-url
 Google Mobile Proxy (http://www.google.com/gwt/n) を使うと携帯
 電話向けにコンパクトなページに(変換できるところは)変換してくれ
 るので、Zaurus + BitwarpPDA で愛用しています。

 allatanys も Google Mobile Proxy 経由だと読めたりするので結構便
 利です。
 
 手元ではまだまだいろいろやっているのですが、そのなかから
 next-url, previous-url を拾うコード部分をコミットしました。
 Google Mobile Proxy を使うのに便利と思い書いたその他のコードも
 添付しておきますが、さすがにこれはコミットできません :-)

 
いじょー

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxx)
;; Google Mobile Proxy
(defvar w3m-use-google-proxy nil
  "*Non-nil means use Google Mobile Proxy.")

(defvar w3m-google-proxy-uri "http://www.google.com/gwt/n?u=")
(defvar w3m-google-proxy-uri-regex
  (concat "^" (regexp-quote w3m-google-proxy-uri)))
(defvar w3m-google-proxy-page-regex "&_gwt_pg=[0-9]+$")

(add-hook 'w3m-mode-hook
	  (lambda ()
	    (define-key w3m-mode-map "\M-p" 'w3m-toggle-use-google-proxy)))

(defun w3m-toggle-use-google-proxy (&optional redisp)
  (interactive "P")
  (setq w3m-use-google-proxy (not w3m-use-google-proxy))
  (save-excursion
    (dolist (buf (w3m-list-buffers))
      (set-buffer buf)
      (if w3m-use-google-proxy
	  (setcar mode-line-buffer-identification "[GMP]%b ")
	(setcar mode-line-buffer-identification "%b "))))
  (if redisp (w3m-redisplay-this-page))
  (message "Google Mobile Proxy: %s"
	   (if w3m-use-google-proxy
	       (propertize "使う" 'face 'bold)
	     (propertize "使わない" 'face 'italic))))

(defun w3m-google-proxy-uri-normalize (url)
  "Normalize URI of Google Mobile Proxy."
  (when (string-match w3m-google-proxy-uri-regex url)
    (setq url (w3m-url-decode-string (substring url (match-end 0))
				     w3m-current-coding-system))
    (cond
     ((string-match w3m-google-proxy-page-regex url)
      (setq url (substring url 0 (match-beginning 0))))
     ((string-match "&_gwt_[^=]+=[0-9]+$" url)
      (setq url (substring url 0 (match-beginning 0)))
      (while (string-match "&_gwt_[^=]+=[0-9]+$" url)
	(setq url (substring url 0 (match-beginning 0)))))))
  url)

(defadvice w3m-buffer-setup (after use-google-mobile-proxy activate)
  (when w3m-use-google-proxy
    (setcar mode-line-buffer-identification "[GMP]%b ")))

(defadvice w3m-uri-replace (after use-google-mobile-proxy activate)
  (let ((url ad-return-value))
    (if w3m-use-google-proxy
	(when (and (string-match "^https?://" url)
		   (not (and
			 w3m-current-url
			 (string-match w3m-google-proxy-uri-regex w3m-current-url)))
		   (not (string-match w3m-google-proxy-uri-regex url)))
	  (setq ad-return-value
		(format "%s%s" w3m-google-proxy-uri url)))
      (setq ad-return-value (w3m-google-proxy-uri-normalize url)))))
ボソボソ

(素の)w3m の local CGI で Google Mobile Proxy を簡単に利用できる
コードが欲しい今日この頃。