Archive for December, 2012
As you may know, the location of the current iTunes library’s database files can be read from a user preferences file named “com.apple.iApps.plist”. This preferences file also maintains the location of the current iPhoto library and perhaps the locations of other apps’ support files. By default, the location of the current iTunes database files is in ~/Music/iTunes/, like in the screenshot below. If or whenever you select or create a new library by Option-launching iTunes the location you select is stored in the iApps.plist as iTunesRecentDatabasePaths. Third-party apps can then locate the current database by simply reading the meta data from the iApps.plist.
Recently, since the launch of iTunes 11, I’ve been hearing from Correspondents who report that some of my software (apps and scripts) that need to access the iApps.plist are no longer finding the iTunesRecentDatabasePaths data. In fact, their iApps.plist file does not even contain the data. Somewhow it has not been updated correctly. Thus, when an app or script tries to read the iApps.plist it fails with a Console error like “The domain/default pair of (/Users/SomeUser/Library/Preferences/com.apple.iApps, iTunesRecentDatabasePaths) does not exist”.
The fix is, first, to make sure you note the location of your iTunes support files. If you’ve never used the Option-launch method of creating a new library then this location is your home folder’s “/Music/iTunes/” folder. Otherwise, well, I suppose you know where you created a new library. Now, quit iTunes. Hold the Option key and launch iTunes again. In the dialog that appears click the “Choose Library” button. Navigate the Open dialog to the folder you just noted (it will contain an “iTunes Library.itl” file and one or the other of an “iTunes Music Library.xml” or “iTunes Music.xml” file) and click the “Open” button. This should write the location to the iApps.plist correctly allowing scripts and apps to read it without error.
iTunes 11.0.1 fixes an issue with the “Show Current Song” (the Command-L shortcut). Before iTunes 11, using this command would select the currently playing track in the playlist it was playing from. In iTunes 11 there seemed to be some inconsistency with this behavior in different playing contexts. But now with iTunes 11.0.1 the command consistently selects the currently playing track in that track’s library regardless of its playlist source (if any). Coincidentally, this also happens to be the task performed by a script I wrote about to workaround the afore mentioned inconsistency.
I frequently find it convenient to access the playlist a track is playing from but “Show Current Song” doesn’t do this any more. So here is a script that selects the currently playing track in its source playlist (the pre-iTunes 11 behavior). I’m guessing the reveal command was fixed because this didn’t work quite right with iTunes 11, or maybe it had to do with those inconsistencies.
Interestingly, the playlists list will become visible if it is not already and the correct track selected. The try block prevents an error in case the script is run while iTunes is not playing, in which case there is no current track property. Attach a shortcut. Option-Command-L might be a good one. (Shift-Command-L is used by the “Search With Google” Service.)
I’ve posted an update to Dupin. The latest is version 2.5.4 (however, for a brief time, v2.5.3 was available).
The latest update is a maintenance release with some minor fixes: clarifies cloud track detection information, better detection of misconfigured iApps.plist file, fixes issue in v2.5.3 whereby the Purge dialogs do not appear correctly on some systems.
iTunes 11.0.1 appears to fix the issue with the AppleScript reveal command, mentioned here.
But Command-L (Go to Current Song) apparently does not yet work correctly. Update: Go to Current Song/Command-L does work correctly. But it doesn’t select the track in the playlist it may be playing from; it selects it in the Music library. This AppleScript will select the currently playing track in the playlist from which it is being played:
Apple has released iTunes 11.0.1, an update that makes some fixes to AirPlay, iTunes Match, and provides the obligatory “stability and performance improvements”.
The menu command “Go to Current Song” (in the Controls menu of iTunes 11) indeed shows the playlist that the current song is playing from, but it does not select the current playing track. The Command-L keyboard shortcut no longer works either. Looking for an AppleScript workaround, I found that reveal current track behaves the same way. The reveal command still selects a playlist, eg: reveal current playlist.
Update: Apparently these fails happen when a song is playing from a playlist but it’s OK when a track is playing in the Music library.
Update 2: Here’s a script that will reveal the current song in the Music playlist no matter where it is playing. Be sure to give it a shortcut.
tell application "iTunes"
set dbid to (get database ID of current track)
set musicLib to some playlist whose special kind is Music
set theTrack to some track of musicLib whose database ID is dbid
Obviously, this doesn’t help get you back to the current playlist. But if you need to access the playing track for some other reason then it’ll do. You can always right-click the LCD and access the current track’s Get Info, Show in Playlist, and so on.
Update 3: Kirk has an important observation on this issue.
Update 4 (December 16): This appears to be fixed in iTunes 11.0.1.
There’s seems to be a bit of inconsistency with the way iTunes 11 displays playlist time information as DD:HH:MM:SS. Sometimes times are displayed in the Status Bar at the bottom and sometimes a decimal version will be displayed beneath the playlist’s name at the top of the browser. I can’t quite get a grasp on something like “7.6 days” though.
Here’s a script you can attach a shortcut to that will simply display a dialog box listing the name of the selected playlist, the number of tracks it contains, and the time of the playlist as DD:HH:MM:SS:
Assimilate View Options v3.1 re-creates a single selected playlist so its View Options (visible columns) are the same as the Music library (taking advantage of the fact that new playlists acquire the Music library’s View Options).
This latest version worksaround iTunes 11’s shuffle/song repeat difficulties which tripped an error when trying to re-apply those settings and prevented the script from completing properly.