UPDATED: Smarts v1.3.1
Smarts will save and store the criteria of an iTunes Smart Playlist — the smarts of a Smart Playlist — as a template so you can reload it into iTunes later.
This latest version fixes an issue with distinguishing between Smart and Genius playlists in modern versions of iTunes.
Smarts is a free download from the Mac App Store. More information is available on this page.
NEW: New Playlist from Selection to Folder
New Playlist from Selection to Folder will create a new playlist with the selected tracks in a chosen Playlist Folder—rather than at the top level where you'd otherwise have to locate it and drag it to a Playlist Folder.
Just select some tracks and then launch the script (you could assign the script a keyboard shortcut).
Enter a name to use for the new playlist and click "Continue...". A second panel listing the current Playlist Folders in iTunes will appear:
Select a Playlist Folder from the list and click "OK". The new playlist containing copies of the selected tracks will be created in the Playlist Folder.
More info and download is on this page.
UPDATED: Album Rating Reset v2.0
Album Rating Reset will allow you to set the Album Rating and/or Album Loved for the albums of the selected tracks or the albums associated with the tracks in a selected playlist.
I had pretty much given up on Album Ratings as just more Songs View clutter. I'd hidden the Album Rating column in Songs View. When there's no avoiding it in Album Views I prefer the computed Album Rating that averages the album's track ratings. But now that I use Apple Music fairly regularly, the Loved settings for tracks, albums and playlists in my library actually work pretty well with shaping Apple Music recommendations.
So I updated Album Rating Reset from a version last updated in 2007 to include Album Loved. The older version would only work on one track a time. But this version works on the selected tracks' albums or the albums associated with the tracks in a selected playlist. I don't think there is a way in iTunes to apply an Album Rating or Album Love to multiple albums at a time except while in Albums View.
More information and download is on this page.
UPDATED: Show In Playlists v1.4
Show In Playlists is a stay-open applet that monitors iTunes and detects when library tracks have been selected and then displays a heirarchical list of the playlists containing the selected track(s) (emulating iTunes' "Show In Playlist").
It can also be set to monitor only playing tracks (excepting "For You" and "New" Apple Music, alas). Clicking a playlist in the list chooses it in iTunes, and if a single track had been selected then it will be selected in the chosen playlist. Additionally, the monitoring routine can be toggled off temporarily so that the current list of playlists remains fixed yet still selectable.
This latest version fixes a problem resolving old and new-style iTunes Library.xml data which may have caused playlists to display erroneously.
Show In Playlists is free to use for ten days and $1.99 thereafter. This is a free update for registered users. More information and download is on this page.
Delete Other Artwork
iTunes is able to accommodate more than one image for a track entry's artwork. What hasn't always been obvious is that the first artwork in an array of artworks in a track is the "display" artwork. Any additional artwork in the artworks array are spares. Modern versions of the iTunes Get Info Artwork panel now label images as "Album Artwork" and "Other Artwork".
Some people think that these "Other Artwork" have to go.
It is a simple matter to simply remove the other artwork from a track entry with an AppleScript. Here's one now that goes through each track in a selection and repeats through its artworks (if there's more than one artwork), removing the last artwork until there is only the first one left:
tell application "iTunes"
set selectedTracks to selection of front browser window
repeat with i from 1 to (count of selectedTracks)
set thisTrack to item i of selectedTracks
tell thisTrack
try
if (count of its artworks) > 1 then
repeat until ((count of its artworks) is 1)
delete its last artwork
end repeat
end if
end try
end tell
end repeat
end tell
Click the script icon above to download this script to Script Editor at your house and click "New Script" to allow it to open. Save it named whatever you like in your ~/Library/iTunes/Scripts/ folder (or wherever you put them). Select some tracks in iTunes and launch the script.
There's always the kid in the front who wants to know why you don't make a script like this that just works on the entire library. Well: iTunes can be kind of touchy when AppleScripting a large amount of artwork stuff. It may "go modal" as it updates its database and under such circumstances may block an AppleScript from continuing its operation. So I purposely used the selection object so that the script can be used piecemeal on a small batch of tracks at a time. Additionally, you might want to eyeball the "Other Artworks" of a track before you start blindly mowing them all down; in which case having to select the tracks manually compels you to be in control.
The routines are in a try block to skip over errors because of what I mentioned above about modality and also in case there's some image gunk in there that causes trouble. Because images downloaded from the internet that you use as album artwork are always pristine, right?
EPPC Bug? Probably Not
Not long ago, a user reported an issue using the EPPC protocol to access AirPlay properties of iTunes on a remote machine. To keep a long story short, it doesn't appear to be a bug. The user neglected to incorporate a "using terms from" block. I should have known at the time that this was a likely omission. This is an example how the code should be implemented:
tell application "iTunes" of machine "eppc://user:password@Remote-Machine.local"
using terms from application "iTunes"
set apDevices to (get name of every AirPlay device whose available is true)
end using terms from
end tell
Playlist Time to Playlist Name
Here's a simple script that was inspired by a question Kirk got asked in his Ask the Tunes Guy column in Macworld last week. A user lamented that the playlist length (that is, its total time) is not available in the Music app on iOS. Kirk recommended adding this information to the playlist name in iTunes and then re-syncing. A good solution but kind of a chore. This script will do the renaming part for you.
Just select a playlist in iTunes and launch the script. It will display a confirmation dialog and then rename the playlist by appending the time length to its current name:
tell application "iTunes"
try
set thisPlaylist to view of front browser window
if special kind of thisPlaylist is none then
set newName to (my fixName(thisPlaylist's name) & " | " & thisPlaylist's time) as text
-- confirm
try
display dialog "Rename selected playlist to:" & return & return & newName
on error
return
end try
tell thisPlaylist to set name to newName
else
error
end if
on error m number n
try
display dialog "Can't change the selected playlist's name." buttons {"OK"}
end try
return
end try
end tell
to fixName(n)
if n does not contain "|" then return n
return text 1 thru ((offset of "|" in n) - 2) of n
end fixName
Couple of things to note: only user-created scripts (plain and Smart) can be affected. Also the script uses the "pipe" character to separate the actual name with the appended data. When you run the script again on a playlist that has previously been affected by the script, it uses the "|" as a marker to erase the appended text; thus, the playlist name can be updated if the contents changes at a later date. So, if you happen to already use "|" in your playlist names you may have a problem. You can edit the script in Script Editor to change each of the occurrences of "|" to some other text character that you aren't likely to use.
Fifteen Years On
Happy birthday, iTunes!
iTunes v1.0 was announced and released on January 9, 2001. I don't think a day has gone by since that date that I haven't used iTunes. Seriously. It's probably the most regularly used app on any of my machines. Love it or hate it, for better or worse, you have to acknowledge that iTunes has had a huge impact on how music is consumed. Amazing. (Kirk McElhearn has written a fifteenth anniversary tribute that covers the milestones.)
And, lest they be forgot, here's a shout out to the developers of SoundJam MP, the jukebox app that Apple bought and re-christened as iTunes: Bill Kincaid, Jeff Robbin andmost especially as far as I'm concenedDave Heller, who incorporated AppleScript into SoundJam and then iTunes.
EPPC and AirPlay Bug?
A Correspondent alerted me to an issue he is seeing, and that I can verify, using the EPPC protocol to access the AirPlay device property via iTunes on a remote machine. For example, with Remote Apple Events enabled on a remote machine, a script like thisthat up until recently workedwill fail:
tell application "iTunes" of machine "eppc://user:password@Remote-Machine.local"
set apDevices to (get name of every AirPlay device)
end tell
In this example, you would expect to get a list of the names of the AirPlay devices available on the remote machine. But instead, the script trips up on the word "AirPlay" with the error "Expected class name but found identifier". "AirPlay device" is a class name. Other conventional iTunes/Remote Apple Events routines work as expected.
Our Correspondent reports that this sort of script worked happily in the past; sounds like he uses it to control iTunes like a server on the remote machine. There have been EPPC-related bugs in the past that were introduced with Security Updates so I'm hoping this is one of those sorts of things and not a deliberate "security feature". File a bug if you can.