Browse code
miscellaneous updates/bugfixes
fiddlerwoaroof authored on 08/08/2016 18:45:17
Showing 3 changed files
Showing 3 changed files
... | ... |
@@ -117,6 +117,19 @@ |
117 | 117 |
((:feed) :atom) |
118 | 118 |
(t root-node-name))))) |
119 | 119 |
|
120 |
+(defgeneric get-random-item (feed) |
|
121 |
+ (:method ((feed feed)) |
|
122 |
+ (let* ((items (copy-seq (items feed))) |
|
123 |
+ (num-items (length items))) |
|
124 |
+ (elt items |
|
125 |
+ (random num-items))))) |
|
126 |
+ |
|
127 |
+(defgeneric get-latest-item (feed) |
|
128 |
+ (:method ((feed feed)) |
|
129 |
+ (let ((items (copy-seq (items feed)))) |
|
130 |
+ (car (sort items |
|
131 |
+ #'local-time:timestamp> |
|
132 |
+ :key #'date))))) |
|
120 | 133 |
|
121 | 134 |
;(defun generate-xml (feed &key (feed-type :rss)) |
122 | 135 |
; (%generate-xml feed feed-type)) |
... | ... |
@@ -5,13 +5,13 @@ |
5 | 5 |
(:export #:define-data-class)) |
6 | 6 |
|
7 | 7 |
(defpackage #:alimenta2 |
8 |
- (:use #:cl #:alexandria #:serapeam #:fw.lu #:should-test)) |
|
8 |
+ (:use #:cl #:alexandria #:serapeum #:fw.lu #:should-test)) |
|
9 | 9 |
|
10 | 10 |
(defpackage #:alimenta |
11 | 11 |
(:use #:cl #:should-test #:lquery #:plump #:alexandria #:anaphora) |
12 | 12 |
(:export #:to-feed #:generate-xml #:feed #:title #:link #:items #:feed-link |
13 | 13 |
#:doc #:source-type #:id #:date #:content #:item #:description |
14 |
- #:%generate-xml #:%to-feed #:%get-items #:make-item #:complex-value |
|
14 |
+ #:%generate-xml #:%to-feed #:get-items #:make-item #:complex-value |
|
15 | 15 |
#:primary-value)) |
16 | 16 |
|
17 | 17 |
(defpackage #:alimenta.rss |
... | ... |
@@ -97,7 +97,7 @@ |
97 | 97 |
(combine (text) (attr "domain")) |
98 | 98 |
(map-apply #'make-category))) |
99 | 99 |
|
100 |
-(defmethod get-items (xml-dom (feed-type (eql :rss))) |
|
100 |
+(defmethod alimenta::get-items (xml-dom (feed-type (eql :rss))) |
|
101 | 101 |
($ (inline xml-dom) "channel > item")) |
102 | 102 |
|
103 | 103 |
(defmethod generate-xml ((item item) (feed-type (eql :rss)) &key partial) |