我写了一个AppleScript,它从Genius那里获取歌词并将其添加到我的iTunes歌曲中。
从本质上讲,有一个循环遍历最近添加到iTunes中的我的歌曲,然后将每首歌曲转到天才并尝试查找该歌曲,如果找不到该歌曲,则{{1} }和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
将反映失败的歌曲)
它工作得非常好,并且可以完全按照我的期望输出,但是问题是iTunes中的某些歌曲标题包含方括号(),如果您尝试使用shell输出这些方括号,则会出现错误并且不会输出任何内容(除非您在\\(\\)之类的括号之前加上反斜杠,否则它将正常工作)
因此,所有找不到的歌曲都保存在列表song_artist
中,并在循环结束后稍后打印到文本文件中。
我的问题是如何检查song_title是否包含任何括号,如果包含,那么如何在括号之前添加反斜杠?
答案 0 :(得分:0)
songNotAva
是一个列表,您必须使用循环并使用quoted form of
来转义每个字符串。
检查空列表是多余的。如果列表为空,则将跳过循环。
set songNotAva to {"7 rings(example bracket)"}
do shell script "> $HOME/Desktop/songs.txt"
repeat with aSong in songNotAva
do shell script "echo " & quoted form of aSong & " >> $HOME/Desktop/songs.txt"
end repeat