AppleScript中字符串的常量

AppleScript中字符串的常量,applescript,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时,我得到以下信息:«常数****kMdS» 在iTunes中,媒体类型类似于: 有没

我有以下代码行:

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
时,我得到以下信息:
«常数****kMdS»

在iTunes中,
媒体类型类似于:

有没有办法让它打印
音乐
而不是
«常量****kMdS»

-编辑-
我通过终端运行代码,输入:
osascript myscript.scpt
它仍然返回:
«常量****kMdS»

您需要更改以下代码行:

致:

如果您确实希望它显示“音乐”,则需要执行以下操作:

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
顺便说一句,在iTunes(12.7.*)的AppleScript字典中,查看
曲目的属性,
媒体种类显示:

媒体种类(提示音/‌有声读物/‌书/‌家庭录像/‌伊图内斯/‌电影/‌歌/‌音乐录像/‌播客/‌铃声/‌电视节目/‌语音备忘录/‌未知):媒体的轨道类型

换句话说,如果希望以不同的方式显示返回的结果,则需要根据可能返回的结果进行测试,并根据您的需要进行相应的处理。此外,任何时候它都会返回类似于
«常量****kMdS»
的内容,请尝试强制使用
作为字符串
作为文本


更新以解决问题的事后编辑:

虽然您最初没有在OP中声明您正在使用
osascript
Terminal中运行脚本,但是在两个不同的环境中运行与
.scpt
文件相同的代码之间似乎存在问题。人们可能会认为,在脚本编辑器中正常工作的东西,使用
osascript
,在终端中正常工作,但在这种特殊情况下,它不会

在这种特殊情况下,解决方法是不使用
.scpt
文件格式,而是使用纯文本格式:

例如,当歌曲曲目播放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
保存以下示例AppleScript代码

终端中使用
chmod
使其可执行,例如:

chmod u+x myscript.applescript
然后,如果它在当前目录中,请使用以下命令执行脚本:

./myscript.applescript
否则,如果路径不在
路径中,请使用路径名


注意:使用此方法时,无需使用
.applescript
扩展名或任何扩展名。这是用户的首选项,即使默认情况下,脚本编辑器将该扩展名用于纯文本AppleScript代码文件。

感谢您的精彩回答!我对原始问题进行了一些编辑,当我在终端上运行脚本时,请查看问题的底部:
«constant****kMdS»
强制并没有起作用。@Do0med,我已经更新了我的答案,以反映您的事后编辑。除非明确说明环境,否则在您接受答案后所做的编辑之前,您在其下运行的代码将假定默认值(在本例中为脚本编辑器)。这是在请求帮助调试代码时应遵循的另一种情况!
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
#!/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 u+x myscript.applescript
./myscript.applescript