An OOP interface for interacting with object databases in the mobile game Gakuen Idolm@ster.
Designed with ❤ by Ziyuan "Heartcore" Chen.
Refactored from gkmasToolkit by Kishida Natsumi,
which in turn was adapted from HoshimiToolkit by Vibbit.
Request API & decryption algorithms borrowed from HatsuboshiToolkit by DreamGallery.
- Fetch, decrypt, deserialize, and export manifest as ProtoDB, JSON, or CSV
- Differentiate between / add (apply patch to) manifest revisions
- Download and deobfuscate assetbundles and resources in parallel
- Media conversion plugins for Texture2D, AudioClip audio, AWB audio, and USM video
import GkmasObjectManager as gom
m = gom.fetch() # fetch latest
m.export("manifest.json")
m_old = gom.load("octocacheevai")
m_diff = m - m_old
m_diff.export("manifest_diff.json")
m.download(
"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 songs
m.download("mov.*cidol.*loop.usm", video_format="MP4") # animated character cards
m.download(
"sud_vo_adv_unit.*",
path="mainstory_voicelines",
audio_format="mp3", # applies to all subsongs
unpack_subsongs=True, # unpack ZIP to output directory
)
m.download_preset("presets/namecard_kit.yml")manifest.decrypt.AESCBCDecryptor- Manifest decryptionmanifest.octodb_pb2.Database- ProtoDB deserializationmanifest.manifest.GkmasManifest- ENTRY POINTmanifest.revision.GkmasManifestRevision- Manifest revision managementmanifest.listing.GkmasObjectList- Object listing and indexingobject.resource.GkmasResource- Non-Unity objectmedia.dummy.GkmasDummyMedia- Base class for media conversion pluginsmedia.image.GkmasImage- PNG image handlingmedia.audio.GkmasAudio- MP3 audio handlingmedia.audio.GkmasAWBAudio- ACB/AWB audio conversionmedia.video.GkmasUSMVideo- USM video conversion
object.deobfuscate.GkmasAssetBundleDeobfuscatorobject.assetbundle.GkmasAssetBundle- Unity objectmedia.dummy.GkmasDummyMediamedia.image.GkmasUnityImage- Texture2D image handlingmedia.audio.GkmasUnityAudio- AudioClip audio handling
# denotes a number.
IDOL denotes (hski|ttmr|fktn|amao|kllj|kcna|ssmk|shro|hrnm|hume|hmsz|jsna).
- Image
imgadvimg_adv_speaker_(krnh|andk|sson|sgka)_###-###img_adv_still_all_cmmn_###-##img_adv_still_dear_IDOL_###-###img_adv_still_pstory_cmmn_###-##
chrimg_chr_IDOL_##-(audition|bustup|full|thumb-circle|thumb-push)img_chr_(atbm|nasr|trvo|trda|trvi)_##-thumb-circle
cosimg_cos_IDOL-(schl|trng|casl|cstm|othr)-####_bodyimg_cos_costume_head_IDOL-(schl|casl|cstm|hair)-####_head
gashaimg_gasha_banner_gasha-#####-(standard|pickup|select-pickup|free)-###-(logo|select|select-m|select-s)img_gasha_banner_gasha-#####-(pidol|support)-select-pickup-###-(logo|select-m|select-s)img_gasha_banner_gasha_ticket_ssr_(idol|support|idol_support)_#-(logo|select-m|select-s)img_gasha_banner_gasha_ssr_##-(logo|select-m|select-s)img_gasha_text_*
generalimg_general_achievement_(common|produce|char_IDOL)_###img_general_achievement_IDOL-(#-###|master|tower)_###img_general_cidol-IDOL-#-###_#-(full|thumb-(landscape|landscape-large|portrait|square|gasha))img_general_csprt-1-####_(full|thumb-(landscape|square))img_general_(comic_####|comic4_####|comic4_####-thumb)img_general_commu_(top|part|support|event)-header_###img_general_commu_chapter-(header|thumb)_##-##img_general_commu_thumb_unit_##-##-##img_general_commu_idol-top_IDOL-thumbimg_general_commu_dearness_IDOL-banner- ...
- ...
- Audio
sud- ...
- Video
mov- Major
mov_adv_dear_ed_IDOL_###mov_general_cidol-IDOL-3-###_1(|-loop)(|-gasha)mov_general_gasha_bg_idol_cidol-IDOL-3-###mov_general_gasha_bg_support_csprt-#-####mov_general_gasha_live_i_card-skin-IDOL-3-###-result
- Minor
mov_adv_unit_explanation_cmmn_001mov_gasha_monitor_(monitor|step1|tap)-(000|002|003|004_IDOL)mov_gasha_movie_tap-(000|002|003|004)mov_general_gasha_(school-logo|taptostart)-alphamov_general_media_(opening|pv|pv_jsna)_001mov_general_monitor_(01|03)
- Major
- Text
adv- Major
adv_cidol-IDOL-3-###_##adv_csprt-#-####_##adv_dear_IDOL_(###|010-01)adv_event_###_main-##adv_live_IDOL_001_(start|end)-(##-01|04-02)adv_pevent_001_IDOL_(activity_(###|(017|018)-(01-02))|school_###)adv_pevent_002_IDOL_sales_#-###-(01|02)adv_pgrowth_001_IDOL_##adv_pstep_001_cmmn_(before|after)-(lesson|jyugyo|odekake|rest|sikyu)-##-(a|b|c|d|cmn)(|-02)adv_pstep_002_cmmn_((before-lesson-##-(a|b|c|d))|((before|after)-eigyo|after-present)-##-cmn-(01|02))adv_pstory_001_IDOL_(opening|after-step-(1|2)|ending)-(normal|true)-##adv_pstory_001_IDOL_(before|after)-audition-(mid|final)-(normal|failure)-##adv_unit_01-##_##
- Minor
adv_event_highscore_introduction-01adv_presult_(001|002)_(midterm-failure|final-(failure|normal-##|true))adv_produce-refresh_(001|002)_before-audition-(final|mid)adv_produce-week-skip_002_01adv_pweek_001_cmmn_(toschool|schoolroom|corridor|classroom)-(01|02)-(a|b|c|d|ac)(|-02)adv_startup_202#_(|user-)bd-01_IDOL-01adv_tower-001adv_tutorial_first_(cmmn|hski|ttmr|fktn)-##adv_warmup
- Major
- Models
- Model
mdl- ...
- Motion
mot- ...
- Environment
env- ...
- FBX
fbx - MEF
mef - Timeline
tln - Crowd
crw - Effect
eff
- Model
- Miscellaneous
sclttnfgdtskyimage_sprite_atlas.unity3dactor-shader.unity3dui-shader.unity3dshader.unity3dm_fdc.unity3dCustom.acfmusics.txt