A fast, multi-threaded C++ tool for unlocking NCM audio files with Python helpers for complete music processing.
- High-Performance C++ Core: Multi-threaded processing with optimized decryption
- Complete Python Toolkit: All-in-one processing with colorful terminal output
- Cross-Platform: Builds and runs on Linux and other systems with C++20 compiler
- Colorful Logging: Consistent color scheme across all tools (blue paths, colored status)
- Smart Extension Handling: Proper filename handling for files with dots in names
- Cover Art Support: Automatic cover image embedding into converted music files
- Batch Processing: Process entire directories or custom file lists
# Find and convert all .ncm files in a directory
python find_ncm.py /path/to/music
# Complete processing: convert + embed covers + cleanup
python ncmpp.py /path/to/musicHigh-performance NCM file converter with multi-threading support.
find_ncm.py- Scan directories and generate file listsncmpp.py- All-in-one processing pipelineembed_cover.py- Embed cover images into music filescolor_log.py- Shared colorful logging utility
- OpenSSL: Cryptographic operations
- RapidJSON: Metadata parsing
- CMake: Build system
- mutagen: Music file metadata handling
- Standard library only - no external dependencies for basic operation
-
Clone the repository:
git clone https://github.com/Majjcom/ncmpp.git cd ncmpp -
Create a build directory:
mkdir build cd build -
Configure and build:
cmake .. cmake --build .The executable
ncmppwill be created in thebuilddirectory.
# Complete processing pipeline
python ncmpp.py /path/to/music/directory# Step 1: Find .ncm files
python find_ncm.py /path/to/music
# Step 2: Convert .ncm files using C++ tool
./build/ncmpp -i ncm_input.txt -o ncm_output.txt -s
# Step 3: Embed cover images
python embed_cover.py ncm_output.txtusage: ./ncmpp [options] ...
options:
-h, --help Print this message.
-t, --threads <arg> Max count of unlock threads. (unsigned int [=...])
-s, --showtime Shows how long it took to unlock everything.
-i, --input <arg> Path to a text file containing a list of input .ncm files. (string [=])
-o, --output <arg> Path to a text file containing a list of output files or a directory for fallback mode. (string [=unlocked])
# Process entire music directory
python ncmpp.py ~/Music
# Process with custom thread count
python ncmpp.py ~/Music # Uses C++ tool internally with optimal threads1. Scan and unlock current directory:
./ncmpp2. Use 4 threads with timing:
./ncmpp -t 4 -s3. Process file lists:
# Custom input/output lists
./ncmpp -i input.txt -o output.txtncmpp/
├── build/ # Build directory (created during compilation)
├── ncmpp.py # All-in-one Python processing tool
├── find_ncm.py # Directory scanner
├── embed_cover.py # Cover art embedder
├── color_log.py # Shared colorful logging
├── ncmlib/ # C++ library and core tool
└── README.md
This project is licensed under the MIT License.