View Full Version : Scripted bulk updates to an iTunes database

Mar 8, 2008, 07:56 AM

What's my best bet for scripted bulk updates to an iTunes database?

I want to do pattern-based manipulations on titles of tracks, so for example I want convert

"Concerto in A major RV 552"


"RV 552: Concerto in A major".

Supposing the actual string manipulation is a solved problem, how do I go about reading and updating the iTunes database? I assume this has to involve AppleScript, but I have no idea how to do this, or even whether it's capable of regular expression matching. I guess I could always shell out to Perl.

Ideally I'd like to manipulate the iTunes database from Perl, Python or Ruby, if that's possible.

Anyway, all suggestions gratefully received.


Mar 8, 2008, 11:49 AM
I'm pretty sure you can do this with Ruby or Python via the Scripting Bridge in Leopard.

Mar 8, 2008, 04:14 PM
The scripting bridge looks great but I'm still on Tiger. Maybe this'll finally give me a reason to upgrade.

Mar 8, 2008, 04:41 PM
Scripting Bridge isn't that good. Appscript is better designed, more reliable, and works on Panther onwards.

Using py-appscript (http://appscript.sourceforge.net):


from appscript import *

def changename(name):
# do stuff nere
return name

t = app('iTunes').library_playlists[1].tracks

for name, id in zip(t.name.get(), t.id.get()):
newname = changename(name)
if newname != name:

If you're on Leopard, just run 'easy_install appscript' in Terminal.app to install py-appscript for the default Python 2.5. For other Python installations, you may need to install setuptools (http://peak.telecommunity.com/DevCenter/EasyInstall#using-easy-install) first.

If Ruby's more your thing, you can use rb-appscript (http://rb-appscript.rubyforge.org) instead (the above code will work with minor modification). For Perl, there's Mac::Glue (http://search.cpan.org/~cnandor/Mac-Glue/) (included in Leopard).

Mar 9, 2008, 05:34 AM
if you are looking for scripts dor iTunes, probably Doug Adams have them!

Amazing collection, can't live without 10 of these.

Mar 9, 2008, 07:00 AM
Thanks for prompting me to take a closer look at Doug's AppleScripts. I'm already wondering how I managed without Batch Set Sorting Tags.

Anything you particularly recommend from this collection?

Maybe I just need to learn AppleScript to do the updates I have in mind, which I now think are just setting the Sort Name as a function of track Name. The idea is to be able to define smart playlists to represent the various catalogues of works by classical composers, with the works in catalogue order. For example Deutsch for Schubert, Koechel for Mozart etc. etc.