AppleScript中的常量字符串

时间:2017-12-09 15:22:45

标签: applescript

我有以下代码行:

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看起来像是:

https://i.imgur.com/AkMr67J.png

有没有办法让它打印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»

1 个答案:

答案 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 stringas 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 代码文件。