Anitomy
Anitomy 是一个用于解析动漫视频文件名的 C++ 库和命令行工具。
[!重要] 该库目前正在
develop
分支中重写。以下文档可能已过时。
示例
[TaigaSubs]_Toradora!_(2008)_-_01v2_-_Tiger_and_Dragon_[1080p_H.264_FLAC][BAD7A16A].mkv
元素 | 值 |
---|---|
发布组 | TaigaSubs |
标题 | Toradora! |
年份 | 2008 |
集数 | 01 |
发布版本 | 2 |
集标题 | Tiger and Dragon |
视频分辨率 | 1080p |
视频格式 | H.264 |
音频格式 | FLAC |
文件校验和 | BAD7A16A |
文件扩展名 | mkv |
使用方法
库
需要支持 C++23 的编译器。目前仅在最新版本的 MSVC 上进行了测试。
#include <print>
#include <anitomy.hpp>
int main() {
auto elements = anitomy::parse("[Ouroboros] Fullmetal Alchemist Brotherhood - 01");
for (auto [kind, value, _] : elements) {
std::println("{:<16}{}", kind, value);
}
return 0;
}
release_group Ouroboros
title Fullmetal Alchemist Brotherhood
episode 01
命令行界面
使用 --help
查看可用选项。
anitomy --format=json --pretty "[Ouroboros] Fullmetal Alchemist Brotherhood - 01"
{
"episode": "01",
"release_group": "Ouroboros",
"title": "Fullmetal Alchemist Brotherhood"
}
常见问题
它是如何工作的?
Anitomy 对文件名的形成方式进行了一些有根据的猜测。从技术角度来说,输入被分割成一系列标记,然后检查这些标记中的各种关键词和模式以提取元素。
如果文件名无法正确解析,我该怎么办?
请报告问题,不过对于非常模糊的命名方案可能无法解决。
我可以将它用于其他媒体,如电影或电视剧吗?
在某种程度上应该可以使用,但该库主要针对动漫进行了优化。
我可以在 Unicode 文件名上使用它吗?
可以,只需确保您的输入是 UTF-8 编码,最好是合成形式。
我可以在其他编程语言中使用它吗?
请查看其他仓库以了解相关项目。
迁移
v2.0 (开发中)
- 构建库现在需要支持 C++23 的编译器。
- 库现在位于
include
目录中,使用#include <anitomy.hpp>
引入。 - 库内部实现(未在下面提到的任何内容)已移至
anitomy::detail
命名空间。 - 库现在使用 UTF-8 编码的
std::string
。您不再需要从/到std::wstring
进行转换。 - 移除了
anitomy::Anitomy
类。您可以使用自由函数anitomy::parse
代替。 - 移除了
allowed_delimiters
和ignored_strings
选项。 - 移除了
anitomy::Elements
类。解析器现在返回std::vector<Element>
。 ElementCategory
枚举被ElementKind
枚举类替代。- 解析后的元素现在根据它们在输入中的位置排序。
许可证
Anitomy 使用 Mozilla Public License 2.0 许可。