Repository navigation
GkmasObjectManager GUI v1.1
A Python interface with Gakuen Idolm@ster's object database ("manifest")
Running the GUI
pip install -r requirements.txt
python server.py
Then access the Flask service at http://127.0.0.1:5001/.
Using the Module on Python CLI
import GkmasObjectManager as gom
m = gom.fetch() # Fetching manifest from server
m.export("manifest.json") # Supports exporting as ProtoDB/JSON/CSV
m_old = gom.load("octocacheevai") # Loading local manifest
m_diff = m - m_old # Taking the difference
m_diff.export("manifest_diff.json")
m.download( # Downloading with media conversion
"img.*cidol.*full.*", "img.*csprt.*full.*", # (character & support cards)
image_format="JPEG", image_resize="16:9"
)
m.download("sud.*inst.*.awb", audio_format="WAV") # (instrumental tracks)
m.download("mov.*cidol.*loop.usm", video_format="MP4") # (animated character cards)
m.search('mdl.*ttmr.*') # Searching by regex (all Unity models of Tsukimura Temari)
m['mdl_chr_ttmr-cstm-0076_body'].download(path='', categorize=False) # Indexing a single object
m['img_general_cidol-kllj-3-007_1-thumb-landscape-large'].get_caption() # Generating caption with GPT 4o
# (requires setting a valid 'openai_api_key' in credentials.yml)Comparing Versions
| Tiny Build | Full Build | |
|---|---|---|
| Branch | offline-demo |
main |
| CRUD Support | CRU | R |
| # Entries | 111 Every featured song |
23,033 (as of manifest revision 202) All assetbundles and resources |
| Manifest | JSON load JSON export Differentiate Search by regex |
Online fetch & decrypt ProtoDB, JSON load ProtoDB, JSON, CSV export Differentiate Search by regex Multiprocess download |
| Object | Resource indexing | Resource download AssetBundle deobfuscate, download |
| Multimedia | PNG image MP3 audio |
USM video Texture2D, PNG image AudioClip, AWB/ACB, MP3 audio GPT image captioning |
Changelog
- [Feature] Implement plugin-based conversion for Unity image/audio, AWB/ACB audio, and USM video
- Set JPG as image conversion target with
image_format="JPEG", due to BytesIO's restrictions - Only supports extracting a single audio stream from an ACB archive, due to vgmstream's restrictions
video_format="MKV"or"Matroska"produces an error, due to compatibility issues with ffmpeg
- Set JPG as image conversion target with
- [Feature] Implement Flask-based GUI
- Home page: 12 accent color schemes, search bar with template dropdown, wallpaper "latest releases"
- Search page: card-based layout, image preview, keyword highlighting, sort by name/ID, pagination
- View page: embedded multimedia (image/audio/video), real-time captioning, blob download links
- [Docs] Get the "manifest watcher" workflow up and running
update_manifest.pyfetches the latest manifest and its difference with all previous revisions
Development Roadmap
- [Backend] Video captioning
- [Backend] Extracting multiple audio fragments from ACB
- [Backend] YAML downloading schema (e.g., "namecard kit")
- [Backend] Story script parser
- [Frontend] Deploy on cloud
- [Frontend] 'Manifest Load/Export' buttons
- [Frontend] Filter search by assetbundle/resource
- [Frontend] Embedded Unity model preview