dougscripts.com

DIY

December 30 2014 - 11:10 am

Blanking the Genre Tag in iTunes 12

Kirk has found a bug in iTunes 12 whereby selecting a batch of tracks and deleting their Genre tag via the Get Info panel inserts 8 spaces instead of empty text into each track's Genre tag. This creates a Blank Genre that is actually displayed and selectable in Genre lists.

This AppleScript will correctly delete the Genre tag of each track in a selection:

tell application "iTunes"

set sel to selection

repeat with thisTrack in sel

tell thisTrack to set its genre to ""

end repeat

end tell

Also, any number of other scripts that can edit the Genre tag, like Multi-Item Edit, will get the job done.

October 31 2014 - 3:06 pm

Save Current Track's Artwork

I don't know why you'd want to do this on any kind of regular basis, but I thought it was kinda fun for a Friday afternoon. I wanted to see if I could save artwork from iTunes Radio tracks, but it works with whatever the current track is:

tell application "iTunes"

try

if player state is not stopped then

set alb to (get album of current track)

tell artwork 1 of current track

if format is JPEG picture then

set imgFormat to ".jpg"

else

set imgFormat to ".png"

end if

end tell

set rawData to (get raw data of artwork 1 of current track)

else

return

end if

on error

display dialog "Problem getting track info." buttons {"OK"}

return

end try

end tell

try

set baseLoc to choose folder

on error

return

end try

set newPath to ((baseLoc as text) & alb & imgFormat) as text

try

tell me to set fileRef to (open for access newPath with write permission)

write rawData to fileRef starting at 0

tell me to close access fileRef

on error m number n

log n

log m

try

tell me to close access fileRef

end try

end try

Open that in Script Editor and "Save..." it as "Save Current Track's Artwork" (or whatever) in your ~/Library/iTunes/Scripts/ folder. Whenever a track is playing, you can launch it to choose a folder in which to save the current track's artwork. Great way to fill up your desktop with effluvia. (I'm kidding. But it would be good for that.)

August 29 2014 - 8:21 am

More iTunes Power Search at Your Fingertips

[UPDATE: In iTunes 12.2 and later, selecting "Music" in this script will go to the "New" section of Apple Music. The other kind selections work as expected.]

Kirk has noticed that Apple has spruced up the iTunes Power Search page. Inspired, I improved this simple AppleScript to launch a Power Search by kind (click the AppleScript Editor icon below the code to display the code in AppleScript Editor on your machine):

set chooseOptions to {"All Results", "Apps", "Music", "Movies", "TV Shows", ¬

"Podcasts", "Books", "iTunesU"}

set optList to {"mt=3", "mt=8", "mt=1", "mt=6", "mt=4", "mt=2", ¬

"media=books#powerSearch&restrict=false&submit=media", ¬

"institutionTerm=&media=iTunesU"}

set opt to (choose from list chooseOptions with prompt "iTunes Power Search...")

if opt is false then return

repeat with i from 1 to length of chooseOptions

if opt as text is (item i of chooseOptions) then

set opt to (item i of optList)

end if

end repeat

set link to ("itms://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearch?" & opt) as text

tell application "iTunes" to open location link

Save that as something like "Power Search" in your ~/Library/iTunes/Scripts/ folder and assign it a shortcut. When you launch it, you can select the area you want to search:

March 16 2014 - 12:18 pm

Reveal Multiple Selected Tracks' Files

I occasionally have need to access the files of tracks that may not always be in the same "Album" folder. iTunes has a "Show in Finder" command (Shift-Command-R) for single tracks so to reveal all the files from disparate folders I have to "Show in Finder" each of the tracks, one at a time.

But what if I could open each selected track's file's folder in its own tab in a single Finder window? Like this:

Each tab is the containing folder for the file of each selected track and each file is highlighted. Even if two or more files are in the same folder the folder will get its own tab for each file.

The script follows:
(more…)

March 6 2014 - 1:33 pm

iTunes Store Power Search at Your Fingertips

Kirk McElhearn posted today about accessing the (kinda hidden) iTunes Store "Power Search" panel:

The trick to making this panel visible is to use this link, which I suppose you could bookmark in your web browser and Command-Tab to that whenever you wanted to power search. But in the last century human beings invented AppleScript to free themselves from time-consuming drudgeries like that.

Just enter this in AppleScript Editor (or click the little script icon to open it automatically):

tell application "iTunes"

open location "itms://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearch"

end tell

Name it whatever you like and Save it with the Format of "Script" in your ~Library/iTunes/Scripts/ folder. Then assign it a shortcut in iTunes.

This post was updated on March 9, 2014.

Also see this post: More iTunes Store Power Search at Your Fingertips.

February 2 2014 - 8:17 am

Disc 1 of 1

A Corespondent laments:

My personal preference when dealing with the disc count field (1 of 2, etc) is to leave it blank for single CD albums instead of tagging them as "1 of 1." There is something about 1 of 1 that just bugs me so I try to clear those out. Can you think of anything you have that can search in those fields? Sorting the library by disc number [is an unsatisfactory solution] because every disc 1—regardless if there is a second disc—gets sorted.

Yeah. It would be easy to do a Multi-Item edit on these guys if you could only corral 'em all together somehow. But: sorting by Disc # sorts by Disc Number alone and ignores the Disc Count so the "1 of 1" tracks are not necessarily sorted together; rather, they're sorted by Album (all the Disc 1 albums A-Z, followed by all the Disc 2 albums A-Z, and so on). Smart Playlists are of little use to gather up these tracks since Disc Count is not a smart criterion.

So here's a script that will look at each track in a selection or all the tracks in the selected playlist; if the track's Disc Count is 1 the script will set it to 0, effectively blanking it:

tell application id "com.apple.iTunes"

set thePlaylist to (get view of front window)

set sel to selection

if sel is {} then

# all tracks in playlist

repeat with i from 1 to (get index of last track of thePlaylist)

my processTheTrack(track i of thePlaylist)

end repeat

else

# selected tracks

repeat with i from 1 to (length of sel)

my processTheTrack(item i of sel)

end repeat

end if

end tell

to processTheTrack(t)

tell application id "com.apple.iTunes"

try

if disc count of t is 1 then set disc count of t to 0

end try

end tell

end processTheTrack

You can save that in AppleScript Editor named whatever you like and using "Script" as the file format to your ~/Library/iTunes/Scripts/ folder whereupon it will appear in the iTunes Scripts menu.

The script iterates through each track individually, so if you run it against your entire Music library playlist you'll have time to file nails, tidy bookshelves, re-string guitar, or perform some other menial task.

UPDATE: To eliminate the disc number as well (although I prefer to keep it) change the handler to this:

to processTheTrack(t)

tell application id "com.apple.iTunes"

try

if disc count of t is 1 then

set disc number of t to 0

set disc count of t to 0

end if

end try

end tell

end processTheTrack

December 13 2013 - 1:10 pm

Search iTunes Store via Google

Kirk had a tip about using Google to search the iTunes Store in his Macworld column today. Here's a script for that:

try

set searchText to text returned of (display dialog "Search the iTunes Music Store for:" default answer "")

tell application "Finder" to open location "http://www.google.com/search?q=site:itunes.apple.com " & searchText

end try

Launch and enter some search text and click the "OK" button. A new window with Google results will be displayed by your default browser.

November 6 2013 - 8:18 am

Add Files in Reverse, Sort by Date Added

A Correspondent writes that he sorts his Music library playlist by Date Added and meticulously adds each new album's worth of files to iTunes in reverse order—one file at a time—so that an album will appear in order (well, the order established for them in the Finder); older tracks appear sorted lower in the Music library playlist than newer tracks. Get me?

Predictably, Our Correspondent is dismayed by the drudgery of this method and inquires if AppleScript can provide any relief. AppleScript provide relief from drudgery? Ahoy!

tell application "Finder"

set selectedFiles to selection

repeat with i from (length of selectedFiles) to 1 by -1

my addFile(item i of selectedFiles)

delay 1

end repeat

end tell

to addFile(aFile)

tell application "iTunes"

try

add aFile as alias

end try

end tell

end addFile

Save this as a Script Bundle—named whatever you like—to your ~/Library/Scripts/ folder. This will make the script available in the system-wide Scripts menu at the right side of the menu bar. Select the files in the Finder you want to add, which have been sorted in the order you want, and launch the script. It will add the files to iTunes in reverse order so that when they are sorted by Date Added in iTunes they appear in the order you had for them in the Finder.

UPDATE November 11, 2013: Added 1 second delay in repeat loop to prevent tracks from having the same date added (to the second) and sorting arbitrarily.

October 17 2013 - 7:07 pm

AirPlay Scripting Workaround

As previously noted, you can't do this without getting -1728 errors:

tell application "iTunes"

set apDevices to (get AirPlay devices)

end tell

But you can do this:

tell application "iTunes"

set apDevices to (get a reference to AirPlay devices)

-- see?

log (get name of apDevices)

-- or

repeat with aDevice in apDevices

log (get aDevice's name)

end repeat

-- or

repeat with aDevice in AirPlay devices

log (get aDevice's name)

end repeat

end tell

That's if you need to do that.

August 16 2013 - 9:34 am

Toggle Stereo/Mono Audio Output

Correspondent Simon Crosbie has set up an amp and pair of speakers in his workshop which is connected to an Airport Express. Unfortunately, the speakers are some distance apart, so that he may be near one speaker or another at any time, and will only hear that channel's output. Simon wanted to know if there's a way to toggle between stereo and mono output so he can hear more than just half of a stereo recording.

Yes, there is a way. Go to System Preferences > Accessibility. Choose "Audio" in the left-hand list and in the panel that appears click the checkbox next to "Play stereo audio as mono".

Goodnight everybody!

Wait a minute. I almost forgot I wrote this script to do it:

tell application "System Preferences"

reveal anchor "Hearing" of pane id "com.apple.preference.universalaccess"

end tell

tell application "System Events"

tell application process "System Preferences"

set frontmost to true

tell window "Accessibility"

##--> pre 10.9 set monoStereoCheckbox to checkbox 2 of group 1

set monoStereoCheckbox to checkbox "Play stereo audio as mono"

if (get value of monoStereoCheckbox) as boolean is true then

set ddMessage to "Switch to STEREO output?"

else

set ddMessage to "Switch to MONO output?"

end if

if button returned of (display dialog ddMessage buttons {"No", "Yes"} default button 2) is "Yes" then

tell monoStereoCheckbox to click

end if

end tell

end tell

end tell

if application "System Preferences" is running then

tell application "System Preferences" to quit

end if

[UPDATE November 13, 2013: The original script has been updated for Mavericks. Note the commented line for pre-10.9 systems and the line that follows it. Set the monoStereoCheckbox variable using one or the other depending on the OS.]

[UPDATE October 17, 2014: Another change for compatibility with Yosemite. The line "set frontmost to true" is inserted right after the first tell application process "System Preferences" line near the beginning.]

I would save this script in the system wide Scripts menu (install it in ~/Library/Scripts/). Because the script uses (gulp) GUI scripting you must make sure that "Enable access for assitive devices" is checked in the Accessibility System Preferences panel.

Smarties among you can figure out how to switch mono/stereo when using AppleScript to change AirPlay speakers.

And bear in mind that while the script works with the current OS (and probably an OS that may be released this Fall), Apple may change the layout of the System Preferences panels in a future update, in which case the GUI scripting will have to be updated.

[UPDATE December 28, 2018: Mojave made some changes and the updated version of the script can be seen here.

Site contents © 2001 - 2019 (that's right: 2001) Doug Adams and weblished by Doug Adams. Contact support AT dougscripts DOT com. About.
All rights reserved. Privacy.
AppleScript, iTunes, iPod, iPad, and iPhone are registered trademarks of Apple Inc. This site has no direct affiliation with Apple, Inc.
The one who says "it cannot be done" should not interrupt the one doing it.