Getting geeky with Twitterrific and AppleScript

31.01.2009
I am most definitely a devotee of the social-networking message service . (Explaining Twitter's appeal is the topic of another story, one I haven't written yet.) But if you use Twitter, and especially if you use The Iconfactory's (free with ads, US$15 without) you might be interested in discovering some of the program's hidden features.

Before I begin, an aside: There are a lot of Twitter apps for the Mac. I've tried most of them, but I keep coming back to Twitterrific. Its simple interface does what I want, when I want. Some of the competitors offer interesting features, but none of them work well enough to tear me away from Twitterrific. I do have a wish-list for Twitterrific that's about a mile long--but again, that's another story. Despite my recognition of its flaws, Twitterrific's the Twitter app that works the best for me.

Anyway, on to the geek-out.

Filtering tweets

During the run-up to the election last year, I got really tired with seeing people use Twitter to argue about politics. Not that I'm not engaged in the political process--I vote in every election. But I find Twitter, with its 140-character limit, to be the death of nuance, and in my mind any political conversation worth listening to involves nuance. So I decided to nuke every single Tweet in my timeline that mentioned the candidates.

The good news is, I didn't have to resign from Twitter to do this. I just used Twitterrific's little-known text filter feature, which is accessible only via the command-line (or via a handy secret-preference utility such as ). This feature uses the pattern-matching syntax used in the Unix utility grep--read more about or if you're curious, or buy Jeffrey E.F. Friedl's excellent book to become a true grep maven. But the good news is, you don't have to be a regular expression wizard to craft a basic Twitter text filter.

Here's the command I popped into the Terminal last year:

defaults write com.iconfactory.Twitterrific tweetTextFilter -string "McCain|Obama"

The first portion of that command tells you that you're setting Twitterrific's secret tweetTextFilter preference. The last, quoted part is the actual filter. And here's your big piece of grep knowledge: you use the pipe character (|) to mean "or." So in this case, McCain|Obama means, eliminate any tweet with the word McCain or the word Obama in it.

Similarly, if there's someone who sends you messages on Twitter that you'd rather not see, but whom you don't wish to block, you can filter those messages out via the tweetScreenNameFilter setting, all with the same format.

defaults write com.iconfactory.Twitterrific tweetScreenNameFilter -string "dude109|guy19"

There are plenty of other hidden preferences for Twitterrific, all completely documented in the program's accompanying Read Me file. You read it all the way to the bottom, didn't you? Nope--didn't think so. But let me tell you, you haven't lived until you've turned on sonicTwooshTechnology.

Scripting your tweets

Want to annoy people with Tweets sent out automatically via an AppleScript? You can do it! After all, I have. I wrote a script that allowed me to boast to people in cold-weather climes (or, in the summer, hot-weather climes) about the wonderful weather we have here in the San Francisco area. Here's the basic version of the script:

tell application "Twitterrific"

post update "I am a stupid, scripted tweet."

end tell

Seriously--that's it. Of course, my script queries my for the current temperature, converts the temperature from Fahrenheit to Celsius, rounds both temperatures to the nearest degree, and then sticks the entire thing into one .

Use it judiciously. People hate automated tweeting. Mine's stored as a script I can double-click to run whenever I feel the need to lord it over people with houses much, much larger than mine because they live in places where it snows. Ha, ha! You're in your gigantic houses watching the snow fall while I'm in my tiny... hmm. Why am I boasting again?

It's amazing I still have any Twitter followers at all.

Scripting received tweets

You can also write an AppleScript script that will process incoming Tweets and do things with them. (There's a sample script included in the Twitterrific archive you downloaded with the app. You opened it, right? Nope--didn't think so.)

The other day, pointed out that he was following on Twitter. For those of you who aren't old and decrepit like Bob and I, the was a program for the Mac back in the old days. The Talking Moose was a character who would randomly pop up on your Mac and, using the Mac's text-to-speech technology, say something funny or crazy. Now someone has ported the Talking Moose to Twitter, bless 'em.

So I was struck with the idea--what if I could get the Talking Moose Twitter stream to speak out loud, in the style of the old Talking Moose? What a useless idea. But hey, I figured, if I succeed I'll get a blog post on Macworld.com out of it. And here we are.

So here's my script:

on process_tweet(tweetId, tweetDate, tweetScreenName, tweetUserName, tweetUserUrl, tweetUserImageUrl, tweetText, tweetType)

if tweetScreenName is "TalkingMoose" then

tell application "Finder"

say tweetText using "Fred"

end tell

end if

end process_tweet

That's it. Of course, you could stack on other behaviors based on other Twitter Screen Names. I tacked on an extra set of lines to speak breaking news from breaking-news accounts that I follow. You could even get it to declare when got clean clothes in his . It's up to you.

I saved my script, talkingmoose.scpt, in my home folder. Then, in order to tell Twitterrific to execute the thing, it's time for another trip to the Terminal, to execute this command:

defaults write com.iconfactory.Twitterrific processTweetScriptPath -string ~/talkingmoose.scpt

That's it. Quick Twitterrific and re-launch it, and your script will execute every time new tweets arrive. If one from the Talking Moose arrives--assuming, of course, you're dumb enough to follow TalkingMoose--it will be spoken to you in Macintalk Fred, for my money the proper old-school Mac voice for the musings of the Talking Moose. (If you'd prefer your messages sound like the autopilot in the Pixar film WALL-E, use Ralph instead of Fred.)

Please note that there's a bug in earlier versions of Twitterrific that will cause every tweet to be spoken every time a new tweet loads! Be sure to download of Twitterrific before running this script.

And if you do download Twitterrific, be sure to read that Read Me file all the way to the bottom. You never know what you might find.

Editorial Director Jason Snell's weather is probably nicer than yours. If you can stand it, follow him on Twitter as jsnell.