我想使用Elixir扫描音乐文件和读取/写入元数据(这整个项目都是关于学习Elixir的,所以请不要告诉我使用Python!)。据我了解,我有两种选择:调用系统实用程序或(由于我所知道的Erlang或Elixir中不存在任何库)编写Elixir库。对于m4a文件,我对MP4Box进行了系统调用,并且将xml文件写入磁盘。然后,我读入文件,对其进行解析,然后将数据加载到数据库中。
def parse(file_name) do
System.cmd("MP4Box", ["-diso",file_name])
Ainur.XmlParser.parse(xml_file_name(file_name))
|> get_tags
end
非常慢,尤其是对于数千个文件。我希望它每次启动时都运行以检查更改/新文件。
现在,我尝试对具有id3标签的mp3进行相同操作。我在Ubuntu上尝试了libid3-tools,但只找到了id3v1标签。eyeD3仅找到id3v2标签。我的mp3兼有,所以我需要确保它们相同(我想我可以删除id3v1标签,但是我被认为是旧设备需要id3v1标签)。
是否有用于音乐元数据的Erlang或Elixir库?如果不是,对ubuntu实用程序的系统调用是我的最佳选择(关于哪个建议)?
还是我需要编写一个库以获得合理的性能?如果是这样,是否存在我可以尝试移植的功能性语言库?
还是可以直接从Elixir调用用另一种语言编写的库(无需系统调用)?
您始终可以使用erlang NIF(http://erlang.org/doc/tutorial/nif.html)包装外部库
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句