Mercurial > minori
view src/track/media.cc @ 101:c537996cf67b
*: multitude of config changes
1. theme is now configurable from the settings menu
(but you have to restart for it to apply)
2. config is now stored in an INI file, with no method of
conversion from json (this repo is private-ish anyway)
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Fri, 03 Nov 2023 14:06:02 -0400 |
parents | 8b65c417c225 |
children | 2004b41d4a59 |
line wrap: on
line source
#include "track/media.h" #include "track/constants.h" #include "animia.h" #include "anitomy/anitomy.h" #include "core/filesystem.h" #include "core/strings.h" #include <QDebug> #include <string> #include <unordered_map> #include <vector> namespace Track { namespace Media { Filesystem::Path GetCurrentPlaying() { /* getting all open files */ std::vector<int> pids = Animia::get_all_pids(); for (int i : pids) { for (const std::string& player : media_players) { if (Animia::get_process_name(i) == player) { std::vector<std::string> files = Animia::filter_system_files(Animia::get_open_files(i)); for (const std::string& f : files) { Filesystem::Path p(f); for (const std::string& ext : media_extensions) { if (p.Extension() == ext) return p; } } } } } return Filesystem::Path(); } std::unordered_map<std::string, std::string> GetMapFromElements(const anitomy::Elements& elements) { /* there are way more than this in anitomy, but we only need basic information I also just prefer using maps than using the ".get()" stuff which is why I'm doing this */ std::unordered_map<std::string, std::string> ret; ret["title"] = Strings::ToUtf8String(elements.get(anitomy::kElementAnimeTitle)); ret["filename"] = Strings::ToUtf8String(elements.get(anitomy::kElementFileName)); ret["language"] = Strings::ToUtf8String(elements.get(anitomy::kElementLanguage)); ret["group"] = Strings::ToUtf8String(elements.get(anitomy::kElementReleaseGroup)); ret["episode"] = Strings::ToUtf8String(elements.get(anitomy::kElementEpisodeNumber)); return ret; } std::unordered_map<std::string, std::string> GetFileElements(Filesystem::Path path) { anitomy::Anitomy anitomy; anitomy.Parse(Strings::ToWstring(path.Basename())); return GetMapFromElements(anitomy.elements()); } } // namespace Media } // namespace Track