|
|
@@ -0,0 +1,28 @@
|
|
|
+(in-package #:chatikbot)
|
|
|
+
|
|
|
+(defvar *twitter-access-token* nil "OAuth access token")
|
|
|
+
|
|
|
+(defparameter *timeline-url* "https://api.twitter.com/1.1/statuses/user_timeline.json")
|
|
|
+
|
|
|
+(defun get-tweets (user-id &key since-id (count 5))
|
|
|
+ (loop for status in
|
|
|
+ (yason:parse
|
|
|
+ (flexi-streams:octets-to-string
|
|
|
+ (cl-oauth:access-protected-resource
|
|
|
+ (format nil "~A?~A"
|
|
|
+ *timeline-url*
|
|
|
+ (cl-oauth::alist->query-string
|
|
|
+ (remove-if
|
|
|
+ (complement #'cdr)
|
|
|
+ (list
|
|
|
+ (cons "user_id" user-id)
|
|
|
+ (cons "count" count)
|
|
|
+ (cons "since_id" since-id)
|
|
|
+ (cons "trim_user" 1)
|
|
|
+ (cons "exclude_replies" 1)))
|
|
|
+ :include-leading-ampersand nil))
|
|
|
+ *twitter-access-token*))
|
|
|
+ :object-as :alist)
|
|
|
+ collect (cons
|
|
|
+ (cdr (assoc "id" status :test #'equal))
|
|
|
+ (cdr (assoc "text" status :test #'equal)))))
|