No Description

鲁树人 87d2d71193 chore: add `packageManager` field 1 month ago
.husky 5e890bca77 chore: fix husky hooks 2 months ago
.run 58c96f264b Dependency upgrade + lib_um_crypto_rust (#78) 2 months ago
.vscode 0d0cc810a3 chore: added vscode extension recommendation 1 year ago
docs 58c96f264b Dependency upgrade + lib_um_crypto_rust (#78) 2 months ago
patches 58c96f264b Dependency upgrade + lib_um_crypto_rust (#78) 2 months ago
public 1d71aed801 chore: remove gitkeep placeholder from public folder 1 year ago
scripts c5bc436ab2 chore: typo 2 months ago
src 759252cec5 docs: improve faq page 1 month ago
support 1c3b43c419 chore: don't fail the build when building from source tarball (#40) 1 year ago
.drone.yml 22528481d5 ci: re-enable script to publish package 2 months ago
.editorconfig 863a4e4f89 chore: apply indentation rule for cjs/mjs as well 1 year ago
.env bb9529b877 fix: performance logging code 2 months ago
.eslintignore 3298b29dbf chore: configure eslint rules 1 year ago
.eslintrc.cjs 3298b29dbf chore: configure eslint rules 1 year ago
.gitattributes 8db5b64b38 feat: fix mmkv parser, support for ios ekey mmkv 1 year ago
.gitignore 1ae2f93e99 chore: make win64 build to its own dir 10 months ago
.npmrc 985620d188 exp: use `@unlock-music/crypto` backend for NCM decryption 2 months ago
.prettierignore 50846a3a5d chore: don't reformat lockfile 1 year ago
LICENSE e62ec084f4 initial commit 1 year ago
README.MD 9f587212bc docs: remove todo list, add link to crypto issues 1 month ago
index.html 4aff3b7a07 feat: get pwa working 1 year ago
package.json 87d2d71193 chore: add `packageManager` field 1 month ago
pnpm-lock.yaml 58c96f264b Dependency upgrade + lib_um_crypto_rust (#78) 2 months ago
tsconfig.json b78399eddb feat: import ekey from Android db (#20) 1 year ago
tsconfig.node.json 1c3b43c419 chore: don't fail the build when building from source tarball (#40) 1 year ago
tsconfig.prod.json 448cbbfd74 chore: fix types for build & test 1 year ago
vite.config.ts 58c96f264b Dependency upgrade + lib_um_crypto_rust (#78) 2 months ago

README.MD

Unlock Music 音乐解锁 (React)

Build Status

WARNING 在本站 fork 不会起到备份的作用,只会浪费服务器储存空间。如无必要请勿 fork 该仓库。

⚠️ 手机端浏览器支持有限,请使用最新版本的 Chrome 或 Firefox 官方浏览器。

支持的格式

  • QQ 音乐 QMCv1 (.qmc3 / .qmcflac 等)
  • QQ 音乐 QMCv2
    • PC 客户端 (.mflac / .mgg 等) [^qm-key-pc]
    • 安卓客户端 (.mflac0 / .mgg1 / .mggl 等) ^qm-key-android
    • iOS 客户端 (.mgalaxy 等) ^qm-key-ios
    • Mac 客户端 (.mflach 等) ^qm-key-mac
  • 网易云音乐 (.ncm)
  • 虾米音乐 (.xm)
  • 酷我音乐 (.kwm)
  • 酷狗音乐 (.kgm / .vpr)
  • 喜马拉雅 (.x2m / .x3m / .xm)
  • 咪咕音乐格式 (.mg3d)
  • 蜻蜓 FM (.qta)
  • QQ 音乐海外版JOOX Music (.ofl_en)

[^qm-key-pc]: PC 客户端仅支持 v19.43 或更低版本。

错误报告

有不支持的格式?请提交样本(加密文件)与客户端信息版本信息(如系统版本、下载渠道),或一并上传其安装包到仓库的问题追踪区

⚠️ 如果文件太大,请上传到不需要登入下载的网盘,如 mega.nzOneDrive 等。

遇到解密出错的情况,请一并携带错误信息(诊断信息)并简单描述错误的重现过程。

待实现的算法支持可追踪 crypto 标签

开发相关

从源码运行或编译生产版本,请参考文档「新手上路」。

解密库开发

⚠️ 如果只是进行前端方面的更改,你可以跳过该节。

请参考文档「面向 @unlock-music/crypto 开发」。

架构

  • 浏览器主线程: 渲染界面,处理 UI 更新
  • Web Worker: 负责计算方面的内容,如内容解密。

数据传输: 生成 blob url (URL.createObjectURL) 然后透过 postMessage 传递给线程,线程利用 fetch API 来获取文件信息。

贡献代码

欢迎贡献代码。请确保:

  • 单元测试的覆盖率不低于主分支的覆盖率;
  • 提交前请使用 Prettier 对代码进行格式化;
  • 提交前请确保 ESLint 不会报告 warning / error;

满足上述条件后发起 Pull Request,仓库管理员审阅后将合并到主分支。

相关项目

有新的项目提交?欢迎提交 issue,请带上项目名称和链接。