Converting iTunes Playlists to M3U Playlists on a Mac

So I wasn’t content with just one way of creating M3U playlists out of iTunes. I went and wrote another. There’s more than one way to do it, as I learned writing Perl programs.

Pity I’m writing in Python.

Anyway, this method only works on a Mac, because it uses Applescript. Actually, it uses appscript, an event bridge that lets you do what Applescript does, only in a real language like Python. It’s called, and requires that you install py-appscript first. To use it, have iTunes open. Select a playlist. Then run the script (or double-click the script if you turn it into an app with py2app) and it’ll create an .m3u file in the same directory as the script.

#!/usr/bin/env python

# Using the appscript Python-to-applescript bridge, convert an iTunes
# playlist into m3u format.
# Author: Stephen Granade
# Date: 2 January 2009

import math, re, sys, os
from appscript import *

# Search-and-replace strings to adjust the mp3's locations if necessary.
sandrStrs = { "/Volumes": "smb://sargent" }

# For more information about what classes etc. are available from iTunes
# via appscript, see

# Get ahold of iTunes
iTunes = app('iTunes')

# The browser window's view is the currently-selected playlist
except CommandError, detail:
    if detail.errornumber == -1731:
        print "There is no current playlist."
        raise CommandError, detail

# Use the playlist's name as that of the m3u file
outfn = os.path.abspath(__file__)
outfn = os.path.join(os.path.dirname(outfn),".m3u")

outf = open(outfn, "w")


for track in playlist.tracks():
    # Skip any files whose locations aren't currently available
    # If the file doesn't exist on disk, then trying to access the
    # location will throw an AttributeError exception.
        fileloc = track.location().path
        if not os.path.isfile(fileloc):
        # Perform search-and-replace on the file location
        for old, new in sandrStrs.iteritems():
            fileloc = fileloc.replace(old, new)
        durstr = "%d" % math.floor(track.duration())
    except AttributeError:
        print "\"""\" isn't available on disk. Skipping."

3 thoughts on “Converting iTunes Playlists to M3U Playlists on a Mac

Comments are closed.