(in-package #:chatikbot) (defparameter +google-search-url+ "http://www.google.com/search") (defun google-search (query) (loop for result across (clss:select "ol > div" (xml-request +google-search-url+ :parameters (list (cons "q" query)))) when (select-text "cite" result) collect (list (cons :url (select-text "cite" result)) (cons :title (select-text "h3" result)) (cons :desc (select-text ".st" result))))) (defun google-format-search-results (results) (format nil "~{~A. ~A~^~%~}" (loop for i from 1 for result in results append (list i (format nil "[~A](~A)~@[~% ~A~]" (aget :title result) (aget :url result) (replace-all (aget :desc result) '(#\Newline) ""))))))