5个版本 (稳定)

2.0.0 2023年7月14日
1.1.0 2023年6月3日
1.0.1 2021年9月18日
1.0.0 2018年5月21日
0.1.0 2016年7月1日

#764 in 解析器实现

每月39次下载
dango-core 中使用

GPL-2.0-or-later

24KB
346

cue

此crate为libcue库提供Rust绑定,该库支持解析和解释CUE表。CUE表格式通常用于制作CD和存储抓取的CD副本。

此仓库包含两个crate:cue-sys,其中包含原始C API的原始绑定,以及cue,它提供了一个更高级、更符合Rust风格的接口。

示例

以下是一个如何使用此crate的简单示例,使用一个示例CUE表

use cue::cd::{CD, DiscMode};
use cue::track::{TrackMode, TrackSubMode};

let cue_sheet = "FILE \"example.img\" BINARY
  TRACK 01 MODE1/2352
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    PREGAP 00:02:00
    INDEX 01 58:41:36
  TRACK 03 AUDIO
    INDEX 00 61:06:08
    INDEX 01 61:08:08
";

let cd = CD::parse(cue_sheet.to_string()).unwrap();

println!("Number of tracks: {}", cd.get_track_count());
let mode = match cd.get_mode() {
    DiscMode::CD_DA => "CD-DA",
    DiscMode::CD_ROM => "CD-ROM",
    DiscMode::CD_ROM_XA => "CD-ROM XA",
};
println!("Mode: {}", mode);
println!("");

for (index, track) in cd.tracks().iter().enumerate() {
    println!("Track {}", index + 1);
    println!("Filename: {}", track.get_filename());
    println!("Start: {}", track.get_start());
    println!("Length: {}", track.get_length());
    println!("Pregap: {}", track.get_zero_pre());
    println!("Postgap: {}", track.get_zero_post());
    println!("");
}

贡献

如果您在使用此crate时遇到问题,请随时提交一个请求帮助的问题。我会尽我所能帮助您!

拉取请求非常受欢迎。如果您是开源或Rust的新手,请告诉我,我将很高兴帮助您完成贡献的过程!

许可协议

这两个crate都遵循GPL 2.0许可,这与libcue使用的许可相同。

依赖关系

~43KB