How user-wurun/unlock-music works
Unlock Music is a browser app for decrypting music files from multiple services, then previewing and managing the unlocked results. The documented workflow includes batch and drag-and-drop input, decryption, and metadata/cover editing. The format dispatcher and storage adapters are visible in sampled source; Home and several UI components are present in the tree but were not sampled, so uncertain wiring to those features is not shown.
Main entry points: index.ts Format dispatcher · Home.vue Home workflow · StorageFactory.ts Storage selection · qmc.ts QQ / Moo formats
Components 20
Browser interface
- App shell
src/App.vue - Home workflow
src/view/Home.vue - File selection
src/component/FileSelector.vue - Configuration dialog
src/component/ConfigDialog.vue
Decryption
- Format dispatcher
src/decrypt/index.ts - QQ / Moo formats
src/decrypt/qmc.ts - NetEase formats
src/decrypt/ncm.ts - Kugou formats
src/decrypt/kgm.ts - Other format decoders
src/decrypt - Worker support
src/utils/worker.ts - Kugou WASM
src/KgmWasm/KgmWasm.cpp - QQ Music WASM
src/QmcWasm/QmcWasm.cpp
Result management
- Result preview
src/component/PreviewTable.vue - Metadata editor
src/component/EditDialog.vue
Configuration storage
- Storage facade
src/utils/storage.ts - Storage selection
src/utils/storage/StorageFactory.ts - Browser storage
src/utils/storage/BrowserNativeStorage.ts - Extension storage
src/utils/storage/ChromeExtensionStorage.ts - Memory storage
src/utils/storage/InMemoryStorage.ts
Other components
- User
Connections 19
- User → Home workflow: uses app
- App shell → Home workflow: renders
- Home workflow → File selection: selects files
- Home workflow → Format dispatcher: decrypts files
- Home workflow → Result preview: shows results
- Home workflow → Metadata editor: edits metadata
- Home workflow → Configuration dialog: configures app
- Format dispatcher → QQ / Moo formats: dispatches formats
- Format dispatcher → NetEase formats: dispatches formats
- Format dispatcher → Kugou formats: dispatches formats
- Format dispatcher → Other format decoders: dispatches formats
- Format dispatcher → Storage facade: loads config
- Format dispatcher → Memory storage: seeds worker config
- QQ / Moo formats → QQ Music WASM: uses decoder
- Kugou formats → Kugou WASM: uses decoder
- Storage facade → Storage selection: creates storage
- Storage selection → Browser storage: selects adapter
- Storage selection → Extension storage: selects adapter
- Storage selection → Memory storage: selects fallback