* mixi.el (mixi-diary-comment-list-regexp): Follow the change of mixi.
[elisp/mixi.git] / sb-mixi.el
index 0296884..3d6f744 100644 (file)
@@ -1,6 +1,6 @@
 ;;; sb-mixi.el --- shimbun backend for mixi
 
-;; Copyright (C) 2006 OHASHI Akira
+;; Copyright (C) 2006, 2007 OHASHI Akira
 
 ;; Author: OHASHI Akira <bg66@koka-in.org>
 ;; Keywords: news
@@ -37,7 +37,7 @@
   (luna-define-class shimbun-mixi (shimbun) (comment-cache))
   (luna-define-internal-accessors 'shimbun-mixi))
 
-(defcustom shimbun-mixi-group-alist
+(defconst shimbun-mixi-default-group-alist
   '(("new-diaries" . mixi-get-new-diaries)
     ("new-comments" . mixi-get-new-comments)
     ("new-bbses" . mixi-get-new-bbses)
     ("news.pickup.it" .
      (lambda (range)
        (mixi-get-news 'IT 'pickup range))))
+  "An alist of mixi shimbun group default definition.")
+
+(defcustom shimbun-mixi-group-alist nil
   "*An alist of mixi shimbun group definition.
 Each element looks like (NAME . URL) or (NAME . FUNCTION).
-NAME is a shimbun group name.
+NAME is a shimbun group name that you can name it as you like.
 URL is the URL for mixi access point of the group.  If URL is friend's, get
 his/her diaries as article.  If community's, get its BBSes.  If diary's or
 BBS's, get its comments.
@@ -115,6 +118,11 @@ of mixi object."
                              (const :tag "Logs" mixi-get-logs)
                              (function :tag "Other function")))))
 
+(defcustom shimbun-mixi-get-profile-with-diary t
+  "*If non-nil, get his/her profile together with diaries."
+  :group 'shimbun
+  :type 'boolean)
+
 ;; FIXME: Don't use this user option.
 (defcustom shimbun-mixi-page-articles 10
   "*How many articles are there in one page."
@@ -126,6 +134,10 @@ of mixi object."
  h.d+'g\\I{D>Ocy?Rc4uYUyOZj2%2Kl>,x-!MCSsyi3!L}psrrC1jlF,O?Ui>qf)X;sBz`/}\\066X%$
  siG'|4K!2?==|oB&#E'5GGH\\#z[muyQ")))
 
+(defun shimbun-mixi-group-alist ()
+  (append shimbun-mixi-default-group-alist
+         shimbun-mixi-group-alist))
+
 (luna-define-method initialize-instance :after ((shimbun shimbun-mixi)
                                                &rest init-args)
   (shimbun-mixi-set-comment-cache-internal shimbun
@@ -137,7 +149,7 @@ of mixi object."
   (mixi-logout))
 
 (luna-define-method shimbun-groups ((shimbun shimbun-mixi))
-  (mapcar 'car shimbun-mixi-group-alist))
+  (mapcar 'car (shimbun-mixi-group-alist)))
 
 (luna-define-method shimbun-reply-to ((shimbun shimbun-mixi))
   mixi-reply-to)
@@ -147,6 +159,11 @@ of mixi object."
     (catch 'stop
       (while objects
        (let ((object (car objects)))
+         (when (and shimbun-mixi-get-profile-with-diary
+                    (mixi-diary-p object))
+           (let ((owner (mixi-diary-owner object)))
+             (unless (mixi-object-realized-p owner)
+               (mixi-realize-friend owner))))
          (when (mixi-parent-p object)
            (let* ((comments (mixi-get-comments object range))
                   (comment-headers (shimbun-mixi-get-headers shimbun
@@ -184,8 +201,10 @@ of mixi object."
 (luna-define-method shimbun-get-headers ((shimbun shimbun-mixi)
                                         &optional range)
   (let ((url-or-function (cdr (assoc (shimbun-current-group-internal shimbun)
-                                    shimbun-mixi-group-alist)))
-       (range (when (integerp range) (* range shimbun-mixi-page-articles))))
+                                    (shimbun-mixi-group-alist))))
+       (range (shimbun-header-index-pages range)))
+    (when (integerp range)
+      (setq range (* range shimbun-mixi-page-articles)))
     (shimbun-sort-headers
      (shimbun-mixi-get-headers shimbun
                               (mixi-make-objects url-or-function range)
@@ -228,33 +247,6 @@ of mixi object."
               (shimbun-message shimbun "shimbun: Make contents...done")))
           "")))))
 
-(defconst shimbun-mixi-to-regexp
-  "^mixi;\\([a-z]+\\);?\\([a-z0-9]+\\)?;?\\([0-9]+\\)?;?\\([0-9]+\\)?")
-
-(defun shimbun-mixi-send-mail (to title content)
-  (when (string-match shimbun-mixi-to-regexp to)
-    (let ((method (match-string 1 to)))
-      (cond ((string= method "comment")
-            (let ((parent (match-string 2 to))
-                  (owner-id (match-string 3 to))
-                  (id (match-string 4 to)))
-              (if (string= parent "diary")
-                  (mixi-post-comment
-                   (mixi-make-diary (mixi-make-friend owner-id) id) content)
-                (let ((func (intern
-                             (concat mixi-object-prefix "make-" parent))))
-                  (mixi-post-comment
-                   (funcall func (mixi-make-community owner-id) id)
-                   content)))))
-           ((string= method "topic")
-            (mixi-post-topic (mixi-make-community (match-string 2 to))
-                             title content))
-           ((string= method "diary")
-            (mixi-post-diary title content))
-           ((string= method "message")
-            (mixi-post-message (mixi-make-friend (match-string 2 to))
-                               title content))))))
-
 (provide 'sb-mixi)
 
 ;;; sb-mixi.el ends here