椒盐音乐(Salt Player)配套的局域网音乐库同步模组。
在电脑与 Android 手机 / 平板之间双向同步新增文件。电脑端以 Salt Player 创意工坊模组的形式运行,在播放器内完成双向对比、先发后收;手机端直接使用 MySend 安卓版参与同一套同步流程。
SPW-Send 是 MySend 的定制分支,只提供电脑端模组。 安卓端不再单独维护,统一使用 MySend 官方 APK;两端遵循同一套协议 v2。
| 部分 | 位置 | 运行环境 |
|---|---|---|
| Salt Player 模组(PC) | plugin/ |
椒盐音乐 Windows / Linux 桌面版 |
| Android 端 | WinGua/MySend | Android 7.0 及以上 |
模组端功能已实现,构建走 GitHub Actions。
- 运行时动态定位宿主的 Compose 调用点,适配 SPW 1.19.0 / 1.19.1 及后续重新混淆的版本
- 协议以 MySend v2 为基准:docs/PROTOCOL.md
- 模组端:UDP 发现、HTTP 服务、双向目录对比、分片续传收发、SaltUI 内嵌面板
- 面板背景自动跟随宿主窗口材质(采样宿主侧栏真实颜色),点击左侧导航栏可关闭面板
- 云端构建:
plugin工作流产出.spmod,release工作流在打 tag 时发布 Release
代码推送后在 Actions 页面下载 .spmod;也可在本地执行:
cd plugin && gradle plugin- 双向:电脑有、手机无 → 电脑发送;手机有、电脑无 → 电脑接收;两端都有 → 跳过
- 只同步新增:只按相对路径判断,已存在的文件不覆盖、不校验内容
- 不处理删除:任何一端多出的文件都不会被自动清理
- 先发后收:点击同步后先推送本机新增,再拉取对端新增
- 断点续传:接收走
.mysend-part分片,完成后原子落盘 - 自动忽略:任一路径段以
.开头、以~$开头,或文件名为desktop.ini、thumbs.db、ehthumbs.db
旧版 MySend 没有 GET /v2/file,仍可继续单向往手机同步;模组检测到后会提示升级,升级到最新版即可使用双向接收。
- Android 端安装 MySend 官方 APK,为每组映射选择目标文件夹
- 在椒盐音乐中打开 / 关闭模组面板(快捷键
Ctrl+Alt+S或配置页按钮) - 模组内选择电脑上的同步文件夹,与手机端创建同名映射
- 任一端点击「对比」查看「将发送 / 将接收」,再点击「同步」;模组会先推送本机新增,再接收手机新增
- 模组:Kotlin / JVM、PF4J、SaltUI 3.0.0-beta02(随
.spmod打包)、Compose,通过 Salt Player Workshop API 加载 - Android 端:MySend(Flutter)
- 传输:UDP 广播发现 + 局域网 HTTP,明文,仅建议在可信网络内使用
完整契约见 docs/PROTOCOL.md,包含端口、握手、端点、续传规则与错误码。端口、请求头、字段与 MySend 安卓端保持一致。
本项目沿用 GNU General Public License v3.0,与上游 MySend 保持一致。
- 上游 / 安卓端:WinGua/MySend
- 插件运行时:Moriafly/spw-workshop-api
- 产品参考:LocalSend
Built by Winter with DeepSeek.