Scripted bulk updates to an iTunes database

Discussion in 'Mac Programming' started by boffo, Mar 8, 2008.

  1. macrumors newbie

    Joined:
    Oct 21, 2006
    Location:
    Lambeth
    #1
    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
     
  2. Moderator emeritus

    kainjow

    Joined:
    Jun 15, 2000
    #2
    I'm pretty sure you can do this with Ruby or Python via the Scripting Bridge in Leopard.
     
  3. thread starter macrumors newbie

    Joined:
    Oct 21, 2006
    Location:
    Lambeth
    #3
    The scripting bridge looks great but I'm still on Tiger. Maybe this'll finally give me a reason to upgrade.
     
  4. macrumors regular

    Joined:
    Oct 15, 2007
    #4
    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).
     
  5. macrumors member

    eldino

    Joined:
    Mar 8, 2007
    Location:
    Italy
    #5
    if you are looking for scripts dor iTunes, probably Doug Adams have them!
    http://dougscripts.com/itunes/

    Amazing collection, can't live without 10 of these.
     
  6. thread starter macrumors newbie

    Joined:
    Oct 21, 2006
    Location:
    Lambeth
    #6
    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.
     

Share This Page