Introducing Logsessive
So I've been using iChat since it debuted, and had the automatic chat
logging turned on for most of that. So every time I send or receive an
IM, it gets saved for posterity (for better or for worse).
When iChat first started logging chats, it was only naming them with
the name of the other person and an incrementing number- chats with me
are "Dan Kuehling #2", "Dan Kuehling #3", and on. Later on, I think in
one of the versions of iChat for Panther, Apple started adding date
and time stamps to the chats- "Dan Kuehling on 2007-12-06 at 22:35".
Now, in Leopard, Apple's finally decided to do the smart thing and
sort all of these chats into dated folders, so all of the chats for a
particular day are in a folder named something like "2007-12-06".
Now that's great, but the obsessive part of me noticed one problem
here: The logs that iChat created before Leopard are still sitting
there by the thousands, numbered logs alongside dated logs alongside
Leopard's chat folders.
It's ugly. It's messy. It's stupid. THERE MUST BE ORDER!
I had to fix it.
So I'd been meaning to learn Ruby. It's got some serious fans at PSIG,
most notably the group's young rock-star Victoria :-)
My task was clear- write a Ruby script to sort these free-floating
logs into the folders. So I learned Ruby (or at least what Ruby I know
now) the way I always do- Google enough to write a really, really
simple little test (even just "Hello World" to start), then expand on
it. Add string handling and regexes (which work GREAT in Ruby, by the
way), filesystem access with the Dir and File classes, and Date
handling. Before I knew it, I'd written a script that walked the
~/Documents/iChats directory, read the date out of the filename,
created a directory based on that date (if it doesn't already exist),
and move the log in there. Then, after some work on how to get Mac OS
X to give up the real creation date of a file (/usr/bin/mdls -name
kMDItemFSCreationDate filename is the key), I got the numbered chat
transcripts to take the plunge behind their dated counterparts.
So, without further ado, here's my brilliant Ruby creation:
Logsessive
The name derives from the how excessive it looks to have all of those
logs splayed across the iChats directory and the obsessive nature of
wanting everything all neat and tidy. Logsessive!
It includes both the Ruby file and an easy GUI application created
with Platypus, if you're just as obsessive as I am but don't want to
look at the Ruby. (But please do!)
No comments:
Post a Comment