Skip to content

Instantly share code, notes, and snippets.

@SKaplanOfficial
Last active February 11, 2026 10:51
Show Gist options
  • Select an option

  • Save SKaplanOfficial/f9f5bdd6455436203d0d318c078358de to your computer and use it in GitHub Desktop.

Select an option

Save SKaplanOfficial/f9f5bdd6455436203d0d318c078358de to your computer and use it in GitHub Desktop.
AppleScript and JXA scripts to get Now Playing info. Works on macOS 15.4+, including macOS 26 beta 1.
function run() {
const MediaRemote = $.NSBundle.bundleWithPath('/System/Library/PrivateFrameworks/MediaRemote.framework/');
MediaRemote.load
const MRNowPlayingRequest = $.NSClassFromString('MRNowPlayingRequest');
const appName = MRNowPlayingRequest.localNowPlayingPlayerPath.client.displayName;
const infoDict = MRNowPlayingRequest.localNowPlayingItem.nowPlayingInfo;
const title = infoDict.valueForKey('kMRMediaRemoteNowPlayingInfoTitle');
const album = infoDict.valueForKey('kMRMediaRemoteNowPlayingInfoAlbum');
const artist = infoDict.valueForKey('kMRMediaRemoteNowPlayingInfoArtist');
return `${title.js} — ${album.js} — ${artist.js} | ${appName.js}`;
}
use framework "AppKit"
on run
set MediaRemote to current application's NSBundle's bundleWithPath:"/System/Library/PrivateFrameworks/MediaRemote.framework/"
MediaRemote's load()
set MRNowPlayingRequest to current application's NSClassFromString("MRNowPlayingRequest")
set appName to MRNowPlayingRequest's localNowPlayingPlayerPath()'s client()'s displayName()
set infoDict to MRNowPlayingRequest's localNowPlayingItem()'s nowPlayingInfo()
set title to (infoDict's valueForKey:"kMRMediaRemoteNowPlayingInfoTitle") as text
set album to (infoDict's valueForKey:"kMRMediaRemoteNowPlayingInfoAlbum") as text
set artist to (infoDict's valueForKey:"kMRMediaRemoteNowPlayingInfoArtist") as text
return title & " - " & album & " - " & artist & " | " & appName
end run
@ungive
Copy link

ungive commented Feb 9, 2026

@kreatoo Last time I tried I couldn't get the artwork to load with JXA/osascript, it would just be empty

@kreatoo
Copy link

kreatoo commented Feb 10, 2026

Yeah, seems so. kMRMediaRemoteNowPlayingInfoArtworkData is just returning null. Thanks for the help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment