[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
あらたにす & Google Mobile Proxy サポート
- From: Hideyuki SHIRAI (白井秀行) <shirai@xxxxxxxxxxx>
- Date: Fri, 18 Apr 2008 19:36:08 +0900 (JST)
- X-ml-name: emacs-w3m
- X-mail-count: 10103
気分が 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 を簡単に利用できる
コードが欲しい今日この頃。