【发布时间】:2019-02-07 22:35:19
【问题描述】:
我编写了一个 AppleScript,它从 Genius 获取歌词并将其添加到我的 iTunes 歌曲中。
基本上有一个循环遍历我最近添加到 iTunes 中的歌曲,对于每首歌曲,它都会进入天才并试图找到那首歌,如果找不到那首歌,那么 song_name 和song_artist 被放入一个名为 songNotAva 的变量中。将其放入变量中的方式是:
set songNotAva to songNotAva & {"- ", song_name, " - ", song_artist & return}。
然后,一旦“获取歌曲的所有歌词”的循环完成,如果songNotAva 不为空,则执行以下代码:
if songNotAva is not equal to {} then
do shell script "> $HOME/Desktop/songs.txt"
do shell script "echo " & songNotAva & ">> $HOME/Desktop/songs.txt"
end if
它将失败的歌曲输出到具有这种格式的文本文件中:
- song_name - song_artist
- song_name - song_artist
- song_name - song_artist
(song_name 和 song_artist 将反映失败的歌曲)
它工作得非常好,并且完全按照我的预期输出,但问题是 iTunes 中的某些歌曲标题包含括号 (),如果你尝试使用 shell 输出这些括号,它会想出一个错误并且不会输出任何东西(除非你在括号前有反斜杠,如 \\(\\) 那么它会正常工作)
所以,所有找不到的歌曲都保存在列表songNotAva 中,然后在循环结束后打印到文本文件中。
我的问题是如何检查 song_title 是否包含任何括号,如果包含,那么如何在括号前添加反斜杠?
【问题讨论】:
-
或许可以试试
& quoted form of songNotAva &? -
@jhnc 我收到一条错误消息,提示“无法将 {“7 个环(示例括号)”} 的引号形式转换为 Unicode 文本类型。”
-
songNotAva是一个列表吗?如果是这样,我想您需要遍历每个元素(除非您想将所有内容回显到songs.txt的单行) -
@jhnc 是的,它是一个列表。本质上它的工作方式是,对于每首找不到歌词的歌曲,将其添加到该变量中,然后一旦循环(获取歌词)完成,如果
songNotAva不为空,则制作一个文本文件,然后在每个新行上使用格式- song name - song artist填充失败的歌曲
标签: shell terminal applescript