This repository contains various tools for pulling, extracting, and tagging music game files from Cytus II.
Prerequisites:
- A copy of this repository
- Latest version of Python
- Android device with Cytus II installed
- DLC music will not be processed if they are not downloaded on the device (see DLC music table)
- ADB installed on path and USB debugging enabled
- FFmpeg installed on path
- uTinyRipper for extracting Unity assets
- Follow the above prerequisites instructions
- Open a command prompt in the repository folder
- Run
pip3 install -r requirements.txt
Pulling files from device:
- Unlock your android device and plug it into your computer (accept any USB debugging prompts)
- Run
python pull-files.pyto extract game files into thedatadirectory
Extracting Unity assets:
- Open the
assetsfolder inside thedatafolder - Open uTinyRipper and drag over
binfolder inside theassetsfolder onto the program - Export the files to the base repo directory. This will create a folder named
globalgamemanagers - Click reset and open the
AssetBundlesfolder inside theassetsfolder - Press
Ctrl+Aand drag all the files inside the folder onto uTinyRipper and export them to the base repo directory. - This will create a folder that ends with
.ab. Open that folder, and move theAssetsfolder into theglobalgamemanagersfolder
Tagging and encoding files:
- Open
config.ymland change what you want (sensible defaults have been set for you) - Run
python main.py -f {format}where{format}is the file extension you want (ex:python main.py -f mp3)- Note: for ALAC, run
python main.py -f m4a -c alac - A different config file for track-based tagging has been provided with
config-track.yml. Runpython main.py -f {format} config-track.ymlto use it.
- Note: for ALAC, run
The following songs need to be downloaded if you want them to be processed.
Note: tapping "download all" on the download screen in-game will download all the character's songs you own.
| Character | Songs |
|---|---|
| NEKO#ΦωΦ | PrayStation (HiTECH NINJA Remix) 100sec Cat Dreams REmorse Stranger 小悪魔×3の大脱走!? Online Sunday Night Blues Blow My Mind (tpz Overheat Remix) Maboroshi TOKONOMA Spacewalk UnNOT!CED 下水鳴動して鼠一匹 Capybara Kids' Paradise Walnuts Walkers Hydra Liberation Ramen is God Re:VeLΔTiØN ~光道ト破壊ノ双白翼~ Rebirth Caliburne ~Story of the Legendary sword~ DON’T STOP ROCKIN’ Glorious Crown Oshama Scramble! 超常マイマイン BlythE glory day OBLIVION Play The Future We're All Gonna Die Ask to Wind Live Mix End of the Moonlight Hello Pinky Nightmare U.A.D |
| ROBO_Head | Sickest City Jazzy Glitch Machine dimensionalize nervous breakdown (rev.flat) cold NRG_Tech Break Through The Barrier Dead Master Accelerator Armaros Break the Core Milky Way Galaxy (SIHanatsuka Remix) ViRUS Awakening Hagiasmos Fade Into The Darkness SHIRO Tunnef’s Nightmare |
| PAFF | So In Love Cityscape Favorites Make Me Alive Light up my love!! Super attractor I Wish You Were Mine PIXIE DUST |
| Ivy | Cristalisia Occidens Red Five Homebound Train & Moving Thoughts iL CODE NAME : SIGMA New Challenger Approaching What's Your PR.Ice? VIS::CRACKED Wicked Ceremony DigiGroove Heat Ring Leaving All Behind Symmetry Time to Fight |
| Crystal PuNK | Darling Staring... Crimson Fate Familiar Craze Malstream V.R.W (feat. shully) velkinta feat. Cikado & A-Tse |
| Argument | Description |
|---|---|
-h, --help |
Show help message |
-s, --serial |
ADB device serial if more than once device is connected (use adb devices to show devices) |
-o, --output-dir |
Directory to output extracted files to (default: data) |
--skip-cleanup |
Don't remove obb and apk files after running |
--pull-only |
Pull apk, obb, and asset bundles from device only; skip extraction |
--extract-only |
Extract data from apk, obb, and asset bundles only; skip pulling (requires --input-dir) |
-i, --input-dir |
Input directory with apk, obb, and asset bundles if using --extract-only |
Examples:
python pull-files.py -s ABCDEFG -o output- Extract files from device with serial
ABCDEFGinto directoryoutput
- Extract files from device with serial
python pull-files.py --pull-only -o pulled- Pull files from device into directory
pulled(skip extraction)
- Pull files from device into directory
python pull-files.py --extract-only -i pulled -o extracted- Extract files from the directory
pulledinto directoryextracted
- Extract files from the directory
| Argument | Description |
|---|---|
-h, --help |
Show help message |
-i, --input-dir |
Input directory to use (default: globalgamemanagers) |
-o, --output-dir |
Output directory to use (default: music) |
-f, --format |
File extension to use, such as mp3, flac, m4a, etc. (default: mp3) |
-c, -c:a, --codec |
Codec for files, such as alac, mp3, opus, etc. Will be inferred from file extension if not set |
-b, -b:a, --bitrate |
Override bitrate for files, such as 320k |
config |
Config file to use (default: config.yml) |
Examples:
python main.py -o music-mp3 -f mp3 -b:a 320k- Encode music into the
music-mp3folder withmp3file extension and320kbpsbitrate
- Encode music into the
python main.py -o music-flac -f flac config-track.yml- Encode music into the
music-flacfolder withflacfile extension, using theconfig-track.ymlconfig file
- Encode music into the
python main.py -o music-alac -f m4a -c:a alac- Encode music into the
music-alacfolder withm4afile extension withalaccodec.
- Encode music into the