Skip to content

GkmasObjectManager GUI v1.1

Choose a tag to compare

@AllenHeartcore AllenHeartcore released this 16 Mar 05:58
· 521 commits to main since this release

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
  • [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.py fetches 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