|
Description:
Here are two examples showing how to script iTunes for Windows with Python.
See below under "Discussion" for additional comments and explainations.
Source: Text Source
import win32com.client
def removeDeletedTracks():
"""This function will remove every song that is not currently accessible from your iTunes library"""
itunes= win32com.client.Dispatch("iTunes.Application")
ITTrackKindFile=1
mainLibrary = itunes.LibraryPlaylist
tracks = mainLibrary.Tracks
numTracks = tracks.Count
deletedTracks=0
while numTracks !=0:
currTrack=tracks.Item(numTracks)
if currTrack.Kind == ITTrackKindFile:
if currTrack.Location == "":
currTrack.Delete()
deletedTracks+=1
numTracks-=1
if deletedTracks > 0:
if deletedTracks == 1:
print "Removed 1 dead track."
else:
print "Removed " + str(deletedTracks) + " dead tracks."
else:
print "No dead tracks were found."
def updateLyricsAndCreatePlaylist():
"""The aim of this function is to automatically add lyrics to the songs in your library.
Additionally, a playlist named "SongsWithLyrics" is created, which will contain all the songs to
which lyrics have been added (so that you can find them easily if you feel like Karaokeing)
Please note that it use a (non-provided) getLyrics function that, given an artist and a song name,
return the lyrics of the song or the None object if the lyrics are not available.
"""
itunes= win32com.client.Dispatch("iTunes.Application")
ITTrackKindFile=1
mainLibrary = itunes.LibraryPlaylist
tracks = mainLibrary.Tracks
nbTracks = tracks.Count
playlist=itunes.CreatePlayList("SongsWithLyrics")
for numTrack in range(1,nbTracks+1):
currTrack = tracks.Item(numTrack)
if currTrack.Kind == ITTrackKindFile and currTrack.KindAsString!=u"WAV audio file":
name_artist=currTrack.Artist
name_song=currTrack.Name
lyrics=currTrack.Lyrics
if len(lyrics)==0:
obtainedLyrics=getLyrics(name_artist,name_song)
if obtainedLyrics!=None:
playlist.AddTrack(currTrack)
currTrack.Lyrics=obtainedLyrics
Discussion:
Since most of the script for iTunes you can find of the web are written in AppleScript, I was wondering how I could script iTunes for Windows.
Then I discovered that iTunes for Windows had a COM API. Python having a very nice interface to COM (thanks to the win32com module), that make it very easy to script iTunes with Python.
There is nothing very sophisticated here, but there may be some others "Python and iTunes users" that are not aware of this possibility (as I was just a month ago). So I thought I would write a small recipe (my first so far) for that.
Additionaly, It makes for a simple introduction to COM programming with python.
You can download a documentation of the iTunes COM interface at the following address:
http://developer.apple.com/sdk/itunescomsdk.html
The doc is bundled with some C header, but don't worry, you do not need them. You only need the win32com module (which is already bundled with ActivePython)
I give two example scripts.
The first one is used for removing the songs of your library whose files you have deleted outside python. (Very useful, if like me, you don't let iTunes manage your library). It is actually a simple port of a javascript example provided in the iTunes COM documentation.
The second one is a script I used to automatically add lyrics to the songs in my library. This script is of course not very useful in itself without the getLyrics function that provide the lyrics text. But it is a good example of how to create playlist and modify the fields of a song.
I happened to have a small database of lyrics, so that was useful for me. If you are really interested in obtaining lyrics for your songs, look for lyrics website that provide a web API.
|