Skip to content

Releases: junxi8686/SpotifyPlusPlus

Spotify++ 1.5

Choose a tag to compare

@junxi8686 junxi8686 released this 12 Oct 23:13

新增功能

  • 布局可以实时调整:在编辑器里改布局当场生效,不用重开界面;每个元素都能单独隐藏或显示
  • 歌词显示文字(可选,默认不转换):可以把中文歌词统一按简体显示。默认关闭,不设置的话不会有任何变化
  • 全新的歌词排序算法:逐字歌词优先,简体优先,翻译越全越好,时长越贴合越好,语言和歌曲一致,综合打分选出最合适的一份
  • 自动选择会问遍所有来源:不再只问一个就停下,后续来源返回时会重新比较,谁的分高用谁的
  • 新增百度翻译选项,可以在设置里填 AppID 和密钥
  • 恢复备份后,会提示哪些密钥需要重新填写 —— 密钥在手机里是加密保存的,换了手机或者重装之后解不开

修复的问题

  • 修复 Spotify 9.1.90 之后悬浮窗弹出来立刻消失的问题
  • 修复 Spotify 自己关掉宿主窗口时连着把悬浮窗一起关掉的问题
  • 修复中文歌曲的歌词翻译被整体丢掉、一句都翻不出来的问题
  • 修复歌词一直卡在“翻译中”、界面上什么都点不动的问题
  • 修复翻译失败时没有任何提示、不知道发生了什么的问题
  • 修复重复出现的歌词行(比如副歌反复唱的那几句)拿不到翻译的问题
  • 修复 AI 翻译被打断后,已保存的结果被误判为完整、导致歌词缺行的问题
  • 修复 AI 翻译重试时把已经付过费的结果丢掉、重复计费的问题
  • 修复歌词位置显示成 Spotify 内部界面名称、而不是歌词的问题
  • 修复已经存进缓存的这类内容仍然会被读出来显示的问题
  • 修复 SpicyLyrics.org 来源一直选不上、搜不到歌词的问题
  • 修复来源选择界面里,取不到歌词的来源看起来能用却点不动的问题
  • 修复恢复备份会覆盖掉本机已经能用的密钥的问题
  • 修复歌词渐变和字间距不够平滑的问题
  • 歌词下面不再显示“歌词来源”那一行

其他

  • 取消了“跨来源歌词混合”功能。它把一份歌词的时间轴和另一份的文本拼在一起,行数对不上就会错位,看起来没问题但唱着唱着就偏了
  • 日文和韩文界面的部分文案补齐了,之前这些地方显示的是英文
  • QQ 音乐的请求间隔放宽,减少被限流的情况
  • 应用内的版本号改为 1.5

Spotify++ 1.3.1

Choose a tag to compare

@junxi8686 junxi8686 released this 06 Oct 12:55

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 客户端密钥。

安装

  1. 安装 APK(覆盖安装,设置与曲库保留)
  2. LSPosed 中启用,作用域勾选 Spotify
  3. 强制停止 Spotify 再打开

授权

AGPL-3.0,与上游一致。源码即本仓库;
原作者版权声明完整保留于 NOTICE。

Spotify++ 1.3(上游 v2.0.4 三个修复)

Choose a tag to compare

@junxi8686 junxi8686 released this 06 Oct 06:36

合并上游 v2.0.4 的三个修复,其他没动。

修复

1. SpicyLyrics.org 歌词现在能投送到 HyperGlow

之前受限文档在两处被拒:序列化器直接抛异常,协调器拿到后丢弃。所以这个来源的歌词完全进不了 HyperGlow。现在改为允许投送,并把署名一起带上。

2. 署名随投送一起发送

载荷新增 responseCredit 字段:作词人优先,然后上传者、制作人,多行显示。发布指纹也把署名算进去,否则只差署名的两份会被当成没变化而跳过。

3. 分组日文歌词不再消失

GroupSpan.getSize 以前只返回宽度,不写字体 metrics。整行是一个分组时,没有普通文本段提供行高,行高塌陷,整行就渲染成空白。现在会填入 metrics。

