mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 15:14:33 +00:00
Partial Fix: Apple Music, untested
This commit is contained in:
parent
aeed23f950
commit
311e2551c5
1 changed files with 69 additions and 29 deletions
|
|
@ -145,38 +145,78 @@ class AppleMusicController: MediaControllerProtocol {
|
||||||
}
|
}
|
||||||
|
|
||||||
private func fetchPlaybackInfoAsync() async throws -> NSAppleEventDescriptor? {
|
private func fetchPlaybackInfoAsync() async throws -> NSAppleEventDescriptor? {
|
||||||
let script = """
|
if #available(macOS 26.0, *) {
|
||||||
tell application "Music"
|
let script = """
|
||||||
set isRunning to true
|
tell application "Music"
|
||||||
try
|
|
||||||
set playerState to player state is playing
|
|
||||||
set currentTrackName to name of current track
|
|
||||||
set currentTrackArtist to artist of current track
|
|
||||||
set currentTrackAlbum to album of current track
|
|
||||||
set trackPosition to player position
|
|
||||||
set trackDuration to duration of current track
|
|
||||||
set shuffleState to shuffle enabled
|
|
||||||
set repeatState to song repeat
|
|
||||||
if repeatState is off then
|
|
||||||
set repeatValue to 1
|
|
||||||
else if repeatState is one then
|
|
||||||
set repeatValue to 2
|
|
||||||
else if repeatState is all then
|
|
||||||
set repeatValue to 3
|
|
||||||
end if
|
|
||||||
|
|
||||||
try
|
try
|
||||||
set artData to data of artwork 1 of current track
|
set playerState to player state is playing
|
||||||
on error
|
set currentTrackName to name of current track
|
||||||
|
set currentTrackArtist to artist of current track
|
||||||
|
set currentTrackAlbum to album of current track
|
||||||
|
set trackPosition to player position
|
||||||
|
set trackDuration to duration of current track
|
||||||
|
set shuffleState to shuffle enabled
|
||||||
|
set repeatState to song repeat
|
||||||
|
if repeatState is off then
|
||||||
|
set repeatValue to 1
|
||||||
|
else if repeatState is one then
|
||||||
|
set repeatValue to 2
|
||||||
|
else if repeatState is all then
|
||||||
|
set repeatValue to 3
|
||||||
|
end if
|
||||||
|
|
||||||
set artData to ""
|
set artData to ""
|
||||||
|
try
|
||||||
|
set libraryTrack to first track of playlist "Library" whose name is currentTrackName and artist is currentTrackArtist
|
||||||
|
set artData to data of artwork 1 of libraryTrack
|
||||||
|
on error
|
||||||
|
try
|
||||||
|
set artData to data of artwork 1 of current track
|
||||||
|
on error
|
||||||
|
set artData to ""
|
||||||
|
end try
|
||||||
|
end try
|
||||||
|
|
||||||
|
return {playerState, currentTrackName, currentTrackArtist, currentTrackAlbum, trackPosition, trackDuration, shuffleState, repeatValue, artData}
|
||||||
|
on error
|
||||||
|
return {false, "Not Playing", "Unknown", "Unknown", 0, 0, false, 0, ""}
|
||||||
end try
|
end try
|
||||||
return {playerState, currentTrackName, currentTrackArtist, currentTrackAlbum, trackPosition, trackDuration, shuffleState, repeatValue, artData}
|
end tell
|
||||||
on error
|
"""
|
||||||
return {false, "Not Playing", "Unknown", "Unknown", 0, 0, false, 0, ""}
|
return try await AppleScriptHelper.execute(script)
|
||||||
end try
|
} else {
|
||||||
end tell
|
let script = """
|
||||||
"""
|
tell application "Music"
|
||||||
|
set isRunning to true
|
||||||
return try await AppleScriptHelper.execute(script)
|
try
|
||||||
|
set playerState to player state is playing
|
||||||
|
set currentTrackName to name of current track
|
||||||
|
set currentTrackArtist to artist of current track
|
||||||
|
set currentTrackAlbum to album of current track
|
||||||
|
set trackPosition to player position
|
||||||
|
set trackDuration to duration of current track
|
||||||
|
set shuffleState to shuffle enabled
|
||||||
|
set repeatState to song repeat
|
||||||
|
if repeatState is off then
|
||||||
|
set repeatValue to 1
|
||||||
|
else if repeatState is one then
|
||||||
|
set repeatValue to 2
|
||||||
|
else if repeatState is all then
|
||||||
|
set repeatValue to 3
|
||||||
|
end if
|
||||||
|
|
||||||
|
try
|
||||||
|
set artData to data of artwork 1 of current track
|
||||||
|
on error
|
||||||
|
set artData to ""
|
||||||
|
end try
|
||||||
|
return {playerState, currentTrackName, currentTrackArtist, currentTrackAlbum, trackPosition, trackDuration, shuffleState, repeatValue, artData}
|
||||||
|
on error
|
||||||
|
return {false, "Not Playing", "Unknown", "Unknown", 0, 0, false, 0, ""}
|
||||||
|
end try
|
||||||
|
end tell
|
||||||
|
"""
|
||||||
|
return try await AppleScriptHelper.execute(script)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue