git.fiddlerwoaroof.com
Raw Blame History
;;;; linkblog-to-rss-puller.lisp

(in-package #:linkblog-to-rss-puller)

;;; "linkblog-to-rss-puller" goes here. Hacks and glory await!


(defconstant +feed-url+ "http://linkblog-to-rss.com/feed/atom")

(defparameter *feed-data* (alimenta.pull-feed:pull-feed +feed-url+ :type :atom))

(defparameter *feed-items* (alimenta:items *feed-data*))

(defparameter *items-content* (mapcar #'alimenta:content *feed-items*))

(defparameter *item-links*
  (loop for content in *items-content*
        for item in *feed-items*
        nconcing (coerce
                   (remove-if
                     (fw.lu:destructuring-lambda ((url . text))
                       (let ((text (string-trim '(#\Space #\Newline) (or (car text) ""))))
                         (or
                           (string-equal url "#" :end1 1)
                           (string-equal url "/" :end1 1)
                           (string-equal text "")
                           (string-equal url  #1="http://linkblog-to-rss.com" :end1 (length #1#)))))
                     (lquery:$ (initialize content) "a" (combine (attr "href") (text))
                                                                 (map-apply 
                                                                   (lambda (url text)
                                                                     (list url text
                                                                           (slot-value item 'alimenta:date))))))
                   'list)))

(defparameter *new-feed* (make-instance 'alimenta.atom::atom-feed
                                        :title "BP Links"
                                        :link "http://example.com/nowhere"
                                        :authors (list "Big Pulpit")
                                        :description "A Description"
                                        :items nil))

(defmethod slot-missing (class (instance (eql *new-feed*)) slot-name operation &optional new-value)
  (format t "~&SLOT MISSING: ~A ~A ~A ~A ~A" class instance slot-name operation new-value)
       )

(defparameter *id* 0)
(loop for (url text date) in *item-links*
      do (alimenta::add-item-to-feed *new-feed*
                                     :next-id (lambda (tmp) (incf *id*))
                                     :title text 
                                     :link url
                                     :date date 
                                     :content "")

      )