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