我有以下代码行:
tell application "iTunes"
if player state is playing then
set trackMediaKind to media kind of current track
display dialog trackMediaKind
end if
end tell
当我打印trackMediaKind
时,我会收到以下信息:«constant ****kMdS»
在iTunes中,media kind
看起来像是:
有没有办法让它打印Music
而不是«constant ****kMdS»
?
tell application "iTunes"
if player state is playing then
set trackMediaKind to media kind of current track
log trackMediaKind as string
end if
end tell
我通过键入以下命令运行代码:osascript myscript.scpt
它仍会返回:«constant ****kMdS»
。
答案 0 :(得分:1)
您需要更改以下代码行:
display dialog trackMediaKind
要:
display dialog trackMediaKind as string
如果你真的希望它能够显示" Music"然后你需要做一些事情,如:
tell application "iTunes"
if player state is playing then
set trackMediaKind to media kind of current track
if trackMediaKind as string is "song" then
display dialog "Music"
end if
end if
end tell
BTW在 AppleScript词典中 iTunes (12.7。*),查看track
的属性, media kind
显示:
媒体类(提示音/有声读物/书籍/家庭视频/ iTunesU /电影/歌曲/音乐视频/播客/铃声/电视节目/语音备忘录/未知):媒体种类轨道
换句话说,如果您想要以不同的方式显示返回的结果,您需要针对可能返回的内容测试结果并根据您的需要/需要对其进行处理。此外,任何时候它返回像«constant ****kMdS»
尝试使用as string
或as text
强制转换文字。
更新以解决问题后的事实编辑:
虽然您最初没有在OP中说明您使用osascript
在终端中运行脚本,但是在运行相同代码之间似乎存在问题。两个不同环境中的.scpt
文件。有人会认为在脚本编辑器中可以正常工作,它可以在终端中使用osascript
正常工作,但在这种特殊情况下它并没有。
此特定情况下的解决方法是不使用.scpt
文件格式,而是使用纯文本格式:
例如,以下代码应显示一个对话框,其中包含" song"当歌曲曲目正在播放 iTunes 并保存在脚本编辑器中文字时,例如 myscript.applescript ,然后使用:osascript myscript.applescript
tell application "iTunes"
if player state is playing then
set trackMediaKind to media kind of current track
display dialog trackMediaKind as string
end if
end tell
还可以使用纯文本格式的 AppleScript 代码,并使文件可执行文件直接使用,而无需先在命令上键入osascript
线。使用osascript
shebang保存以下示例 AppleScript 代码。
#!/usr/bin/osascript
tell application "iTunes"
if player state is playing then
set trackMediaKind to media kind of current track
display dialog trackMediaKind as string
end if
end tell
使用终端中的chmod
制作可执行文件,例如:
chmod u+x myscript.applescript
然后,如果它在当前目录中,请使用以下命令执行脚本:
./myscript.applescript
否则,请使用路径名,如果它不在PATH
中。
注意:使用此方法,无需使用.applescript
扩展名或任何扩展名。它是用户首选项,即使脚本编辑器默认情况下使用该扩展名为纯文本 AppleScript 代码文件。