Commit Graph

32 Commits

Author SHA1 Message Date
史悦
6474cf8b4e 改地址 2026-01-14 18:10:42 +08:00
史悦
54d97beb15 修改了代理 2026-01-14 18:09:16 +08:00
史悦
99d71f05cf getSongUrl 2026-01-14 17:56:46 +08:00
史悦
87aa994365 getSongUrl改为返回url 2026-01-14 17:53:48 +08:00
史悦
e6a8f62bba 改为music-api 2026-01-14 17:43:27 +08:00
史悦
6b1cdb92ad 修改了api的地址 2026-01-14 15:27:02 +08:00
史悦
a76ef33c4c feat: 添加音乐API代理以解决CORS跨域问题
- index.html: 将API_BASE改为相对路径 /api/music-api
- sync-server/server.js: 新增 /music-api 代理端点转发请求至 music-dl.sayqz.com
- 新增 proxyRequest 函数处理HTTPS代理请求和重定向
2026-01-14 15:17:58 +08:00
史悦
c9fac4b7fe 1. iOS自动切歌问题(2处):
- isNearEnd:阈值 0.15s → 0.5s
    - updateTime:移除 iOS 限制
  2. 时长显示负值问题(2处):
    - formatTime:增加异常值保护
    - resolveDurationSeconds:防止返回负数
