| 123456789101112131415161718192021222324252627 |
- (in-package #:chatikbot)
- (defparameter +google-search-url+ "http://www.google.com/search")
- (defun google-search (query)
- (loop
- for result across (clss:select ".g" (xml-request +google-search-url+
- :parameters (list (cons "q" query))))
- for a = (elt (clss:select ".r>a" result) 0)
- for uri = (quri:uri (plump:get-attribute a "href"))
- for q = (aget "q" (quri:url-decode-params (quri:uri-query uri)))
- when q
- collect (list
- (cons :url q)
- (cons :title (select-text "*" a))
- (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) ""))))))
|