;; * mixi-get-friends
;; * mixi-get-favorites
;; * mixi-get-logs
+;; * mixi-get-recommended-friends (indies)
;; * mixi-get-diaries
;; * mixi-get-new-diaries
;; * mixi-search-diaries
;; * mixi-get-communities
;; * mixi-search-communities
+;; * mixi-get-recommended-communities (indies)
;; * mixi-get-bbses
;; * mixi-get-new-bbses
;; * mixi-search-bbses
(autoload 'w3m-retrieve "w3m")
(autoload 'url-retrieve-synchronously "url"))
-(defconst mixi-revision "$Revision: 1.175 $")
+(defconst mixi-revision "$Revision: 1.179 $")
(defgroup mixi nil
"API library for accessing to mixi."
(string-to-number (nth 0 item)))))
items)))
+;; Recommended friend.
+(defmacro mixi-recommended-friend-list-page ()
+ `(concat "http://indies.mixi.jp/recommend.pl"))
+
+(defconst mixi-recommended-friend-list-regexp
+ "<div class=\"iconListImage\"><a href=\"http://mixi\\.jp/show_friend\\.pl\\?id=\\([0-9]+\\)\" [^>]+>.+</a></div><span>\\(.+?\\)¤µ¤ó([0-9]+)</span>")
+
+;;;###autoload
+(defun mixi-get-recommended-friends (&optional range)
+ "Get recommended friends."
+ (let ((items (mixi-get-matched-items (mixi-recommended-friend-list-page)
+ mixi-recommended-friend-list-regexp
+ range)))
+ (mapcar (lambda (item)
+ (mixi-make-friend (nth 0 item) (nth 1 item)))
+ items)))
+
;; Diary object.
(defvar mixi-diary-cache (make-hash-table :test 'equal))
(defun mixi-make-diary (owner id &optional comment-count time title content)
(mixi-make-community (nth 0 item) (nth 1 item)))
items)))
+;; Recommended community.
+(defalias 'mixi-recommended-community-list-page
+ 'mixi-recommended-friend-list-page)
+
+(defconst mixi-recommended-community-list-regexp
+ "<div class=\"iconListImage\"><a href=\"http://mixi\\.jp/view_community\\.pl\\?id=\\([0-9]+\\)\" [^>]+>.+</a></div><span>\\(.+\\)([0-9]+)</span>")
+
+;;;###autoload
+(defun mixi-get-recommended-communities (&optional range)
+ "Get recommended communities."
+ (let ((items (mixi-get-matched-items (mixi-recommended-community-list-page)
+ mixi-recommended-community-list-regexp
+ range)))
+ (mapcar (lambda (item)
+ (mixi-make-community (nth 0 item) (nth 1 item)))
+ items)))
+
;; Topic object.
(defvar mixi-topic-cache (make-hash-table :test 'equal))
(defun mixi-make-topic (community id &optional comment-count time title owner
(funcall func parent page)))
;; Comment object.
-(defun mixi-make-comment (parent owner time content)
+(defun mixi-make-comment (parent owner time content &optional count)
"Return a comment object."
- (cons 'mixi-comment (vector parent owner time content)))
+ (cons 'mixi-comment (vector parent owner time content count)))
(defmacro mixi-comment-p (comment)
`(eq (mixi-object-class ,comment) 'mixi-comment))
(signal 'wrong-type-argument (list 'mixi-comment-p comment)))
(aref (cdr comment) 3))
+(defun mixi-comment-count (comment)
+ "Return the count of COMMENT."
+ (unless (mixi-comment-p comment)
+ (signal 'wrong-type-argument (list 'mixi-comment-p comment)))
+ (aref (cdr comment) 4))
+
(defun mixi-diary-comment-list-page (diary)
(concat "/view_diary.pl?full=1"
"&id=" (mixi-diary-id diary)
<span class=\"commentTitleDate\">\\([0-9]+\\)ǯ\\([0-9]+\\)·î\\([0-9]+\\)Æü \\([0-9]+\\):\\([0-9]+\\)</span>
</dt>
-
-
+
<dd>
\\(\\(.\\|\r?\n\\)*?\\)
;; FIXME: Split regexp to time, owner(id and nick) and contents.
(defconst mixi-topic-comment-list-regexp
- "<span class=\"date\">\\([0-9]+\\)ǯ\\([0-9]+\\)·î\\([0-9]+\\)Æü \\([0-9]+\\):\\([0-9]+\\)</span></dt>
+ "<dt class=\"commentDate clearfix\"><span class=\"senderId\">\\(<input id=\"commentCheck01\" name=\"comment_id\" type=\"checkbox\" value=\"[0-9]+\" /><label for=\"commentCheck01\">\\|\\)\\([0-9]+\\)\\(<span class=\"deleteTextArea\"><a href=\"delete_bbs_comment\\.pl\\?id=[0-9]+&comm_id=[0-9]+&comment_id=[0-9]+\">¼«Ê¬¤Î¥³¥á¥ó¥È¤òºï½ü¤¹¤ë</a></span>\\|</label>\\|\\)</span>
+<span class=\"date\">\\([0-9]+\\)ǯ\\([0-9]+\\)·î\\([0-9]+\\)Æü \\([0-9]+\\):\\([0-9]+\\)</span></dt>
<dd>
<dl class=\"commentContent01\">
<dt><a href=\"show_friend\\.pl\\?id=\\([0-9]+\\)\">\\(.*\\)</a></dt>
;; FIXME: Split regexp to time, owner(id and nick) and contents.
(defconst mixi-event-comment-list-regexp
- "<span class=\"date\">\\([0-9]+\\)ǯ\\([0-9]+\\)·î\\([0-9]+\\)Æü \\([0-9]+\\):\\([0-9]+\\)</span></dt>
+ "<dt class=\"commentDate clearfix\"><span class=\"senderId\">\\(<input id=\"commentCheck01\" name=\"comment_id\" type=\"checkbox\" value=\"[0-9]+\" /><label for=\"commentCheck01\">\\|\\)\\([0-9]+\\)\\(<span class=\"deleteTextArea\"><a href=\"delete_bbs_comment\\.pl\\?id=[0-9]+&comm_id=[0-9]+&comment_id=[0-9]+\">¼«Ê¬¤Î¥³¥á¥ó¥È¤òºï½ü¤¹¤ë</a></span>\\|</label>\\|\\)</span>
+<span class=\"date\">\\([0-9]+\\)ǯ\\([0-9]+\\)·î\\([0-9]+\\)Æü \\([0-9]+\\):\\([0-9]+\\)</span></dt>
<dd>
<dl class=\"commentContent01\">
<dt><a href=\"show_friend\\.pl\\?id=\\([0-9]+\\)\">\\(.*\\)</a></dt>
(setq page nil))
(let ((items (mixi-get-matched-items page regexp range t)))
(mapcar (lambda (item)
- (let (owner-id owner-nick year month day hour minute content)
+ (let (owner-id owner-nick year month day hour minute content
+ count)
(if (eq (mixi-object-class parent) 'mixi-diary)
(progn
(setq owner-id (nth 1 item))
(setq hour (nth 7 item))
(setq minute (nth 8 item))
(setq content (nth 9 item)))
- (setq owner-id (nth 5 item))
- (setq owner-nick (nth 6 item))
- (setq year (nth 0 item))
- (setq month (nth 1 item))
- (setq day (nth 2 item))
- (setq hour (nth 3 item))
- (setq minute (nth 4 item))
- (setq content (nth 7 item)))
+ (setq owner-id (nth 8 item))
+ (setq owner-nick (nth 9 item))
+ (setq year (nth 3 item))
+ (setq month (nth 4 item))
+ (setq day (nth 5 item))
+ (setq hour (nth 6 item))
+ (setq minute (nth 7 item))
+ (setq content (nth 10 item))
+ (setq count (nth 1 item)))
(mixi-make-comment parent (mixi-make-friend owner-id
owner-nick)
(encode-time
(string-to-number day)
(string-to-number month)
(string-to-number year))
- content)))
+ content count)))
items))))
(defmacro mixi-new-comment-list-page ()
(aset (cdr news) 6 content))
(defconst mixi-news-category-list '(domestic politics economy area abroad
- sports entertainment IT))
+ sports entertainment IT game-anime
+ column))
(defmacro mixi-news-category-p (category)
`(memq ,category mixi-news-category-list))