소스 검색

Relax RSS parsing

Innokenty Enikev 10 년 전
부모
커밋
3fdedf9d32
1개의 변경된 파일8개의 추가작업 그리고 3개의 파일을 삭제
  1. 8 3
      rss.lisp

+ 8 - 3
rss.lisp

@@ -77,12 +77,17 @@
 (defun parse-rss (url)
   (let ((plump:*tag-dispatchers* plump:*xml-tags*))
     (loop for item in (get-by-tag (xml-request url) "item")
-       collect (make-feed-item :guid (child-text item "guid")
+       collect (make-feed-item :guid (or (child-text item "guid") (child-text item "link"))
                                :link (child-text item "link")
                                :title (clean-text (child-text item "title"))
                                :description (clean-text (child-text item "description"))
-                               :published (local-time:universal-to-timestamp
-                                           (date-time-parser:parse-date-time (child-text item "pubDate")))))))
+                               :published
+                               (ignore-errors
+                                 (alexandria:when-let
+                                     (pub (or (child-text item "pubDate")
+                                              (child-text item "published")))
+                                   (local-time:universal-to-timestamp
+                                    (date-time-parser:parse-date-time pub))))))))
 
 (defun format-feed-item (feed item)
   (format nil "~A~@[ @ ~A~]~%~A~%~A"