twitter.lisp 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. (in-package :cl-user)
  2. (defpackage chatikbot.plugins.twitter
  3. (:use :cl :chatikbot.common))
  4. (in-package :chatikbot.plugins.twitter)
  5. (defsetting *twitter-access-token* nil "OAuth access token")
  6. (defparameter *timeline-url* "https://api.twitter.com/1.1/statuses/user_timeline.json")
  7. (defun get-tweets (user-id &key since-id (count 5))
  8. (loop for status in
  9. (yason:parse
  10. (babel:octets-to-string
  11. (cl-oauth:access-protected-resource
  12. (format nil "~A?~A"
  13. *timeline-url*
  14. (cl-oauth::alist->query-string
  15. (remove-if
  16. (complement #'cdr)
  17. (list
  18. (cons "user_id" user-id)
  19. (cons "count" count)
  20. (cons "since_id" since-id)
  21. (cons "trim_user" 1)
  22. (cons "exclude_replies" 1)))
  23. :include-leading-ampersand nil))
  24. *twitter-access-token*))
  25. :object-as :alist)
  26. collect (cons
  27. (aget "id" status)
  28. (aget "text" status))))