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. The documentation below may be out of date.
[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 |
Requires a compiler that supports C++23. Currently only tested with the latest version of 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
Use --help
to see available options.
anitomy --format=json --pretty "[Ouroboros] Fullmetal Alchemist Brotherhood - 01"
{
"episode": "01",
"release_group": "Ouroboros",
"title": "Fullmetal Alchemist Brotherhood"
}
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?
See other repositories for related projects.
- Building the library now requires a compiler with C++23 support.
- The library is now located inside the
include
directory and used with#include <anitomy.hpp>
. - Library internals (anything not mentioned below) are moved to
anitomy::detail
namespace. - The library now uses UTF-8 encoded
std::string
. You no longer need to convert from/tostd::wstring
. - Removed
anitomy::Anitomy
class. You can use the freeanitomy::parse
function instead. - Removed
allowed_delimiters
andignored_strings
options. - Removed
anitomy::Elements
class. Parser now returnsstd::vector<Element>
instead. ElementCategory
enum is replaced withElementKind
enum class.- Parsed elements are now ordered according to their position in the input.
Anitomy is licensed under Mozilla Public License 2.0.