我在Python3中编写了一个小工具来帮助我将我的音乐收藏从NAS复制到移动设备。这样做的有用之处在于它会将flac文件自动转换为ogg-vorbis(以节省空间),并根据其音频标签(即艺术家,专辑,日期等)排除某些文件。
我对排除功能的有限性质感到不满意,我想改进它,但我遇到了一个心理障碍,我正在寻找有关如何继续进行的建议。
我希望用户编写一个类似于以下内容的排除文件:
exclude {
artist is "U2"
artist is "Uriah Heep" {
album is "Spellbinder"
album is "Innocent Victim"
}
}
这将转化为:
exclude if
(artist = "U2") OR
(artist = "Uriah Heep" AND (album = "Spellbinder" OR album = "Innocent Victim"))
会有更多的条件,例如子字符串匹配和日期范围。
我一直在查看PLY但是我正在努力解决如何解析这种类型的嵌套结构的概念,以及如何表示结果条件,以便我可以在应用时在代码中执行它在复制操作期间排除过滤器。