Repository navigation
Releases: junxi8686/SpotifyPlusPlus
Release list
Spotify++ 1.5
新增功能
- 布局可以实时调整:在编辑器里改布局当场生效,不用重开界面;每个元素都能单独隐藏或显示
- 歌词显示文字(可选,默认不转换):可以把中文歌词统一按简体显示。默认关闭,不设置的话不会有任何变化
- 全新的歌词排序算法:逐字歌词优先,简体优先,翻译越全越好,时长越贴合越好,语言和歌曲一致,综合打分选出最合适的一份
- 自动选择会问遍所有来源:不再只问一个就停下,后续来源返回时会重新比较,谁的分高用谁的
- 新增百度翻译选项,可以在设置里填 AppID 和密钥
- 恢复备份后,会提示哪些密钥需要重新填写 —— 密钥在手机里是加密保存的,换了手机或者重装之后解不开
修复的问题
- 修复 Spotify 9.1.90 之后悬浮窗弹出来立刻消失的问题
- 修复 Spotify 自己关掉宿主窗口时连着把悬浮窗一起关掉的问题
- 修复中文歌曲的歌词翻译被整体丢掉、一句都翻不出来的问题
- 修复歌词一直卡在“翻译中”、界面上什么都点不动的问题
- 修复翻译失败时没有任何提示、不知道发生了什么的问题
- 修复重复出现的歌词行(比如副歌反复唱的那几句)拿不到翻译的问题
- 修复 AI 翻译被打断后,已保存的结果被误判为完整、导致歌词缺行的问题
- 修复 AI 翻译重试时把已经付过费的结果丢掉、重复计费的问题
- 修复歌词位置显示成 Spotify 内部界面名称、而不是歌词的问题
- 修复已经存进缓存的这类内容仍然会被读出来显示的问题
- 修复 SpicyLyrics.org 来源一直选不上、搜不到歌词的问题
- 修复来源选择界面里,取不到歌词的来源看起来能用却点不动的问题
- 修复恢复备份会覆盖掉本机已经能用的密钥的问题
- 修复歌词渐变和字间距不够平滑的问题
- 歌词下面不再显示“歌词来源”那一行
其他
- 取消了“跨来源歌词混合”功能。它把一份歌词的时间轴和另一份的文本拼在一起,行数对不上就会错位,看起来没问题但唱着唱着就偏了
- 日文和韩文界面的部分文案补齐了,之前这些地方显示的是英文
- QQ 音乐的请求间隔放宽,减少被限流的情况
- 应用内的版本号改为 1.5
Spotify++ 1.3.1
Spotify++ 1.3.1
基于 Spicy EX(AGPL-3.0)的非官方中文增强版。
与原作者、与 Spotify 均无关联。
对比 1.3 修复的问题
QQ 音乐搜不到歌
一次取词最多十几个请求挤在 3 秒内发出,被 QQ 限流。日志里同一首歌 3 秒内 6 次全部失败(code=2001),等 5.5 秒后同样的查询就成功了。
现在重试减到 1 次、等待 2.5 秒、各个拼写之间间隔 450ms。并且区分两种情况——code 非 0 说明服务端没读查询(被限流),值得稍后再试;code=0 说明它读了但确实没有,重复同样的查询没有意义。
备份不包含应用数据
1.3 的备份只有设置和密钥,导入后曲库是空的、来源没选,AI 翻译还要重新付费跑一遍。
「从下载目录恢复」只恢复 2 个存储
同一份备份,用「导入」能恢复来源顺序和曲库,用「从下载目录恢复」却恢复不了。现在两条路径走同一个解码器。
导出文件名还是上游的 SpicyEX
改为 SpotifyPlusPlus-backup.json,目录 下载/Spotify++/。旧文件名仍会被读取。
本版新增
- 备份覆盖完整应用数据 —— 3 个数据库(曲库、翻译缓存、AI 付费记账)、9 个设置存储、自定义字体目录
- 导出 / 导入进度条,可随时取消
- 导入完成后可一键强制停止 Spotify,也可以先不停
关于 API 密钥(重要)
密钥不能通过备份恢复,导入后需要重新输入。
备份文件里虽然有密钥,但它是用本机密钥加密的,导入后无法使用 —— 换设备、刷机、甚至同一台手机重新导入都一样。请恢复后手动重新填写 AI 密钥和 SpicyLyrics 客户端密钥。
安装
- 安装 APK(覆盖安装,设置与曲库保留)
- LSPosed 中启用,作用域勾选 Spotify
- 强制停止 Spotify 再打开
授权
AGPL-3.0,与上游一致。源码即本仓库;
原作者版权声明完整保留于 NOTICE。
Spotify++ 1.3(上游 v2.0.4 三个修复)
合并上游 v2.0.4 的三个修复,其他没动。
修复
1. SpicyLyrics.org 歌词现在能投送到 HyperGlow
之前受限文档在两处被拒:序列化器直接抛异常,协调器拿到后丢弃。所以这个来源的歌词完全进不了 HyperGlow。现在改为允许投送,并把署名一起带上。
2. 署名随投送一起发送
载荷新增 responseCredit 字段:作词人优先,然后上传者、制作人,多行显示。发布指纹也把署名算进去,否则只差署名的两份会被当成没变化而跳过。
3. 分组日文歌词不再消失
GroupSpan.getSize 以前只返回宽度,不写字体 metrics。整行是一个分组时,没有普通文本段提供行高,行高塌陷,整行就渲染成空白。现在会填入 metrics。
测试
已验证:
- 编译通过,单元测试 1913 项 0 失败
- 装机运行正常,模块加载成功,没有崩溃
- 自动搜索正常(6 个来源并发,实测选中 QQ 音乐,逐字、带翻译、简体)
- 日文歌词显示正常,没有出现整行空白的情况
无法测试:
- 第 1、2 条是 HyperGlow 投送,只有小米手机能测,我这边测不了
安装
- 覆盖安装(设置和曲库都保留)
- LSPosed 作用域勾选 Spotify
- 强制停止 Spotify 后重新打开(装 APK 不会重启进程,不重启跑的还是旧代码)
无 root 用 LSPatch。
Spotify++ 1.2.1
Spotify++ 1.2.1
基于 Spicy EX(AGPL-3.0)的非官方中文增强版。
与原作者、与 Spotify 均无关联。
本次改动
歌词来源列表
- 修复打开列表时检查 0 个来源:检查跑在行数据加载之前,6 个来源一个都没检查到
- 每首歌只自动检查一次,换歌才重新检查;手动点某一行仍然强制检查
- 不再刷屏:原来每个来源检查完都弹一次提示,打开一次弹 6 条,现在成功不提示、失败才提示
SpicyLyrics.org 不参与自动搜索
- 之前只要密钥被拒过一次,这个来源就会被永久排除在自动和顺序搜索之外,只能手动点一次才能解除
- 现在自动搜索会正常尝试它,缓存歌词的显示限制保持不变
链接
- 设置里「打开 GitHub」打开的是
github.com首页,不是你的仓库 - 诊断里的报告链接和隐私政策链接同样缺仓库名
- 三处都改为指向本项目
汉化
- 歌词署名原来任何语言下都是英文,现在跟随界面语言:
歌词来源:/上传者:/制作:
设置
- 移除「报告问题」——草稿是发往上游的,你这边收不到
备份
- 从 2 个存储扩展到 6 个:新增来源顺序与每首歌的选择、整个曲库、SpicyLyrics.org 的密钥版本与访问状态
- 此前只备份设置和密钥,导入后曲库是空的、来源没选
- 格式兼容,旧备份仍可导入
安装
- 安装 APK
- LSPosed 中启用,作用域勾选 Spotify
- 强制停止 Spotify 再打开
注意
- 导入备份是覆盖写入,建议先导出一次留底
- 密钥在备份文件里是加密的,换设备后需要重新输入
授权
AGPL-3.0,与上游一致。源码即本仓库;
原作者版权声明完整保留于 NOTICE。
Spotify++ 1.2(合并上游 2.0.0)
Spotify++ 1.2
基于 Spicy EX(AGPL-3.0)的非官方中文增强版。
与原作者、与 Spotify 均无关联。
合并上游 2.0.0 的新功能:Android Auto 歌词、SpicyLyrics.org 来源、画中画歌词增强、播放状态时钟。
本次改动
选源恢复为质量优先
- 上游 2.0.0 改成了「先定主来源,只在同一来源内部比时间轴」,导致更好的备用来源永远换不上来——表现就是中文歌一直用 Spotify 的繁体逐行
- 已恢复为:时间轴级别 > 完整性 > 匹配身份 > 提供者,同级别简体优先
- 逐字 > 逐词 > 逐行 > 无时间轴,时间轴级别优先于来源身份
取词修复
- Spotify 9.1.88 上曲目获取失败:
NoSuchMethodException单次会话出现 524 次,导致自动搜索整体失效。已适配新版内部结构 - 自动搜索真正开始运行:原生歌词一旦先到达就会短路取词触发点,现已修复
- 多来源并发请求:原来逐个来源顺序请求,等待时间等于所有来源之和;现在同时发出,最快先显示、评分更高才替换
- 修复「未知的歌词来源」:新增来源在映射表里缺失,导致误报
移除
- Apple Music 来源
界面
- 补齐中文界面,含歌词署名与失败提示
安装
- 安装 APK
- LSPosed 中启用,作用域勾选 Spotify(需要 Android Auto 歌词再勾 Android Auto)
- 强制停止 Spotify 再打开
注意
- 本版使用自己的签名与包名(
com.spotifyplusplus),无法覆盖安装上游的com.eza.spicyex - 本版对 Spotify 9.1.88 做了适配,旧版 Spotify 未测试
授权
AGPL-3.0,与上游一致。源码即本仓库;
原作者版权声明完整保留于 NOTICE。
Spotify++ 1.1
Spotify++ 1.1
基于 Spicy EX(AGPL-3.0)的非官方中文增强版。
与原作者、与 Spotify 均无关联。
本次改动
默认值
- 界面语言默认简体中文
- QQ 音乐与网易云音乐默认启用(此前是 opt-in,全新安装从不使用它们)
选源更准
- 同步级别优先:逐词 > 逐行 > 无时间轴
- 歌词长度判据单向化:只有歌词超出歌曲长度才判为不同版本;早结束是正常尾奏,不再误伤
- 修复简繁测量:此前比较的是编码后的存储记录而非歌词正文,导致"简体优先"从未生效
- 证据先于枚举顺序:能力项、可信度、时长差排在来源枚举之前
取词修复
- 网易云:逐行歌词改从 EAPI 响应读取(原来回落到已失效的旧接口)
- Spotify 独立取词:歌词接口改为按注解定位,不再依赖会随版本变化的混淆方法名
界面
- 去掉 AI 参与搜索
- 补齐 10 处未翻译的失败原因
- 超时提示汉化
移除的两个开关
- 「忽略 Spotify 自带歌词」—— 它清空的是 Spotify 自己的数据,既删不掉卡片,又破坏模块自身捕获、还会污染 Spotify 的歌词缓存
- 「移除歌词卡片」—— 技术上
removeView可行,但无法可靠认出哪个区块是歌词(Compose 语义树只能在真实辅助连接下读取),按尺寸猜测会删错区块。原因完整写在SpotifyLyricsCardHider的注释里
安装
- 安装 APK
- LSPosed 中启用,作用域勾选 Spotify
- 强制停止 Spotify 再打开
注意
- 本版使用自己的签名与包名(
com.spotifyplusplus),无法覆盖安装上游的com.eza.spicyex - 设置保存在 Spotify 自己的目录里,卸载模块不会丢失
授权
AGPL-3.0,与上游一致。源码即本仓库;
改动清单见 MODIFICATIONS.md,
原作者版权声明完整保留于 NOTICE。
Spotify++ 1.0(简体中文增强版)
Spotify++ 1.0(简体中文增强版)
基于 Spicy EX(AGPL-3.0)的非官方修改版,
主要面向中文用户。与原作者、与 Spotify 均无关联。
相对上游做了什么
完整简体中文
- 新增
values-zh-rCN,覆盖全部 751 条字符串 - 修复 9 条「Java 引用但资源未声明」导致中文界面回退英文的问题
- 修复某些设备上语言列表只剩当前语言、切过去就切不回来
按名称搜索歌词(上游只能自动匹配,标题写法不同就搜不到)
- 选平台 → 输入歌名 → 看它返回的全部结果(歌名 + 作者)→ 自己点选
- 跳过自动匹配与 AI 判断,按 ID 直接取词
搜索与选源
- 首次搜索简体写法优先
- 标题分隔符归一化(
·/–/—),修复「一个字之差当成两首歌」 - 简繁折叠:
從奇蹟中誕生与从奇迹中诞生视为同一首 - 自带翻译/转写的来源优先于源枚举顺序
- 网易云、QQ 音乐空结果自动重试
数据备份
- 导出 / 导入设置与数据,使用安卓原生文件选择器
修复
- 来源开关:补上缺失的点击处理(此前完全点不动)
- 来源开关:保存时不再把未渲染的来源强制写成关闭
- 「忽略 Spotify 自带歌词」不再锁死 Spotify 的来源开关
- 来源面板「检查中」卡死(看门狗被 serial 提前作废)
- 备份导入的版本校验、SAF 请求码超 16 位
安装
- 安装 APK
- LSPosed 中启用本模块,作用域勾选 Spotify
- 强制停止 Spotify,再打开
⚠️ 注意
- 本版使用自己的签名与包名(
com.spotifyplusplus),无法覆盖安装上游的com.eza.spicyex。切换时请先卸载旧版 - 设置保存在 Spotify 自己的目录里,卸载模块不会丢失
- 若 Spotify 闪退,请检查「设置 → 行为 → 忽略 Spotify 自带歌词」(该开关默认关闭)
授权
AGPL-3.0,与上游一致。源码即本仓库;
修改内容见 MODIFICATIONS.md,
原作者的版权声明完整保留于 NOTICE。