navi2chのnavi2ch-search-webのスレ検索を2ken.netに変えるpatch公開します。

find.2ch.netはどうもdat落ちしたスレとかまで引っかかるのが多い気がして気に入らなかったので、2ken.netに変えてみました。関数名とか変数名とか全部別にすればよかったんでしょうけど、navi2chの全体像を把握してないので必要なところのみ書き換えました。

ちなみに

(setq navi2ch-search-find-2ch-search-num 100)

と~/.navi2ch/init.elに書いておけば、100件表示で検索できますが(大体は100件で事足りると思うのですが100件超えた場合も)、M-x navi2ch-search-web-next で 次の100 件を表示させる事は出来ませんでしたorz

だれか、うまい解決法を教えていただけないかなぁチラッチラッ

--- navi2ch-search.el.orig	2012-07-11 08:45:59.359375000 +0900
+++ navi2ch-search.el	2012-09-06 12:27:01.140625000 +0900
@@ -381,7 +381,7 @@
 (defun navi2ch-search-web-make-list (url title num)
   "((board) (subject)) のような navi2ch 内部のスレ情報を擬似的に作成。"
   (when (string-match 
-	 "\\(http://[-a-zA-Z0-9_.!~*';/?:@&=+$,%#]+/\\)test/read.cgi/\\(.+\\)/\\([0-9]+\\)/.*" 
+	 "\\(http://[-a-zA-Z0-9_.!~*';/?:@&=+$,%#]+/\\)test/read.cgi/\\(.+\\)/\\([0-9]+\\).*" 
 	 url)
     (let ((subject (cons 'subject title))
 	  (response (cons 'response num))
@@ -399,10 +399,16 @@
 find.2ch.net の仕様上、最大は50件")
 (defvar navi2ch-search-find-2ch-coding 'euc-japan-dos
   "find.2ch.net で使われるコーディング")
-(defconst navi2ch-search-find-2ch-thread-regexp
-  "<dt><a href=\"\\(http://[-a-zA-Z0-9_.!~*';/?:@&=+$,%#]+\\)\">\\(.*\\)</a> (\\([0-9]+\\)) - <font size=[-0-9]+><a href=.+/>\\(.+\\)板</a>.+</font></dt><dd>"
-  "find.2ch.net で検索する regexp")
+(setq navi2ch-search-find-2ch-thread-regexp
+;;(defconst navi2ch-search-find-2ch-thread-regexp
+  (concat "<dt>[0-9]+\\. *<strong><a href=\"\\(http://[0-9a-zA-Z-]+\\.2ch\\.net/test/read\.cgi/[a-zA-Z0-9-]+/[0-9]+\\)\">\\(.*\\)</a></strong> (スコア: *[0-9]+)[^<]*"
+	  "<dd>.*</font>[^<]*"
+	  "<dd>[^<]*"
+	  "<dd><a .*br>"))
+;;  "2ken.2ch.net で検索する regexp")
 
+
+;;; 変更
 (defun navi2ch-search-find-2ch-subject-list (query offset)
   "find.2ch.net に文字列 `query' でリクエスト。
 `offset' は「次の10件」とか表示させたいときに使う。"
@@ -415,7 +421,7 @@
 					   navi2ch-search-find-2ch-coding t))
 	 ;; 意味も分からず使ってるパラメータ多し。内部仕様が分かり次第改善予定
 	 (url (format 
-	       "http://find.2ch.net/?STR=%s&SCEND=A&SORT=MODIFIED&COUNT=%s&TYPE=TITLE&BBS=ALL&OFFSET=%s" 
+	       "http://2ken.net/cgi-bin/namazu.cgi?key=%s&submit=search+%21%21&whence=0&dbname=all&max=%s&whence=%s"
 	       query navi2ch-search-find-2ch-search-num offset))
 	 (proc (navi2ch-net-download-file url))
 	 (cont (decode-coding-string (navi2ch-net-get-content proc) 
@@ -425,7 +431,7 @@
       (insert cont)
       (goto-char (point-min))
       ;; まず総ヒット件数を探す
-      (if (re-search-forward "<font color=white size=-1>\\([0-9]+\\)スレ中.*秒</font>" nil t)
+      (if (re-search-forward "<strong> Total <!-- HIT -->\\([0-9]+\\)<!-- HIT --> documents matching your query.</strong>" nil t)
 	  (progn
 	    (setq navi2ch-search-web-total-hit (string-to-number (match-string 1)))
 	    (while (re-search-forward 
@@ -433,7 +439,7 @@
 		    nil t)
 	      (let ((url (match-string 1))
 		    (title (navi2ch-replace-html-tag (match-string 2)))
-		    (num  (match-string 3)))
+		    (num  "レス数不明")) ;;2ken.netでは取得不可能
 		(push (navi2ch-search-web-make-list url title num)
 		      subject-list))))
 	(setq navi2ch-search-web-total-hit 0)
@@ -443,17 +449,17 @@
 	       navi2ch-search-web-total-hit)
 	  navi2ch-search-web-current-end
 	  (min (+ navi2ch-search-find-2ch-last-search-num 
-		  (min navi2ch-search-find-2ch-search-num 50))
+		  (min navi2ch-search-find-2ch-search-num 100))
 	       navi2ch-search-web-total-hit))
     (nreverse subject-list)))
 
 ;; 次のページ
 (defun navi2ch-search-find-2ch-next ()
-   (min navi2ch-search-find-2ch-search-num 50))
+   (min navi2ch-search-find-2ch-search-num 100))
 
 ;; 前のページ
 (defun navi2ch-search-find-2ch-previous ()
-  (- (min navi2ch-search-find-2ch-search-num 50)))
+  (- (min navi2ch-search-find-2ch-search-num 100)))
 
 ;;; navi2ch h.ula.cc
 (defvar navi2ch-search-hula-method