X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mixi.el;h=b48c07ac6a907ca0334b417a8785f54535ff4ab9;hb=38b07099ad2519cbed3b2e929f09f5d24ae98c70;hp=501d0a0675f795c45798f9184d23bb7da4126f41;hpb=84345397ddfa6530638c1467e3543c3268ff46e4;p=elisp%2Fmixi.git
diff --git a/mixi.el b/mixi.el
index 501d0a0..b48c07a 100644
--- a/mixi.el
+++ b/mixi.el
@@ -45,6 +45,7 @@
;; * mixi-get-messages
;; * mixi-get-introductions (broken)
;; * mixi-get-news
+;; * mixi-get-releases
;;
;; APIs for posting:
;;
@@ -138,7 +139,7 @@
(autoload 'w3m-retrieve "w3m")
(autoload 'url-retrieve-synchronously "url"))
-(defconst mixi-revision "$Revision: 1.183 $")
+(defconst mixi-revision "$Revision: 1.185 $")
(defgroup mixi nil
"API library for accessing to mixi."
@@ -2846,8 +2847,7 @@ Increase this value when unexpected error frequently occurs."
(defconst mixi-news-content-regexp
"
\\(.+\\)
-
-
++
\\(
\\|\\)")
@@ -3012,6 +3012,69 @@ Increase this value when unexpected error frequently occurs."
(nth 2 item))))
items)))
+;; Release object.
+(defun mixi-make-release (title time content)
+ "Return a release object."
+ (cons 'mixi-release (vector title time content)))
+
+(defmacro mixi-release-p (release)
+ `(eq (mixi-object-class ,release) 'mixi-release))
+
+(defun mixi-release-title (release)
+ "Return the title of RELEASE."
+ (unless (mixi-release-p release)
+ (signal 'wrong-type-argument (list 'mixi-release-p release)))
+ (aref (cdr release) 0))
+
+(defun mixi-release-time (release)
+ "Return the time of RELEASE."
+ (unless (mixi-release-p release)
+ (signal 'wrong-type-argument (list 'mixi-release-p release)))
+ (aref (cdr release) 1))
+
+(defun mixi-release-content (release)
+ "Return the content of RELEASE."
+ (unless (mixi-release-p release)
+ (signal 'wrong-type-argument (list 'mixi-release-p release)))
+ (aref (cdr release) 2))
+
+(defmacro mixi-release-list-page ()
+ `(concat "/release_info.pl?page=%d"))
+
+(defconst mixi-release-list-regexp
+ "
¢£ \\(.+\\) |
+
\\([1-9][0-9]+\\)\\.\\([0-9]+\\)\\.\\([0-9]+\\) |
+
+
+
+
+
+
+
+
+
")
+
+;;;###autoload
+(defun mixi-get-releases (&optional range)
+ "Get releases."
+ (let ((items (mixi-get-matched-items (mixi-release-list-page)
+ mixi-release-list-regexp
+ range)))
+ (mapcar (lambda (item)
+ (mixi-make-release (nth 0 item)
+ (encode-time 0 0 0
+ (string-to-number (nth 3 item))
+ (string-to-number (nth 2 item))
+ (string-to-number (nth 1 item)))
+ (nth 4 item)))
+ items)))
+
(provide 'mixi)
;;; mixi.el ends here