2010/01/19

Twitter bot 「良いこと言ったー?」

WS0898
なんの変哲もないつぶやきbotです。
つぶやく内容は真に受けないでください。
1日に1~3回くらいつぶやきます。
せっかくなのでbotにしました。ちなみに私自身はこちら↓。

追記

遅ればせながら oauth に対応しました。(2010/12)つぶやく間隔も1時間に3回に変更しました。
(use srfi-1 :only (remove!))
(use util.match :only (match-let1))
(use net.twitter)
(use rfc.http :only (http-get))
(use sxml.ssax :only (ssax:xml->sxml))
(use sxml.sxpath :only (sxpath))
; http://spreadsheets.google.com/feeds/list/t17yhzlYiMccaqCDCqCy-Bw/od6/public/basic?alt=rss
(define-constant *google-ss-server* "spreadsheets.google.com")
(define-constant *google-ss-template*
(string-append "/feeds/list/" "~a" "/od6/public/basic?alt=rss"))
(define (rss->sxml srv url)
(receive (ret ls xml)(http-get srv url)
(ssax:xml->sxml (open-input-string xml) '())))
(define (make-cred con-key con-sec acc-token acc-sec)
(make <twitter-cred>
:consumer-key con-key
:consumer-secret con-sec
:access-token acc-token
:access-token-secret acc-sec))
(define (main args)
(match-let1
(con-key con-sec acc-token acc-sec
sheet-id count sxml-editor msg-builder . rest)(cdr args)
(let* ((eval (^b (eval (read-from-string b) 'user)))
(sf (eval sxml-editor))
(mf (eval msg-builder))
(src (sf (rss->sxml *google-ss-server*
(format *google-ss-template* sheet-id))))
(cred (make-cred con-key con-sec acc-token acc-sec)))
(dotimes (i (string->number count))
(sys-sleep 1)
(let1 msg (mf src)
(print msg)
(rlet1 r (twitter-update cred msg)
(set! src (remove! (^e (string=? msg e)) src) )))))))


プログラミングGaucheThe Little Schemer, 4th Edition 計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)

0 件のコメント:

コメントを投稿