ページの最終更新日を調べる - lisp-cookbook-ja/common-lisp GitHub Wiki
Webオートメーション ライブラリ drakma net-telent-date
ページの最終更新日を調べる
下記の例では、WebクライアントにCLiki:DRAKMA、日付文字のパーズにCLiki:net-telent-dateを利用しています。
;; 素朴な実装
(defun sort-url (urls &key (test #'<))
(flet ((ut-date-url (urls)
(MAPCAR (lambda (url &aux (lastmod (last-modified url)))
(list (if lastmod (date:parse-time lastmod) 0)
(or lastmod "<NONE SPECIFIED>")
url))
URLS)))
(format T "~:{~*~&~29A: ~A~%~}"
(sort (ut-date-url urls) test :key #'first))))
(defun last-modified (url)
(macrolet ((%header (req) `(nth-value 2 ,req)))
(drakma:header-value :last-modified
(%header (drakma:http-request url :method :head)))))
;; 実行例
(sort-url '("http://tips.lisp-users.org"
"http://tips.lisp-users.org/common-lisp/"
"http://tips.lisp-users.org/scheme"
"http://shibuya.lisp-users.org/"))
;-> <NONE SPECIFIED> : http://tips.lisp-users.org/common-lisp/
; <NONE SPECIFIED> : http://tips.lisp-users.org/scheme
; <NONE SPECIFIED> : http://shibuya.lisp-users.org/
; Thu, 20 Nov 2008 02:33:58 GMT: http://tips.lisp-users.org
;=> NIL