Twitter Streaming API でTLをテキストでだらだら出力するGroovy

TwitterのTimeLineの出力をだらだらコンソールに出力するGroovyスクリプトです。
フォロワー数は200以下のアカウントでないと filterが動作しなくなります。
APIの制限です。

http://yusuke.homeip.net/twitter4j/ja/api-support.html#Streaming%20API%20Methods
の birddog filter() あたりの記述に制限も解説されています。
Pagingできるようなので、うまくやるとフォロアー数の制限を超えられるかもしれません。
そこは、まだ調べていません。
@Grab は、ついていますが、Groovyのバージョンで書式が変わるので、使わなくても良いと思います。
動作させると、塊ではなく、一件ずつ、だらだら "timestamp+id+本文" の書式でテキストで出力され続けます。

import twitter4j.http.* 
import twitter4j.*

start() 
 
@Grab(group='net.homeip.yusuke', module='twitter4j', version='[2.0.10,)') 
def start() 
{ 
def uid="ユーザーID"
def pwd="パスワード"

	def twitter = new Twitter(uid, pwd ) 
	def userIds = twitter.friendsIDs.IDs 
	
	userIds.each {println " - " + it}
	
	println "Got friends userIds: ${userIds.size()}"
	def twitterStream = new TwitterStream(uid, pwd) 
	twitterStream.statusListener = [  
		onException : { ex -> println ex},  
		onStatus : { status ->
			//status -> println status 
			def time = status.toString().replaceAll(/.*createdAt.* ([0-9][0-9]:[0-9][0-9]:[0-9][0-9]) .*, id=.*/) {m0, m1 -> "${m1}" }
			def name = status.toString().replaceAll(/.*screenName='(.*)', location.*/) {m0, m1 -> "${m1}" }
			def text = status.toString().replaceAll(/.*text='([^']*)', source='.*/) {m0, m1 -> "${m1}" }

			println time+" "+name+"\t"+text
		} 
	] as StatusListener 
	twitterStream.filter(0, userIds, [] as String[]) 
}