Skip to content

Releases: moran69/music_player_app

v2.2.33 歌单修复与增强

Choose a tag to compare

@moran69 moran69 released this 04 Sep 01:00

v2.2.33 歌单修复与增强

修复

  • QQ 音乐歌单导入失败:之前导入 QQ 歌单被 API Key 检查拦截(QQ 歌单接口实际不需要 Key),现在 QQ 歌单可以直接导入
  • 导入失败静默生成空歌单:QQ 歌单接口增加响应验证,歌单为空或 ID 错误时显示明确错误提示,不再生成删不掉的空歌单

新功能

  • 歌单持久化:导入的歌单自动保存在本地(SharedPreferences),重启 App 不再丢失
  • 多歌单管理:歌单页从“单个歌单”升级为“歌单列表”,支持导入并保存多个歌单;同平台同 ID 重复导入自动覆盖旧版本
  • 删除歌单:长按歌单卡片或点击右侧删除按钮,确认后即可删除(不会影响已收藏的歌曲)
  • 歌单卡片显示平台标签(网易云红 / QQ 绿)与歌曲数

界面变化

  • 歌单页:歌单列表 → 点击进入歌单详情页(播放全部 / 单曲播放 / 加入队列)
  • 空状态提示更新:“导入后的歌单保存在本地,长按可删除”

v2.2.32 缓存增强(采纳社区 PR)

Choose a tag to compare

@moran69 moran69 released this 31 Aug 03:19

v2.2.32 缓存增强

采纳社区贡献 @liyiming986PR #1 中的三个增强,整合到现有缓存优先播放逻辑中。

增强

  1. 封面缓存 —— 命中缓存播放时封面不再丢失(之前只缓存了歌词,缓存播放时封面可能缺失)
  2. 翻译歌词缓存 —— 网易云翻译歌词(tlyric)随索引单独持久化,离线播放时仍能合并显示原文+翻译
  3. .lrc 侧车文件 —— 音频缓存转正时同时写同名 .lrc 文件(通用歌词格式),缓存拷到第三方播放器(车机、Poweramp、foobar2000)也能显示歌词;删除缓存和 LRU 自动清理时同步删除侧车,不留残留

保留的能力

  • v2.2.30 的缓存优先播放核心逻辑不变(命中缓存零 API 调用)
  • 缓存文件损坏自动删除并回退在线播放(PR 原版没有这个,我们保留)

致谢

感谢 @liyiming986 的贡献,PR 分析详尽,端到端测试完整 🙌

v2.2.31 使用统计

Choose a tag to compare

@moran69 moran69 released this 31 Aug 02:06

v2.2.31 使用统计(累计用户 / 今日活跃 / 当前在线)

新功能

  • 使用统计:设置页「关于」卡片新增三列统计展示——累计用户、今日活跃、当前在线
  • App 打开或从后台回前台时上报匿名心跳,服务端按设备去重计算人数

技术细节

  • 服务端:FastAPI + SQLite 统计服务,nginx 反代 /music-stats/
    • 累计用户 = 历史所有设备数
    • 今日活跃 = 最近 24h 内活跃设备数
    • 当前在线 = 最近 10min 内活跃设备数
  • 客户端:UsageStatsService 仿 UpdateService 模式,匿名设备 ID(随机 hex),静默失败不影响使用

隐私

  • 心跳仅含随机设备 ID + App 版本号,不读取任何硬件标识,无 PII
  • 不含搜索/播放等行为数据
  • 全程静默运行,统计服务不可用不影响 App 任何功能

v2.2.30 缓存优先播放

Choose a tag to compare

@moran69 moran69 released this 31 Aug 01:13

v2.2.30 缓存优先播放

修复

  • 播放已缓存歌曲不再扣除 API 额度:播放时先查本地缓存,命中则直接走本地文件播放,完全不调 API(之前即使有缓存也会先调 API 解析播放地址,白白消耗额度)

优化

  • 歌词随缓存索引一同保存,缓存命中即离线还原歌词(连歌词接口都省掉)
  • 缓存文件损坏/不可播时自动删除失效缓存并回退在线播放
  • 首次播放仍然正常走 API 解析 + 后台异步缓存,不影响体验

技术细节

  • _playCurrent() 重构:API 调用前先 getCachedEntry() 检查缓存
  • getCachedEntry() 返回完整条目(filePath + lyric),命中即播本地文件 + 离线还原歌词
  • cacheAudio() 新增 lyric 参数,歌词随缓存索引一同持久化

v2.2.29

Choose a tag to compare

@moran69 moran69 released this 29 Aug 11:00

更新内容(v2.2.26 ~ v2.2.29 合并)

