diff -uNr navi2ch.orig/navi2ch-machibbs.el navi2ch/navi2ch-machibbs.el --- navi2ch.orig/navi2ch-machibbs.el 2008-08-26 23:01:44.000000000 +0900 +++ navi2ch/navi2ch-machibbs.el 2009-12-20 17:43:40.000000000 +0900 @@ -1,6 +1,6 @@ ;;; navi2ch-machibbs.el --- View machiBBS module for Navi2ch. -*- coding: iso-2022-7bit; -*- -;; Copyright (C) 2002, 2003, 2004 by Navi2ch Project +;; Copyright (C) 2002, 2003, 2004, 2009 by Navi2ch Project ;; Author: ;; Part5 スレの 509 の名無しさん @@ -30,7 +30,7 @@ ;;; Code: (provide 'navi2ch-machibbs) (defconst navi2ch-machibbs-ident - "$Id: navi2ch-machibbs.el,v 1.30 2008/08/26 14:01:44 nawota Exp $") + "$Id: navi2ch-machibbs.el,v 1.32 2009/02/25 16:55:10 nawota Exp $") (eval-when-compile (require 'cl)) (require 'navi2ch-multibbs) @@ -76,8 +76,8 @@ (navi2ch-multibbs-defcallback navi2ch-machibbs-subject-callback (machibbs) "subject.txt を取得するとき navi2ch-net-update-file で使われるコールバック関数" - (while (re-search-forward "\\([0-9]+\\.\\)cgi\\([^\n]+\n\\)" nil t) - (replace-match "\\1dat\\2"))) + (while (re-search-forward "[0-9]+<>\\([0-9]+\\)<>\\([^\n]+\n\\)" nil t) + (replace-match "\\1.dat<>\\2"))) (defun navi2ch-machibbs-article-update (board article start) "BOARD ARTICLE の記事を更新する。 @@ -88,26 +88,26 @@ (url (navi2ch-machibbs-article-to-url board article start nil start)) (func (if start 'navi2ch-machibbs-article-callback-diff 'navi2ch-machibbs-article-callback))) + (message "URL %s" url) (navi2ch-net-update-file url file time func nil start))) (defun navi2ch-machibbs-article-to-url (board article &optional start end nofirst) "BOARD, ARTICLE から url に変換。 -START, END, NOFIRST で範囲を指定する" ; 効かなかったら教えてください。 - (let ((uri (cdr (assq 'uri board))) - (artid (cdr (assq 'artid article)))) - (string-match "\\(.*\\)\\/\\([^/]*\\)\\/" uri) ; \\/ --> / ? - (concat - (format "%s/bbs/read.pl?BBS=%s&KEY=%s" - (match-string 1 uri) (match-string 2 uri) artid) - (if (and (stringp start) - (string-match "l\\([0-9]+\\)" start)) - (format "&LAST=%s" (match-string 1 start)) - (concat - (and start (format "&START=%d" start)) - (and end (format "&END=%d" end)))) - (and nofirst - (not (eq start 1)) - "&NOFIRST=TRUE")))) +START, END, NOFIRST で範囲を指定する" + (let ((uri (navi2ch-board-get-uri board)) + (start (if (numberp start) + (number-to-string start) + start)) + (end (if (numberp end) + (number-to-string end) + end))) + (if (string-match "\\(.+\\)/\\([^/]+\\)/$" uri) + (format "%s/bbs/read.cgi/%s/%s/%s" + (match-string 1 uri) (match-string 2 uri) + (cdr (assq 'artid article)) + (if (equal start end) + (or start "") + (concat start (and (or start end) "-") end)))))) (defun navi2ch-machibbs-url-to-board (url) "url から BOARD に変換。" @@ -228,10 +228,14 @@ (navi2ch-machibbs-article-callback t)) (defun navi2ch-machibbs-board-update (board) - (let ((url (navi2ch-board-get-url board)) - (file (navi2ch-board-get-file-name board)) - (time (cdr (assq 'time board))) - (func (navi2ch-multibbs-subject-callback board))) - (navi2ch-net-update-file url file time func))) + (let ((uri (navi2ch-board-get-uri board))) + (when (string-match "\\(.+\\)/\\([^/]+\\)/$" uri) + (let ((url (format "%s/bbs/offlaw.cgi/%s/" + (match-string 1 uri) + (cdr (assq 'id board)))) + (file (navi2ch-board-get-file-name board)) + (time (cdr (assq 'time board))) + (func (navi2ch-multibbs-subject-callback board))) + (navi2ch-net-update-file url file time func))))) ;;; navi2ch-machibbs.el ends here