GkmasObjectManager GUI v1.2
A Python OOP interface with Gakuen Idolm@ster's object database ("manifest").
Running the Flask GUI
$ pip install -r requirements.txt
$ python server.py
Using the Python Module
import GkmasObjectManager as gom
m = gom.fetch(pc=True) # live loading from server
m.export("manifest.json") # supports ProtoDB/JSON/CSV
m_old = gom.load("octocacheevai") # loading from local 'octocacheevai'
m_diff = gom.fetch(m_old.revision._get_canon_repr()) # fetch update
m_new = m_old + m_diff # apply update
assert m_new == gom.fetch()
m.download_preset("presets/namecard_kit.yml") # implies export dir
m.download(
"sud_vo_adv_unit.*",
path="mainstory_voicelines",
convert_audio=True, # default, may omit
audio_format="mp3", # applies to all subsongs, may take a while
unpack_subsongs=True, # unpack ZIP to output directory
)
m.download("adv_unit.*", path="mainstory_scripts") # auto converts to JSONUsing the SoVITS Dataset Maker
$ python sovits_dataset.py -h
usage: sovits_dataset.py [-h] [-o OUTPUT] [-f FORMAT] [-b BITRATE] [-c] [-m] [-g] [-d CACHE_DIR] [-p] character
Creates a dataset for training a voice cloning model.
positional arguments:
character Character name
options:
--output OUTPUT Output filename, default to 'sovits_dataset_v{REVISION}_{CHARACTER}[_greedy][_captioned].{FORMAT}'
--format FORMAT Output format, default to .wav
--bitrate BITRATE Output bitrate, default to 128kbps
--caption Include captions
--merge Merge dataset into one audio file (otherwise export as ZIP)
--greedy Search *beyond* adventures with character abbrev in filename (e.g., appearance in others' stories)
--cache-dir CACHE_DIR Cache directory, default to ./.sovits-cache
--purge-cache Clean up cache after use
$ python sovits_dataset.py fktn -d D:/tmp/gkmas/.sovits-cache -g -c -m -f mp3
- Character is Fujita KoToNe
- [G]reedily cache all voice packs
- Include adventure [c]aption
- [M]erge samples into one file
- Output [f]ormat is .mp3
Character Abbreviations
| Hanami SaKI | Tsukimura TeMaRi | Fujita KoToNe | Arimura MAO | Katsuragi LiLJa | Kuramoto ChiNA |
| Shiun SuMiKa | Shinosawa HiRO | Himesaki RiNaMi | Hanami UME | Hataya MiSuZu | Juo SeNA |
| Amaya TsuBaMe | Juo KuNiO | Neo ASaRi | VOcal TRainer | DAnce TRainer | VIsual TRainer |
| Kayo RiNHa | Aoi NaDeshiKo | Shirakusa ShiON | Shirakusa GekKA | Kuroi TaKaO |
Changelog
- Backend
- [Feature/Manifest] Live manifest fetch of PC version by DMM GAMES
- [Feature/Manifest] Manifest add (for applying diff patches)
- [Feature/Manifest] YAML downloading scheme presets
- [Feature/Object] Record 'Last-Modified' at asset request; reflect in
mtimeof exported files and frontend - [Feature/Media] Extract multiple subsongs from voiceline ACB, export as ZIP, and optionally unpack
- [Feature/Adv] Adventure script parser (courtesy of Hatsuboshi_Teleprompter, Gakumas-Commu-Parser)
- [Feature] SoVITS- and diff-svc-compatible dataset maker script with cache & caption (transcript) support
- [Fix/Manifest] Accelerate manifest search by concatenating regexes & vectorization with
filter - [Fix/Media] Remove deprecated GPT image captioning engine
- [Style] Patch security loopholes according to CodeQL
- [Style] Replace insecure/dispreferred standard libraries (advised by Julian Berman)
os.path->pathlib.Pathhashlib,pycryptodome->cryptographymultiprocessing,futures->asyncio("nworker" param is therefore deprecated)
- Frontend
- [Feature/Search] Add "entries per page" option in search result page (valid range is 12~96, with step size of 12)
- [Feature/View] Display multiple subsongs for voiceline ACBs
- [Fix] Add Neo Asari to the cohort (due to an April Fools' event)
- [Fix] Revise accent color scheme (courtesy of @vertesan and their site)
Development Roadmap
- Backend
- [Manifest] Export as database
- [Media] 'File exists' check with conversion
- [Adv] Story context/alias parser
- [Docs] Check class docstrings and PyLint warnings
- [Docs] img/sud file structure in README
- Frontend
- [Home] 'Manifest Load/Export' buttons
- [Search] Filter search by assetbundle-/resource- only
- [View] Embedded Unity model preview (powered by mari-mari-dance)
- [View] Progress bars for downloading, MD5 checksum, and ffmpeg conversion
- [Adv] Storyline editor (the codename would be GkmasAdventurer)
- Deploy on GCP (may involve high-concurrency middleware)