gpt4 book ai didi

erlang - 在 Elixir 中如何读写 id3v1 和 id3v2 标签

转载 作者:行者123 更新时间:2023-12-02 11:17:20 24 4
gpt4 key购买 nike

我想使用 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 ) 来包装外部库

关于erlang - 在 Elixir 中如何读写 id3v1 和 id3v2 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com