英辞郎 on the WebをEmacsから使う(未完)

フリーの英和・和英辞書だと個人的には英辞郎 on the Webが一番だと思うのですが、khikerさんのtext-translatorだと対応してないので残念です。

それで、以前emacsからopen-network-streamとか使ってwebページのソースをとってきてうにゃうにゃして結果を表示しようと頑張ったのですが、その時は"お使いのブラウザは対応してません"的なことを言われてできなかったので諦めてました。

が、さっきwgetをつかったらあっさりソースを持ってこれたので、ちょっと頑張ってみたらできそうです。

結構安いし、仕様変更とかの問題も考えると英辞郎のDVDを買うほうが早い気もしますが。

ただ、あんまりemacs lispに慣れていないので、結果を表示するための一時的なバッファの作り方とか終わったあとの処理とか、先頭に空行が何行かできちゃってるのをどうやって消すかとか、すごい簡単なとこでつまづいてるので、公開できるのはいつになるのかわかりません。

さらにいつになるかわかりませんが、一回でも検索した単語やフレーズに関してはローカルにその結果を保存しといて、検索した回数とか、自分用のメモとかをつけたしていけるようにしたいんですが、本当にいつになるかわかりません。

とりあえずいまのとこできた非常に雑なもの

(defun my-alc (word)
  (interactive "s翻訳: ")
  (let* ((url (concat "http://eow.alc.co.jp/" word "/UTF-8/"))
	 (str (shell-command-to-string (concat "wget -q " url " -O -"))))
    (string-match "検索結果本体 ▼\\(\\w\\|\\W\\)*▲ 検索結果本体 ▲" str)
    (setq str (substring str (+ 22 (match-beginning 0)) (- (match-end 0) 23)))
    (setq str (replace-regexp-in-string "<\\(span\\|font\\)\\(\\w\\|\\W\\)*?>" "" str))
    (setq str (replace-regexp-in-string "</\\(span\\|font\\)>" "" str))
    (setq str (replace-regexp-in-string "</div></li>\\|<ol>\\|</ol>\\|</li><li>" "\n" str))
    (setq str (replace-regexp-in-string "<\\(\\w\\|\\W\\)*?>" "" str))
    (setq str (replace-regexp-in-string "
" "\n" str))
    (pop-to-buffer " *alc* ")
    (insert str)
    (goto-char (point-min))))