(in-package #:chatikbot) (defparameter +google-search-url+ "https://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)))) 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) (substitute #\Space #\Newline (aget :desc result)))))))