Skip to content

关注作者的 B 站账号

哔哩哔哩账号二维码

v0.1.6 正式发布 —— 优化更新逻辑

更新日志

版本 0.1.6 - 优化更新逻辑

🚀 主要改进

1. 智能更新逻辑优化

  • 后端更新机制

    • 新增播放状态检测 (is_playing 字段)

    • 实现智能更新策略,避免不必要的重复更新

    • 添加时间戳机制,确保强制更新(5秒间隔)

    • 动态调整轮询间隔:播放时100ms,暂停时200ms

  • 前端更新优化

    • 实现数据变化检测,避免重复渲染

    • 动态调整轮询频率:播放时100ms,暂停时200ms

    • 错误处理优化,异常时使用250ms默认间隔

2. 数据结构增强

  • Song 结构体

    • 新增 is_playing: bool 字段,标识当前播放状态

    • 新增 last_update: u64 字段,用于时间戳管理

    • 派生 PartialEq trait,支持结构体比较

3. 错误处理改进

  • 增强了 Windows API 调用的错误处理

  • 添加了会话管理器获取失败的处理逻辑

  • 改进了异步操作的错误处理模式

4. 性能优化

  • 减少了不必要的状态写入操作

  • 优化了轮询机制,降低CPU使用率

  • 实现了基于播放状态的动态更新频率

📝 文档更新

  • README.md

    • 完善了编译依赖说明

    • 详细列出了主要依赖包及其版本

    • 分离了Windows特定依赖的说明

    • 优化了文档结构和可读性

🔧 技术细节

后端变更 (src/main.rs)

rust

// 新增字段

#[derive(Default, Clone, Serialize, PartialEq)]

struct Song {

    // ... 原有字段

    is_playing: bool,

    last_update: u64,

}



// 智能更新逻辑

let should_update = if current_song.is_playing != last_song.is_playing {

    true

} else if current_song.position != last_position {

    true

} else if !current_song.is_playing && no_change_count < 10 {

    no_change_count += 1;

    true

} else {

    timestamp.saturating_sub(last_song.last_update) > 5

};

前端变更 (frontend/main.js)

javascript

// 数据变化检测

if (JSON.stringify(data) !== JSON.stringify(lastData)) {

    Object.assign(info, {

        ...data,

        pct: data.pct ?? 0,

    });

    lastData = data;

}



// 动态轮询间隔

const pollInterval = info.is_playing ? 100 : 200;

setTimeout(poll, pollInterval);

📦 版本信息

  • 版本号:从 0.1.5 升级到 0.1.6

  • 更新时间:2025年9月10日

  • 提交哈希18920652694b2a849a59b929653613877408aea2

💡 优化效果

  • 显著减少了不必要的网络请求和状态更新

  • 提高了播放状态响应的实时性

  • 降低了系统资源占用

  • 增强了应用的稳定性和可靠性


注意:此版本主要专注于性能优化和用户体验改进,建议所有用户升级到最新版本以获得更好的使用体验。

VirusTotal 扫描结果

基于 MIT 许可 发布