X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mixi.el;h=f748c6e6786559697aa10d0188177eace831d6f0;hb=d8e0b1ad5f8fe35570f146b534273a76d9d10ff5;hp=501d0a0675f795c45798f9184d23bb7da4126f41;hpb=84345397ddfa6530638c1467e3543c3268ff46e4;p=elisp%2Fmixi.git diff --git a/mixi.el b/mixi.el index 501d0a0..f748c6e 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.184 $") (defgroup mixi nil "API library for accessing to mixi." @@ -3012,6 +3013,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