mirror of
https://git.unlock-music.dev/um/um-react.git
synced 2024-11-23 14:52:16 +00:00
对 Unlock Music 使用 React 重写(um-react)
鲁树人
58c96f264b
Co-authored-by: 鲁树人 <lu.shuren@um-react.app> Co-committed-by: 鲁树人 <lu.shuren@um-react.app> |
||
---|---|---|
.husky | ||
.run | ||
.vscode | ||
docs | ||
patches | ||
public | ||
scripts | ||
src | ||
support | ||
.drone.yml | ||
.editorconfig | ||
.env | ||
.eslintignore | ||
.eslintrc.cjs | ||
.gitattributes | ||
.gitignore | ||
.npmrc | ||
.prettierignore | ||
index.html | ||
LICENSE | ||
package.json | ||
pnpm-lock.yaml | ||
README.MD | ||
tsconfig.json | ||
tsconfig.node.json | ||
tsconfig.prod.json | ||
vite.config.ts |
Unlock Music 音乐解锁 (React)
- 在浏览器中解锁加密的音乐文件。 Unlock encrypted music file in the browser.
- Unlock Music 项目是以学习和技术研究的初衷创建的,修改、再分发时请遵循授权协议。
- Unlock Music 的 CLI 版本可以在 unlock-music/cli 找到,大批量转换建议使用 CLI 版本。
- 我们新建了 Telegram 群组
@unlock_music_chat
,欢迎加入! - CI 自动构建已经部署,可以在 Packages 下载。
- 常见问题参考
⚠️ 手机端浏览器支持有限,请使用最新版本的 Chrome 或 Firefox 官方浏览器。
支持的格式
- QQ 音乐 QMCv1 (
.qmc3
/.qmcflac
等) - QQ 音乐 QMCv2
- 网易云音乐 (
.ncm
) - 虾米音乐 (
.xm
) - 酷我音乐 (
.kwm
) - 酷狗音乐 (
.kgm
/.vpr
) - 喜马拉雅 Android 端 (
.x2m
/.x3m
) - 咪咕音乐格式 (
.mg3d
) - 蜻蜓 FM (
.qta
) QQ 音乐海外版 (.ofl_en
)
不支持的格式?请提交样本(加密文件)与客户端信息(或一并上传其安装包)到仓库的问题追踪区 。如果文件太大,请上传到不需要登入下载的网盘,如 mega.nz、OneDrive 等。
如果遇到解密出错的情况,请一并携带错误信息并简单描述错误的重现过程。
开发相关
从源码运行或编译生产版本,请参考文档「新手上路」。
解密库开发
⚠️ 如果只是进行前端方面的更改,你可以跳过该节。
请参考文档「面向 @unlock-music/crypto
开发」。
架构
- 浏览器主线程: 渲染界面,处理 UI 更新
- Web Worker: 负责计算方面的内容,如内容解密。
数据传输: 生成 blob url (URL.createObjectURL
) 然后透过 postMessage
传递给线程,线程利用 fetch
API 来获取文件信息。
贡献代码
欢迎贡献代码。请确保:
- 单元测试的覆盖率不低于主分支的覆盖率;
- 提交前请使用 Prettier 对代码进行格式化;
- 提交前请确保 ESLint 不会报告 warning / error;
满足上述条件后发起 Pull Request,仓库管理员审阅后将合并到主分支。
相关项目
- Unlock Music (Web) - 原始项目
- Unlock Music (Cli) - 命令行批量处理版
- um-react (Electron 前端) - 使用 Electron 框架封装的本地可执行文件。
- um-react-wry - 使用 WRY 框架封装的 Win64 单文件 (
需要安装 Edge WebView2 运行时,Win10+ 操作系统自带)
- 本地下载 | 寻找文件名为
um-react-win64-
开头的附件
- 本地下载 | 寻找文件名为
有新的项目提交?欢迎提交 issue,请带上项目名称和链接。
TODO
- 待定
- 各类算法 追踪
crypto
标签
- 各类算法 追踪
- 完成
- #7
简易元数据编辑器放弃 - #8
添加单元测试框架加上了,以后慢慢添加更多测试即可。 - #2 解密内容探测 (解密过程)
- #6 文件拖放 (利用
react-dropzone
?)
- #7