如何使用 AppleScriptObjC 获取 Spotify 应用程序的图像和曲目名称
How to get image and track name of Spotify app using AppleScriptObjC
我正在使用 Xcode 中的 Cocoa Applescript 创建一个新的 cocoa 应用程序,我想从 spotify 获取曲目详细信息以在我的应用程序中呈现图像。我创建了一个简单的 window,带有两个按钮 next 和 prev,带有艺术家姓名和曲目名称的 2 个文本标签。我设法从脚本编辑器中获取了曲目详细信息和图像 url,但是我无法以某种方式将其存储在 Xcode.
中
下一个和上一个按钮有效,但标签和图像 (ImageView) 上没有显示任何内容。
p/s : 我把所有的出口都链接到 xib。
script AppDelegate
property parent : class "NSObject"
-- IBOutlets
property theWindow : missing value
property labelOne : missing value
property labelTwo : missing value
property buttonNext : missing value
property buttonPrev : missing value
property imageOne : missing value
property ourWeb : missing value
property artist1 : "default1"
property artist2 : "default2"
property url1 : "defaulturl"
tell application "spotify"
set url1 to get artwork url of current track as string
tell artist1 to get artist of current track as string
set track1 to get name of current track
labelOne's setStringValue_(artist1)
end tell
on nextClicked_(sender)
tell application "spotify" to next track
end nextClicked_
on prevClicked_(sender)
tell application "spotify" to previous track
end prevClicked_
end script
希望有人能帮助我。这实际上是一个用 xcode 学习 applescript 的测试应用。提前致谢!
将 tell artist1 to get artist...
更改为 set artist1 to get artist..
。
现在 artist1 有一个有效的字符串值,如果它正确连接到 NSTextField,它应该显示在文本字段中。您还可以像这样简化您的 Spotify 代码:
tell application "Spotify"
tell current track
set name1 to name
set artist1 to artist
set url1 to artwork url
end tell
end tell
labelOne's setStringValue_(artist1)
这是一种使用 AppleScript-ObjectiveC 语法将插图 url 字符串转换为 NSImage 以便在 UI 中显示的方法。 imgAlbumCover
是将显示图像的 NSImageView。
use framework "Foundation"
use framework "AppKit"
tell application "spotify"
tell current track
set tArtworkURL to artwork url
end
end tell
set coverURL to current application's NSURL's URLWithString:tArtworkURL
set imageData to current application's NSData's dataWithContentsOfURL:coverURL
set coverImage to current application's NSImage's alloc()'s initWithData:imageData
set imgAlbumCover's image to coverImage
记得在 Info.plist 中启用 App Transport Security 以便您可以发出 http:// 请求。 (NSAppTransportSecurity -> NSAllowsArbitraryLoads)
我正在使用 Xcode 中的 Cocoa Applescript 创建一个新的 cocoa 应用程序,我想从 spotify 获取曲目详细信息以在我的应用程序中呈现图像。我创建了一个简单的 window,带有两个按钮 next 和 prev,带有艺术家姓名和曲目名称的 2 个文本标签。我设法从脚本编辑器中获取了曲目详细信息和图像 url,但是我无法以某种方式将其存储在 Xcode.
中下一个和上一个按钮有效,但标签和图像 (ImageView) 上没有显示任何内容。
p/s : 我把所有的出口都链接到 xib。
script AppDelegate
property parent : class "NSObject"
-- IBOutlets
property theWindow : missing value
property labelOne : missing value
property labelTwo : missing value
property buttonNext : missing value
property buttonPrev : missing value
property imageOne : missing value
property ourWeb : missing value
property artist1 : "default1"
property artist2 : "default2"
property url1 : "defaulturl"
tell application "spotify"
set url1 to get artwork url of current track as string
tell artist1 to get artist of current track as string
set track1 to get name of current track
labelOne's setStringValue_(artist1)
end tell
on nextClicked_(sender)
tell application "spotify" to next track
end nextClicked_
on prevClicked_(sender)
tell application "spotify" to previous track
end prevClicked_
end script
希望有人能帮助我。这实际上是一个用 xcode 学习 applescript 的测试应用。提前致谢!
将 tell artist1 to get artist...
更改为 set artist1 to get artist..
。
现在 artist1 有一个有效的字符串值,如果它正确连接到 NSTextField,它应该显示在文本字段中。您还可以像这样简化您的 Spotify 代码:
tell application "Spotify"
tell current track
set name1 to name
set artist1 to artist
set url1 to artwork url
end tell
end tell
labelOne's setStringValue_(artist1)
这是一种使用 AppleScript-ObjectiveC 语法将插图 url 字符串转换为 NSImage 以便在 UI 中显示的方法。 imgAlbumCover
是将显示图像的 NSImageView。
use framework "Foundation"
use framework "AppKit"
tell application "spotify"
tell current track
set tArtworkURL to artwork url
end
end tell
set coverURL to current application's NSURL's URLWithString:tArtworkURL
set imageData to current application's NSData's dataWithContentsOfURL:coverURL
set coverImage to current application's NSImage's alloc()'s initWithData:imageData
set imgAlbumCover's image to coverImage
记得在 Info.plist 中启用 App Transport Security 以便您可以发出 http:// 请求。 (NSAppTransportSecurity -> NSAllowsArbitraryLoads)