Sample Header Ad - 728x90

How do you add an Apple Music track to your library with AppleScript?

0 votes
1 answer
233 views
Given an album ID (e.g. 1646945378) and a track ID (e.g. 1646945384), is there a way to add a track to the library using AppleScript/JXA? - macOS: Sonoma 14.2 - Music: 1.4.2.83 --- I know you can do something like
duplicate current track to playlist "Library"
Ideally, I don’t want to play the track before adding it to my library, but I can’t find a way to get a shared track object from just the album and track IDs. I have figured out how to open the album and select the track:
set albumID to "1646945378"
set trackID to "1646945384"

tell application "Music" to open location "itmss://geo.music.apple.com/album/" & albumID & "?i=" & trackID & "&ls=1&app=music"
However, I can’t get the selected track. This code logs empty lists:
tell application "Music"
  log (get browser window 1's selection)
  log (get selection)
  -- Because an album, not a playlist, is being browsed, ‘get browser 1's view’ doesn’t work either
end tell
As a last resort, I thought I could try manually clicking the add to library button, but I can’t figure out how to tell if a track is selected or not as all of the UI elements seem to have selected:missing value.
tell application "System Events"
  tell process "Music"
    set tracksList to get window 1's splitter group 1's scroll area 2's list 1's list 2
    set trackGroups to tracksList's groups

    -- With the example track above, the first track is selected

    set t1 to get trackGroups's item 1
    set t2 to get trackGroups's item 2

    -- Each group has one child UI element: another group. This group contains stuff like
    -- the track number, name, buttons, etc.
    log (get t1's properties) -- focused:missing value, selected:missing value
    log (get t2's properties) -- focused:missing value, selected:missing value

    log (get t1's group 1's properties) -- focused:false, selected:missing value
    log (get t2's group 1's properties) -- focused:false, selected:missing value
  end tell
end tell
I could use the Apple Music API to get the track number of the track I want to add to my library (or in my specific use-case I wouldn’t even need to use the API to do this) and click the add to library button that way. However, this all seems quite tedious and annoying for something that I believe should be a builtin AppleScript command. Is there a better/easier way of doing this? --- Related: - [Applescript play music from iTunes URL](https://stackoverflow.com/q/49647648/8289918) (using system events to click, answer doesn’t work anymore due to new(ish) Music app) - [Applescript to cause iTunes to play an album by Apple Music URL?](https://stackoverflow.com/q/58583420/8289918]) (no answers)
Asked by cherryblossom (364 rep)
Dec 31, 2023, 09:24 AM
Last activity: May 25, 2025, 12:03 PM