1
0

google.lisp 1003 B

1234567891011121314151617181920212223
  1. (in-package #:chatikbot)
  2. (defparameter +google-search-url+ "http://www.google.com/search")
  3. (defun google-search (query)
  4. (loop for result across (clss:select "ol > div" (xml-request +google-search-url+
  5. :parameters (list (cons "q" query))))
  6. when (select-text "cite" result)
  7. collect (list
  8. (cons :url (select-text "cite" result))
  9. (cons :title (select-text "h3" result))
  10. (cons :desc (select-text ".st" result)))))
  11. (defun google-format-search-results (results)
  12. (format nil "~{~A. ~A~^~%~}"
  13. (loop for i from 1
  14. for result in results
  15. append (list i
  16. (format nil "[~A](~A)~@[~% ~A~]"
  17. (aget :title result)
  18. (aget :url result)
  19. (replace-all (aget :desc result)
  20. '(#\Newline) ""))))))