Anitomy is a C++ library and a command-line tool for parsing anime video filenames.
Important
The library is currently being rewritten in the develop branch.
[TaigaSubs]_Toradora!_(2008)_-_01v2_-_Tiger_and_Dragon_[1080p_H.264_FLAC][BAD7A16A].mkv
| Element | Value |
|---|---|
| Release group | TaigaSubs |
| Title | Toradora! |
| Year | 2008 |
| Episode | 01 |
| Release version | 2 |
| Episode title | Tiger and Dragon |
| Video resolution | 1080p |
| Video term | H.264 |
| Audio term | FLAC |
| File checksum | BAD7A16A |
| File extension | mkv |
Header-only, has no dependencies other than the standard library. Requires a compiler that supports C++23 (currently only tested with MSVC). See the docs for details.
#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
Use --help or visit the docs for available options.
anitomy --format=json --pretty "[Ouroboros] Fullmetal Alchemist Brotherhood - 01"{
"release_group": "Ouroboros",
"title": "Fullmetal Alchemist Brotherhood",
"episode": "01"
}How does it work?
Anitomy makes some educated guesses on how filenames are formed. In more technical terms, the input is split into a sequence of tokens, and the tokens are inspected for various keywords and patterns to extract the elements.
What should I do if a filename is not being parsed correctly?
Please report the issue, though it may not be possible to resolve a terribly ambiguous naming scheme.
Can I use it for other media such as movies or TV series?
It should work to some extent, but the library is mostly optimized for anime.
Can I use it on Unicode filenames?
Yes, just make sure your input is UTF-8 encoded and preferably in composed form.
Can I use it in another programming language?
Try the CLI, or see other repositories for related projects.
- Building the library now requires a compiler with C++23 support.
- The library is now located inside the
includedirectory and used with#include <anitomy.hpp>. - Library internals (anything not mentioned below) are moved to
anitomy::detailnamespace. - The library now uses UTF-8 encoded
std::string. You no longer need to convert from/tostd::wstring. - Removed
anitomy::Anitomyclass. You can use the freeanitomy::parsefunction instead. - Removed
allowed_delimitersandignored_stringsoptions. - Removed
anitomy::Elementsclass. Parser now returnsstd::vector<Element>instead. ElementCategoryenum is replaced withElementKindenum class.- Parsed elements are now ordered according to their position in the input.
Anitomy is licensed under Mozilla Public License 2.0.