测试

已验证:

  • 编译通过,单元测试 1913 项 0 失败
  • 装机运行正常,模块加载成功,没有崩溃
  • 自动搜索正常(6 个来源并发,实测选中 QQ 音乐,逐字、带翻译、简体)
  • 日文歌词显示正常,没有出现整行空白的情况

无法测试:

  • 第 1、2 条是 HyperGlow 投送,只有小米手机能测,我这边测不了

安装

  1. 覆盖安装(设置和曲库都保留)
  2. LSPosed 作用域勾选 Spotify
  3. 强制停止 Spotify 后重新打开(装 APK 不会重启进程,不重启跑的还是旧代码)

无 root 用 LSPatch。

Spotify++ 1.2.1

Choose a tag to compare

@junxi8686 junxi8686 released this 05 Oct 14:03

Spotify++ 1.2.1

基于 Spicy EX(AGPL-3.0)的非官方中文增强版。
与原作者、与 Spotify 均无关联。

本次改动

歌词来源列表

  • 修复打开列表时检查 0 个来源:检查跑在行数据加载之前,6 个来源一个都没检查到
  • 每首歌只自动检查一次,换歌才重新检查;手动点某一行仍然强制检查
  • 不再刷屏:原来每个来源检查完都弹一次提示,打开一次弹 6 条,现在成功不提示、失败才提示

SpicyLyrics.org 不参与自动搜索

  • 之前只要密钥被拒过一次,这个来源就会被永久排除在自动和顺序搜索之外,只能手动点一次才能解除
  • 现在自动搜索会正常尝试它,缓存歌词的显示限制保持不变

链接

  • 设置里「打开 GitHub」打开的是 github.com 首页,不是你的仓库
  • 诊断里的报告链接和隐私政策链接同样缺仓库名
  • 三处都改为指向本项目

汉化

  • 歌词署名原来任何语言下都是英文,现在跟随界面语言:歌词来源: / 上传者: / 制作:

设置

  • 移除「报告问题」——草稿是发往上游的,你这边收不到

备份

  • 从 2 个存储扩展到 6 个:新增来源顺序与每首歌的选择、整个曲库、SpicyLyrics.org 的密钥版本与访问状态
  • 此前只备份设置和密钥,导入后曲库是空的、来源没选
  • 格式兼容,旧备份仍可导入

安装

  1. 安装 APK
  2. LSPosed 中启用,作用域勾选 Spotify
  3. 强制停止 Spotify 再打开

注意

  • 导入备份是覆盖写入,建议先导出一次留底
  • 密钥在备份文件里是加密的,换设备后需要重新输入

授权

AGPL-3.0,与上游一致。源码即本仓库;
原作者版权声明完整保留于 NOTICE。

Spotify++ 1.2(合并上游 2.0.0)

Choose a tag to compare

@junxi8686 junxi8686 released this 05 Oct 13:34

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 来源

界面

  • 补齐中文界面,含歌词署名与失败提示

安装

  1. 安装 APK
  2. LSPosed 中启用,作用域勾选 Spotify(需要 Android Auto 歌词再勾 Android Auto)
  3. 强制停止 Spotify 再打开

注意

  • 本版使用自己的签名与包名(com.spotifyplusplus),无法覆盖安装上游的 com.eza.spicyex
  • 本版对 Spotify 9.1.88 做了适配,旧版 Spotify 未测试

授权

AGPL-3.0,与上游一致。源码即本仓库;
原作者版权声明完整保留于 NOTICE。

Spotify++ 1.1

Choose a tag to compare

@junxi8686 junxi8686 released this 05 Oct 05:39

Spotify++ 1.1

基于 Spicy EX(AGPL-3.0)的非官方中文增强版。
与原作者、与 Spotify 均无关联。

本次改动

默认值

  • 界面语言默认简体中文
  • QQ 音乐与网易云音乐默认启用(此前是 opt-in,全新安装从不使用它们)

