如何从含歌曲名、艺术家的CSV/文本文件填充iTunes播放列表?
解决方案:从「歌曲名,艺术家」文本/CSV填充iTunes播放列表
当然可以搞定这个需求!你之前的脚本只靠歌曲名匹配确实容易踩坑——毕竟太多不同歌手的歌同名了。咱们修改一下脚本,让它能解析每行的「歌曲名,艺术家」格式,精准定位到对应的曲目。
修改后的完整脚本
set TheFile to read file "Macintosh HD:Applications:Automator stuff:01b iTunes Scripts:SongList.txt" tell application "iTunes" set thePlaylist to playlist "SongList" -- 先清空播放列表(可选,根据你的需求调整) try delete every track of thePlaylist end try set MySongs to paragraphs of TheFile set matchedTracks to {} repeat with songLine in MySongs -- 跳过空行 if songLine is not "" then -- 按逗号分割每行,提取歌曲名和艺术家 set AppleScript's text item delimiters to "," set songName to text item 1 of songLine set artistName to text item 2 of songLine -- 恢复默认分隔符,避免影响后续操作 set AppleScript's text item delimiters to "" -- 精准搜索匹配歌曲名+艺术家的曲目 try set matchedTrack to first track whose name is songName and artist is artistName copy matchedTrack to end of matchedTracks on error -- 如果找不到对应曲目,弹出提示(可根据需求改成日志记录) display dialog "找不到曲目:" & songName & " - " & artistName buttons {"OK"} default button 1 end try end if end repeat -- 将匹配到的曲目批量添加到播放列表 if length of matchedTracks > 0 then add matchedTracks to thePlaylist end if end tell
关键修改点说明
- 解析「歌曲名,艺术家」格式:用
AppleScript's text item delimiters把每行按逗号拆分,分别提取歌曲名和艺术家信息。注意用完后要恢复默认分隔符,防止后续文本操作出问题。 - 精准匹配曲目:不再只靠
name匹配,而是同时校验name和artist,彻底避免重名歌曲的错误匹配。 - 错误处理:新增
try...on error块,当找不到对应曲目时会弹出提示,你也可以改成静默日志或者直接忽略,灵活调整。 - 空行过滤:自动跳过文本里的空行,避免无效的搜索操作。
额外注意事项
- 确保你的文本/CSV每行格式严格为「歌曲名,艺术家」,如果歌曲名本身包含逗号,需要用引号包裹(比如
"Hey Jude, The Beatles",The Beatles),这时候需要调整拆分逻辑,不过简单格式下上面的脚本完全够用。 - 尽量保证文本里的歌曲名、艺术家名称和iTunes里的完全一致(包括大小写、空格),如果想放宽匹配条件,可以把判断语句改成
name contains songName and artist contains artistName,但精准匹配的可靠性更高。
内容的提问来源于stack exchange,提问作者tardy pigeon
相关产品推荐
相关产品推荐

