从文件名的文本列表生成iTunes播放列表

时间:2018-03-11 23:34:41

标签: applescript itunes

我有一个文件的文件列表,所有文件都包含在一个文件夹中的Tardy's Music中。

我没有整个POSIX路径,只有文件名(例如'01 Song Title.mp3')。

有没有办法可以创建一个可以在Tardy音乐中搜索每个文件名并将其添加到播放列表“Best Of”的AppleScript?

我可以从iTunes中看到的歌曲标题生成播放列表,但不能生成文件名。

我在文本文件中有标题,但如果有帮助,可以将它们放在csv中。

(另外,这些文件都在我的iTunes资料库中。)

1 个答案:

答案 0 :(得分:1)

你没有提到你正在运行的MacOS版本和 iTunes ,所以我提供下面的脚本作为你的目标可以满足的一种方式的例子,理解是它已经使用 iTunes 12.7 在MacOS 10.13上进行了大量测试。

“松散地”,我的意思是我在理想条件下运行了几次脚本,在那里我提供了一个我知道存在的mp3文件名列表;是独特的;并已添加到我的主 iTunes 库中。也就是说,已经添加到 iTunes 库中的不存在,非唯一性和文件应该不会造成问题。

这是脚本,之后我将引导您完成它:

    set SongTitlesFile to "/Users/CK/Desktop/songs.txt"
    set MusicFolder to "/Users/CK/Music"

    set my text item delimiters to space


    set command to {¬
        "while read f;", ¬
        "do", ¬
        "find", quoted form of the MusicFolder, ¬
        "-iname \"$(printf '%q' \"$f\")\" -type f;", ¬
        "done", "<", quoted form of the SongTitlesFile}

    do shell script (command as text)

    set SongFiles to the paragraphs of the result
    if SongFiles is {} then return "No matching files found."


    repeat with SongFile in the SongFiles
        set end of SongFiles to POSIX file SongFile as alias
        set SongFiles to the rest of SongFiles
    end repeat


    tell application "iTunes" to ¬
        add the SongFiles to make new playlist ¬
            with properties {name:"Best Of"}

在使用此脚本之前,您需要更改前两个变量SongTitlesFileMusicFolder的值。输入完整路径(即 / Users /%you%/ ... 而不是〜/...):

①包含歌曲标题列表的文件。我假设该文件是纯文本文档,其中每个文件名占用一行。文件名之前或之后的空格不应该影响结果,但理想的格式如下:

01 A Song I Like.mp3
04 Second Song.m4a
Song 3.mp3
I Love This Song.mp3
 

在此处留下一个空行,如此处所示,否则列表中的最后一首歌曲可能会从搜索中省略。搜索区分大小写,但在其他方面是准确的,因为要进行匹配需要整个文件名(包括扩展名)。

这些是我在创建脚本时确定的标准。如果需要,可以使用不同的标准和匹配严格性,但鉴于您的简要说明,这似乎没有必要。

如果您需要使用不同格式的文件,请告诉我,我可以尝试重新编写脚本以满足它。

②包含您要在其中找到这些文件的音乐的顶级文件夹,即 Tardy音乐的完整路径。

我的脚本使用shell命令find的帮助来定位文件。它读取文本文件的每一行并搜索具有该名称的文件,并返回其完整路径。它只返回文件,而不是文件夹,并使用 敏感名称匹配。

如果存在多个具有相同文件名的文件(但位于不同的位置),则会返回两首歌曲并将其添加到最终列表中。

如果未找到匹配项,脚本将终止,并显示一条消息,该消息将显示在脚本编辑器的结果窗口中。

后面的repeat循环获取文件路径列表并将它们从Posix路径(即/ Paths / That Look Like / This.mp3)转换为 iTunes的alias类型可以使用。

最后,脚本指示 iTunes 创建名为“Best Of”的播放列表,并将歌曲添加到其中。

如果文件已经导入您的资料库,那么将不会再次导入(谢天谢地),并且只会添加到播放列表中;如果文件尚未导入您的库,则在松散测试中,文件将被导入并添加到您的库中,并添加到播放列表中。

让我知道它是怎么回事。如果您有任何疑问,请发表评论,我会尽快回复您。