Twitter botの作り方

特定の単語が含まれるtweetsをReTweetするbotを作る。
Streaming API#filterは(現状)日本語が使えないので、http://dev.twitter.com/doc/get/searchを用い、特定の単語を検索し、tweetsのリストを得る。

since_id = 0
while(True):
    search_url = "http://search.twitter.com/search.json"
    temp.close()
    params = urllib.urlencode({
            'q': u'特定の単語'.encode('utf-8'),
            'since_id': since_id
            })
    req = urllib.urlopen(search_url + "?%s" % params)
    elems = simplejson.loads(req.read())
    for elem in elems['results']:
        # print elem['id'], elem['text']
        retweet_tweet(elem['id'])
        time.sleep(1)
    since_id = elems['max_id']
    time.sleep(5 * 60)  # 5分毎に動かす

2回目の検索からは前回の結果に含まれる最新tweet以降のtweetsを対象にする必要があるので、since_idオプションを用いる。
ReTweethttp://dev.twitter.com/doc/post/statuses/retweet/:idに従って

def retweet_tweet(tweet_id):
    retweet_url = "http://api.twitter.com/1/statuses/retweet/%s.json" % tweet_id
    # OAuth認証後POST

で出来る。

「極論」という単語がどう使われているか見たかったので、極論bot (@kyokuron_bot) | Twitterを設置した。