Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

boffo

macrumors newbie
Original poster
Oct 21, 2006
16
0
Lambeth
Hello,

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"

to

"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.


Boffo
 

kainjow

Moderator emeritus
Jun 15, 2000
7,958
7
I'm pretty sure you can do this with Ruby or Python via the Scripting Bridge in Leopard.
 

boffo

macrumors newbie
Original poster
Oct 21, 2006
16
0
Lambeth
The scripting bridge looks great but I'm still on Tiger. Maybe this'll finally give me a reason to upgrade.
 

hhas

macrumors regular
Oct 15, 2007
126
0
Scripting Bridge isn't that good. Appscript is better designed, more reliable, and works on Panther onwards.

Using py-appscript:

Code:
#!/usr/bin/python

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:
		t.ID(id).name.set(newname)

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 first.

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

boffo

macrumors newbie
Original poster
Oct 21, 2006
16
0
Lambeth
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.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.