Tuesday, August 18, 2009 at 7:52 PM.

godsTweetSuite.poller

on poller (accountname) {
	<<Changes
		<<5/4/09; 1:26:10 PM by DW
			<<Created. 
	local (adrdata = godsTweetSuite.init (accountname), timeline, now = clock.now ());
	adrdata^.stats.ctPolls++;
	adrdata^.stats.whenLastPoll = now;
	on checktweet (adrtweet) {
		local (id = nameof (adrtweet^));
		if not defined (adrdata^.idsseen.[id]) {
			local (whenTweet);
			try {
				whenTweet = twitter.getTwitterTime (adrtweet^.createdat)}
			else {
				whenTweet = adrtweet^.createdat};
			local (adrday = mainresponder.calendar.getdayaddress (@adrdata^.calendar, whenTweet));
			adrtweet^.id = id;
			adrtweet^.when = whenTweet;
			bundle { //extract urls
				adrtweet^.shortUrl = godsTweetSuite.getLinkFromTweet (adrtweet^.text);
				if adrtweet^.shortUrl != "" {
					adrtweet^.longUrl = tcp.httpderef (adrtweet^.shortUrl)};
				adrtweet^.textProcessed = twitter.hotUpText (adrtweet^.text)};
			local (adrincal = @adrday^.[string.padwithzeros (adrdata^.prefs.tweetSerialNum++, 5)]);
			adrincal^ = adrtweet^;
			if adrdata^.prefs.flCommentsEnabled {
				godsTweetSuite.buildLandingPage (adrincal)};
			adrdata^.idsseen.[id] = clock.now ()}};
	twitter.getTimeLine (@timeline, true, adrdata^.prefs.username, adrdata^.prefs.password);
	bundle { //add the new tweets to the calendar
		local (i, adrtweet);
		for i = 1 to sizeof (timeline) {
			checktweet (@timeline [i])}};
			<<local (adrtweet = @timeline [i], id = nameof (adrtweet^))
			<<if not defined (adrdata^.idsseen.[id])
				<<local (whenTweet = twitter.getTwitterTime (adrtweet^.createdat))
				<<local (adrday = mainresponder.calendar.getdayaddress (@adrdata^.calendar, whenTweet))
				<<adrtweet^.id = id
				<<adrtweet^.when = whenTweet
				<<bundle //extract urls
					<<adrtweet^.shortUrl = godsTweetSuite.getLinkFromTweet (adrtweet^.text)
					<<if adrtweet^.shortUrl != ""
						<<adrtweet^.longUrl = tcp.httpderef (adrtweet^.shortUrl)
					<<adrtweet^.textProcessed = twitter.hotUpText (adrtweet^.text)
				<<local (adrincal = @adrday^.[string.padwithzeros (adrdata^.prefs.tweetSerialNum++, 5)])
				<<adrincal^ = adrtweet^
				<<if adrdata^.prefs.flCommentsEnabled
					<<godsTweetSuite.buildLandingPage (adrincal)
				<<adrdata^.idsseen.[id] = clock.now ()
	if accountname == "gangfan" { //5/21/09 by DW -- hack for arrington
		local (timeline, adrtweet);
		twitter.getusertimeline ("arrington", @timeline);
		for adrtweet in @timeline {
			checktweet (adrtweet)};
		if not defined (adrdata^.stats.ctArringtonPolls) {
			adrdata^.stats.ctArringtonPolls = 0};
		adrdata^.stats.ctArringtonPolls++;
		adrdata^.stats.whenLastArringtonPoll = clock.now ()}};
	<<scratchpad.timeline = timeline
bundle { //test code
	poller ("gangfan")}



This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.