You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

21 lines
1005B

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