4 个版本
使用旧的 Rust 2015
0.2.0 | 2023年11月17日 |
---|---|
0.1.2 | 2018年12月30日 |
0.1.1 | 2018年6月17日 |
0.1.0 | 2018年6月17日 |
#2118 in 解析实现
36 每月下载量
用于 anitomy
125KB
2.5K SLoC
anitomy-sys
anitomy-sys 是用于 Anitomy 的低级 Rust 绑定,Anitomy 是一个用于解析动漫视频文件名的 C++ 库。
使用 anitomy-c,它是 Anitomy 的 C ABI 包装器。
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
anitomy-sys = "0.1"
anitomy-sys 将在构建时编译和静态链接 anitomy-c 和 Anitomy,因此需要一个兼容的编译器。
要求
- C++14 兼容的编译器
- GCC >= 5
- Clang >= 3.4(根据Clang CXX 状态页面)
- Visual Studio 2017 或 Visual Studio 2017 开发工具
示例
extern crate anitomy_sys;
use anitomy_sys::{Anitomy, ElementCategory};
use std::ffi::CString;
fn main() {
let mut anitomy = unsafe { Anitomy::new() };
let filename = CString::new("[TaigaSubs]_Toradora!_(2008)_-_01v2_-_Tiger_and_Dragon_[1280x720_H.264_FLAC][1234ABCD].mkv").expect("no nul chars in filename");
let success = unsafe { anitomy.parse(&filename) };
println!("Success? {}", success);
unsafe {
let elements = anitomy.elements();
println!(
"It is: {} #{} by {}",
elements.get(ElementCategory::AnimeTitle),
elements.get(ElementCategory::EpisodeNumber),
elements.get(ElementCategory::ReleaseGroup)
);
(0..elements.count(None))
.flat_map(|i| elements.at(i))
.for_each(|e| println!("{:?}: {:?}", e.category, e.value));
}
unsafe { anitomy.destroy() };
}
输出
Success? true
It is: Toradora! #01 by TaigaSubs
FileExtension: "mkv"
FileName: "[TaigaSubs]_Toradora!_(2008)_-_01v2_-_Tiger_and_Dragon_[1280x720_H.264_FLAC][1234ABCD]"
VideoTerm: "H.264"
VideoResolution: "1280x720"
AudioTerm: "FLAC"
FileChecksum: "1234ABCD"
AnimeYear: "2008"
EpisodeNumber: "01"
ReleaseVersion: "2"
AnimeTitle: "Toradora!"
ReleaseGroup: "TaigaSubs"
EpisodeTitle: "Tiger and Dragon"
无运行时依赖
~180KB