新功能

  • 🎵 本地音乐:扫描手机音频文件直接播放,无需 API Key;支持自定义扫描目录(可视化添加/删除/恢复默认,最多 20 个,自动记忆)
  • 🌐 网页版播放器接入酷狗歌词:https://161.118.252.183/player/

界面优化

  • 首页更清爽:本地音乐入口移至右上角胶囊按钮,区块标题精简
  • 设置页合并简化:7 组 → 5 组;「缓存位置」「API Key」改为单行入口 + 弹窗

播放与体验

  • 播放失败自动降级音质重试(版权限制的歌也能尽量播放)
  • 播放队列持久化(重启 App 恢复队列和播放模式)
  • 缓存上限 + LRU 自动清理(默认 2GB,设置页可调)
  • 默认缓存目录 Music/momo(系统音乐 App 可扫描,旧目录自动迁移)

其他

  • 最低系统要求调整为 Android 6.0(Flutter 3.44 要求)
  • 代码质量:flutter analyze 0 error / 0 warning

App 内「设置 → 检查更新」走自建服务器通道,本 Release 用于 GitHub 侧归档下载。

v2.2.25

Choose a tag to compare

@moran69 moran69 released this 29 Aug 11:00

播放队列持久化(重启恢复)+ 音质自动降级重试 + 缓存 LRU 上限自动清理(默认 2GB)+ 默认缓存路径改 Music/momo(自动迁移)+ 清理失效 kugouBaseUrl

v2.2.21 - 缓存列表 + 歌单页迷你播放器 + 编码修复

Choose a tag to compare

@moran69 moran69 released this 14 Aug 05:20

v2.2.21 更新内容

新功能

  • 缓存歌曲列表:设置 → 播放缓存 → 点击进入查看已缓存歌曲
    • 显示歌曲名、歌手、平台、文件大小
    • 支持删除单曲缓存
    • 支持清除全部缓存
  • 缓存文件名改为「歌曲名-歌手.ext」格式:方便用户在文件管理器中识别

修复

  • 歌单详情页播放后底部不显示迷你播放器:PlaylistDetailScreen 加 bottomNavigationBar + MiniPlayer
  • 歌单页面中文编码乱码:HTTP 请求改用 bodyBytes + utf8.decode,避免服务器未设 charset 时乱码

技术细节

  • 新增 _index.json 元数据索引(歌名/歌手/路径/大小),缓存查找走索引而非文件名
  • 新增 CacheListScreen 缓存列表页
  • 缓存列表页底部也有迷你播放器

MD5: af6d2dd8c048a63fbc0da0a482c24997
大小: 9.9 MB

v2.2.20 - ChKSz API 服务器中转

Choose a tag to compare

@moran69 moran69 released this 14 Aug 04:49

v2.2.20 更新内容

修复

  • 酷狗/网易云/QQ 播放失败:ChKSz API 从手机直连 https://api.chksz.com 改为走服务器 nginx 中转 http://161.118.252.183/api-chksz
  • 解决手机直连 HTTPS 域名不稳定/超时的问题(与之前 GitHub HTTPS 直连超时同因)

技术细节

  • nginx 新增 /api-chksz/ 反代 https://api.chksz.com(含 SSL、resolver、5s 超时)
  • App 端 _chkszUrlhttps://api.chksz.com 改为 http://161.118.252.183/api-chksz
  • 所有平台播放地址解析统一走服务器 HTTP 中转

MD5: 0066cb4162844bdae3ed9d35c64aaeef
大小: 9.9 MB

v2.2.19 - 修复酷狗播放

Choose a tag to compare

@moran69 moran69 released this 14 Aug 04:02

v2.2.19 更新内容

修复

  • 酷狗播放失败:ChKSz 酷狗解析接口的 id 参数要求大写 hash,但 mobilecdn 搜索返回的是小写 hash,导致解析失败。现已将 hash 转为大写后传入。

MD5: 345e97fd44e7ed644396369b1bc6019d
大小: 9.9 MB

v2.2.18 - 网易云统一 ChKSz API 解析

Choose a tag to compare

@moran69 moran69 released this 14 Aug 03:27

v2.2.18 更新内容

重大变更

  • 网易云播放改为 ChKSz API 统一解析:所有平台播放地址都通过 ChKSz API Key 解析
    • 播放地址:/api/163_music(替代 NeteaseCloudMusicApi /song/url/v1
    • 歌词:/api/163_lyric(替代 /lyric
    • 歌单详情:/api/163_playlist(替代 /playlist/detail
  • 所有平台播放都需要配置 API Key(网易云不再免配置)

修复

  • 酷狗搜索/榜单/歌单封面不显示
  • 缓存逻辑改为后台异步(不阻塞首次播放)
  • 缓存目录兼容性修复

MD5: 74286d37e81d60867663701313ea6bef
大小: 9.9 MB