Releases: moran69/music_player_app
Releases · moran69/music_player_app
Release list
v2.2.33 歌单修复与增强
v2.2.33 歌单修复与增强
修复
- QQ 音乐歌单导入失败:之前导入 QQ 歌单被 API Key 检查拦截(QQ 歌单接口实际不需要 Key),现在 QQ 歌单可以直接导入
- 导入失败静默生成空歌单:QQ 歌单接口增加响应验证,歌单为空或 ID 错误时显示明确错误提示,不再生成删不掉的空歌单
新功能
- 歌单持久化:导入的歌单自动保存在本地(SharedPreferences),重启 App 不再丢失
- 多歌单管理:歌单页从“单个歌单”升级为“歌单列表”,支持导入并保存多个歌单;同平台同 ID 重复导入自动覆盖旧版本
- 删除歌单:长按歌单卡片或点击右侧删除按钮,确认后即可删除(不会影响已收藏的歌曲)
- 歌单卡片显示平台标签(网易云红 / QQ 绿)与歌曲数
界面变化
- 歌单页:歌单列表 → 点击进入歌单详情页(播放全部 / 单曲播放 / 加入队列)
- 空状态提示更新:“导入后的歌单保存在本地,长按可删除”
v2.2.32 缓存增强(采纳社区 PR)
v2.2.32 缓存增强
采纳社区贡献 @liyiming986 的 PR #1 中的三个增强,整合到现有缓存优先播放逻辑中。
增强
- 封面缓存 —— 命中缓存播放时封面不再丢失(之前只缓存了歌词,缓存播放时封面可能缺失)
- 翻译歌词缓存 —— 网易云翻译歌词(
tlyric)随索引单独持久化,离线播放时仍能合并显示原文+翻译 .lrc侧车文件 —— 音频缓存转正时同时写同名.lrc文件(通用歌词格式),缓存拷到第三方播放器(车机、Poweramp、foobar2000)也能显示歌词;删除缓存和 LRU 自动清理时同步删除侧车,不留残留
保留的能力
- v2.2.30 的缓存优先播放核心逻辑不变(命中缓存零 API 调用)
- 缓存文件损坏自动删除并回退在线播放(PR 原版没有这个,我们保留)
致谢
感谢 @liyiming986 的贡献,PR 分析详尽,端到端测试完整 🙌
v2.2.31 使用统计
v2.2.31 使用统计(累计用户 / 今日活跃 / 当前在线)
新功能
- 使用统计:设置页「关于」卡片新增三列统计展示——累计用户、今日活跃、当前在线
- App 打开或从后台回前台时上报匿名心跳,服务端按设备去重计算人数
技术细节
- 服务端:FastAPI + SQLite 统计服务,nginx 反代
/music-stats/- 累计用户 = 历史所有设备数
- 今日活跃 = 最近 24h 内活跃设备数
- 当前在线 = 最近 10min 内活跃设备数
- 客户端:
UsageStatsService仿UpdateService模式,匿名设备 ID(随机 hex),静默失败不影响使用
隐私
- 心跳仅含随机设备 ID + App 版本号,不读取任何硬件标识,无 PII
- 不含搜索/播放等行为数据
- 全程静默运行,统计服务不可用不影响 App 任何功能
v2.2.30 缓存优先播放
v2.2.30 缓存优先播放
修复
- 播放已缓存歌曲不再扣除 API 额度:播放时先查本地缓存,命中则直接走本地文件播放,完全不调 API(之前即使有缓存也会先调 API 解析播放地址,白白消耗额度)
优化
- 歌词随缓存索引一同保存,缓存命中即离线还原歌词(连歌词接口都省掉)
- 缓存文件损坏/不可播时自动删除失效缓存并回退在线播放
- 首次播放仍然正常走 API 解析 + 后台异步缓存,不影响体验
技术细节
_playCurrent()重构:API 调用前先getCachedEntry()检查缓存getCachedEntry()返回完整条目(filePath + lyric),命中即播本地文件 + 离线还原歌词cacheAudio()新增lyric参数,歌词随缓存索引一同持久化
v2.2.29
更新内容(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
v2.2.21 - 缓存列表 + 歌单页迷你播放器 + 编码修复
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 服务器中转
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 端
_chkszUrl从https://api.chksz.com改为http://161.118.252.183/api-chksz - 所有平台播放地址解析统一走服务器 HTTP 中转
MD5: 0066cb4162844bdae3ed9d35c64aaeef
大小: 9.9 MB
v2.2.19 - 修复酷狗播放
v2.2.19 更新内容
修复
- 酷狗播放失败:ChKSz 酷狗解析接口的
id参数要求大写 hash,但 mobilecdn 搜索返回的是小写 hash,导致解析失败。现已将 hash 转为大写后传入。
MD5: 345e97fd44e7ed644396369b1bc6019d
大小: 9.9 MB
v2.2.18 - 网易云统一 ChKSz API 解析
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