google.lisp 920 B

123456789101112131415161718192021
  1. (in-package #:chatikbot)
  2. (defparameter +google-search-url+ "https://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. collect (list
  7. (cons :url (select-text "cite" result))
  8. (cons :title (select-text "h3" result))
  9. (cons :desc (select-text ".st" result)))))
  10. (defun google-format-search-results (results)
  11. (format nil "~{~A. ~A~^~%~}"
  12. (loop for i from 1
  13. for result in results
  14. append (list i
  15. (format nil "[~A](~A)~@[~% ~A~]"
  16. (aget :title result)
  17. (aget :url result)
  18. (substitute #\Space #\Newline (aget :desc result)))))))