2026-01-13 17:47:46 +08:00
史悦
a2a366d34a fix(音频播放): 修复iOS设备在页面隐藏时音频播放逻辑问题
优化音频播放逻辑,当页面隐藏时不再延迟播放。同时修正自动播放下一首时的立即播放条件判断。
2026-01-13 08:45:21 +08:00
史悦
89a28e1bc5 feat: 添加网易云音乐同步到Navidrome的功能
新增NetEase-sync模块,实现将网易云音乐歌单同步到Navidrome的功能
修复iOS设备自动播放问题,优化播放器体验
2026-01-12 17:59:31 +08:00
史悦
33ab93aa33 修复(core): 全局强制歌曲ID为字符串类型
引入`normalizeSongId`工具函数以确保应用内数据类型统一:
- 规范化API响应数据(搜索、排行榜、歌单)
- 初始化时清理LocalStorage数据(歌单、收藏、当前歌曲)
- 同步远程数据时进行类型规范化,避免类型不匹配
- 修复`toggleLike`和播放状态中潜在的ID比较错误
2026-01-09 09:55:06 +08:00
史悦
186733dccf 恢复单一SyncToken模式,合并网易云ID到SyncToken,实现"导入即替换"逻辑
调整同步策略:网易云模式下,自动执行"拉取网易云 -> 合并本地(非覆盖) -> 推送至私有云KV"
2026-01-07 18:34:50 +08:00
史悦
36ee441c06 现在,您可以放心地设置私有云 Token 进行全量备份,同时挂载一个网易云歌单作为数据源之一,系统会自动处理好所有的数据流转。 2026-01-07 18:26:36 +08:00
史悦
b79f4a8b2c 点击左上角菜单,打开侧边栏。
点击“导入网易云歌单”按钮。
粘贴网易云歌单分享链接。
系统将自动提取 ID,导入歌曲,并开启每 15 分钟一次的自动同步。
若要切回私有云同步,只需清空输入框内容或重新输入您的 Server Key 即可。
2026-01-07 18:08:58 +08:00
史悦
264ffb8b38 修复(播放器):标准化传递给点赞处理器的歌曲对象
确保传递给toggleLike的是一个具有标准化source属性的新对象引用。这解决了平台/source属性不匹配的潜在问题,并确保状态更新能够正确触发。
2026-01-07 17:53:13 +08:00
史悦
c81dad23f6 fix(sync): improve token switching and auto-sync behavior
- Introduce `lastSuccessToken` state to track the last verified sync token
- Update manual sync to overwrite local favorites when switching tokens, treating it as a login action rather than a merge
- Prevent auto-sync from running when the current token does not match the last successful one to avoid unintended data uploads
2026-01-07 10:29:02 +08:00
史悦
cbc3acb213 refactor(ui): redesign playlist detail header
- Move back button to cover image area with updated styling
- Remove sticky top bar for cleaner view
- Add explicit container names in docker-compose.yml
2026-01-07 10:22:05 +08:00
史悦
c3877be35d fix(player): refactor audio element handling and improve auto-play reliability
- Replace detached `new Audio()` with rendered `<audio>` element to better support mobile behaviors and standard DOM events
- Introduce `autoAdvanceLockRef` to prevent race conditions where the next song might be triggered multiple times
- Add manual time check near the end of the track to trigger auto-advance, acting as a fallback for the `ended` event
- Update `playNext` logic to handle immediate playback transitions more robustly
2026-01-07 10:08:35 +08:00
史悦
6b182ceba8 增加了 Duration 检查:在 updateMediaSessionPosition 函数中,现在会先判断 duration 是否为有效的正数。如果 duration <= 0,则不再调用 setPositionState,避免触发浏览器的错误行为。
移除了错误的重置调用:删除了在切歌或清空播放时调用的 setPositionState({ duration: 0 ... })。根据 Media Session API 规范,duration 必须为正数,传入 0 往往是导致 Firefox 隐藏通知栏控制条的主要原因。
2026-01-06 16:04:24 +08:00
史悦
9f1d52c09d 取消了输入时的频繁同步:移除了对 syncToken 变化的自动监听,只在收藏列表变化时触发。
支持了删除同步:通过快照对比,本地删除操作可以正确同步到云端,而不仅仅是简单的追加或覆盖。
防止了意外覆盖:同步前先拉取远程数据进行合并,避免了直接用本地旧数据覆盖云端新数据的情况。
2026-01-06 15:55:32 +08:00
史悦
1af86ed6a6 同步时会下载音乐 2026-01-06 15:03:06 +08:00
史悦
87599a4ce8 已调整全屏播放器底部控制区域的布局,减小了占用空间 2026-01-06 14:28:05 +08:00
史悦
45dfa6ee04 已在播放列表(PlaylistDrawer)中添加了播放模式切换按钮 2026-01-06 14:19:43 +08:00
史悦
cfefceaf28 已更新同步按钮功能:
添加图标:按钮现在包含一个旋转图标 (fa-rotate)。
加载状态:点击同步时,图标会旋转,按钮文字变为“同步中”并禁用。
完成提示:同步完成后,会在按钮下方显示“同步完成”的绿色提示文字,并在3秒后自动消失。
2026-01-06 14:16:59 +08:00
史悦
a506fad6fd 现在会在歌手名后面显示专辑名 2026-01-06 14:12:58 +08:00
史悦
ecd9f60ac9 修复移动端通知栏进度条的问题 2026-01-06 13:42:54 +08:00
史悦
e115ee1db1 feat(ui): rebrand to Meishi Music and wire up sidebar
- Rename application from TuneHub to Meishi Music in UI and PWA manifest
- Implement cache clearing logic to remove local storage items
- Pass sync state and handlers to the Sidebar component
2026-01-06 11:26:56 +08:00
史悦
ca1026d166 feat(sync): add cloud synchronization for favorites
Add a new sync service and frontend integration to allow syncing
favorites across devices using a token.

- Configure `sync-service` in docker-compose.yml on port 7482
- Add sync token input and manual sync button to SideDrawer
- Implement auto-sync logic to persist favorites to the KV store
- Add logic to merge cloud favorites with local data on initialization
2026-01-06 11:20:06 +08:00
史悦
33e3ec714e feat(ui): add clear cache and optimize media session
- Add button in side drawer settings to clear local cache data
- Refactor Media Session position updates to trigger on specific events (seek, play/pause, load) instead of every time update
- Add finite number validation for seek operations
2026-01-06 10:59:14 +08:00
史悦
b1e76110ff 完整的 Media Session API 支持 2026-01-06 10:52:43 +08:00
史悦
2841aff80b 修改标题 2026-01-06 10:40:47 +08:00
史悦
56d94c9592 first commit 2026-01-06 10:27:08 +08:00