选源更准

  • 同步级别优先:逐词 > 逐行 > 无时间轴
  • 歌词长度判据单向化:只有歌词超出歌曲长度才判为不同版本;早结束是正常尾奏,不再误伤
  • 修复简繁测量:此前比较的是编码后的存储记录而非歌词正文,导致"简体优先"从未生效
  • 证据先于枚举顺序:能力项、可信度、时长差排在来源枚举之前

取词修复

  • 网易云:逐行歌词改从 EAPI 响应读取(原来回落到已失效的旧接口)
  • Spotify 独立取词:歌词接口改为按注解定位,不再依赖会随版本变化的混淆方法名

界面

  • 去掉 AI 参与搜索
  • 补齐 10 处未翻译的失败原因
  • 超时提示汉化

移除的两个开关

  • 「忽略 Spotify 自带歌词」—— 它清空的是 Spotify 自己的数据,既删不掉卡片,又破坏模块自身捕获、还会污染 Spotify 的歌词缓存
  • 「移除歌词卡片」—— 技术上 removeView 可行,但无法可靠认出哪个区块是歌词(Compose 语义树只能在真实辅助连接下读取),按尺寸猜测会删错区块。原因完整写在 SpotifyLyricsCardHider 的注释里

安装

  1. 安装 APK
  2. LSPosed 中启用,作用域勾选 Spotify
  3. 强制停止 Spotify 再打开

注意

  • 本版使用自己的签名与包名(com.spotifyplusplus),无法覆盖安装上游的 com.eza.spicyex
  • 设置保存在 Spotify 自己的目录里,卸载模块不会丢失

授权

AGPL-3.0,与上游一致。源码即本仓库;
改动清单见 MODIFICATIONS.md,
原作者版权声明完整保留于 NOTICE。

Spotify++ 1.0(简体中文增强版)

Choose a tag to compare

@junxi8686 junxi8686 released this 04 Oct 19:16

Spotify++ 1.0(简体中文增强版)

基于 Spicy EX(AGPL-3.0)的非官方修改版,
主要面向中文用户。与原作者、与 Spotify 均无关联。

相对上游做了什么

完整简体中文

  • 新增 values-zh-rCN,覆盖全部 751 条字符串
  • 修复 9 条「Java 引用但资源未声明」导致中文界面回退英文的问题
  • 修复某些设备上语言列表只剩当前语言、切过去就切不回来

按名称搜索歌词(上游只能自动匹配,标题写法不同就搜不到)

  • 选平台 → 输入歌名 → 看它返回的全部结果(歌名 + 作者)→ 自己点选
  • 跳过自动匹配与 AI 判断,按 ID 直接取词

搜索与选源

  • 首次搜索简体写法优先
  • 标题分隔符归一化(· / – / —),修复「一个字之差当成两首歌」
  • 简繁折叠:從奇蹟中誕生 与 从奇迹中诞生 视为同一首
  • 自带翻译/转写的来源优先于源枚举顺序
  • 网易云、QQ 音乐空结果自动重试

数据备份

  • 导出 / 导入设置与数据,使用安卓原生文件选择器

修复

  • 来源开关:补上缺失的点击处理(此前完全点不动)
  • 来源开关:保存时不再把未渲染的来源强制写成关闭
  • 「忽略 Spotify 自带歌词」不再锁死 Spotify 的来源开关
  • 来源面板「检查中」卡死(看门狗被 serial 提前作废)
  • 备份导入的版本校验、SAF 请求码超 16 位

安装

  1. 安装 APK
  2. LSPosed 中启用本模块,作用域勾选 Spotify
  3. 强制停止 Spotify,再打开

⚠️ 注意

  • 本版使用自己的签名与包名(com.spotifyplusplus),无法覆盖安装上游的 com.eza.spicyex。切换时请先卸载旧版
  • 设置保存在 Spotify 自己的目录里,卸载模块不会丢失
  • 若 Spotify 闪退,请检查「设置 → 行为 → 忽略 Spotify 自带歌词」(该开关默认关闭)

授权

AGPL-3.0,与上游一致。源码即本仓库;
修改内容见 MODIFICATIONS.md,
原作者的版权声明完整保留于 NOTICE。