0.0.1 |
|
---|
#9 in #dj
91KB
2K SLoC
seratodj
Rust库,用于解析由Serato DJ软件编写的元数据和数据库文件。
注意:此库目前仍在积极开发中,未来可能会出现破坏性API更改。
lib.rs
:
此库提供对由Serato DJ软件编写的元数据和库的访问。
元数据
Serato的格式相当复杂,并存储冗余数据,这可能导致数据相互矛盾的情况(例如,如果数据是手动编辑的)。
为了使访问元数据变得简单,此库提供了TagContainer
结构体,它提供了对所有重要属性的访问,并实现了Serato DJ软件使用的相同冲突解决策略。
use seratodj::tag::{TagContainer, TagType};
fn parse_and_print_cues(markers_data: &[u8], markers2_data: &[u8]) {
let mut tags = TagContainer::new();
tags.parse_markers(markers_data, TagType::ID3).expect("Failed to parse Markers data!");
tags.parse_markers2(markers2_data, TagType::ID3).expect("Failed to parse Markers2 data!");
for cue in tags.cues() {
println!("{:?}", cue);
}
}
如果您更愿意自己解析标签数据表示,可以直接使用单个标签结构体
use seratodj::tag::{Markers, format::id3::ID3Tag};
fn parse_and_print_markers(data: &[u8]) {
let markers = Markers::parse_id3(data).expect("Failed to parse data!");
println!("{:?}", markers);
}
注意:此库不提供直接从音乐文件中读取元数据的手段,因此您需要使用其他库(例如 id3
)来执行此操作。您可以在examples/
目录中查看一些示例。
库
解析Serato库(例如,在_Serato_
目录中的database V2
文件)也是可能的,但由于此功能仍在开发中,API尚不稳定,未来可能会发生变化。
依赖项
~3MB
~66K SLoC