X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mixi-utils.el;h=695dda1d63cd98c350c9320b340fb58d2eed9ed9;hb=ee8d6840f3c2fa748e560fd8bad78d1107121f6a;hp=34a1f07c8d1b65aebc589b10585c1d3403777dcb;hpb=afc62a90859819a7695f6706ee0b67b6edeb5729;p=elisp%2Fmixi.git diff --git a/mixi-utils.el b/mixi-utils.el index 34a1f07..695dda1 100644 --- a/mixi-utils.el +++ b/mixi-utils.el @@ -1,6 +1,6 @@ ;; mixi-utils.el --- Utilities for mixi object -*- coding: euc-jp -*- -;; Copyright (C) 2007 OHASHI Akira +;; Copyright (C) 2007, 2008 OHASHI Akira ;; Author: OHASHI Akira ;; Keywords: hypermedia @@ -18,9 +18,9 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with this program; if not, you can either send email to this -;; program's maintainer or write to: The Free Software Foundation, -;; Inc.; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -62,6 +62,9 @@ (mixi-comment-parent object) add-parent))) ((eq class 'mixi-log) (mixi-friend-nick (mixi-log-friend object))) + ((eq class 'mixi-echo) + (concat (mixi-friend-nick (mixi-echo-owner object)) " (" + (mixi-echo-post-time object) ")")) (t (let ((prefix (when (eq class 'mixi-event) "[¥¤¥Ù¥ó¥È]")) (subject (mixi-object-title object)) @@ -78,17 +81,41 @@ ")")))) (concat prefix subject suffix)))))) -(defun mixi-make-author (object) +(defun mixi-make-author (object &optional add-comment-count) (with-mixi-class object - (if (eq class 'mixi-news) - (mixi-news-media object) - (let ((owner (if (eq class 'mixi-log) - (mixi-log-friend object) - (mixi-object-owner object)))) - (mixi-friend-nick owner))))) + (cond ((eq class 'mixi-news) + (mixi-news-media object)) + ((and add-comment-count + (eq class 'mixi-comment) + (mixi-bbs-p (mixi-comment-parent object))) + (concat (mixi-comment-count object) " " + (mixi-friend-nick (mixi-comment-owner object)))) + ((eq class 'mixi-release) + "mixi±¿±Ä»ö̳¶É") + ((eq class 'mixi-message) + (let ((owner (mixi-message-owner object))) + (if (null owner) "mixi" (mixi-friend-nick owner)))) + (t + (let ((owner (if (eq class 'mixi-log) + (mixi-log-friend object) + (mixi-object-owner object)))) + (mixi-friend-nick owner)))))) + +(defun mixi-make-time (object) + (with-mixi-class object + (if (eq class 'mixi-echo) + (let ((post-time (mixi-echo-post-time object))) + (encode-time + (string-to-number (substring post-time 12 14)) + (string-to-number (substring post-time 10 12)) + (string-to-number (substring post-time 8 10)) + (string-to-number (substring post-time 6 8)) + (string-to-number (substring post-time 4 6)) + (string-to-number (substring post-time 0 4)))) + (mixi-object-time object)))) (defun mixi-make-date (object) - (let* ((time (mixi-object-time object)) + (let* ((time (mixi-make-time object)) (cts (current-time-string time)) (day-of-week (substring cts 0 3)) (month (substring cts 4 7))) @@ -100,7 +127,7 @@ (defun mixi-make-id-1 (object) (with-mixi-class object (concat - (format-time-string "%Y%m%d%H%M" (mixi-object-time object)) "." + (format-time-string "%Y%m%d%H%M" (mixi-make-time object)) "." (cond ((eq class 'mixi-comment) (concat (mixi-friend-id (mixi-comment-owner object)) "@" (mixi-object-id (mixi-comment-parent object)) "." @@ -108,6 +135,12 @@ (mixi-comment-parent object))) ".")) ((eq class 'mixi-log) (concat (mixi-friend-id (mixi-log-friend object)) "@")) + ((eq class 'mixi-release) + (concat (md5 (mixi-release-title object)) "@")) + ((eq class 'mixi-echo) + (concat (mixi-friend-id (mixi-echo-owner object)) "@")) + ((and (eq class 'mixi-message) (null (mixi-message-owner object))) + (concat (mixi-object-id object) "@")) (t (concat (mixi-object-id object) "@" (if (eq class 'mixi-news) @@ -120,7 +153,7 @@ (defun mixi-make-tag-uri (object) (format "tag:mixi.jp,%s:%s" - (format-time-string "%Y-%m-%d" (mixi-object-time object)) + (format-time-string "%Y-%m-%d" (mixi-make-time object)) (mixi-make-id-1 object))) (defun mixi-make-url (object) @@ -138,10 +171,16 @@ (mixi-expand-url (mixi-message-page object))) ((eq class 'mixi-news) (mixi-news-page object)) + ((eq class 'mixi-release) + (let ((url (mixi-release-list-page))) + (mixi-expand-url (substring url 0 + (string-match "?" url))))) ((eq class 'mixi-log) (mixi-expand-url (mixi-friend-page (mixi-log-friend object)))) ((eq class 'mixi-friend) - (mixi-expand-url (mixi-friend-page object)))))) + (mixi-expand-url (mixi-friend-page object))) + ((eq class 'mixi-echo) + (mixi-expand-url (mixi-echo-page object)))))) (defun mixi-make-encoded-url (object) (mixi-url-encode-string (mixi-make-url object))) @@ -149,22 +188,18 @@ (defun mixi-make-content (object) (with-mixi-class object (cond ((eq class 'mixi-event) - (let ((limit (mixi-event-limit object))) - (setq limit (if limit - (format-time-string "%Yǯ%m·î%dÆü" limit) - "»ØÄê¤Ê¤·")) - (concat "
" - "
³«ºÅÆü»þ¡§
" - "
" (mixi-event-date object) "
\n" - "
³«ºÅ¾ì½ê¡§
" - "
" (mixi-event-place object) "
\n" - "
¾ÜºÙ¡§
" - "
" (mixi-event-detail object) "
\n" - "
Ê罸´ü¸Â¡§
" - "
" limit "
\n" - "
»²²Ã¼Ô¡§
" - "
" (mixi-event-members object) "
\n" - "
"))) + (concat "
" + "
³«ºÅÆü»þ¡§
" + "
" (mixi-event-date object) "
\n" + "
³«ºÅ¾ì½ê¡§
" + "
" (mixi-event-place object) "
\n" + "
¾ÜºÙ¡§
" + "
" (mixi-event-detail object) "
\n" + "
Ê罸´ü¸Â¡§
" + "
" (mixi-event-limit object) "
\n" + "
»²²Ã¼Ô¡§
" + "
" (mixi-event-members object) "
\n" + "
")) ((eq class 'mixi-friend) (if (mixi-object-realized-p object) (let ((sex (if (eq (mixi-friend-sex object) 'male) "ÃË" "½÷")) @@ -178,8 +213,10 @@ (mixi-friend-birthday object) "·î") "Æü") "??·î??Æü")) - (blood-type (symbol-name - (mixi-friend-blood-type object))) + (blood-type (if (mixi-friend-blood-type object) + (symbol-name + (mixi-friend-blood-type object)) + "?")) (hobby (mapconcat 'identity (mixi-friend-hobby object) ", "))) (concat "
" @@ -231,12 +268,19 @@ (mixi-community-id object))) ((or (eq class 'mixi-news) (eq object (mixi-make-me))) (concat mixi-reply-to "diary")) - ((eq class 'mixi-message) + ((and (eq class 'mixi-message) + (not (null (mixi-message-owner object)))) (concat mixi-reply-to "message;" (mixi-friend-id (mixi-message-owner object)))) ((or (eq class 'mixi-friend) (eq class 'mixi-log)) (concat mixi-reply-to "message;" - (mixi-friend-id object)))))))) + (mixi-friend-id object))) + ((eq class 'mixi-echo) + (concat mixi-reply-to "echo;" + (mixi-friend-id (mixi-echo-owner object)) ";" + (mixi-echo-post-time object))) + (t + (concat mixi-reply-to "diary"))))))) (defconst mixi-to-regexp "^mixi;\\([a-z]+\\);?\\([a-z0-9]+\\)?;?\\([0-9]+\\)?;?\\([0-9]+\\)?") @@ -263,7 +307,13 @@ (mixi-post-diary title content)) ((string= method "message") (mixi-post-message (mixi-make-friend (match-string 2 to)) - title content)))))) + title content)) + ((string= method "echo") + (let ((owner-id (match-string 2 to)) + (post-time (match-string 3 to))) + (mixi-post-echo content + (mixi-make-echo (mixi-make-friend owner-id) + post-time)))))))) (provide 'mixi-utils)