(asdf:load-system :drakma) (asdf:load-system :yason) (defun wiktionary-query (search-string) (let ((query-string (format nil "https://en.wikipedia.org/w/rest.php/v1/search/page?q=~A&limit=1" search-string))) (let ((http-result (handler-case (drakma:http-request query-string) (usocket:ns-host-not-found-error (c) (princ "Host not found.") nil)))) (let ((json (yason:parse (coerce (map 'list #'code-char http-result) 'string)))) (let ((results (gethash "pages" json))) (if (null results) (princ "No results found.") (let ((page-query-string (format nil "https://en.wikipedia.org/api/rest_v1/page/summary/~A" (gethash "title" (car results))))) (let ((page-result (handler-case (drakma:http-request page-query-string) (usocket:ns-host-not-found-error (c) (princ "Host not found when retreiving data.") nil)))) (let ((json (yason:parse (map 'string #'code-char page-result)))) (princ (gethash "extract" json)))))))))))